トップ «前の日記(2006-10-15) 最新 次の日記(2006-10-22)» 編集

Route 477



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 今でも互換性については気をつけているそうな。プラグイン命なソフトウェアだもんなぁ。

本日のツッコミ(全1件) [ツッコミを入れる]
Ashizawa (2006-10-21 01:47)

僕も出町から向かったんですが、淀屋橋から徒歩10分ぐらいでした。