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のリリースはありません

2011年8月27日土曜日

#mikutter 0.0.3.485, 0.0.4.485

0.0.3

  • 画像プレビューで、HTMLタグが1行に収まっていない場合開けなかった
  • 画像プレビューで、URLが短縮されていても強制的に展開してプレビューできるようにした
  • Ruby 1.8.7で、URLを含むツイートを右クリックするとクラッシュしていた
  • Ruby 1.8.7で、接続タイムアウト時に稀にクラッシュしていた
  • bit.lyのurlを展開するとき、稀にクラッシュしていた
  • URL展開の高速化


0.0.4

  • 0.0.3のバグ修正をマージ
  • openimg
    • Flickrに対応
    • Instagramに対応
  • t.co
    • t.co展開プラグインを取り込んだ
今回は画像展開関連のことしかやってません。1.8は、安定した気がするけれどそもそもRubyGtkがこけまくるので体感安定性は変わってません。近々手を打ちます。

画像プレビューは、近いうちに一気に増やします。もし http://dev.mikutter.hachune.net/issues/278 に書いてないサービスでmikutterが対応していないものがあれば教えてください

2011年8月21日日曜日

#mikutter 0.0.3.472, 0.0.4.472

0.0.3

  • Ruby 1.8.7環境でURLを含むツイートを右クリックするとクラッシュする
  • タイムラインの一番上から下にスクロールするとき、一度オートスクロールアップが誤動作する
  • 各種通知にミュートが働いていない
  • TL更新時に稀にクラッシュする
  • ユーザ情報が過去のものになることがある
  • タイムアウト時に稀にクラッシュする


0.0.4

  • GYAZOの画像プレビューに対応
いろいろバグをなおしました!0.1結局無理ですね!

2011年8月14日日曜日

#mikutter 0.0.3.460 0.0.4.460

不安定版 0.0.3.460と、weekly release版0.0.4.460をリリースしました。

0.0.3.460

  • 追加
    • 短縮URLを再帰的に展開する機能をつけた。TwitterがTwitpicなどの外部画像アップロードサービスのURLを勝手に短縮しても開けるようになった。


0.0.4.460

  • 追加
    • lockerzの画像プレビューに対応
    • mikutterのプラグインを全て削除してbot機能のみを抽出するスクリプトの試作品を追加。

8/15からTwitterが20字以上のURLを自動的にt.coで短縮するようになったので、mikutterなりに対策を講じました。
えへへー殆ど何もできてないよぉー