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

2013年8月14日水曜日

#mikutter 0.2.2.1328


  • リストをmikutter以外から削除した時に、リストのタブが消せずに残り続けてしまう問題
  • 0.2.2.1318から、とある大人気サードパーティプラグインが無い環境で(失笑)確実にクラッシュ
コミケお疲れ様です!俺は仕事をしていたおかげで熱中症になることもないかと思ったら、会社が暑くて軽く熱中症になり、コミケ気分を味わうことが出来ました。やったね!

やはりホームTLに実績表示するようになってから、初めて実績に気づく人が多いですね!アクティビティなんてなかったんやな!!それはいいけどDRもはじめからなかったことにしよう!!!

2013年8月4日日曜日

#mikutter 0.2.2.1318

  • リストの名前を変更するとクラッシュする
  • なんかたまにクラッシュする問題 (thanks @moguno)
  • 実績に関する不具合
  • instagramの画像プレビューの変更 (thanks @eagletmt)
いくつか安定性に関係する不具合を修正しました。あと、実績のヒントが表示されてなかったので、鳥が画面を占領してしまっていたようですね。アクティビティはあんまりみんな見ないからこれは痛かった。

バルスベンチマーク

先日ラピュタが放映されたのでバグを残したままさっさと帰ってラピュタを見ていました。Twitterのトラフィックは前回より圧倒的に増えたようですね。手元のmikutterも一応耐えましたが、数が増えたこと、ふぁぼに最適化しすぎたことが原因で、去年よりも危なっかしい感じでした。今年はラピュタ放送中のUserStreamのデータをすべて取っていたので、高速化のためのベンチマークに利用できるといいですね。デーモンモード便利です。

2013年7月20日土曜日

プラグインの多言語化について

mikutter 0.3からは、プラグインを別の自然言語に対応することができるようになりました(以下、このエントリでは自然言語を「言語」と略します)。あるテキストのある言語訳を用意しておけば、日本語がわからない人でも設定が見やすくなったりします。多分mikutterの設定は、英語圏の人とかには私達が韓国語とか群馬語を見た時のような絶望感を与えているのでしょうから、思いやりがあるならやったら徳が上がるとおもいます。

やりかた
_
ローカライズしたい文字列は、Rubyソースコードの中で _ メソッドで囲ってください。これはプラグインのメソッドです。RubyのKernelにはエクスポートしてないので気をつけてください。大規模プラグインなどでどうしても外から _ メソッドを使いたい場合は、「Plugin[:slug]._」とかしたらいいんじゃないでしょうか。

これにはRuby-Gettextというパッケージを使っています。他のメソッドについて知りたい場合は、以下のWebページを参考にするか、先生に聞きましょう。

Ruby-GetText-Package開発手順 http://www.yotabanana.com/hiki/ja/ruby-gettext-howto.html

spec

国際化については、0.3から導入される uitranslator というプラグインが担当しています。国際化されたプラグインの依存関係リストには、 uitranslator を必ず入れておかなければいけません。
例えば、gtkプラグインのspecファイルは以下のようになっています。

---
slug: :gtk
depends:
  mikutter: '0.2'
  plugin:
  - gui
  - uitranslator
version: '1.0'
author: toshi_a
name: Gtk2
description: Gtk2を使ってウィンドウを描画する

potファイルの生成
次に翻訳ファイルのテンプレートを生成します。以下のようなコマンドを実行しましょう。
$ mikutter makepot
インストールされているプラグインの中で、specファイルにuitranslatorへの依存が明記してある各プラグインのディレクトリに po というディレクトリが生成され、「プラグインスラッグ.pot」というファイルが生成されます。

翻訳
各言語への翻訳を書く po ファイルを生成します。ここでは英語にしてみましょう。翻訳したいプラグインのルートに移動して、以下のコマンドを実行します。
$ mkdir -p po/en
$ LANG=en_US msginit -i プラグインスラッグ.pot -o po/en/プラグインスラッグ.po
英語の言語ファイルが出来ました。 po ファイルは専用のエディタがたくさん有ります。編集方法はここでは省きます。
この po ファイルは、そのプラグインにのみ影響を及ぼします。同じ文字列に対して別のプラグインで別々の訳を設定していても問題ありませんし、お互いが干渉することはありません。

起動
言語ファイルを作成したロケールで mikutter を起動してみましょう。うまいかんじに翻訳されていたら成功です。
うまくいかなかったら、 core/plugin/gtk/ 以下を参考にしてみましょう。くだらないサンプルが入っています。あとは、poをコミットしておけば、その言語の話者がpullしたあとはいい感じに翻訳されるでしょう。potは入れる必要は無いでしょう。翻訳者にしか

こまかいこと
moファイルは?
~/.mikutter/cache/uitranslator/ 以下にあります。poファイルがここのmoファイルより新しいか存在しない場合に自動生成されるので、配布するプラグインに添付する必要はありません。

