mikutterの技術的なことを書いていこう

2016年11月27日日曜日

#mikutter 3.4.8

  • 3.4.8
    • gdk_pixbuf2 の変更の影響で、めっちゃdeprecated warningが出ていた問題を修正
      • 既に部分的に対応が終わっていたが、よりちゃんとした。
      • この変更によって gdk_pixbuf2 3.0.8などの古いバージョンで動かなくなっていたが、ある程度古いバージョンでも動くようにした
    • ruby-profが新しいと--profileオプションをつけるとクラッシュする
フィリスのアトリエは公認試験に合格してちょっとだけ進めたところです。
ゲームで試験ってどういう感じなのか、まあ大体予想していたんですがまさか実技試験(意味深)ってそういうやつだったとは…。あれはまずいですよ。
そしてそこから畳み掛けるような展開、まずいですね。
フィリスのアトリエをプレイすると、フィリスのアトリエだって思うんですよ。
とにかくまずいんですよ、フィリスのアトリエは。
何がまずいって、全てがまずいんですよ。フィリスのアトリエが誰でも買えてしまうこの世界はおかしい
あなたはフィリスのアトリエを買っていないかもしれないけれど、あなたとフィリスのアトリエは同じ時間に存在している
ああ、フィリスのアトリエなんだなあって。これ以外に表現できないんですよ
あいつも、こいつも、もしかしたらフィリスのアトリエをプレイしているのかも知れない
これは、フィリスのアトリエが発売する前には考えられなかったことです
大変だ、大変なところに来てしまった
コントローラーを持つ手が震える たまにコントローラーも震える
俺はフィリスのアトリエが怖いのかも知れない
フィリスのアトリエは、俺が思っている以上にフィリスのアトリエなんじゃないかと……。

2016年11月20日日曜日

#mikutter 3.3.14, 3.4.7

3.3.14

  • アカウント情報の暗号化に関する不具合
  • Extended Tweetsの、mentionに関する仕様を3.3.12の状態に戻した
    • 隠し設定で、3.3.13の状態に戻すこともできます

3.4.7
  • アカウント情報の暗号化に関する不具合
  • Extended Tweetsの、mentionに関する仕様を3.3.12の状態に戻した
    • 隠し設定で、3.3.13の状態に戻すこともできます
  • 画面に表示されていないタイムラインがツイートを開放しない
  • gtk2 3.1.0を利用
  • 言語ファイル更新
    • zh_TW
Twitterがリプライ先を書かなくてもよしなにやってくれるようになりましたが、サードパーティクライアントからではどうやっても予想できないケースがありました。他のクライアントはどうしてるのかなーといくつか見たら、ヘッダについては未対応のが多いんですよ。なのでmikutterでもこの変更をrevertして無かったことにしようと思いました。アップデートすることで、謎の巻き込みリプライ現象が改善されます。
ただ、mentionsの宛先に文字数が食われないのはありがたい人もいると思うので、設定で変更できるようにしました。隠し設定なのでUIはありません。どういうキーだったか忘れたなあ。

フィリスのアトリエはちょうどライゼンベルグについたところです。

2016年10月16日日曜日

#mikutter 3.4.6


  • 長時間ツイートを受信しなかった時にUserStreamコネクションがタイムアウトしてしまう(thanks @rhe__)
  • 「いいね」されるとクラッシュする(thanks @rhe__)
    • 「ふぁぼ」ではクラッシュしません。この意味がわかるな?
最近PCの音楽プレイヤーをmpdに変更したんですが、これがなかなか楽しいやつで気に入っています。クライアントサーバシステムになっていて、サーバ側は音楽の管理・再生、クライアント側は音楽一覧の閲覧や再生コントロールといった、要するにUIを担当するようになっています。音楽プレイヤーはUIが気に入らないとかで乗り換えることがあると思うんですが、mpdの場合はmpdクライアントだけを乗り換えることになります。プレイリストとかもサーバが持っているので、クライアントを乗り換えても引き継げるようです。

