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

2014年10月19日日曜日

#mikutter 3.1.0 alpha1

3.1のプレビューをリリースします。
3.0からの主な変更点は以下の記事をご覧ください。

http://mikutter.blogspot.jp/2014/10/mikutter-3-1-pre.html

release/3.1 ブランチがリリース作業用のブランチです。皆さん、mikutter3.1が使えることに感謝しながらチェキナーしてください。
また、tarボールも一応コロコロしています。ダウンロードページの一番下です。

http://mikutter.hachune.net/download

これは試用版ですので、そういう感じでおねがいします。
また、 transifexのリソースも更新しておいたので、翻訳おねがいします!

https://www.transifex.com/projects/p/mikutter/

#mikutter 3.0.7

  • Twitpic終了に伴う作業
    • http://twitpic.com/d250g2 が見れなくなったので、 http://d250g2.com/d250g2.jpg を表示するように仕様変更
    • Twitpicの他の写真については現状何もしていませんが、twitpic側がもう画像を見れないようにしているようで、mikutterでも見ることができません
  • 新たな写真サービス()に対応
    • d250g2.com
  • APIの不具合修正
  • 言語ファイル更新
それは突然の事だった――

「これが新しい†規約†だ。」

その男は能面のように固まった冷たい表情で、Twitpicの前に書類を置いた。
Twitpicはその書類を一枚一枚繰るごとに、顔から血の気が引いていく。

「Twitterさん、これは…。」

Twitterと呼ばれたその男は、少しも表情を変えず「レニウムだ」とつぶやく。Twitpicはその意味を悟るや否や、その場に崩れ落ちた。

「Twitterさん…!なんで…!一緒に起業/世界/上場って…bioに書いたじゃないですか!」

5年以上前だろうか。二人はよく、オタクっぽい服に身を包み、安いバーで夢を語り合っていた。
「俺はつぶやきを収集するだけだ。それがどうなっていくかはわからない。現に、お前のおかげでみんな写真をつぶやいている。そのうち、女子高生がマック※1から動画をつぶやくような時代が来るかもな。」

※1 東京地方の方言で、マクドナルドのこと。

Twitterは、まだ丸みを帯びていた当時のiPhoneを手の上で転がしながら、こんな奇想天外なことをつぶやいていたものだ。その度にTwitpicは、彼の冗談をふぁぼりながらも、リツイートしていた。Twitterの言っていたことは、今やそのほとんどが実現しつつある。それを影から支えていたのは、常にTwitpicだった。



あまりにも突然の死刑宣告に、Twitpicは涙をこらえることができなかった。Twitterが成長するにつれ、徐々にあたまがおかしくなっていくのをわかっていながら、彼はついに何もできず、今日を迎えてしまった。
この日が来ることは、画像投稿に対応した時からわかっていた。あの時既に、自分はTwitterにとって邪魔な存在になっていたのだ。女子高生が気軽にマック※1で動画を投稿できるように動画にも対応してみたが、既に手遅れだったのだ。
つぶやきだけを集めていたTwitterはもはやどこにも存在せず、全てはツイートに集約されてしまった。

もう、俺が生きる意味なんてない。Twitpicは、自らの命を絶つことを決めた。Twitterはそれを聞き終わると、昔とは違う長く大きい、少し曲がったiPhoneを取り出し、Favstar※2を確認してから、こう言った。

※2 ふぁぼ収集サービス。プレミアム会員ですら期間中にBANするような卑劣なサービスであることから、iPhoneを曲げるような情弱しか使っていない。

「君の悪いところは、判断を急ぎすぎることだ。」

Twitterは、Twitpicの持っている書類を指差して、続きを促した。
最後の紙だと思っていたが、少し小さな紙がもう一枚あった。

「Twitterさん、こ、これは…!?」
「結婚しよう。」

みたいな薄い本書いてた人たち、息してるのだろうか。

2014年10月4日土曜日

mikutter 3.1の新機能

前のリリースから随分空いたので、そろそろmikutter 3.1の準備をしています。3.1で追加される予定の機能を簡単に紹介します。

Ruby 2.0以降をサポート (1.9.3以前のサポートを停止)

