何もしてなくてもとりあえずこう言っておけばいい。mikutterコマンドのUI関連。メリットはほぼ無いけど古いAPIは運営のやる気がないようなのでさっさと引っ越すべき。Requirementsどうするかね。マルチアカウントの準備。マルチサービスのためにね。12/25にリリース。今回は三周年記念のバージョンアップなので、以上のことができてなくても、できてる部分だけでバージョンあげちゃいます。高速化は実は0.2になったことで割と速くなったんだけど、それによって更に速くできる予知が生まれたのであえて書いた。Ruby2.0で高速になるという話もちらっと聞いたけど、追い風になるだろうか(1.8→1.9は凄すぎて、mikutterの1.8サポートを即切ったね)。コマンドは、できることが増えたのでコマンドの種類も増えてしまい、探すのが大変なので。閉じるアイコンの出番がまた増えます。v1.1の要件でもあるDR対応はやるけど、そうなると糞UIになるので、UIを過去のものに戻すプラグインも同時に公開しないといけません。mikutterがただのTwitterクライアントではないことは皆さんご存知の通り。マルチアカウントっていうのは、もうとっくの昔からそうなってるんだけど、昔botだった頃のコードは流石にマルチアカウント対応になっていない。うまく行けば0.2.1からマルチアカウント対応にできるけど、なんか嫌な予感しかしないからどうするかね。遠い昔の夢だった、別のSNS等への対応のためにも必要なことだね。来る12/25は皆さんご存知の通りmikutterの3周年です。0.2.1をリリースします。上に書いたことが一つも出来なかったとしてもバージョンを上げますバージョンは飾りなので。アドベントカレンダー(http://atnd.org/events/33911)やコミケでの薄い本vol.3の頒布(http://home1.tigers-net.com/brsywe/mikutter/mikutter3.html)も行いますし(落ちたけど委託できたようです)、世間でもこの佳節を記念して、普段アニメ等を見ない私がハマったアニメ「けいおん!」の映画の地上波放映が行われる(http://www.tbs.co.jp/anime/k-on/k-on_tv/news/news.html#201211221700)など、過分な祝福を頂いております。本筋とは全く関係ない話。プラグインのパッケージ管理とかやってくれるのが欲しいと思って、ちょっとだけ作りかけてみました。中に入れたら動くようになっています。いちいちビルドとかしなくていいので楽ですし、単純なので理解しやすい(置く→動く!)のですが、単純過ぎる故に色々と問題がありました。プラグインを探すこれといった方法がない現状として、プラグイン纏まった場所がないので、プラグインを探す時はgoogle先生にきくしかなく、検索すべきキーワードがわからない、特に欲しいプラグインがないという時にダラダラ見れるリストは存在しないようです。何が入ってるかパッとわからないプラグインディレクトリ見れば分かりますが、ねえ。mikutterのバージョンとプラグインが想定するバージョンを気にしなければならない多くはREADMEとかに書いてあると思うけど、ねえ。最新版の確認を、全てのプラグイン毎に行う必要があるリポジトリを直接プラグインディレクトリにチェックアウトすると楽にできるけど、それにしたってステップ数が減るだけで、誰もがパッケージ管理みたいなことしてくれないのかよ、って思っていたのではないでしょうか。今まで挑戦した人もイタみたいですが、皆途中で一身上の都合又は音楽性の違いにより、完成には至らなかったようです。私も以前一度やろうとしていましたが、既存のものを使って辺にこったものを作ろうとしてしまって頓挫しました。いうのも、プラグインから提供してもらえる情報というのが意外と少ないんですよね。0.2で状況が変わって来ました。0.2からプラグインの依存関係を記述する目的で、プラグインにYAMLで記述された定義ファイルを同梱しておく機能が導入されました。これは、依存するプラグインを記述しておき、それが先にロードされるようにすることで、コアを書き換えるプラグインの機能に依存したプラグインを書けるようにという目論見です。ついでに、プラグインのバージョンとかも書けるようにしました。詳しくは「プラグイン移行ガイド」の7章を見てください。書く割にはほとんどのキーが使われていないというのが現状ですが、この情報を利用したらパッケージ管理みたいなことができるのではないかと思ってやってみました。理想リポジトリみたいなのに登録されてるプラグインを一覧したい。インストールはできるだけ簡単に。Playみたいに評価とか付けれるようにしたい(審査ができないため、悪意のあるコードが入ったプラグインを実行してしまうと...。)作ってみたhttps://github.com/toshia/mikustore0.2で使えます。クリックで開かない)するとプラグインの説明が出てきて...っていうのはスクショ見たら大体イメージつくと思います。変なプラグインをインストールしてしまったのでインストール済みになってしまってます。プロトタイプなので使用はおすすめしませんが、現時点で以下のような機能があります。プラグインをインストールする。通常のプラグインディレクトリにスラッグと同じ名前のディレクトリを作ってそこに設置。cloneしてるだけなのでgitコマンド必須です。みっくストアを用いてインストールすると、すぐにmikutterにロードされるので再起動は必要ありません。「導入」カラムに表示されているバージョンは、インストールされているプラグインのバージョンです。バージョンがないけどインストールされてるものは○、インストールされてないものは空白。「みっくストア」を用いずにインストールしたものも検知できます。開発者の気がふれていないか確認プラグイン開発者の頭に不具合がないか確認できます。mikutterプラグインはなんでもできてしまうので、信頼できないものは入れるべきではありません。簡単だとホイホイ入れちゃいそうだけど。これ以外は何も実装してません。バージョンアップ、アンインストール等はそのうちつくんじゃないかな。意味のないトレースをエラー報告として送っていたのをやめたあんまり何も変わっていない。二週間経ったのでバージョン上げてみた。いつかみたいに大して何もなくても毎週バージョン上げるようにしたら危機感持てて、ちょっとは開発速度上がるかなとか思って。パッチとかももらってるし割と残してるバグもあるんだけど、最近元気がなくてなかなかコードをかけてない。mikutterの薄い本製作委員会がコミケ落選したのは関係ないです。0.2ではプラグイン開発者が嬉しい機能とかあるのでそういうのもまとめたいと思っているんだけどコードすらかけてないし全然時間が足りない!これから寒くなったら自分の部屋でコード書くのがかなりしんどくなってくるのに。隠し機能、mikutterコンソール機能を正式機能として採用。起動中のmikutterの中でRubyのインタプリタっぽいものが使える隠し機能、マルチペインを正式機能として採用。タブの右クリックやショートカットキーで、特定のタブを新しいペインに移動することができる内部変更UIを一から書きなおした。自由度が上がって若干パフォーマンスも上がった。コマンドロールを刷新。Gtkオブジェクトをイベントで渡す方法はオワコンになった。プラグインメタ情報ファイルのサポート。youRC2の内容と全く同じです。RC2を使っていた人はバージョンアップする必要はありません。今回はいくつかUIに細かい変更を加えています。長い時間をかけてUIをできるだけ変更しない方法を模索していたけれど、やむを得ず変更を入れました。大幅な内部変更のおかげでフォーカス処理などがプラグインからできるようになりました。単純なものはmikutterの標準で実装しています。詳しいことは使ってみればわかるんじゃないかな(http://mikutter.hachune.net/)細かいバグがいくつか残っています。安定したmikutterが使いたい人*1は、アップデートを待ってもいいんじゃないでしょうか。アアアッwwwプラグイン開発者の方は、内部APIの一部に互換性が無いのでご自分のプラグインを確認してください。ナウい♂プラグインマニュアルは今書いてます、多分次の薄い本にもそれが載ると思います。仕様変更リストでフォローしているアカウントがされたリツイートを取得しないように変更した。今後は(そういったプラグインを入れない限り)フォロイーのリツイートしか表示されない。遅くなりましたがRC2です。基本的にこれで大丈夫だったら0.2の最初の版ということにしようと思っています。他にも判明している不具合はありますが、使用に支障をきたすほどのものではないので、これらができていないからといってリリースを延期する予定はありません。それまでに修正できたものについてはアップデートに含めます。現在判明している不具合は以下のとおりです。他にも何かあれば報告お願いします。一週間程様子を見て、大きな不具合がなければ、このまま押し切ります。何かあれば教えてください。ダウンロードページの一番下からダウンロードできます。0.2がつかえるようになると思います。これを以てバグ報告の受付を開始します。できてないこともあるけれど、数が減ってきたのである程度つかえるレベルになってきたと思います。̄UリリーススケジュールRedmineのトラッカーが「機能」か「致命的」になっているものが全て完了した時点でRC1を公開(tarball)、致命的な不具合があれば修正して、数日サイクルでRCをリリースしていき、一週間大きな問題が見つからなければ0.2をリリースです。9/30あたりになればいいんだけどな。新機能ちょいちょい言ってますがざっとおさらい。前回のエントリで説明したとおりです。人によっては、拾ってきて入れてるプラグインが対応して無くて起動できなくなると言ったこともあるでしょう。マルチペインマルチペインに正式対応しました。二つ以上タブがあるペインのタブを右クリックすると、「新規ペインを作成」というコマンドが出てきます。これで新しいペインが一番左にできて、そのタブがそこに移動します。今までの怪しい隙間にD&Dで増えるというのはないです。ペインの構造が大幅に変わったので、0.1系のペイン情報は失われています。設定タブを廃止しました。ステータスバーの右にあるネギレンチアイコンをクリックすると、設定ウィンドウがポップアップします。設定はいままでどおり、触ったら即反映されます。決定ボタンなどはないので、設定が終わったらWMの機能を使って設定ウィンドウを閉じてください。プロフィールプラグインプロフィールプラグインを書き直しています。レイアウトが大幅に変わったことと、ふぁぼ・ふぁぼられ数が見れるようになったことが変更点です。フォーカス操作系のコマンド左右のタブに移動する等、キーボード操作をしやすくするmikutterコマンドを大量に追加しました。ショートカットキーの割り当て画面考えないとそろそろきつくなってきましたね。この世の全てをそこに置いてきたいろんなプラグインにどさくさに紛れて隠し機能を追加しました。あと、いい忘れてる機能もありそうです。バグ報告クラッシュしたらレポートを送ってやってください。バックトレースをコピペしてRedmineで適切に報告してくれたら、より早く対応できます。バグ報告はRedmineでお願いします。Twitter上で報告されてもチケット化が追いつかないし、そもそもバグの報告から修正完了までの流れを扱うのに不向きです。流れが早いため他の人との情報の共有がうまく行きません。一応リプライで言われても聞きますが、基本的にTL上にいる時は休憩中なので、その場で聞いてるだけですぐに忘れる、ということがしばしばあります。質問はTwitterで結構です。アカウントを持ってる人には最終的なチケットの作成はお願いすると思います。mikutterのRedmineアカウントを持っていない人で、報告するのに登録してやってもいいという方は、登録フォームから登録してください。アクティベートは手動で行うので、登録したらリプとかで知らせてください。チケット作成の流れはこちらの文書を参照してください。Redmineで残作業を確認するにはこちらから。コンソールのように、実装してあるのにまだチケットが残っているものは、現在作業中ということです。系と互換性が失われた部分がいくつかあり、プラグインを開発している人にはお手数ですが自分のプラグインに手を入れてもらわなけばいけなくなりました。それもこれもクーラーが壊れたのが悪いんです。みなさんのプラグインをどうやって移行していけばいいかを簡単に説明します。今回は、あくまで0.1用のプラグインが「動く」ようになることを主眼に説明します。最小ステップで動くようにする方法を紹介します。したがって、0.2対応のプラグインを書くためのドキュメントとしてはあまり使えません。目玉の変更はGUI関連に大幅に手が入ったことです。これにより、複雑なGUIをもったプラグインが動作しない場合があります。基本的には必ず書き替えなければならないと考えてください。イベントでそれをGUIに渡して、適切な場所に配置されていました。これからはGtkは基本的には使いません。いうスタイルをとっています。いう目論見があります。インターフェイスを定義することには向いていません。(そして、いくつかのmikutterプラグインは未だにこの古い方法でタブを構築しています)。Gtk::TimeLineもそのままでいい。(Gtk::TimeLineは昨日あたりまでバグで動作してませんでしたが、今はもう大丈夫です)あとどうでもいいんですけど、registっていう英単語はないんですってね。なんであると思い込んでたんだろう。イベント名なので単純に変えられないし。早くこんな黒歴史イベント消し去りたいです。このイベントを使わずにもっとクールに書く方法はあるんですが、今回の範囲外なのでカット。使って設定を挿入することに変わりはありません。これについても、内部のAPIは完全に互換性があります。廃止されたイベント内部でしかほとんど使っていなかったような、Gtk関係のフィルタを削除しました。変わっていませんが、mikutterのUIの構造は大幅に変わっているので、安直に代替できるものはほとんどの場合ありません。Gtkウィジェットのツリー構造を直接操作するようなプラグインも(多分見たことないけど)動かなくなります。コマンドおそらく一番多くの人にとって問題になるのはmikutterコマンドです。これは今回どうしても変更せざるを得ませんでした。メソッドを使用します。従来の書き方をおさらいしてみましょう。中に入れるハッシュの中にもスラッグを書いておかなければいけません。好ましいAPIではありませんでした。フィルタなので、最後に引数を配列で返す必要があります。ミスをする原因にしかなりません。0.2では以上の点を改善しています。commandメソッドが追加されました。従来渡していたHashと同じ物を渡します。設定されている値が流用されます。使うようになりました。Hashが加工されているとお考えください。いうかそうなってます。これは単純に、よくある条件を定数にまとめたもので、あえて使う必要はありません。mikutterの「core/plugin/command/conditions.rb」にまとめられています。実は引数に渡される構造体にも若干の変化があるのですが、それは次の実行部分の話にまとめます。ロールどのウィジェット上でコマンドを実行するかを指定する部分で、条件や実行時に渡ってくる引数が変わります。