クライアントは別にひとつを使う必要はなくて、Awesomeから操作するときはluaスクリプトからmpcを呼び出したり、普段GUIで使うときはsonataとか、その時々によって使い分けることができます。また、クライアントとサーバはTCPで通信しているため、iOS、Androidのクライアントもあって、実際にベッドからmpdを操作することもできました。俺はベッドに入ってから、そういえばPCで音楽再生してたなあと気づいてまた起きるみたいなことが多かったので、iPhoneから再生・停止をコントロールできるだけで最高なんですが、プレイリストの編集すらできるなんて、便利ですね〜。

ただ欠点もあって、いろんなプラットフォームのクライアントがあるくせに、mikutterのクライアントが無いんですよ。このブログを見ているような皆さんであればmikutterで音楽再生とか、mikutterから音楽プレイヤーを操作とか普通にしてると思うんですが、mpdでは今のところできないんですね〜。

ぜひとも皆さんmpdを使って、mikutter 3.5の機能を使ったmpdクライアントを作成していただきたいですね!

2016年10月9日日曜日

#mikutter 3.4.5

  • 言語ファイル更新
  • tco: URL展開時にKernel.#timeoutを呼んでいて、Ruby2.3で警告が出ている
  • Net::ReadTimeoutの時にnoticeを発生させない
  • Gdk::Pixbuf.newがobsoleteになってるので利用をやめた
warning出ているやつを片付けただけともいう。あと3.4.4で新たに翻訳対象になった部分について、英語、ドイツ語あたりで翻訳されました。ありがとうございます。

あと一ヶ月切りましたね。何かって?そりゃあ前のリリース読めばわかるでしょう。
そう、フィリスのアトリエ(PC版は音が出ます注意)ですね。当初の予定であれば9/28に出ていたはずなのですが、そんなことをされていたらこのリリースはなかったでしょうから、mikutterにとっては良かったのかも知れません。俺は別に、どんなに延期されようが逃げないしいいんだけどね。尤もお金払ってしまっているのでマイクラ1.9みたいに1年とか伸ばされるとキツイですが。

ただ、11/2という日が問題で、フィリスのアトリエを受け取った直後に東京に行くことになるので我慢できるかどうか。オープンソースカンファレンスでセミナー枠を頂いているので、多少は準備しないとなあ。ま、5日、6日は東京でお会いしましょう。

2016年10月2日日曜日

#mikutter 3.3.13, 3.4.4

3.3.13

  • Extended Tweetに対応
  • PostBoxの処理でクラッシュすることがあった

3.4.4

  • 翻訳ファイルに反映されていなかった箇所があった

mikutterにおけるExtended Tweetとは

Twitterは、画像を添付したり、引用ツイートをした場合、そのURLを字数としてカウントしないなど、いくつかの変更を行いました。それがExtended Tweetです(詳しくは調べてね)。
実際に、ツイートを入力しながら残り文字数のカウントを見ていると、どういう風に字数がカウントされているかわかりやすいと思います。

これは思ったより大きな変更で、今までと全く同じような挙動にはできませんでした。具体的には、以下のような違いがあります。
  • リプライの時、「@a @b 」とかで始まっていると、その部分が字数としてカウントされなくなる。ただし字数としてカウントされないのはその会話スレッドに投稿者として存在するユーザだけで、関係ない人のscreen nameを入れたらそこだけカウントされる。
  • リプライ先のユーザのscreen name同士や本文との間のスペースは、いくつあったとしても1文字に短縮される。
  • 複数人へのリプライの場合、プレフィックスが入れ替わる可能性がある(Twitter側で挿入されるようになったため。例: 「@a @b foobar」→「@b @a foobar」)。
  • 実際に投稿した場合、意図しないユーザがリプライに巻き込まれてしまう可能性がある。例: 「@a @b foobar」→「@a @b @c foobar」
  • 本文がツイートのURLで終わっている場合は(引用)、最後の一つのURLに関しては字数にカウントされない。ただし、もぐのさんの mikutter-uwm-hommage 等で画像を添付した場合は、Twitter上では末尾のURLは23文字としてカウントされるのに、mikutterのUI上では字数にカウントされていないように見えてしまう。
  • mikutterの設定でツイートに自動的に挿入するフッタを設定していたら、本文の末尾がツイートのURLになっていても23文字としてカウントされる。