mikutter 3.1からはRuby1.9のサポートを終了し、パフォーマンスやらインターフェイスやらの改善のためにRuby 2.0の新機能を積極的に使用します。
Ruby 1.9.3 は既に来年の2月にはサポートを終了すると発表されているので、いいタイミングなんじゃないでしょうか。


リストをデータソースとして提供

listプラグインは、Twitterのリストをデータソースとして提供するようになります。それに伴って、listプラグインによるタブの提供を廃止します。
リストの設定からは「表示」のチェックボックスが消えています。設定画面からは、リストの作成・削除・名前や説明の変更のみが行えます。


抽出タブの編集画面でデータソースを見てみると、各アカウントの「list」という要素に、リストが表示されています。データソースなので、他のリストやデータソースとミックスしたり、フィルタリングもできます。

データソースの一覧を階層化、折りたためるように

3.0リリース後から、抽出タブを使うプラグインが沢山でてきており、データソースの数が多くなりがちです。そこで上のスクリーンショットのように、データソースを階層表示して探しやすくしました。

データソースを提供する時、名前を半角のスラッシュ(/)で区切ると、いい感じになります。例えば「@toshi_a/list/mikutter」という名前のデータソースは、@toshi_a の中の list の中に mikutter という項目が作成されます。上位の階層が存在しない場合は作成されます。プラグイン開発者は、アカウントごとに異なるデータソースを提供するなら、いい感じにカテゴライズされるように名前を付けましょう。

MessageConverterを削除、Entity書き換え機能追加

構造とAPIが複雑すぎて使用することが難しかった MessageConverterを削除します。これはツイートのリンク部分を一部書き換えるためのもので、具体的には短縮URLの展開に使われていました。しかし、これはTwitterにEntityが実装される前に設計されたもので、非同期的に書き換えることをサポートしないといった問題も抱えていました。
詳しいことは別の記事にまとめるかもしれませんが、これからはイベント gui_timeline_add_messages で、実際に表示されたツイートを検出し、書き換えはいつでも Entity#add を呼び出して行うことができます。 Entity#add によってツイートが書き換えられると、適切にタイムラインも書き換えられます。

MessageConverterもEntity#addも内部的にはツイートのエンティティを書き換えているため、これはツイートの本文を書き換える機能としては使うことができません。よってこの影響を受けるのはせいぜいサードパーティの短縮URLプラグインくらいです。サードパーティの短縮URLサービスは、t.coの登場によってほぼ使われなくなっているので、今回は互換性のない変更ですが影響はないと考えて踏み切りました。

なお、標準のbit.lyプラグインはこの変更に追随しています。

リリース時期

このリリースは12/25にリリース予定の3.2のつなぎみたいなやつです。そう考えると、できるだけ早くリリースしてしまいたいですね。
上記変更は全てdevelopブランチにマージされています。これから来週辺りにalpha1を出して、11月1日あたりにはなぁー、とか思ってます。

2014年9月21日日曜日

#mikutter 3.0.6

  • 言語ファイル取り込み更新
    • ポルトガル語追加
  • setting DSLのselectにListnerを渡すとクラッシュする
  • 使用されておらず、UIだけ残っていた設定を削除
    • リツイートを表示する
    • ふぁぼられを表示する
  • 標準プラグインの設定の一部チェックボックスが正しく動作しない
バグフィックスです。ここのところプライベートやマイクラで忙しかったのであまり何もしてませんでしたが、スライムブロックが結構面白い動きをするので大規模な回路を造る時にすごい面白そうだなと思いました。とりあえずスライムブロックを使ったエレベーターを作ってみたけど、何故かたまにダメージを受けます。アイテム化してもモンスターなんですかね。ダメージ自体は0.5とかなのでいいんですが、装備の摩耗が気になります。

2014年8月16日土曜日

#mikutter 3.0.5

  • タイムライン上で、自分の投稿に対して、設定した色が付かない
    • 表示されるべきmikutterコマンドが表示されていないという問題も修正
あぁーここなぁーマルチサービスなぁー
バグの修正一点だけです。困ってた人多かったので皆さんアップデートしましょう。

OSCで喋った内容も書きたいんですけど、ちょっと彼女と…おっと、これ以上言うと工作員に叩かれるな
最近、抽出タブに注目してくれる人がちらほら出てきてて嬉しいです。というか今までの不憫さがなんだったんだ。3.1でもこの辺強化していくんですが、そういえば3.1の予告みたいなの書いてませんでしたね。このままだと書く前にリリースしそうです。早くリリースできるという意味ではありません。

