mikutterの最新の情報は、mikutter blogに引っ越しました。

2011年12月17日土曜日

#mikutter 0.0.3, 0.0.4, 0.1 rev.615

  • 0.0.3
    • デフォルトのブラウザの判別の不具合
  • 0.1
    • ruby-libnotifyを利用した通知を試験的に導入
関係ないけど、mikutterをテーマにした薄い本をどこかで頒布するらしく、いい機会なのでプラグインマニュアルをその本に載せるという体で書いて、Webにも公開しようと思ってます。
別に今週何もコミットしてないことの言い訳ではありません。ドキュメントのせいじゃないです。iPhoneで某名作が発売されるというトラブルがあったのが原因です。ドキュメントのせいじゃないです。

来週の日曜日はmikutterにとっては記念すべき日ですね。
12月25日…mikutterが書き始められた日です。今ではmikutterも広く認知されてきて、街ではmikutter二周年を祝って家とかにLEDを巻きつけたり木を置いたりしてお祝いムード一色です。
よーし、25は日曜日だから、思う存分コミットだ!

2011年12月11日日曜日

#mikutter 0.0.4, 0.1 rev.609

  • 0.0.4
    • URLをブラウザで開けない時にクラッシュする問題
  • 0.1
    • リストに表示されるべきでないツイートが入っている問題に関する修正
    • 一部環境で、設定画面のタブがいくつか欠落する問題
とまあfixだけです。
いやあ最近なんか忙しいと思ったら年末じゃないですかやだー
1.0無理だけど0.1はなんとかしたいなーとか思ってたらもう11日じゃないですかやだー
年賀状なんもしてないじゃないですかやだー

ておくれや

2011年11月27日日曜日

#mikutter 0.0.4, 0.1 rev.603

  • 0.0.4
    • 特定の条件を満たしたツイートを受信した時にクラッシュ
    • 同じ短縮URLのキャッシュが使われない場合があった
  • 0.1
    • 画像に対するリンクをポップアップで表示するようになった
    • 複数のPostBoxが存在している場合、いずれかを削除できるようになった
      • 空になっていることも削除の条件になります
      • ツイート失敗してから削除できるようにつけた機能です。通常は気にする必要はないです
    • 起動ロジックの書き直し
      • --profileオプションの追加
      • コマンドラインモード、デーモンモードを一度的に非サポートにしました。優先度低めで実装します
    • プラグインにコアライブラリの読み込みを明示的に書く必要が無くなった
      • 具体的には、miquireをプラグインに書く必要がなくなりました。書かなければ動かないという事があれば、バグです
わーいコミット600超えたー
0.1では大規模なリファクタリングばかりしていて、機能追加が全然ですね。
というのも、0.1でしたいと思ってることはあんまりなくて、掃除を主にやっていきたいなとおもってるんですよね。

追加したい機能で今のところ一番でかいのは、抽出タブの機能・UIを強化改善して、フレンドTLなどを取り払うというのが一番大きいでしょうか。TweetDeckのように、自由にタブを作る感じです。タイムラインにフィルタとかをつけることができるようになります。

あとはTLごとのイベント・フィルタですね。具体的には、タブごとに通知設定できます。
これ実はすごいことだと思いますよ。mikutterでこれを実装するということは、スレッドに対して通知が設定できるってことですからね。Skypeのチャットルームみたいに使えそうです。

とはいえ具体的にやりたいことをチケット化していないので、ちゃんとこのあたりもやらないといけないのだけど。

関係ないけどクリスマスにバージョン1.0は厳しそうです。いや、今の進捗的な意味でもそうかもしれないけれど、年末デスマーチフラグが建設されており…。やだなぁクリスマスに会社に泊まってたら横の家から愛し合ってる音とか聞こえてきたらやだなぁ

2011年11月19日土曜日

#mikutter 0.0.3, 0.0.4, 0.1 rev.592

  • 0.0.3
    • リストの設定を操作すると稀にクラッシュしていた
    • Twitterや回線の不調などの理由で、送信されずにずっと残り続けるツイートを削除できなかった
  • 0.0.4
    • ツイートを複数選択したあと右クリックすると、右クリックしたツイート以外の選択が全て解除されてしまっていた
    • Mac OSで動作させた場合にも、URLをブラウザで開けるようにした
  • 0.1.0
    • 適切にリンクが貼られないツイートがあった
ただのバグ修正です。深い意味はありません。

2011年11月16日水曜日

Activityについて

TwitterがActivity機能の提供を開始したようで。
これは、フォロイーのふぁぼ、リツイート、フォロー、公開リストの作成と追加を知ることができる。まだAPIは公開されてないし、それどころか一時的に機能停止したりといろいろと微妙な第一印象だけど、APIが公開されたらmikutterはどんなふうにサポートしていけるか、また何を追加すべきかを考えてみた。

ふぁぼ
現在、UserStreamを使えば自分のツイートのふぁぼられ、自分がふぁぼったツイートが取得できる。これに加えて、フォロイーのふぁぼりが取得できる。
mikutterでは、favstarのように各ツイートが誰にふぁぼられたかを表示する機能があるので、他人のふぁぼりも自然に表示することができる。
というよりは、UserStreamが発表されてからずっと、他人のふぁぼもわかるように成る時が来ると踏んでいて、こういうUIにしていた。今で約一年経ったが、APIが公開されればついに時が来るわけだ。
強いて言えば、自分に関係のないふぁぼは、TL上でageない、そもそも描画しないといった設定を作るべきだろう。