字数を完璧に測ることは不可能なので、mikutterの表示上字数オーバーしていても一応投稿できるようになってます(本当にオーバーしていたらTwitter側から弾かれる。その時は諦めよう)。

オープンソースカンファレンス2016 Tokyo/Fall

オープンソースカンファレンス2016Tokyo/Fall、mikutterとして出展することになりました。

今回は、セミナーも開催する予定なので、mikutterユーザのみんなは遊びに来よう。

2016年9月12日月曜日

#mikutter 3.3.12, 3.4.3

3.3.12

  • 環境変数 DISABLE_BUNDLER_SETUP に0を指定した時の挙動が間違っていた

3.4.3

  • Vineのサムネイル展開に対応
  • gtk2 3.0.9を利用
  • 言語ファイル更新
    • en
    • de
    • fr
Ruby 2.4-preview2がリリースされて、有志がmikutterの動作確認を行ってくれています。3.4.3ではまだ動作しないと思いますが、既にそれについては報告されていて、3.4.4では修正されるでしょう。

New committer

新しいcommitterとして @katsyoshi がjoinしました。
mikutter は未だに GTK2 を使用していますが、GTK3への移行作業を行う人出が足りておらず作業に着手できていませんでした。そんな中、彼がその作業をしたいと名乗りを上げてくれました。katsyoshiは、5年以上前からmikutterを使用しているユーザで、その間多くのcontributeをしてくれました。私が知る限り世界初のmikutterサードパーティプラグインであるtoshi_fav.rbを書いたのも彼です。一方で、そのプラグインを悪用して、5年もの間私の全てのツイートを自動ふぁぼしている危険人物でもあります。ずっと彼女を募集しているようなので、私からもよろしくお願いします。

Thanks

$ git log --format="%an" 3.4.2..3.4.3 | sort | uniq
EbiflyBB
Hiroshi Hatake
Toshiaki Asai

今回、 @JPRuehmann が、2014年あたりから翻訳者がいなかったドイツ語の翻訳の進捗を100%にしてくれました。ありがとうございます。
mikutterでは翻訳者を常に募集しています

2016年8月14日日曜日

OSC 2016 Kyotoに出展しました

OSC 2016 Kyotoに mikutter としてブースの出展と、セミナーをしました。

去年の反省

去年は入院していて行けなかったので、今年は入院しないことにしました。
体調不良でいけなくなると、不謹慎な遊びをされてしまう
これは去年の写真です。遺影はiPadで、目の前にあるのはダイソーの厚紙の箱で作った賽銭箱のようです。私がいればこのようなことは許さなかったでしょう。ちなみに賽銭箱はあとで箱ごと私に奉納され、1000円ちょっと入っていました。もったいなくてまだ使っていません。ありがとうございました。

準備

一昨年の反省で、展示端末がMacしかなかった、というのがありました。「Linuxとか」で動くことを謳っているmikutterが、よりにもよってこんなキワモノで動いているのを展示すると、見に来た側は混乱してしまいます。

「これはMacのソフトなんですか?」
「いえ、これはOSXふっ飛ばしてArch Linuix起動してるんですよ」
「は?」

今回もMacは展示端末として使いましたが、私はMacでmikutterを動かすことに成功していないので、Virtual BoxにUbuntu 16.04をインストールしました。