2014年8月10日日曜日

#mikutter 3.0.4

  • リプライを送る時、プライマリアカウントではなくツイートを受信したアカウントが使われていた。常にプライマリアカウントを使用するように変更
  • 言語ファイル更新
選択してるアカウント以外でリプライ送ってしまうことがあるというやつの修正です。
OSCお疲れ様でした。またちょくちょくバグ修正やります。

3.1についてもやりたいことがまとまりつつあるのでぼちぼち着手しています。リリース日は言いません。

2014年8月6日水曜日

OSC 2014 Kansai@Kyoto に出展しました

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

準備

仕事のほうも土曜日に出なきゃいけない日があったり、プライベートもやることがあったりしてギリギリでした。とはいえ、直前になったら両方落ち着いたので集中できました。
前日にあたる木曜日からは休みをとっていたので、OSC運営チームのお手伝いをちょっとだけさせてもらいました。学生の頃はいろんな実行委員とか後先考えずやったりして無駄に忙しい思いをしていたので、そんなことを思い出してちょっと懐かしい気がしました。
運営チームの皆さんありがとうございますありがとうございます

1日目

この日はブースの出展がないので、ブース予定地に作業スペースを展開して、セミナー中のふぁぼ爆撃対策をしていました。

2日目


mikutterの参加は2日目のみでした。入るや否や、いきなり巨大なmikutterのぼり(実はタペストリーです)が高々と掲げられており、来場してmikutterの名前を見ないことが困難な感じでした。これをやった犯人である @tsutsuii さんはOSCガチ勢なのでやっていいことと悪いことをちゃんとわかっているのですが、私はわかっていないので、背筋が凍る思いでした。

展示端末

今回展示用の端末はMacBookAirにArchLinuxを入れて、WMはAwesomeというよくある構成で展示しました。隣のNetBSDブースでは、かなり古い端末やRaspberry Piやスマフォなど、よくわからない端末でmikutterを動かしていらっしゃいました。MBAにNetBSDを入れて持っていけば、完全に境界がわからない感じになって面白かったかもしれません。

ポケットミク

今回の展示ではプラグインによって他のTwitterクライアントで難しいことが簡単にできるということを伝えるために、ポケットミクを2台持参し、ふぁぼ通知をポケットミクで再生させるプラグインをインストールして展示しました。

https://github.com/toshia/mikutter_pocket_miku

このような改造はなかなか難しいですが、mikutterプラグインなら比較的容易で、視覚的にもMBAにポケミクがつながっていてそこから音が鳴っているということで、来ていただいた人にはインパクトがあったようです。また、そのために展示端末にはALSAやPulseAudioといったサウンドサーバの類やサウンドドライバは一切入れず、ポケットミクさえあればサウンドが再生できるということを強調しました。

グッズ

今回もグッズは用意しませんでした。が、皆さんがいろいろ作って応援してくれました。ありがとうございます。
  • mikutter 0.2 シール
  • mikutter 3 シール
  • Teokure Point シール
  • ウワバミクッターシール
  • 季節感あふれるみくったーちゃんシール
  • mikutter 卓上のぼり
  • (mikutter タペストリー)
また、mikutterの薄い本製作委員会の成果物を頒布していました。これらは夏コミでも頒布されるので、OSCに来れなかった方はそちらで購入しましょう。
  • mikutterの薄い本 vol.6.0『ておくれ!えもーしょん
  • mikutterの薄い本 vol.5『としぁくんちのておくれ事情』
  • vol.5ロゴ『としぁくんちのておくれ事情』Tシャツ
  • vol.6.0ロゴ『ておくれ!えもーしょん』Tシャツ
  • mikutter缶バッジ(計4種)
夏コミでは外部サークルへ委託するようです。詳しくは以下のページをご覧ください。

http://kohinata.sumomo.ne.jp/mikutter/C86.html

mikutterタペストリーは、セミナーでじゃんけん大会をやって3名の運のいい人にお渡ししました。また、卓上のぼりは、来ていただいた方の中でも特に貢献度が高い人(≒ておくれてる人)、いろいろと大破してしまった人(≒ておくれてる人)にあげましたが、よく考えたらこれはつついさんに作っていただいたものを横流ししてるだけなんですよね。