標準プラグインの翻訳
標準プラグインも全く同じ方法で翻訳します。

もとの言語
ソースコードに書く翻訳元のキーは、通常は英語ですが、標準プラグインでは日本語を採用しています。理由は私が日本人だからです。あなたの母語が日本語でないなら、配布するプラグインが日本語をベースにしないことを私は止めません。
しかし、あらゆるドキュメントを難読化し、10年以上に渡って私を苦しめ続けている英語を私が許す日は来ないでしょう。彼らも私達と同じ人間なのですから、同じ苦しみを共有したいんです。そうやってみんなで一緒に苦しみましょう。世界平和。

コアの翻訳
未実装です。どうしましょうね。ただし、GUIはすべてプラグインなので、このことが直ちに問題になることはないでしょう。コンソールに英語が出ちゃうだけです。

実際に国際化をやってみたい
現在、これらの機能はdevelopブランチのみで有効ですので、とってきてください。また、uitranslatorプラグインもdevelopにしかないので、国際化したプラグインは0.2.2以前では動作しないので注意しましょう。

標準プラグインの翻訳に参加したい
私は日本語以外は書けないので、各プラグインの翻訳をやってくれる人がいないとどうしようもないです。近いうちにここで詳細を発表します。名乗りを上げてくれている人もいるので、なんとかなりそうです。



mikutterは単純なアプリケーションとは事情が違い、プラグインはそれぞれがほとんど独立したアプリケーションみたいなものです。そのため単一の言語ファイルを使うのでは都合が悪く、何をお手本にすべきかというところから設計が始まり、とりあえず形になったので、このまま走りだしてみようという段階です。翻訳者と相談していく中で色々変わるかもしれません。せっかくこういうことをやるので、海外にもユーザが少しくらい出てくればいいですね。そしてソースに散りばめられた日本語を見て彼らは何を思うのでしょうか。リリースが楽しみです。

2013年7月14日日曜日

#mikutter 0.2.2.1297


  • 以下の画像サービスが開けなくなってたので修正
    • tumblr (thanks @hcm_std)
  • 一部のURLがクリックに反応しなかった問題に対応 (thanks @eagletmt)
  • 左右のタブにフォーカスを移動するmikutterコマンドで、境界をまたいで移動しようとすると逆側にwrap aroundするように変更 (thanks @eagletmt)
ちょっとしたバグ修正です。ちょっと合間ができたので頂いたパッチをさくっと取り込みました。ありがとうございます。

mikutterの開発休止期間ですが、当初7月末と言っていたのを8月末にします。理由は全く状況が変わらないからです。へたをすると10月末までほとんどなにもできないということになるかもしれません。OSSの弱点は炎です。また、10月になるとポケモンの新作を買うことになっているので、余計に厳しい状況になるでしょう。

とはいっても、こうやってちょいちょい修正なんかはしていくでしょうし、0.3の作業もわずかながら進んでいます。例えば、国際化についてはその作業がもう終わっていますし、コマンドのマウスサポートの拡充など、いくつか面白い機能も開発されています。今から楽しみですね。

mikutterの薄い本 vol.4『Too late.』 

mikutterの薄い本 vol.4『Too late.』の頒布が決まったようです。詳しいことはこちら。


今回もまた、私も少し記事を書かせてもらいました。今回はいままでに増しておもしろそうです。是非手に入れましょう。ちなみに私は頒布場所には仕事で行けませんが、作者特権で入手する予定です。そういえば薄い本の元凶の喫茶室長に頼み忘れてました、この場を借りて一部、お願いします。

今回はコミックマーケット84、OSC Kansai @ Kyotoで頒布する予定みたいです。関西と関東の大きなイベントで頒布されるので、これはなんとしても入手したいですね。詳しい日時や注意事項については、先のURLを確認してください。

2013年6月12日水曜日

#mikutter 0.2.2.1264


  • Gemfileの依存関係が原因で、bundle installしても正しく環境が構築されなかった
  • 欲しいだけのパワーを、一日中。
    • (プラグインレイヤーが)薄くて軽い。でも、(爆撃に)強くて頼れる。
    • 高性能である。ただ、それだけ。
    • 使うのが楽しいプラグインがついています
      • 驚くような標準プラグインの数々。ネット上には更に数千から選べます。
    • プラグインモデル。mikutterがmikutterである理由です。
バグ対応と、WWDCがあったためステータスバーを更新しました。Ratinaなら買ってたとか言った奴は新生活で困窮している私にMBAをおごってください。
仕事で親元を離れて彼女と同棲をはじめました。かなり忙しいですがだんだん慣れてきてちょっとづつ時間を見つけてはTLを眺めて時間を無駄にする毎日です。mikutterやばいですね。

2013年5月12日日曜日

0.3の予定

