2006-10-19
■ [event][Plagger] Kansai.pm第7回ミーティング "Plagger World Tour in 大阪" レポート
Plaggerの作者である宮川さんが関西にいらっしゃるということで、 せっかくだから行ってきた。 普段Rubyしか使わないのに行っていいのかなぁとも思ったけど、「初参加の方どれくらいいますか」という質問に 会場の半分くらいが挙手してたので、きっと僕だけじゃないはず(笑)。
出町柳から京阪に乗って京橋まで。環状線の大阪駅で降りたはいいけど、地図の距離感がわからなくて迷ったあげく 10分遅刻。ただ、実際の開始は18:30だったので講演には間に合いました。開始まで宮川さんのマシンの画面が スクリーンに映っていたので、それを見てるだけでも結構面白かったw PuTTY+Screen+svk使ってるとか、 2chのPlagger中級スレ見てるとか、IRCとか*1。
以下は講演のメモです。僕が面白いと思ったところが主なので、入門的な話は一部省略しています。詳しい内容はスライドの方をどうぞ。
自己紹介
- six apart社、サンフランシスコとか赤坂とか
- 最近の仕事はvox
- CPANに上げているモジュールが120個くらいあるらしい
- 2006/3のYAPC::Asiaに始まり、YAPC::NA, OSCON 06, YAPC::Europe 等で発表→Kansai.pm(まさにWorld Tour)
導入
- 人数については、「興味あるけど使ったことはない」の層が多くてプラグイン書いてる人が1人、コミッタは0人?でした。(ちょっと残念そうだった)
- 2002年のbaseball2rss(野球の試合日程をRSSにする)から始まり、bloglines2ipodとかbloglines2gmailとかフィードを扱うソフトをいくつも書いた
- この手のスクリプトは、フィードを具体的に扱う部分以外は同じように書ける→コピペして使いまわし
- でも、エラー処理とか、If-Modified-Sinceとか、Well-formedでないフィードも扱うとかやってるとコピペ部分がだんだん大きくなる
- 自作のもの以外にも、svn2rssとか似た系統のソフトがいっぱいある (それぞれ違う言語で書かれていて、それぞれ違うバグを持つ)
- じゃあフレームワーク化しよう (→一つのバグを直せば、たくさんのソフトのバグが直ったことになる)
- rss2gmailなど、<any>2<any> (anyのどっちかがフィード) なソフトを作るためのフレームワーク = Plagger
- (余談:ここでPlaggerの新しいロゴが発表される。現行のはMozillaのライブブックマークのアイコンが入ってるので駄目らしい)
- パーザ→フィルタ→ジェネレータとUnixのパイプのように、プラグインを繋ぎ合わせて処理を行う
- ピザPlaの意義:「google検索からピザを頼むソフト」を普通に作っても応用は難しいが、ピザPlaでは「ピザを注文する処理」がプラグインになっていることでさまざまなシチュエーションでピザを頼む(笑)ことが可能になる。(プラグインが1つ増えれば、何十通りもの使い方ができる)
- 「Plaggerはインターネットのピタゴラスイッチだ」by 名無しさん@Plagger中級スレ (意味が分からない人はYouTubeへ)
このあとPlaggerのフレームワークとしての(Core)機能の紹介があったのですが、そのへんはスライド参照で(手抜き)。
インストール
- CPANに登録されているモジュールで、使えるものはできるだけ使う方針 (車輪の再発明はしない)
- 逆に、Plaggerの機能もライブラリにできるものはしてCPANに上げる
- plagger インストールの検索結果:約 773,000 件
- aptとかyumとかportsとかppmとか使うのが簡単
- パッケージマネージャが嫌いな人は >cpan install Plagger で
- というかforce install Plagger で(笑) (インストール時のライブラリのtestをスキップするんだけど、テスト通らなくてもたいてい支障はない…らしい)
開発者としても、plaggerで検索してインストール記事ばっかり出てくるのはつまんないらしいです(笑)。パッケージマネージャでその状況も改善されるかな(あとはWin32用のインストーラがあれば…!)。
チュートリアル
- スライド参照。
- フィードをGmailから読む(rss2gmail)という例*2*3
- メールで読むと何が嬉しいか?→「自分の読んだ文章」を母集合に検索することができる。あとGmailだとグルーピングしてくれるとか、差分表示とか
- フィード追加するたびにyaml編集するのは面倒→Subscription::OPMLとか、Subscription::Text(1行1つフィードのURLを書いたもの)とか
- 1000フィードぐらい読んでるので、自分のマシンでクロールすると時間がかかる→Subscription::Bloglines (新着のものだけAPIで取ってこれる)
- メールで読むとはてブするのが面倒じゃね?→Widget::Simpleというモジュールを使うと、deliciousとかはてブ用のボタンを追加してくれる
HTMLメールってSPAM業者くらいしか有効に活用してない気がしてたんですが、これぞ「正しいHTMLメールの使い方」という感じでした。
あとBundle::PlanetでPlanetなんとかを生成する話*4 とか、Filter::EntryFullTextでRSSを「本文つき」にするなど、使い方の例がいくつか。
質問タイム
Publish::iCalやNotify::Pizzaみたいに「フィード以外を扱う」プラグインもたくさんあるけど、「フィードを扱う」のがPlaggerの本来の使い方だそうです。 フィードがいくつかあって、各フィードは複数のエントリを持っていて、エントリには日付と作者があって…という風に「決まったデータ形式があるからこそ、 いろんなプラグインを互いに組み合わせることができる」とのこと。なるほどなぁ。
プラグイン紹介
- (余談:この辺で「この話するのも飽きてきてるんですよね(笑)」という爆弾発言がw 世界各地で使いまわしているプレゼン資料なんだそうな。)
- プラグインは以下の種類に分けられている。*5
- Subscription
- フィードの購読。フィード一覧を読み込むことも可能(::OPML, ::File, ::XOXO, ::Bookmarks)。
- CustomFeed
- RSS/Atom以外のものからフィードを作る。HTMLのスクレイピングとか、::POP3とか、::FlickerSearchとか
- Filter
- フィードの加工。広告の除去、リダイレクトURLの処理(::TruePermalink)とか、mp3へのリンクをenclosure*6に変換するとか。(::FindEnclosures)
- Publish
- 出力(もしくはフォーマット変換)。::MTWidget(MTのサイドバー)とか、::iCalとか。「なんとか2rss」のときはPublish::Feedを使う。
- Search
- フィードを検索エンジンに登録。MACのSpotlightとか、Estraierとか
- Notify
- 通知。Windowsのバルーンとか、有名な::Ejectとか。
それPla
- それPlaggerでできるんじゃね?
- →Plaggerでどうやるかはきいてねーよ (類義語:Greasemonkeyで(略))*7
- →じゃあPla
- ドメインの更新期限が近づいたら警告(iCalを出力) (Bulknews::Subtech)
- ア○ール (ちょww)
- Publish::PipeからFAX送信
- RubyKaigiの音声がogg→ポッドキャストのフィードを作ってiTunesへ
- Google Mapsの画像に動きがあったらメール
プラグインの作り方
- ソース嫁
- ちょっとデモ
tools/plugin-start.plで雛形作ってくれたりするらしい。
0.7.14の新機能
- CustomFeed::Script:既存の「なんとか2rss」を入力にできる(Perlでなくても!)
- Publish::iCal
- Notify::OpenBrowser:URLを全部ブラウザで開く
- Filter::GuessTimeZoneByDomain:URLからタイムゾーンを推定(.comのときはIPアドレスから推定)
- Filter::Kansai:kansai.pmというライブラリがあるらしいw
今後の予定
- iTunes RSS
- enclosureを扱う機能(動画のフォーマット変換とか、iPodとのSyncとか)
- メディアフレームワーク(よく分からず。amazonへのリンクとか)
- データベース
- カレンダー(iCal)
- 日本語ドキュメントの整備
質問タイムその2(抜粋)
- 情報収集について。フィードは「とりあえずSubscribeして、つまんないと思ったら外していく」方針らしい
- Plaggerの開発は趣味でやっている
- 今後しきいが低くなって利用者が増えることで予想される問題→互換性のない変更をしにくくなるとか*8
- 今後やりたいのは、自前のUIを用意すること(→フィードのレーティングとかしたい) 参考:LivedoorReaderをフロントエンドに
Plaggerの概要については一応調べていたんだけど(インストールもしたし)まだ本格的に使い始めたわけではないので、 知らないことも結構あった。 あとやっぱり、開発者の思想(「なぜこういう仕様なのか」とか、「今後は〜したい」とか)的な話が聞けて面白かったです。ありがとうございました。
*1 楽しそうでしたw
*2 Publish::Gmailは別にhotmailのアドレスでも何でもいいらしい。誤解のない名前に変えたいとのこと
*3 Gmailの容量が溢れそうで、アカウントをもうひとつ取ったとか。…すげえ。
*4 Subscription::Planetを使えば、RSSフィードだけでなく「検索結果」をPlanetにすることもできる。「トピックベースのPlanet」というらしい。
*5 といっても厳密に分類されているわけではなく、プラグインの動作から「ゆるやかな規則」で種類を決めている。
*6 フィードにおける「添付ファイル」みたいなものらしい
*7 ブラウザはunDonutだった
*8 今でも互換性については気をつけているそうな。プラグイン命なソフトウェアだもんなぁ。
僕も出町から向かったんですが、淀屋橋から徒歩10分ぐらいでした。