セミナー

「mikutter 3」というタイトルでセミナーを開催しました。13時からアトリウムという良い場所を割り当てていただき、本当に目をつけられているんだと確信しましたが、二年前にも同じことがあったので、今回は落ち着いて虚ろな目で空を仰ぐことができました。いろいろとダメです。

話したこと

mikutter 3.0でやったことで、マルチアカウントとは何だったのかを話しました。このあたりの話はかなり長くなり、いろんな角度から45分かけてお話しました。話慣れていないので台本をかなりしっかり書いていたため(今回も暗記できなくてカンニングしながら発表してた)、今回はこれを編集してセミナーの内容を記事にできないかと検討中です。

ウケ

今回は笑うところが少ないなと思っていたのですが、セミナー中は結構笑いが取れていたと思います。笑いは重要です。しゃべっているのにしばらく誰も笑ってない状態が続くと不安になってきます。
セミナーの内容自体もおもしろいと思ってくれた人が多かったようです。
人前で発表するのは二年ぶりで(勉強会で飛び入りでちょっと話すとかはあったかもしれないが、よく覚えていない)、下手になってるどころかカンが無くなっていたので結構ボロボロなんじゃないかと思ってたんですが、褒められることが多かったので良かったんじゃないかと思います。
人数もすごかったです。アトリウムに30席ほどあったと記憶しているのですが、椅子は全て埋まって立ち見も結構いたので、下手をすると50人くらいは集まっていたのではないでしょうか。今回はセミナー予約が27しかなかったので減るのかなと思っていたのですが、それでもほぼ満席ですね。
とにかく、これだけ多くの人に関心を持ってもらえるというのはありがたいことです。

ふぁぼ

3.0は、極めて高い耐ふぁぼ性能、ふぁぼ処理能力を発揮します。そのため、今回は特にセミナーのためにmikutter本体の性能に関する対策はしませんでした。
対策を入れたのはポケットミクプラグインのみです。ポケットミクがふぁぼ効果音を再生するには1回で0.24秒かかり、複数のミクの声をどうやらミキシングできないようなので、シーケンシャルにサウンドを再生するしかありません。となると、mikutterの最大ふぁぼられキュー消化速度は10fav/sなので、2.4倍の赤字になってしまい、ふぁぼ演出が終わっても音が遅れて再生され続けることになります。これはふぁぼられエクスペリエンス的には見逃せない問題です。
そこで今回はポケットミクを2台用意し、ふぁぼ通知音を分散させることで、1台あたりに要求されるスピードを0.12秒にまで削ることに成功しました。また、プロセスを分けることで、mikutterの他の処理にブロックされて効果音が長く再生されることを防ぐことにも成功し、ほぼカタログ通りの速度が出るようになりました。
また、セミナー中の不慮の事故も想定し、ホットスワップにも対応しました。セミナー中のふぁぼに耐え切れずポケットミクが壊れた時のためです。ポケットミクが発売してから一番大きなふぁぼ爆撃になると予想していたので、妥当な判断です。
最終的には壊れることもなく、分散したおかげでふぁぼ通知も適切に再生できていました。

OSC中にちょいちょいAclogを見ていただけなので推測ですが、今回のOSCではおよそ57000favを受けました。そのうち50000favは45分のセミナー中に受けたものです。
これは、mikutterが18fav/sを受けきったということに他なりません。
2年前のOSCでセミナー中に受けたふぁぼは2万。8.3fav/sと試算していました(セミナーを40分と計算)。
mikutterの耐ふぁぼ性能がここまで上がったことを喜ぶ気持ちより、お前らなにやってんだよという気持ちのほうが強いです。


終わって

LTで複数回言及されるとか、知らないところで認知度が上がってるんだなぁと思いました。多くの人がプラグイン開発等を通して、mikutterエコシステムを育ててくれているおかげだと思います。これだけ認知度が上がっているにも関わらずのびのびやらせてもらえてるのも、mikutterのそういう空気も含めて応援してくれる皆さんのおかげです。
他にも、書ききれないくらいいろんなことがあって、いろんな人とお話出来た素晴らしい一日(二日?三日?)でした。

今回も皆さんに元気をもらえました。これからもよろしくお願いします。