次のバージョンは0.3です。簡単に予定している変更を上げておきます。

i18n
mikutterは、開発リソースの少なさによる開発速度の遅さを補うためにできるだけ実装する機能をカットしていました。そのため、流暢な日本語で「英語対応してください」などと言われても、「日本語お上手ですね」と返答していました。しかしこの間ついに英語圏の人から英語のメールが来てしまったのです。もう逃げられないので、一応多言語化の仕組みだけ作る予定です。

コア機能の分割
mikutterのコアが肥大化してきたため、一部機能はRubyGemで配布します。この準備のために、0.2.2ではbundlerを使えるようにしました。勿論ビルドプロセスで、tar ballを作る時にこれらをbundlerなしで使えるようにするので、通常の使用においては何の影響もありません。
ライブラリを切り離すことで、mikutterのバージョンアップとは違うリリースサイクルを持てること、mikutter以外でもそのライブラリを使用できること、それによって品質の向上が期待できる等のメリットがあります。

ライセンス変更
現在のmikutterのライセンスはGPL3ですが、今となってはmikutterにこのライセンスは適切ではありません。GPL3は、mikutterから派生したコードに同じライセンスを適用することを要求しますが、私はそれを要求するつもりがありません。そのため、mikutterプラグインにGPL3以外のライセンスを適用することが可能なのかどうかが不透明になるという問題がありました。
そこで、mikutter 0.3からは、MITライセンスを適用することを検討しています。理由は主に、mikutterはTwitterクライアントではなくTwitterに特化したBotフレームワークであり、フレームワークのような再利用されることを目的としたコードには、上記のような理由から緩いライセンスのほうが良いだろうということです。似たようなソフトウェアとしては、Ruby on RailsやSinatraが同じライセンスのもとで配布されています。

ただし、mikutterは既に多くの人のパッチをいただいており、この変更にはその人たちの承諾を受ける必要があります。幸い、ある程度貢献度の高い人たちには直接話をして、既に意見を頂いています。そのうち、Redmineのニュースで開発者全員に正式にこのことについて説明をして、最終的な決定を下します。

タイムラインのレンダリング方法の変更
Twitterのタイムラインという非常に特殊な情報を表示するため、多くのTwitterクライアントは様々な工夫をしており、mikutterも例外ではありません。二年前に抜本的な再設計を行いましたが、更に効率的にする余地があります。うまくいく目処が立ったら、紹介するかもしれません。

みっくストアの標準プラグイン採用
これは0.3では厳しいかもしれない。
みっくストアは、githubにアップされているプラグインをgitを使用してクリックでインストールできるコンセプトプラグインです。これを洗練させて標準プラグインにして、標準プラグインをこの管理下に置けば、mikutterのリリースサイクルに囚われること無くプラグインを個別にバージョンアップできます。例えば、twitpicの仕様が変わって画像が開けなくなった時、mikutterのバージョンを上げなくても画像プレビュープラグインだけをバージョンアップできます。

方向性の確認
mikutterはプラグインホストです。その拡張性故にmikutterはTwitterクライアントさえも実装することができました。最近、「mikutterはどこに向かっているんだ」という励ましの言葉をいただきます。その認識は全くの誤りで、最初からそういうスタンスで開発してきたが、最近になって漸く皆さんがそのことに気がつき始めたのです。

その意味で、これからはTwitterクライアントとしての機能追加ではなく、より根本的な変更がメインになっていくと以前どっかに書いた気がします。0.3は、さらにmikutterエコシステムの発展に貢献する変更を加えることが根本的な目的です。

スケジュール
8月までは、多忙のためmikutterにはコミットできないと思います。0.3の開発は8月から本格的に開始するため、寒くなるころには出せたら良いかなといったところでしょうか。0.2.2の不具合修正もできないですが、報告は早いほうがいいと思うので、バグ報告はおねがいします。

#mikutter 0.2.2.1230


mikutter 0.2.2を正式リリースします。pre3と全く同じ内容です。

  • 機能追加・仕様変更
    • 実績機能
    • ショートカットキー設定のUIの改善
    • デーモンモードを試験的に実装
    • bundlerを使って使用しているライブラリをインストールできるようにしてみた
    • プラグインのGemfileに対応
    • ふぁぼ・リツイート数をAPIから取得するように変更。
  • 内部変更
    • プラグイン・イベント周りの処理を大幅に変更。依存関係を満たしておらずロードできない場合は警告を表示するようにした
    • サウンドを鳴らす方法を拡張できるようにした
    • 高速化

サウンド関連プラグイン以外は0.2.1と互換性がありますが、そんなのあんまりなかったので関係ないと思います。今回はアップデートが大幅に遅れましたが、いろんな機能が追加できてよかったです。新機能についての詳細は、3月のエントリ「mikutter 0.2.2の新機能」をご覧ください。