「これはMacのソフトなんですか?」
「いえ、これはVirtual BoxでUbuntu起動してるんですよ」
「は?」

展示端末

今年は新たにRaspberry Pi 3を一台購入し、OSとしてRaspbianをインストールして展示端末としました。思えばRaspberry PiにXを入れるのは初めてだったのですが、mikutterの開発環境くらいならすぐに整いますね。流石に性能的にはこれをメインにすることは難しそうですが、可能性は感じました。持ち運ぶのには良さそうです。

それこそ2年前とかならまだRaspberry Piでmikutterを展示するのは面白かったかも知れませんが、今となっては十分な性能があることが知られてしまっていますし、軽くて持ち運びやすいなど展示端末の選択肢としてはメリットしかなく、このままでは「あいつ今更Raspberry Piに乗っかりやがったダッサw」と思われてしまう危険すらありました。

外装

要は、現代に於いてRaspberry Piであることをみだりに吹聴すべきではありません。もちろん面白いことをやればいいんですが、あくまでmikutterのブースなので、まずはRaspberry Piを隠してしまいましょう。

しかし、ケースを自作するといっても、ハードウェアはからっきしなので、簡単にできるもの…と部屋を見回していたら…


ぽ、ぽまえはあの時の賽銭箱!生きとったんかワレ!
去年のOSCで死体蹴りされた恨みを晴らすため、こいつにRaspberry Piを隠し、賽銭箱PCとして生まれ変わってもらうことにしました。

mikutterの展示らしく

さて、外側は決まりました。あとは展示内容です。たんにmikutterをインストールするだけならもう出来ているんですが、mikutterの展示なのに、mikutterを知らない人が来ても実際に操作してもらうことができないという問題があります。

キーボードはついているんですが、実際にブースに来た人がキーボードやマウスに触れてmikutterを体験するのは敷居が高いです。もっとこう、適当に触って適当に体験できるデバイスは何か無いでしょうか。Raspberry PiといえばIoT、IoTといえばリモコンですね。というわけで、家にあるリモコンで適当に試そうとしたら、リモコンのボタンを押しただけなのにクーラーが切れたり、電気が消えたりといろいろと不思議なことが起こりました。

よく調べると、エアコンのリモコンのボタンを押すとエアコンが操作されてしまうようです。これは不便ですよね。リモコンで操作する家電で家にないものといえばテレビです。というわけで、ヨドバシカメラで購入してきました。
いわゆるかんたんリモコンです。初めて地デジに対応したテレビのリモコンを見た時にはみんな面食らったと思いますが、これならわかりやすいですね。

mikutterコマンドをリモコンの各キーに割り当てることができれば、フォーカスの移動やふぁぼ、リツイートなどのほとんどのmikutterの機能を使うことができます。ブースでリモコンを渡された人は、直感的に初めて触るmikutterを操作できることでしょう。恐らくリモコンを操作したことのない人はそんなにいないはずです。デバイスが無線なので、手渡して使ってもらえるというのもポイントが高いです。

逆IoT

Raspberry PiでIoTで恐らく一番簡単な部類のものが、赤外線LEDでリモコンの信号を出力し、エアコンなどを操作するというものです。リモコンに対応した全ての家電を操作できる可能性があり、簡単な割に汎用性が高いです。
今回はそれに似ていますが、逆に赤外線受光部を取り付け、Raspberry Pi自体がその信号を受け取って反応するというものです。いわば、逆IoTです。これはあっきぃと喋っていて発明した謎ワードです。

内面からの写真。
受光センサは、俺が幼稚園児のときから愛用していたセロテープで止めた。
センサ自体は外に向いている。
HDMIポートとMicroUSB(電源)が見える謎の穴。
なんかピントがおかしいような…。
遠い(確信)
完全に施工ミスですありがとうございました
ヒートシンクは余ってたのを適当に貼った
賽銭箱全体
負荷テストのために前回の天空の城ラピュタ放映時のUserStreamイベントを流し込んでみたところ、めちゃくちゃ発熱して処理落ちしてしまったので、OSCの2日前に急遽ヨドバシで4cmファンを購入。雑にUSBで回ってくれるのでありがたかった。だけど致命的にうるさくて普段は使いたくないな。