リツイート
現状でも、フォロワーのリツイートは見えるので、これがどのように表示されるかはご存知の通り。ここにさらに、フォロイーがリツイートされたツイートも入ってくる。
ここでも自分に関係のないものは表示しないようにするという選択肢があるといい。具体的に言うと、他人のツイートがフォローしていない人にリツイートされた場合は、自分に関係ないといえるはず。

フォロー
自分がフォローされたことは、UserStreamでわかる。ただし、libnotifyによる通知にしか対応していない。
また、フォロワーはフォロワータブで確認できる。

リスト
実は今のmikutterはList関連のイベントはだいたい無視してる。これは、取得した所で適切に表示する方法を持っていないからだ。
mikutterには今のところ、他人のリストを表示する方法はない。

アクティビティタイムライン
ということは、今のmikutterがアクティビティに対応するために致命的にかけているのは、せいぜいイベントをタイムライン表示することができないということだけだ。これがあれば、他の全ての機能はアクティビティ機能によって自然に強化されるだろう。

課題
単純に情報の流量が増えるので、今まで問題のなかった環境でも、パフォーマンスの問題が出るかもしれない。当然、そのためにアクティビティ機能は選択的に無効にすることができるようにするわけだけど、あったら全部使いたいよね。

まとめ
今からでも、システムメッセージのタイムラインなんかは作れるし、公開され次第すぐにでも対応したいところ。

2011年11月14日月曜日

#mikutter 0.0.3, 0.0.4, 0.1 rev.580

  • 0.0.3
    • 投稿中にしいたけを押せるようになった。投稿キャンセルができるように。
      • と思うじゃん?まだちゃんと動いてないんだなこれが
  • 0.0.4
    • なし
  • 0.1
    • Pluginモジュールをクラスに変更。PluginTagを廃止してPluginに統合。
    • 一部環境でmikutterが起動出来なかった
    • Ruby 1.8向けのコードを一部削除。
      • 多バイト文字の処理の違いを吸収するコードを削除したので、若干効率が良くなったはずです
うーん最近スランプ気味な気がする。全然コードを書く手が動かない。ミクに惚れた時以来だ。
サーバのrdocのバージョン上げて、テンプレートをdarkfishにしました。だからRDocがとても見やすくなってます。これでもう少し便利になったかな


Activity解禁おめでとうございます。mikutterは、ご存知の通り、他人のふぁぼも違和感なく表示することができます。だからはやくAPIを!公開して!ほしい!

2011年11月7日月曜日

プラグインが提供する設定項目とUI

プラグインを作っていると、設定を保存したいことが出てきます。ただの数字一つを保存するために、いちいちファイルに保存するのは非常にアレです。

設定値の保存と読み込み

そんなときは、UserConfigを使いましょう。以下のように使えば、mikutterの設定ファイルに設定を書き込めます。

UserConfig[:conftest_value] = 1

また、読み込みはこう書きます。

UserConfig[:conftest_value] # => 1

これは、全てのプラグインで共通なので、設定のキーの名前は、「プラグイン名_キー名」とするのが暗黙のルールみたいになってます。上の例の場合conftestプラグインですね。

手軽ですが、これをプラグイン間通信のために使わないでください。数少ない例外としては、表示の設定なんかは、設定用のプラグインが保存して、レンダリングするプラグインがその設定値を読みますが、そのあたりの裁量は空気を読みましょう。ベターな方法は、プラグインフィルタを使う方法ですが、まだ記事を書いてなかったので近いうちに書きます。すみません。

ユーザに設定させる

ユーザに設定してもらいたい項目が出てくることがあります。そんなとき、設定タブにプラグインの設定が追加できたら便利ですね。
mikutterでは、後から入れたプラグインが設定画面を新しく作ることができるようになっています。
以下は「表示設定」の設定画面を表示するプラグインです。先にいっておきますが、これが0.0.4ではちょっとマシになりました。ナウいやりかたは後述します。



なんかまーやりたいことはわからないでもないけど、ちょっと大きいですね。あとRubyらしくないと思う人も居ると思います。
0.0.4からは、プラグインの定義中で、settings do ... end の中に、設定項目を書くことができるようになりました。



ずいぶんすっきりしましたね。
この方法のメリットは、

  • ラベルと設定値と、最低限のUIの指定(候補から選択、キーボードで入力、ON/OFF等)だけになっている
  • RubyGtkを使わないので、実装が変わっても、RubyGTKを知らなくても簡単に書ける
とかがあります。

settings内で使えるメソッドの一覧は、core/addon/settings/builder.rbで定義されています。rdocあると思ったんだけど、プラグインなのでrdoc生成してません。コメント読んでください。

基本的には、第一引数がラベル名で、第二引数がUserConfigのキーです。ユーザが変更したら直ちに値がセットされます。

余談ですが、こういう適当にかいてることを、Wikiにまとめようと昨日あたりから動き出しました。だからもうちょっと丁寧な説明がまとめられるかもしれません。
そういうでかいマニュアルあまり書いたことが無いので、1分でわかるiPhoneアプリ開発みたいな本適当に読んでパクろうかなぁ