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

2011年9月30日金曜日

プラグインの新しい定義方法

前にプラグインを定義する方法を書いたんだけど、なかなか見た目が酷いものだったのでなんとかしようと思って、最近はもうちょっと情況が良くなってる。

例えば最近話題になってないDirectMessageのプラグインは、新しい書き方が使われてる。

今までは、Plugin.createで作ったプラグインオブジェクトにadd_eventメソッドとかで新しいイベントを定義してました。このせいで、mikutterのプラグインはかっこ悪いことになってました。

新しい形式では、Plugin.createがブロックを取れるようになっていて、プラグインオブジェクトのスコープでinstance_evalするようになりました。更にmethod_missingでイベントのフックがかけるので前回のプラグイン定義の記事のコードが

Module.new do
  plugin = Plugin.create(:myplugin)
  plugin.add_event(:update){ |service, messages|
    messages.each{ |m|
      puts m.to_s
    }
  }
  plugin.add_event(:mention){ |service, messages|
    messages.each{ |m|
      puts m.to_s
    }
  }
end

こうなります

Plugin.create(:myplugin) do
  onupdate do |service, messages|
    messages.each{ |m|
      puts m.to_s
    }
  end

  onmention do |service, messages|
    messages.each{ |m|
      puts m.to_s
    }
  end
end

当社比よくなった、これは人類にとっては小さな(ry

なにがよくなったかまとめると

  • いちいちPluginを変数に入れなくていい
  • Plugin.createがブロックを取るようになったので、外のスコープを汚さないための無名モジュールが消えた
  • イベントを定義するところが簡潔になった

とかかな。

どうなっているかというと、このコミットがされた時のdiffを見れば一目瞭然なんですけど、onかon_で始まるメソッドが呼ばれたら、その後ろをイベント名として、イベントを登録するようになってます。

on_が別に扱われてる理由は、long_name_eventみたいな名前のイベントを呼ぶとき、onlong_name_eventよりon_long_name_eventと書けたほうがバランスがいいからです。
同様に、filter_?でイベントフィルタ、hook_?でフックを登録できるようになっています。

やってること自体はRubyでは別に何ら特殊なことでもないし、こういう感じのもよく見かけますよね。漸く人並みになれました。

これは、0.0.4から使えます。万が一こうやって書かれたプラグインを0.0.3にインストールすると、何も起こりません。注意してください。


2011年9月21日水曜日

#mikutter 0.0.3.514, 0.0.4.514

  • 0.0.3.514
    • 規制されているときに誤ってPOSTしてしまった時に、設定した回数無駄にリトライしていた不具合
    • TwitterのREST APIが不安定なときに、大量にツイートなどの新着通知が発生してしまう場合がある
  • 0.0.4.514
    • DMの削除
      • とりあえず右クリックだけ
    • DM本文の自動改行するようにした
      • この修正のせいで、たまにDMの画面がチカチカしたり表示されなかったりする不具合があります
    • DMをやりとりしたユーザ一覧を、最後にやりとりした日時がより最近のものから順番に表示する
だいたいDM関連終わりましたね。
あとはアイコン付けて色つけて。あまりこれを細かく作り込もうとは思ってません(ロードマップにあるぶんはやるよ)。DMが扱えるようにしているだけなので、ね。もちろんパッチとかは大歓迎です。まーまだやってる途中なのであれだが。

あと次回のリリースはお休みします。お仕事忙しそうなので。下手するとその次も。流石にその次はできるんじゃないかな。どうなる俺、どうなるmikutter!


ヾ(@⌒ー⌒@)ノヾ(@⌒ー⌒@)ノヾ(@⌒ー⌒@)ノ


ところで、最近コミッタを増やしてもいいんじゃないかなと思ってます。
  • 俺よりRuby得意|プログラミングの才能ある奴(あほっぽい言い方だ)がコミットしたら品質あがるのでは
  • 単純に人数が複数人いたら開発速度あがるのでは
  • パッチよく送ってくれる人はそもそもコミットすればよいのでは
という思惑があるのですが、
  • ユニットテストが壊滅してるからせめて通るようにしてからにすべきでは
  • としぁさんの動きが鈍いのでは
  • そんな暇人いないのでは
  • バク報告ツールで上がってきた統計情報を共有する手段がない
という問題もあります。

こちらがある程度動けないとコミット権限上げるとかもできないので、考えてるだけなんだけどね。落ち着いたらなにかアクション起こす。
DMやってる間他のデバッグとかが止まるということがなくなったりするとうれしいかもね

2011年9月12日月曜日

#mikutter 0.0.4.505

追加
  • ダイレクトメッセージの対応開始
    • まだできてない
  • DM権限のないトークンの場合、認証画面を再度表示して認証させる
修正
  • はじめてmikutterを起動するとき、ウィンドウが出ず、認証できない
DMを一応使えるようにする試みをやってる最中。あと細かい並び替えとかそういうのが残っている
そしていろいろバグがでてきましたね

2011年9月4日日曜日

#mikutter 0.0.4.493


  • スクロールアニメーションを変更
ヾ(@⌒ー⌒@)ノなんかごめん
今週はなにか大きなことをします

あと、今回は0.0.3のリリースはありません