この賽銭箱はいろいろと設計ミスが多く、USBポート等が内部にあるのはわざとだけど、HDMIがやたら遠かったり、そもそもOSC1日目終了後に急いで仕上げたのでRaspberry Piを止めるネジがなく、Pimoroniのケースを中途半端に使って箱に固定している等、見れば見るほど雑に作ったのがわかる。

底面。あっ(察し
一方で、リモコン操作するためのプラグインはもう少し前にちゃんと用意できていて、こちらは現在githubで公開しています。Raspberry Piと受光センサさえあれば、手持ちのリモコンで同様の環境を再現できると思うのでみなさんやってみましょう。

0日目
縛られるルータ。OSC Kyotoの密かな名物らしい。

OSCのスタッフに紛れることに成功して、紙を透明な袋に詰めまくるボランティアをしてました。そういえば今年は袋が透明で、かなり珍しいらしい。もらえた人はラッキー。



夜はヨドバシカメラで飯を食った。実はこの日の朝にヨドバシで4cmファンを買っていたので、2回ヨドバシに来るというかなりあほなことをやっていた。賽銭箱の作りだけではなく、計画性もガバガバやったんやな

1日目(mikutter前日)
初日の闇ブース。隣のNetBSDと区別が付かない。
mikutter0.2シールや丸ろくろシールなど、えびじゅんさんも舌を巻く逸品を展示している。
1日目はmikutterは不参加だったけど、手伝うために早めに行ったところ、別にやることがなかったので浸透言うな水(写真の左のやつ)のボトルにトイレの水を汲んだりして遊んでました。RedHatを帯びているが、これは名古屋で貰ったもので、特に意味はないです。

DJ TSUTSUI

間もなく隣のブースでは謎のマシンが電子雅楽を奏で始めてくれたおかげで、4cmファン騒音問題が完全に無効化された。弱り目に祟り目とはまさにこのこと。

ところで、OSC Kyotoで参加者が一番困るのが昼食だと思います。アクセスが悪いせいであまり店がない、調べれば調べるほど、ベッドタウンなのかビジネス街なのかわからなくなる。「びっくりドンキー以外の飯屋があるのだろうか」。…いや、あります!
今日は特別に、OSC Kyotoの会場になっている丹波口で四年間以上働いていた私がいい店をご紹介しましょう。

ラーメンは違う

たしかになぜかラーメン屋が多く激戦区感を醸し出しているのですが、懇親会でどうせ炭水化物攻めをされることを考えると、昼飯にラーメンは良くない。良くないのだよ。

丹波口で行くべきたったひとつの店

丹波口上級者の私に言わせれば、丹波口には大きく分けて二種類の飯屋があるといえます。それは宮武以外と、宮武です。


宮武というのは、市場のすぐ近くにあるという地の利を活かして本格的な魚料理を出す一方で、ミートソーススパゲティの上に焼き鮭を乗せたものを日替わり定食として出した伝説まで持っている欲張りな宮武です。あの鮭スパゲティはなぜかうまかった

税込み864円の日替わり定食(2016/7/29)。
写真には映っていないが、これに米と赤だしがついている。
ご覧の通り、優勝です。昼は予約を受け付けていないので入れるのですが、それでも今となっては人気店なので13:00くらいに行ったらもう入れないかも知れません。少し早めに行きましょう。
夜は予約がないと事実上無理です。二年前にここを使おうとした時、二週間前に取ろうとして無理でした。どのみちこのブログに書いてしまったので、もうOSCの時に宮武に行くのは無理かも知れません。

一日目はまっすぐ帰宅して、それから賽銭箱に穴を開けはじめました。完全にアホです。

二日目(mikutter展示当日)

展示

mikutterの薄い本vol.10。このOSC Kyotoが最初の頒布となった

Macの後ろに賽銭箱が見える。大きなディスプレイは賽銭箱の画面
準備の節で書いた賽銭箱の工作を一日目の夜だけで終え、なんとか展示まで漕ぎ着けました。
置いてあるリモコンが異彩を放っていますね。Raspberry Piは音を鳴らすのが若干面倒だったので、ポケットミクで通知を再生するプラグインを使いました。

また、シールについてはレアなものは仕舞っていました。今後も配ることがあるかも知れませんが、もう在庫もないので、今から手に入れるのはどっちみち難しいでしょう。シールといえば、何故かmikutterブースの近くでドイツのトリグッズが闇取引されているのを何度か見かけました。あれはなんだったんでしょうね。実は俺もガツンと言ってやらなければと思って、ドイツのトリシールをカツアゲしたと思うんですが(曖昧)、なくしました。スタンプはちゃんとあります。
ドイツのトリはmikutterと関係が深く、mikutterに興味がある人間とドイツのトリに興味がある人間が被っていることは想像に難くありません。mikutterブースの近くでこういう闇取引が行われたのも必然だったといえましょう。

セミナー

mikutter会議2016と銘打った割には内容を考えてなかったのでどうしようかと思いましたが、mikutterの構想段階からの夢のひとつがついに3.5で叶うことになるだろう、ということで、それについての話をしてきました。詳しく書きたいですが、流石に別の記事に分けたほうが良いと思うので、mikutter 3.5の新機能について記事を書くときまでお預けとしておきます。

いつもふぁぼられを集計していましたが、今回は3人ほどのふぁぼ魔にガチで殴られたものの、デモ中にはふぁぼられなかったのでなんとも平和でした。ふぁぼ魔自体が減り、皆東京に行ったことで、かつてのように目の前でふぁぼ爆撃をされるという感じでも無くなってきました。それでも、セミナー中にふぁぼられているのを見てみんな笑っていたので、俺の感覚が麻痺しているだけなのかも知れません。

人数に関しては、mikutterユーザの推移も頭打ちになったので、むしろ減るのではないかと思っていたのですが、特に減ったようには思いませんでした。内容に関しても、話したいことを話せたし良かったです。スライドの公開予定はないですが、mikutterのアイコンなどのデザインを手掛けるそらまめ先生が今回のスライドのために数枚絵を描いてくださったので、近いうちに何らかの形で公開する予定でいます。

反省

今回はわりとうまくやったかなーと思いましたが、大幅な体力の低下を感じずにはいられませんでした。資料の作成もなかなか進みませんでした。たぶん1ヶ月前からやらず、2ヶ月前くらいからやっていればよかったのかな。絶対やらないと思う。おかげでその後はめっちゃ燃え尽きていて、今日までまとめが書けなかった。

こういうのは1度の負担を減らすというよりはちょくちょくやってノウハウを溜めていって一度の負担を減らしていくのが良いと思うんだけど、なんやかんやmikutterは隔年になってしまっているので、知見を蓄積できていない感じがある。要するにもっとやろうかなと思いました。

mikutter自体の開発は、OSCの準備によって活発になったわけでもなく、かといって疎かになったようにも思わなかった(リリースはなかったが、開発ブランチでいろいろ作業してました)。両方が上手く噛み合っている感じで良いですね。HPは0になったけどMPはチャージできたので満足でした。

mikutter関連のイベントとしては、次は秋のOSC Tokyoへの出展が濃厚ですが、詳細については上記の反省を踏まえてふぇのまーさんと現在調整中です(京都に来た時に、OSC東京について一言交わしただけ)。やるならやるで早く決めないとまた準備が大変になってしまうゾ〜