これが、3.5。
mikutterのお誕生日が近づいてきました。今年もmikutterの誕生日を記念して
アドベントカレンダーをみんなで書いていますが、作者直々に初日に登録して頓挫させておきました。アドベントカレンダーを確認したら今日も書くことになっていたので、この記事を8日目の記事とします。
mikutter 3.5はおよそ7ヶ月?8ヶ月?ぶりのアップデートです。
Model
プラグインがModelを追加できるようになりました。それに伴って、mikutter上で扱われるリソースがwrapされ、扱いやすくなりました。
サードパーティプラグインのModel
独自のModelを追加できるようになりました。追加する方法は
Writing mikutter Plugin に既に書かれています。
Message以外をTimelineに表示できる
タイムライン上に、ツイートを表わすMessage以外のModelを与えることができるようになりました。
mikutterではMessageのほかに、SystemMessage Modelが表示されます。
標準プラグインによって追加されるModel
以下のModelが新しく提供されます。
- Plugin::Intent::IntentToken
- Plugin::Intent::Intent
- Plugin::Activity::Activity
- Plugin::Openimg::Photo
- Plugin::Search::Search
- Plugin::Photo::Photo
- Plugin::Skin::Image
- Mikutter::System::User
- Mikutter::System::Message
- Mikutter::Twitter::DirectMessage
- Plugin::Web::Web
MessageModelの変更
Message#icon で、ユーザのアイコンを表わすPhotoModelを取得できるようになりました(後述)。
Message#icon_large で、大きい方のアイコンを取得できます。
Photo
Twitterユーザのアイコン、タブのアイコン、スキンの画像、添付写真など、ありとあらゆる画像が Plugin::Photo::Photo を始めとしたPhotoModelのインスタンスとして取り扱われるようになり、場所によって画像のパスを指定したり、URLを指定したりとインターフェイスがバラバラだったのを統一しました。
(TODO: 説明を書く)
Plugin::Photo::Photo
PhotoModelは、こういうコードでURLに対応するインスタンスを得ることができます。
Plugin.filtering(:photo_filter, 'http://totori.dip.jp/totori_rtx1210_full2.jpg', [])[1].first
もちろん、ローカルファイルシステム上のパスも取り扱えます。
スキン
Skin['icon.png']
などと書くことで、SkinのImage Model(Plugin::Skin::Image) を得ることができるようになります。
DirectMessage
DirectMessageに対応するModelが用意され、MiraclePainterでタイムラインを使って描画されます。
mikutterコマンド
ツイートに対する全てのmikutterコマンドが利用でき、サードパーティプラグインによって追加されたtimelineロールのmikutterコマンドを利用できます。
URL
本文の中に現れるURLをクリックできるようになりました。
Subparts
MiraclePainterを拡張するサードパーティプラグインがインストールされている場合、それがDirectMessageでも利用できます。
Intent
URLをどういったプラグインで開くかを設定できるようになりました。標準では以下のことができるようになります。
- Twitterのユーザページのリンクをクリック→ブラウザで開くか、mikutterでプロフィールを開くかを選択する
- ツイートのパーマリンクをクリック→ブラウザで開くか、mikutterでツイートの詳細画面を開くかを選択する
- Twitter検索のページのURLをクリック→ブラウザで開くか、mikutterでそのキーワードを検索するかを選択する
などなど。この選択は記憶させることもできますし、設定画面の「関連付け」で編集することもできます。
ツイートの詳細はmikutterでは開かず、必ずブラウザで開くといった設定も可能だったような気がします。
開く方法はプラグインで追加できます。例えばメールプラグインというのがあったとして、メール本文に含まれるTwitterのユーザページのURLをクリックした時に、ブラウザで開くのではなくmikutterの中でプロフィールを開くことができる、といった使い方を想定しています。
抽出タブ
データソースとしてDirectMessageを追加しました。複数のTwitterアカウントを登録している場合、全アカウントに関係するダイレクトメッセージの他に、各アカウントのダイレクトメッセージのみが含まれるデータソースが提供されます。
設定
タイムラインに表示されるModelに対して、その種類ごとに表示設定をできるようになります。
|
抽出タブを使ってツイートとDMを同じタブに表示しているが、表示設定が違うので見分けが付く |
例えば、ツイートとDMにそれぞれ異なった背景色やフォントを設定できます。
mikutterコマンド
Intentを発行するための「開く」コマンドが追加されました。Intent機能をつかってそれを開くコマンドです。
ダブルクリックに割り当てておくといい感じです。
アクティビティ
Plugin#activityに名前付き引数
children: が追加されました。
Modelが入った配列を渡すことで、そのアクティビティが選択された時に関連するModelとして表示されます。
このリストに表示されているModelは、ダブルクリックするとIntentがそれを開きます。サードパーティプラグインが発生させた独自のアクティビティでも、関連するModelを開くことができるようになりました。
書き忘れていること
今回はボリュームが大きいのでいろいろありそうです。この記事は記録の意味もあるので、思い出したり変更があったりしたら追記していきます。
いつ
今回はmikutter 7年目となる 2016/12/25 の公開を目指して、現在ブラッシュアップを進めていますが、フィリスのアトリエが発売後の最初の年末ということを考えるとクオリティを気にしていたら間に合わ無さそうなので、12/25に出たalpha版をmikutter 3.5.0とします。
ぶっちゃけると、別にバージョン番号なんていうのはメンテされているアッピルのために対外的につけているだけで、ヘビーなmikutterユーザからしたら常にHEADを使っているわけだから、この記事なんかも「そんなことができるようになったのか!」ではなく「ああ、それねーそれそれ、二年前に飽きたわー」と思って見ているわけです。
古いというのは必ずしも悪いことではなく、リリースされたmikutterは、多少?バグが相対的に?少ない?かも?いや少なかったらいいなあー?あわよくば、バグが一つでも修正されているといいなーと僅かに期待できないこともない?という考え方もあるのです。これだけみんながドッグフードを食べたので、十分でしょう。
今回まとめていて、ああ、これもまだだったのか、と驚きながら書いていました。もっと細かくリリースすればよいだけの話ではあるんですが、クリスマスといわず、早く届けたいなーと思っています。今回は数年ぶりに満足にcommitできたので、何年ぶんか進んだような気がします。
特に今回は大きな変更となるので、そのぶんバグも多いはずです。怪しい挙動を見つけた場合にはツイートするのではなく、
Redmineに書くようにしてください。それでは、mikutter3.5でお会いしましょう。