YAPC::Asia 2006 Tokyo が無事終了しました。なんか怒涛の3日間という感じだったのですが、関係各位みなさんのおかげで大盛況に終わりました。感謝感激です。
ちょうど1年前の3月に参加した YAPC::Taipei で、オーガナイザーの hcchien と Audrey に「YAPC::Asia 日本でやらないの」とそそのかされて、Lightning Talks で即興で "Announcement of YAPC::Asia 2006" というプレゼンをやったのがそもそもの始まりでした。ちなみに 5分の枠でしたけど、YAPC::Asia 2006 in Tokyo! っていう1枚のスライドだけだったので1分でおわりましたw
今回来日した Audrey, Leon, Ingy, Jesse, Dave, clkao, gugod はいつも YAPC の常連。台北でもトロント(YAPC::NA 2005) でもきてました。なので今回の日程が決まったときにはまっさきに連絡したんですが、「言われなくても行くに決まってる」的な返事で一安心。
僕がサンフランシスコにいる間、Ingy がオフィスにきて Jemplate をハックしたり、台湾にハックしにいきたいと連絡したらgugod が家にとめてくれて Audrey, clkao, Ingy も合流 して Hackathon したり。このつながりがたまらないですね。
そして、この(僕らにとって)はじめての日本での YAPC。ダメもとでオファーした Larry, Damian も快く参加を OK してくれて、想定外にビッグネームが並んだ形になったのは本当にうれしい誤算です。
1日目の懇親会でミクシィのバタラさんとはてな近藤さんが同じテーブルで食事をしているのを見て、これだけのビッグネームが集まるのはもちろんそれ自体すごいことだけど、それを作った人(たち)、今その未来を考え、作っている人たち、それをよりよくしようとする人たち、それを使って世界を変えるサービス・ソフトウェアを作ってる人たち、みんな Perl への愛が共通なんだろうなぁと、よしおかさんの日記をみてしみじみと思ってしまいました。みんな同じ言語をしゃべる仲間、We're family なんだなぁと。
ほんとは最後のwrapupでこんな内容も入れようと思ったんだけど、話してて泣きそうだから割愛しましたw
昨年3月にやるぞと宣言してからずっと放置ぎみの中、12月にいまのコアメンバーをさそって0回目のミーティング、その後正式に各スタッフを誘ってMTGをやったのはたったの2回。僕が海外にいたせいもありますが、タフな仕事をやっていただいたスタッフやボランティアの皆さんには本当に助けられました。
もっとも面倒な会計まわりをすべて処理してもらい、チケット販売も担当してもらった小山さん、懇親会や受付・ビデオと活躍してもらった長山さん、会場の交渉や懇親会などすべて担当してもらった宮本さん、1日中ビデオにはりつきで、かつネットワークも手伝ってもらった台場さん、2日間進行や受付を担当してもらったnaoyaさん・dmakiさん, Ben Trott いわく "the Sexiest YAPC site ever" (いままでで一番イケテルYAPCサイト) をデザイン、それとTシャツのデザインもしてくれた上之郷谷君, 会場の不安定なネットワークと格闘してくれた関村さん、設営やら搬入やらラリーの取材やら対応してもらったオライリーの渡里さん、そして会場進行含めその他すべてを担当してもらった 竹迫さん、感謝しています。
他にも、1日中PAに張り付きで録音即アップ (さすがはてな!)で音声録音を担当してくれた近藤さんやその他はてなのみなさん。早朝の設営やら、1日中受付に張り付いたりしてもらったボランティアの皆さん(すいません全員の名前を把握していないので、個別にあげることはできないのですが)、前日の深夜から早朝に翻訳を担当してくれた charsbar さん、ラリーの翻訳をしていただいた近藤さん、そして海外からのスピーカー(の多く)の宿泊や Hackathon 会場を快く提供してくれた Danさん、本当にありがとう。
YAPC は初日の 29日 (明日)に 懇親会 を予定しています。まだ10席ちょっと枠があいています。Larry, Audrey, Damian をはじめとする Perl ハッカーと一緒に酒を飲む機会はなかなかありませんよ!
ということでお早めに登録ください。
いよいよ今週の水曜日までせまってきた YAPC::Asia 2006 Tokyo。
今日の昼に、弾さんから「ラリーついた」 と携帯メール。夕方には、Leon Brocard と Jesse がそれぞれ品川と新宿にチェックインしたようで IRC にメッセージが。2人は「Jetlag (時差ぼけ)を活かして朝一で築地で寿司!」ということなので僕も同行することにw。8時に集合、おきられるかなあ。
22時には Damian Conway から "I have just arrived and checked in" なメール。汐留は "beautiful place and elegant accommodation" と、気に入ってもらえたようでよかった。オーストラリアからなので Jetlag は心配しなくても大丈夫かな。Hackathon の会場ともなる Dan さん邸のある月島、会場の蒲田、電気街の秋葉原と中間地点になる汐留はなかなか便利そうです。
火曜日には台湾から Audrey, gugod, Ingy (最近の彼の主戦場は台湾), Hcchien (スピーカではないけど Taipei.pm のリーダーで、YAPC::Taipei のオーガナイザー)、それに Dave や Marty も US, UK からやってきます。
Speakers を何度見てもすごいメンツだと思いますが、実際に来た連絡が続々くると、鳥肌が立つぐらいにエキサイティングですね。本番が楽しみ。
そして、その前にまだオーガナイズの仕事はいくつも。それに自分のスライドも。。。
YAPC::Asia 2006 Tokyo まであと5日となりましたが、セッションのスケジュールとアブストラクト、また スピーカーのプロフィール を公開しました。
YAPC Blog にも同様のことを書きましたが、時間の都合上逐次通訳は行わないことになりました。30分のセッションで通訳をいれると内容が15分程度になってしまうためです。その代わり、1日目のセッションについては事前に日本語の資料を用意して公開する方向で作業をすすめています。会場で Wi-Fi が使える予定ですので、英語に不安のある方は無線 LAN の使えるノートPCを用意するとちょっと幸せになれるかもしれません。(全員分の電源やコネクティビティは保証できません、あしからず)
ところでセッションとプロフィールのサイト、MT に RightFields をいれてつくりました。セッションの日時、会場、言語などはすべて拡張フィールドとして定義してあります。スピーカーも個別のエントリとしてつくっていますが、これを Linked Entry という機能で正規化しています。MTLinkingEntries というタグを使うことで、スピーカーの担当するセッション一覧 が出せたりするのが Cool です。
kaminogoya 氏の尽力により、hCalendar と hCard の microformats にも対応しています。Firefox の Tails Extension をいれるとかなりイカスことになるので、試してみてください。
先週の土日に Casey West と Jesse Vincent たちが San Francisco にきて Hackathon しました。Casey が月曜からの Etech に向けて Planet Planet を Pagger でつくりたい!ってことで Publish::Planet をつくったりそれ用に SmartFeed::All や Publish::OPML をつくってみたりと。
その成果は etech.plagger.org でホストされていて、会場の大きなスクリーンにもディスプレイ されているそうです。ちょっと感動ですね。
Trickster の Mailing List もなんか初歩的な質問がやけに増えて盛り上がっているなぁ、とおもったら PSP Hack 系の掲示板や Tips サイトで iTunes RSS Server が紹介されていたみたいです。
そんなこんなで今週の土曜には帰国します。(日本時間でつくのは日曜の午後)
Carson Workshops Summit - The Future of Web Apps
ロンドンで行われた Future of Web Apps サミットの後援が mp3 で公開されてますね。delicious の Joshua, 37 Signals (Rais) の DHH, Flickr の Cal など、mini Etech といった雰囲気で聴き応えがありそう。
そういえば来週から San Diego で ETech。ぼくはこちらにいるんですが参加はしないです。Six Apart からは Ben, Brad, Byrne, Artur あたりがいくみたい。
Yahoo! 360°インバイトしてもらい試してみました。
US の Yahoo! 360 は MySpace や LiveJournal におされてイマイチはやってない感じですが、そのままローカライズではなくて、日本向けに最適化してきているんですかね。画面のレイアウトが mixi を意識してる感じにちょっとニヤリとしてみたり。まだユーザも少ないのか、レスポンスも軽くて好印象。どこまで維持できるかでしょうか。
友達をタギングして、日記の公開範囲を決められるのはいいですね。フレパ にも似たようなしくみはありますが。
というわけで、ログインするのはかったるいので Plagger の Custom Feed で。CustomFeed::Yahoo360JP
- module: CustomFeed::Yahoo360JP config: username: your-yahoo-id password: xxxxxxxx fetch_body: 1 fetch_blast: 1Mixi, Frepa と同様、fetch_body で日記の本文、fetch_blast は「友達のひとこと」もとってくるオプション。ユーザアイコンもエントリごとに出ます。(フレパ、mixi と違ってユーザトップにいかなくても画像がとってくれるので good!)
Shibuya.js は主に東京近辺の JavaScript プログラマによる非営利団体です。各個人のプログラミングスキルの向上を目的に、勉強会ならびにカンファレンスの開催、情報交換などを行うコミュニティを目指しています。
Shibuya.js の結成おめでとうございます。Shibuya.pm を代表して心よりお喜び申し上げます。
というわけで、YAPC::Asia で Lightning Talk でもどうでしょ。Jemplate や JSAN のトークもあるし。
というわけでここ数日 Plagger Blog みたいになってますがご容赦を。Plagger ネタを追いかけたい方は del.icio.us の plagger タグ でほぼ網羅できているとおもうので、ここをチェック。
で、Plagger とプラグインシステムです。「なんで Plagger はプラグインをコアの中にいれて配布しているの? 別個に配布したほうが便利なのに」 という疑問を当然お持ちの方もいるかとおもいました。
ここはだいぶ議論になったところで(といっても IRC チャネル #plagger-ja で小1時間しゃべっただけですが)、実際に Trac でチケット #44: Reorganize plugin directories in SVN も切られてます。
ただ、現状は svn の plagger/lib/Plagger/Plugin 以下に svn commit してもらう方法をとっていて、これが最適だとおもっています。その理由を説明する前に、Perl でつくられたソフトウェアがどのようにプラグインをロードしているかの例を調べたので、ちょっと紹介しましょう。
Ingy dot Net による "DIY Wiki building kit" ともいうべき Wiki システム。ほとんどすべてがプラグインで構成されています。
* プラグインの作成方法: Perl モジュール
* プラグインの配布方法: CPAN / Ingy の svn レポジトリ
* プラグインのロード: Kwiki::Installer に対応したプラグインの場合は、kwiki -add Kwiki::Foo
を実行。それ以外の場合、各 Kwiki インストレーションの plugins ファイルにモジュール名を書き込む。設定は config.yaml に共通
長所: CPAN で配布が可能
短所: Kwiki コアの API が変わると、古いプラグインが動かなくなる
Kwiki の開発はかなり安定してきているので、CPAN を利用した配布方法も現実的です。ただ、ちょっと前までは、Ingy が Kwiki のバージョンをあげると、動かなくなるプラグイン続出、という状況でした。"Ingy, you broke my Kwiki plugin" というセリフを何度聞いたことか。
Ask Bjorn Hansen による SMTP サーバ構築キット。これも、すべてがプラグイン。
* プラグインの作成方法: ファイルを plugins/ 以下におく
* プラグインの配布方法: svn で qpsmtpd のコアにインクルード
* プラグインのロード方法: config/plugins にプラグインファイル名を1行1モジュールで記述。設定はスペース区切りの引数で追加
長所: svn で管理しているため、本体との API の整合性がとりやすい
短所: CPAN からインストールできない
qpsmtpd は CPAN にはリリースされておらず、svn での開発がメインとなっています。debian のパッケージや ports などが用意されているので、CPAN からインストールできないデメリットはあまり感じません。
* プラグインの作成方法: ファイルに記述。モジュール化したりテンプレートといっしょにディレクトリにバンドルしたりすることが可能
* プラグインの配布方法: Plugin Direcotry または各自のサイト
* プラグインのロード: plugins/ ディレクトリにファイルまたはディレクトリごと配置。ロード後、MT 管理画面から enable/disable することも可能
* プラグインの設定: 各プラグインの管理画面から設定
長所: ただファイルを配置するだけから、 高度なプラグイン開発、設定まで幅広く対応可能
短所: Plugin Directory などのサイトを検索する必要。また開発者にとってはディレクトリサイトの管理などの手間
MT はそれ自体完成したソフトであり、またオープンソースのライセンスではないので、CPAN からという手段は考える必要がありませんね。
というわけで Plagger です。現状はこうです。
プラグインの作成方法: Perl モジュール
プラグインの配布方法: svn の plagger ディストロ内
プラグインのロード: config.yaml に module: ブロックを記述
というわけで現状は、作成とロードを Kwiki に学び、配布を qpsmtpd に学んでいます。ただし Perl モジュールの形式なので、あとあと CPAN にアップすることも可能になっていますし、プラグインのロードはファイル単位でおこなうこともできます(#8 参照。config.yaml で指定した plugin_path: にファイルをおけば、lib/Plagger/Plugin/Foo/Bar.pm なんてところに野良プラグインをおかなくても大丈夫です)。
リリースごとに API を変更している現状や、コミッターがどんどん増えている状況を考えれば、現状これが最適にワークしていると思えます。もしそうでなければ、ユーザは、必要になるプラグインを全部別個にインストールしなくてはならず、プラグインのデベロッパーは、Plagger コアやその他のプラグインの依存関係をケアしながら Makefile.PL を記述して1個ずつ CPAN に毎回アップして、その CPAN のミラーに半日かかるのを待って ... なんてバカげたことをしなくてはなりません。時間とリソースの無駄。
Plugin を同梱することでインストールがめんどうになっているのでは? という疑問についてはこれは誤解です。外部プラグインが必要とするモジュールについては 0.5.4 から Makefile.PL にすべて記述していますし、オプショナルと思えるプラグインについては、デフォルトで [n] となってスキップします。
UNIX システム (Linux や Mac OSX) でもっとも簡単な方法は、CPAN シェルで cpan> test Plagger
として依存モジュールをインストールし、あとは svn up で Plagger の最新を「インストールせずに」使うということでしょう。Win32 ではたしかにメンドウですが CPAN シェルと ppm で依存モジュールをいれてしまえば、あとは pure perl なので大変なところはないはずです。
もっとくわしくプラグインの実装方法について知りたい! という方は、qpsmtpd の作者である Ask の Build Easily Extensible Perl Programs (PDF) が参考になるかも。