昨年は3月からプリフェッチするようにしておき、できるだけ当日のサーバの負荷を減らした。この判断は非常に良かったのだが、この対策を講じても結局トラフィックが当日に集中したのだ。理由は簡単で、mikutterのエイプリルフールネタを聞きつけた人たちがこぞって導入したのだ。これをキッカケに使い始めてくれた人もいたのだ。正直なところ想定外で、ユーザの増加が見込まれる今回は、何も考えなしにコネクションを貼りまくるのではなく、同時アクセス数を制限しなければならない。ひとつは、この機能はコアに完全に組み込まれていたためにテストがしづらく、当日不安すぎて死にそうになったということだ。これは、プラグイン化することで回避できる。取り外しができてしまうという欠点があったが、今回は目をつぶることにした。これらの問題を解決するために、アイコンを取得するためのロジックを大幅に書き換え、表向きにはキャッシュの効率化を測ったことにしておいて、実際にはアイコンをオーバライドするフィルタを実装したのだ。バージョンアップしたと言ったな?あれはウソだまた、昨年は3月19日にそのコミットをしており、バージョンアップにておくれる人がちらほらいた。0:00に全員がミクアイコンに浄化される悦びを皆に感じて欲しい。そのためには華やかなバージョンアップで釣ることが必要で、3月第一週のうちに大量のバグを修正し、高速化したことにして0.1をリリースしたが、実際には上記の機能を入れたかっただけだ。ちなみに一か月前という数字の根拠は、先にリリースしておいた0.0.4がそれくらいの日数あれば十分浸透するということがわかったからだ。0.0.4は最新版がどのくらいの速度で行き渡るかを実験していたに過ぎなかったのである。手早く行動することで、来るデスマーチで私が動けなくても、エイプリルフールは滞り無く遂行される。すべては最初から計画されていたのだよ。新たな問題も出てきた。昨年と違い、プラグインを書くため、ハックするためにmikutter自体のソースを読む人がでてきたということだ。これは彼にとって非常に嬉しいことだったが、これでは約束の日機能をつけたら即座にバレるのである。そこで今回は、当初aprilfool.rbという名前だったプラグインを、頭文字が同じRubyGTKのクラスから名前をとってaspectframe.rbという名前にした。そのクラスとはなんの関係もない。mikutterのダイレクトメッセージタブをクリックした。彼はDMがないと言われないようにそれっぽい機能をつけたが、実際に使うのは今回が初めてだ。アイコンをいじって100種類以上の派生アイコンを作ってgithubに上げている(https://github.com/penguin2716/teokure-icons)。彼に協力して数十種類程度アイコンを調達できれば、収集はかなり楽になると考えて声をかけたのだ。ノリノリでアイコンを描きまくり、一気に200種類くらいにしてしまった。これだけあれば、数十種類と言わず128個のアイコンを調達できる。それに去年のを合わせ、256種類のアイコンを用意することにしたのだ。約束の日3月31日22時。@toshi_aの姿があった。見ていると、エイプリルフールの文字が目に飛び込んできた。彼はいつの間にか約束の日が目前に迫っていることに気づいた。入念にテストをして、概ね思い通りに動いていることを確認したが、それは2月の話。TLには、去年よりうんと増加したmikutterユーザがツイートしており、エゴサーチの方も結構なペースでmikutterの話題を拾ってくる。あと2時間で、彼らのTLはすべて彼が夢見た秩序に満たされ、彼は神となるのである。一度サーバの設定などを確認する。自分は今日も会社に泊まる。Twitter越しにYFでツイートを見て確認するしか無い。修正版を提供するということすら困難なのだ。0.にわかにタイムラインが速くなり、多くの人がよるほーを成功させる。思えばTwitterサーバのレスポンスも速くなり、よるほーの難易度も随分と低くなったものだ。mikutterユーザのツイートがなくなり一瞬戸惑ったが、戸惑っているのはユーザの方である。いや、あまりのことに状況が理解できていないだろう。mikutterの見せる秩序で満たされた幻想世界に陶酔し、ツイートすることを忘れているのかもしれない。一分ほどの間をおいて、一人のユーザが反応し、続いて次々と喜びの声が届いた。...うまくいったのだ。彼は自分の犯行をユーザのうpする画像でしか見ることが出来なかったが、ユーザにはすべてがミクによって浄化されたユートピアが見えていたはずだ。---反省どうだったかな、伝統の「約束の日」は。去年からの人は、待ちわびてくれていたことと思う。最近使い始めた人は、突然のことに驚いたたろう。今回はまとめを、去年のDQNブログ風に引き続き、携帯小説風に仕上げてみたよ※2。ここ数年小説を読んでないのもあるだろうけど、意外と難しいね。いえば携帯小説とか読んだこと無いとはいえこれ、単に冗談だけでやっているわけではない※3。ソフトウェアは、ユーザ数を測ることが難しい。クローズドなものであれば、自分しか配布しないのが基本なのでサーバのログなどからダウンロード数を測ることができるが、それにしたってアクティブユーザを測れるわけじゃない。mikutterは今やさまざまなディストリビューションのパッケージとして入手できるため、計測ができないのだ。エイプリルフールの画像はサーバから取ってくるため、サーバログを見れば、今月のアクティブユーザ数がなんとなくわかる。IPアドレスは変わりうるので正確ではないが、おおまかな目安にはなるのだ。集計した結果、最大で821人は居るという結果になった。500人くらいはいるんじゃないかと思っていたので、思ったよりいるのかもしれない。ウソです最後にTwitterで見たツイートに適当に紹介、回答しておく。午後もミクアイコンになったままだけど、エイプリルフールって午前までじゃないの?2つ勘違いしていますね。エイプリルフールだからこういうことをしたのではなく、mikutter自体がエイプリルフールみたいなものだということ。エイプリルフールが午前までというのはエイプリルフールネタです。はやくユーモア欠落症が治るといいですね。アイコンがかぶってる人がいる仕様です。今回で256種類ですが、全ユーザが被らないようにするには、2011年9月にTwitterのアクティブユーザが1億人を突破したので、1億枚以上の画像を用意する必要があります。通知アイコンが戻らない4/1に取得されたアイコンが変わる仕様です。通知は一度ファイルに書き出さないとアイコンを表示できないのでいつまでも戻りません。現在はmikutterはこのファイルを削除しないので永遠にそのままになります。ミクかわいいできますよ。残念ながら今後のアップデートで消すようにする可能性が高いですが、もっと残念なことに以下のように実行してキャッシュファイルを全て削除すると直ちに戻ってしまいます。--clean同じ人でもちょくちょくアイコンが変わってるユーザのアイコンを変えているのではなく、画像のURLをフックしてアイコンを変えているので、特定のユーザがアイコンを変えると割り当てられるアイコンも変わります。4/1以降もこのTLがいいwwwみんなミクアイコンにしたらいいのにねぇ。不便なのでプラグインを探しだして削除した。としぁは死ぬべき深刻なユーモア欠落症です。いう人が争いを起こすのだと思います。mikutterは先に述べたとおりこういう人にも寛容です。mikutterを使い続けてくれるなら、来年の約束の日には楽しめるようになっているかもしれません。ユーモア欠落症は治せる病気です。一緒に克服しましょう!ちょwwwwなにこれwwwwマジmikutter神すぎるwwwwとしぁふぁぼろwwww深刻なておくれです。いう人がふぁぼ爆撃をするのだと思います。mikutterはふぁぼ爆撃にも強い設計です。mikutterを使い続けるとふぁぼ魔になるという迷信もありますが、そんな事実はありません。0.1.0.723たまに不特定の2ユーザのアイコンが入れ替わる問題を修正ダイレクトメッセージの強制改行が正常に働かないことがあったダイレクトメッセージにアイコンをつけたRubyコンソールの閉じるボタンがキーボードで反応しなかった例外を捕捉できずにクラッシュした時に、それを標準エラー出力に表示しないことがあった主にバグフィックスです。加えて、再現性の高い致命的なバグは取り終えたので、このバージョンは割とおすすめできる感じになったと思います。0.1としてリリースすることにしました。変わったことはないです、はい。新しくなったmikutterは全てを変えていきます。http://mikutter.hachune.net/0.0.4からの主な変更点リストリアルタイム更新の正式な実装。5000アカウントまでのツイートが、リストタブ上にリアルタイムに表示できます。この挙動は変更できます。APIを使用するタイミングの変更。一部のリクエストが大幅に高速化されました。多くのバグ修正それと便座カバーこれといった新機能はありませんが、コードの大規模な書き直しや、0.0.4で試験的な実装だったいくつかの機能が正式に実装されました。古いバージョンのmikutterを使用している人は、アップデートをお勧めします。いえまだちょいちょいバグがあるんだなこれが。今一度人柱精神を呼び覚まし給え。Releaseについては削除しました。開発版はtrunkを追ってください。trunkにした変更についての話とかをこのブログに不定期に書いていきます。試験的にですが公開します。使いかたプラグインについての情報を、皆さんに書きこんでいただいて共有できたらと思います。なり、READMEに書いてあるメールアドレスなりに投げてください。次の話(0.1.1)時間のある時にでも。pre2プレリリース版2です。これで0.1ということにします。軽微な不具合が残っているけど追々。(tarball直リン注意)リスト不具合を修正。0.1をリリースします。残ってる他の不具合もうちょっと潰してからにしようかなーとか、今週忙しいフラグが無事に回収されるとかするとリリースが遅れます。検索の削除ダイレクトメッセージの送信ダイレクトメッセージ削除ツイートの削除ユーザのプロフィールのリストのタブが表示されないことがあった。リスト加入チェックを厳密に行うようにしたmikutter内部でのツイートの配送方法の見直し。POST関連操作のUIフィードバックの高速化。アイコンファイルキャッシュが壊れることがあったいやー風邪で死にかけたり仕事忙しくなったりでずいぶん間があいちゃいましたよHAHAHAもうすぐ0.1.1を出しますこれはRC1みたいなやつです今後のリリースサイクルについてリリースサイクルを多少見直します。Snapshotを廃止するどうしようかなぁと思ったのですが、trunkは実際の稼働テストが充分にされていない開発中のバージョンで、安定している時もありますが基本的にはいつなにが起こるかわかりません。今までは、現在のmikutterを見てもらうために、trunkのスナップショットを定期的に公開していましたが、Webサイト上に上がっているし変更点もブログに書いてしまっていたため、安定版であると誤解されていました。変更点はそれだけです。現在公開しているバージョン(今は0.0.4)に不具合があったとしても、どんなに高頻度になっても週に一回しか更新はしないつもりです。mikutterのサイトのDevelopから開発版をダウンロードするリンクが消えるだけです。開発版を試すにはmikutterのSubversionのリポジトリをチェックアウトしてください。Web上で開発版をダウンロードする手段は提供しません。更新頻度あんまりよく考えてないけど更新頻度をかなり高くするつもりです。生産性は変わらないので毎回のバージョンアップの変更を小さくしてアップグレードの頻度を上げるということになるでしょう。スナップショットをうpしないようになるとやってる感が出ないからです。0.1.1について話は変わって、0.1を3月1日までにリリースします(前倒しになるかも)。今回のスナップショットを以て0.1に対する新機能実装を終わり、今後はbugfixのみにします。0.0.4のサポートは0.1リリースと同時に終了します。rev.6580.0.4Twitpicの仕様変更に対応。APIライブラリを削除。APIリクエストキャッシュのとり方の変更バグレポートの報告方法の変更。今後はクラッシュした時にしかレポートを送信しませんとりあえず0.1でやりたいことはあとはアクティビティ機能だけになったか...。APIライブラリの実装中です。未実装の機能を使用するような操作をするとクラッシュします。保存・削除など、頻繁に使われない様なPOST系APIは軒並み未実装です。trunkをstableだと思ってる情弱がフッフゥします。最近まともなドキュメントを書いたお陰なのか、mikutterプラグインを書いてくれる人が増えた、ような...。wikiを先に準備します。pluginで、言うまでもなく3つ目がメインです。プラグインを作ったら必ず作者がここに自分のプラグインについて書くみたいなふうにすれば、みんなが幸せになるんじゃないかな。適当にwiki置いてあれするのでまたその時に詳しいことを。vol.1」を頒布しました。@brsywe、記事を書いてくれた@katsyoshi、サポートしてくれた方々、当日来てくださった皆さん、ありがとうございました!宣伝もほとんどしていなかったので、どれくらい捌けるかなぁと心配していましたが、まぁまぁ消化できました。以下、@toshi_aの個人的なまとめです。最初は、たかがTwitterクライアント、しかもこんなに小規模なもので同人誌を出すなんてまた下手くそな冗談を...と思ってましたが、恐ろしいことにマジで応募していたらしく、当日用事を早く切り上げて会場にかけつけたらまじでブースがあって肝が冷えました。参加した魂胆つまり俺の知らない所で勝手に始まっててあとから乗っかりました。いってもmikutterと言われたから乗っかるほど尻軽じゃないです。このブログにも書いた覚えがあるけど、ぼちぼちプラグインチュートリアルみたいなものが必要なんじゃないかと思ってました。そんなところに、丁度同人誌を作っているという話を聞きつけて、ならばこれにプラグインチュートリアルを寄稿して、それを叩き台に正式なオンラインマニュアルを作ってはどうか、と思って参加したわけです。plugin」が出来上がり、本の1コーナーを飾ることもできて、プラグインを書きたいという人に差し出せるドキュメントも一応できました(もちろん、これからもっと内容を充実させていく必要があるので、リンク先はちょくちょく更新する予定です)。このチュートリアルは、各セクションごとに実用的な例から少しづつ新しいことを学べるように作られています。逆引きリファレンスみたいに使うこともできるようにしたつもりです。mikutterプラグインを作りたい人にも、既にmikutterプラグインを作ってる人にも役に立つ内容になっていると思います。こんなこと書いて欲しいとかあったらどんどん@toshi_aに教えてください。pluginについて、見かけた疑問と回答を書いておきます。内容がておくれてない→ディレクターがておくれていました。内容自体は真面目です。下線を引くところがおかしい→なんでこの疑問が俺からしか上がってないのかが不思議です。mikutterの薄い本とかこわい→まじでやられた俺の気持ちがわかるのかフォロイー(followee)ってなに→自分がフォローしている人のことです。対義語は自分をフォローしている人を差すフォロワー(follower)。意外と真面目だった→誤解があったようだね○○はどうして載ってないの?こういうのがあればよかったのに。→ツイートは削除できても、うちのマシンのテキストファイルは消せないよオンライン版@brsyweが、以下のURLでPDFを公開しています。興味がある方はどうぞ。http://home1.tigers-net.com/brsywe/mikutter.htmlまとめ冒頭で、mikutterごときがと書きましたが、そもそも本を出していいソフトウェアの最小規模なんてものは存在していなくて、イベントに行けば規模にかかわらず割と居るものです。反省点もいろいろありましたが、今回はそのお陰でマニュアルもかけたわけで、やってよかったです。いった機会を与えてもらえてとても感謝しています。三年目のはじめから新しいことができました。今年一年もいろいろやっていきたいですね。リリースされましたね。バグとメモリリークの修正がメインということで、確かにmikutterでも長い間計測すれば効果があるように見受けられます。年末にポチった加湿器とミクのフィギュアが届きました。rev.628アイコンのキャッシュの持ち方を変更あんまりTLに出てこない人はファイルにキャッシュしないようにしました。前回のスナップショットにあったいくつかのバグが修正されています。回線での動作が改善されます。画像プレビュー機能の画像サイズがうまく変更されないバグあけましておめでとうございますあまり変更がないのは正月だからだと思った?残念!いままでどおりでした!ヾ(@⌒ー⌒@)ノ年末は実はずっとダークマターと戦ってました。6割くらいHP削りました。あと変身を何回残しているかはわかりません。年始は酒を飲んでました。ご挨拶は元日にしたけど、ことよろおねがいします。二年目あけましておめがいします。)一昨年の12月25日にmikutterが書き始められました。いろ振り返っていたので、今年も振り返ってみましょう。機能追加Twitterには今年もいろいろな機能が追加されました。(mikutterにとって割りとどうでもいいことは書いてません。ありそう、わりとどうでもいいこととか)。JSONオブジェクトで返ってくるようになりました。これが今思えば短縮URLやマルチメディア投稿機能の伏線だったわけか。