東京都千代田区の学術総合センターにて3日間にわたって、RubyKaigi2009が開催されています。本ページでは、3日目のレポートを随時掲載していきます!
世界各地からRubyistが集まっている本イベントも最終日です。
※今回のレポートは、一橋記念講堂でのセッションを中心にお送りします(全セッションを回れておりません。ご了承ください) 。
メトロー ジョンさん「Edo Cabinet」
メトロー ジョンさんは、日本語で発表してくれました!発表内容は、平林幹雄さんが開発したTokyoCabinetとTokyoTyrantをRubyから簡単に操作するRufus::TokyoとRufus::Edoの紹介です。
TokyoCabinetは平林さんがRubyバインディングを作成していますが、Cライクな書き方しかできませんでした。Rufus::TokyoはRuby FFI(Foreign Function Interface)を利用し、TokyoTyrantと通信するライブラリです。プロトコルはTyrantプロトコルで通信を行います。
Rufus::Tokyoは、SQLのテーブルのような記述で表現できることだと説明しました。SQLとの違いは、スキーマではなくハッシュであるところです。ローカル接続だけでなく、リモートのコネクションも可能であることを項目としてあげました。
Rufus::TokyoではFFIを利用していましたが、FFIはC拡張と比べると低速です。そこで、C拡張としてRufus::Edoを開発したそうです。Rufus::Tokyoと同じ記述で利用できます。FFIを利用する場合やリモート接続をする場合はRufus::Tokyoで、そうでない場合はRufus::Edoと使い分けてほしいと述べていました。
また、Ruby::TokyoTyrantというライブラリがあり、Rubyで最も高速だと言われていますが、このライブラリでもRufus::Tokyoのような記述が可能だということです。
会場から、keyにSymbolを書くとクラッシュしてしまうのでSymbolを書けるようにしてほしいと、ライブラリを改善するフィードバックがありました。
Andriy Hnativさん「Checking Interactively-Developed Code」
対話型プログラミングでのエラー検知について、Andriy Hnativさんが発表しました。
Rubyにはirbという対話型インタプリタがあります。コード片を書きチェックすることができ、すぐにフィードバックが得られます。また、コードに集中でき、コンパイルの必要がないためエラーを早めに発見できます。
irbの問題点は、実行するまでエラーがでないこと、依存しているコードが実行されるまで対象のコードが実行されない点です。例として、まだ完成していない関数を呼び出すと、他のコードの部分のテストができません。また、分岐によって変数の型が変化する場合、その後のコードは実行するまで動作するかわかりません。
この問題を解決するため、Rubinというシステムを開発したそうです。Rubyの型は動的なので、実行時まで型チェックを行いません。型をあらかじめ記述する方法もありますが、Rubyには合わないだろうと述べ、別のアプローチを紹介しました。
対話的プログラミングの場合、プログラム全体を見ることができません。このため、逐次的なチェックでは、正しいプログラムを謝りであると解析することがあります。
そこで、型チェックの義務を持たせ、新しくコードを書くとき既存コードとの型チェックを行う方法を採用したとのこと。loopに入っていないnext、breakなどもチェックできると述べました。
JRubyを利用し、二つの型変数が正しくバインドされること、expressionが正しいことを保証することを説明しました。Rubyのシンタックスを変更することなく利用できます。また、jirbにコードをはりつけ、エラーを検知するデモを披露しました。
会場からは、すぐに試せるかという質問がありました。これに対しては、修士号のために作っているのでまだ公開できないが、12月に公開したいと回答しました。
Joshua Hullさん「To the Edge of Web Performance and Beyond」
Joshua Hullさんの発表は、Webページのサーバサイドのキャッシュの問題についてです。キャッシュを利用することでとても高速になりますが、Railsなどで、HTMLの断片をどのようにキャッシュコントロールするのかが問題となります。
この問題に対し、ESIという規格を紹介しました。これは、Webページに他のファイルを取り込み、最終的なページを組み立てるというものです。ESIはAkamaiが提案し、現在W3Cに提案されています(ESI Language Specification 1.0 ) 。
ESIは、include、try、var、chooseのタグがあります。
includeには、読み込むソースのURLを渡し、エラーの場合どうするかを定義します。
tryには、実行することと、失敗した場合行うことを記述します。
chooseは、条件から動作を選択します。
varは、変数の定義をします。
mongrel用のmongrel-esiや、nginx用のnginx-esiなどが開発されていることとについても言及しました。また、esi-for-rackを昨日リリースしたそうです!nokogiriをパーサとして利用しています。ESIの実装はまだ少ないので、自分で作って公開してくれると嬉しいと語りました。
そして、ESIの記述をRailsなどのviewとして利用できる、spackleというライブラリを公開しているとのこと。rack-temperproofというライブラリは、Rackのミドルウェアとして動作します。SHA1でcookieの偽造を防ぎます。
ESIの問題点として、仕様にまだあいまいな部分があることを指摘していました。会場からは、この規格はW3Cの勧告ではなく、Notesの段階であると補足がありました。
角谷信太郎さん「Regional RubyKaigiのご報告」
RubyKaigi2009の運営委員長を務める角谷さんの発表は、去年のRejectKaigiで角谷さんご自身から提案された「Regional RubyKaigi(地域Ruby会議) 」の紹介と開催報告でした。
まず、アメリカの「RubyConf」の発展の歴史を振り返り、日本のRubyKaigiも同じ流れを踏襲していると説明しました。最初にRubyKaigiが開催されたのは2006年。その後、開催を重ねるごとに参加規模は大きくなり、応募された発表が「不採用」となることも多くなりました。そこで、発表の場自体を増やすために生まれたのがRubyKaigiです。
これまでの1年間(日本のRuby暦では、RubyKaigiが開催されてから次のRubyKaigiが開催されるまでを「1年」と数えるそうです :-D)で日本全国8ヶ所で開催されたRegional RubyKaigi。開催地は開催順に東京、札幌、関西、九州、仙台、松江、栃木、広島です。Web上でもWEB+DB PRESS Vol.50に掲載されたRegional RubyKaigiの特集 や、Rubyist Magazine 0025号 、0026号 などに情報がまとまっています。
角谷さんは、Regional RubyKaigiのWebサイト の最上部に掲げられているD.A.Black からの引用をもう一度持ち出し、Regional RubyKaigiへの大きな期待の気持ちを表しました。
きのう、RubyKaigi2009の開催2日目には、企画部屋で「RubyKaigi Kaigi」が開かれ、「 Regional RubyKaigi season #2」についての会議が行われました。これから開催してみたいという地域も含めて、2年目・2周目に突入するRegional RubyKaigi。今後も全国各地で開催されることになるでしょう。また、「 Regional RubyKaigiだけではなく、勉強会のようなカジュアルなイベントを気軽にどんどん開催したい」という会場からの声には「いいぞもっとやれ!」と回答があり、ますます盛り上がっていきそうです。
コミュニティセッションらしい、ぽかぽかムードに包まれた温かい発表でした!
増満工将さん「上海のRailsコミュニティー! 日本がぼやぼやしている間に、上海はアツイ!」
コミュニティセッション2つ目の発表では、増満さんが上海でのRuby、Railsコミュニティの盛り上がりを伝えてくれました。
ある日、上海の友人から「上海でRubyのイベントを開催してMatzを呼びたい」と相談を受けた増満さん。「 彼はとても忙しいし、難しいんじゃないかなぁ…」と答えると、「 YES YOU CAN DO IT!」と元気な言葉が返ってきたそうです。その後、友人たちは3日でイベントのためのWebサイトを構築、開催ミーティングを設け、ロゴまで作ってしまいました。
ついには「Ruby Conf China」は現実のものとなりました!そして夢であった「Matzを招待」も実現され、そのときの上海RubyistのTwitterのタイムラインでは「Matz大神 光臨」という言葉が躍ったそうです。まつもとさんの発表は日本語で行われ、会場からは中国語で質問が飛び出し、回答は英語で…というコミュニケーションの苦労話もありました。
次の大きなイベントとして「KungfuRailsChina」がアナウンスされました!「Conf」を文字って「Kungfu」とは、実に中国らしくて素敵ですね。
「ジュンク堂RubyKaigi店を見ると、日本語で書かれたRubyやRailsの書籍の充実っぷりに驚かされます。中国にはRubyを学習するための充分な書籍がありません。他のコミュニティの力を借りながら充実させていきたいです」と、教育方面への意気込みを語る姿も見せてくれました。
Daniel Bovensiepenさん「Hello World From The Other Side Of Earth」
日本、上海のコミュニティ紹介と続いたこのセッションの最後は、「 地球の裏側からこんにちわ!」と題して、ドイツから9000kmの距離を経てやってきてくれたDanielさんの発表です。
「裏側とは言ったものの、実は日本の場所を知らなかっただけで…」と申し訳なさそうに話し始めたDanielさん。発表スライドでは「"Nearly"地球の裏側」と訂正が入っていました。RubyKaigiに参加しようと思ったきっかけは、「 RubyConf 2008のシンタロウの発表を見て!」だそうで、会場にいた角谷さんがガッツポーズで喜んでいました。なんというコミュニティセッション!
「僕のホームタウンは、『 ハーメルンの笛吹き』で有名なHamelinの隣町のHannoverです」のように、ドイツに多数存在するRubyコミュニティを、地域の特色と絡めながら丁寧に解説していました。Bremen、Hamburg、Berlin、Munich、さらにはドイツの地図からはみ出たところにピンを立てて、オーストリアのウィーンにscript.aculo.us の作者がいることなども合わせて、ヨーロッパの状況をまとめて勉強できる機会になりました。
質疑応答の時間には、会場の皆さんと活発なコミュニケーションがあり、Danielさんから出た「日本語の情報が追えなくて、svn upなんかいつもドキドキです。どうしたらよいでしょうか」という問いに「日本人も大体同じ状況です」と声が返りました。この状況を改善すべく、Danielさんは、翻訳などのGoogle APIをRubyから利用するためのライブラリgapi を開発されているとのことでした。
"ほぼ"地球の裏側ドイツから、ヨーロッパのコミュニティの現状を伝えにきてくれたDanielさんに大きな拍手が送られました!
James Edward Gray IIさん「How Lazy Americans Monitor Servers」
James Edward Gray二世さんの発表は、サーバ監視に関するソフトウェアScoutです。
ScoutはRailsアプリケーションの監視ソフトウェアですが、サーバのの統計データの可視化など、さまざまなものを監視できます。たとえば、cronとntpを併用したときの定期的な負荷の検出などです。
Scoutのシステムは、Scoutアプリケーションサーバがいくつものサーバとやりとりする仕組みです。Scoutアプリケーションサーバには、プラグインとしてRubyコードを渡すことができます。いくつものコードが公開されているそうです。本物のScoutと接続していることを証明するSSL検証や、コードレビュープラグインなど、セキュリティにも気を配っているとのこと。
これまでの監視エージェントは、サーバ上で作業する場合や、プログラマには簡単に作業できるものでした。と言っても、UNIXコマンドの操作や、Railsのログの取得など、煩雑な操作が必要でした。特に、本番環境ではいろいろなデータが入り交じり、欲しいデータのみを得るのは困難でした。
Scoutが実現していることを、「 安全にプラグインコードを実行すること」 、「 常駐すること」 、「 メモリリークしないこと」 、「 Rubyで実装すること」の4つに分類し説明しました。「 Rubyで実装すること」について、プラグインから内部の実装までがRubyなので、Rubyをつかってすぐに要件を実現できるとアピールしました。また、Rubyのおかげで日本語も勉強できたと述べていました。
Aaron Pattersonさん「Journey through a pointy forest: XML parsing in Ruby.」
XML、HTMLのパーサライブラリNokogiriの作者であるAaron Pattersonさんの発表は、彼のひょうきんなキャラクター全開の発表になりました。
まず最初に日本語で「アメリカの冗談と日本の冗談は違うから、笑う忍者を連れてきました」といい、一緒に登壇した忍者の衣装を来た女性を紹介し、「 笑う」「 拍手」と書かれたボードを上げて笑いを誘いました。
発表タイトルを変更し、子連れ狼を背景に「XMLを知ることは、苦しみを味わうこと」というタイトルで発表をスタートしました。NokogiriとREXML、libxml-ruby、Hpricotを比較し、採用するXMLパーサの違いや、壊れたHTMLの自動修正について説明しました。
XMLパーサでは、SAX、PushParser、PullParser、DOMでのパースを比較し、SAX、PushParser、PullParserは速度が速いがプログラマに易しい仕組みではない、DOMはSAXより遅いがデータ抽出が簡単であると述べました。
HTMLパーサでは、XMLパーサの4つに加え、narfという、恐らくRubyで最初だというHTMLパーサを紹介しました。
データの抽出について、XPathとCSSセレクタを説明しました。その中で、p[a]という記述はXPathかCSSセレクタか質問し(答えは両方) 、コードに名前空間が必要なのと同様、データも名前空間をもつ必要があると述べました。
最後に、正しくないHTMLを修正する実例を示しました。Nokogiriが、tdの閉じタグがないHTMLやbodyタグが二つあるHTMLを、ブラウザが解釈するようにパースできることをアピールしました。そして、NokogiriがRuby Coreに入ることを目指していると述べました。
会場からの質問で、Nokogiriという名前の由来について聞かれ、「 私は海賊だから」と答えましたが本当は特に理由はないとのこと。
また、Nokogiriをなぜ作ったに触れ、もともとはJavaScriptをサーバサイドでテストしたかったためで、RubyからJavaScriptを操作するJohnson がありましたが、いろいろとyak shavingする間に、DOMツリーを操作するためにNokogiriを作成したそうです。
次のyak shavingはDOMをエミュレートするTaka というライブラリと述べました。
原悠さん「Ruby製アプリケーションを配布するn個の方法」
最近は、Rubyの挙動を確認しながら仕様を書くお仕事をしているというNaCLの原さん。「 よくわからないところは隣に詳しい人がいるので聞くことにしている」と言って、会場の笑いを誘いました。
「時はプログラミング黄金時代。なぜなら我々にはRubyがあるから」と、基調講演のまつもとさんの言葉を引用しながらも、「 我々はRubyを充分に使い倒しているだろうか」と改めて疑問を投げかけました。今、Rubyの活躍するドメインと言えばまず「Webアプリケーション」が挙がるでしょう。他には、日常的に発生する処理を自動化するような「スクリプティング」としてのRubyがあります。
ところで「デスクトップアプリケーション」についてはいかがでしょうか。Ruby製のデスクトップアプリケーションと言われると、確かに思い付くものがありません。原さんは「リッチなWebアプリケーションがもてはやされているが、システムのアップデートが強制的に全ユーザに適用されてしまったりと、良いことばかりではない」とWebアプリケーション一辺倒になるデメリットを挙げ、いよいよ話は本題に入っていきます。
Rubyで作成したアプリケーションを配布するためのツール「RubyScript2Exe」「 Exerb」「 Ocra」「 Crate」の4つを紹介し、それぞれの長所と短所を順に述べました。それから「zipというコマンドをご存知の方はいらっしゃいますか」と冗談を挟み、5つ目の方法として、
各環境向けに配布されているバイナリのパッケージをダウンロードして解凍する
自作アプリケーションのファイル「myapp.rb」と、起動用バッチ「start.bat」を含めてzipで圧縮する
配布する
という大変スマートな方法を紹介し、会場は大盛り上がりとなりました。
RubyStation
さらに原さんは、ブラウザを利用すると、HTML/CSS/JavaScriptで比較的自由度の高いGUIを実現できると言及しました。なんだかんだ言っても、Ruby製Webアプリケーションは開発のノウハウもありますし、ツールの選択の幅も広いです。しかし、そうして作成した複数のWebアプリケーションをローカル環境で動作させると「どのアプリケーションがどのポートを使っているか分からなくなる」と指摘しました。
この問題を解決してくれるのが「RubyStation」 。ローカル環境で動作するWebアプリケーションを管理するWebアプリケーションです。実際にアプリケーションを動作させてのデモンストレーションがあり、魅力を語ってくれました。
発表の最後は「RubyStationの普及のためには、キラーアプリケーションが100個くらい必要です。この会場はキャパシティが100人分あるはずなので、1人1アプリずつお願いします。空席の分はボクがなんとかします」と、最後まで原さんのリズムで進行した愉快な発表でした!
ちなみに発表タイトルについては「ただし、n=1」と補足がありました :-P
柴田博志さん「tDiary の Ruby 1.9 対応の過程と今後のロードマップ」
北海道からやってきて発表の場に立ってくれたのは、tDiaryのAdminの1人である柴田さんです。tDiaryは、8年の歴史を持つ、最も広く愛用されているRubyアプリケーションのひとつであり、Rubyの普及に大きく貢献してきました。しかし、古くからあるということは、それに伴う問題もあります。そんなtDiaryのこれからの展望を話してくれました。
Ruby 1.9対応
tDiaryの目下の目標は「Ruby 1.9」への対応です。ただ1.9に対応するだけではなく、1.8系と1.9系のどちらでも動くようにする必要があります。
大きく問題になるのは、内部の文字コードの扱いの変更です。とりあえずの対応を施す「compatible.rb」を活用したり、ソースコードへのマジックコメントの挿入は「sed」( not Ruby!)で処理したりと、こつこつと作業を進められているそうです。
testable_tdiary
柴田さんは、tDiaryを「テストコードのない典型的なレガシープロジェクト」と表現し、「 恐れなく変更を加えていくためにはテストが必要だ」として、今後の脱レガシー計画について言及しました。具体策は「cgi.rbをRack等に置き換えてテストしやすく変えていく」です。
まとめ
会期中に行われた「tDiary会議」の内容報告のあと、「 tDiaryによって、Ruby 1.9を普及させる」「 tDiaryも継続して変わっていく」と、テーマに沿った話で発表は締めくくられました。
柴田さんとRubyとの出会いは、高専4年生のときのごとけんさんの授業だったとのこと。札幌Ruby会議01 では、tDiaryのユーザからAdminになるまでの経緯を話されていました。そして今、他のコミッタの皆さんの意見、ユーザの皆さんの要望、今日の発表会場から出てきた声も取り込んで、開発を続けられていくのでしょう。
浦嶌啓太さん「Haml and Sass: Solution for you who get tired of ugly markup」
永和システムマネジメント勤務、日本Hamlの会 (略称は日本ハム)の会長も務められる浦嶌さんの発表は、もちろんHamlと、そしてSassの素晴らしさを伝えてくれるものでした。
浦嶌さんがこの発表を通じて言いたかったことは至ってシンプル。「 HTMLとCSSを手で書く、刺身にタンポポを乗せるような仕事をする時代は終わった。みんなHamlとSassを使おう」と一貫していました。
Haml
Haml とは、HTMLやXHTMLを生成するための言語です。ここではHaml言語そのものについての解説は行いませんが、「 Haml原理」として掲げられているものを以下に紹介します。
マークアップは美しくあるべきだ
マークアップはDRYであるべきだ
マークアップはインデントが整えられるべきだ
HTML構造が明確に表されるべきだ
発表では、Hamlがいかに素晴らしいものかを、他のテンプレート言語で書かれた場合と比較しながら、面白おかしく説明してくれました。
Sass
Sass は「CSSに、再び楽しさを」という信念のもとに作られた、CSS作成のためのメタ言語です。Sassには以下のような機能があって、スタイルシートの書きやすさ、メンテナンス性を向上させてくれます。
ネストを表現できる
変数と演算
Mixins
CSSのプロパティと値の集合を定義し、再利用できる
まとめ
発表スライドの後半には「想定質問と回答」まで用意されていて、浦嶌さんは普段、HamlとSassの良さを理解してもらえなかったり、開発の場に持ち込めなかったりして、苦労することもあるのだろうと感じました。質問「デザイナと一緒に仕事することになるんだけど、彼らに Haml/Sass を使わせることはできるでしょうか 」には、「 やめておいた方がいいんじゃないの」と回答されていました :-P
前田修吾さん「Re-introduction to Ruby」
発表された前田修吾さんは、Rubyアソシエーション副理事長であり、まつもとさんの所属する株式会社ネットワーク応用通信研究所(NaCl)の取締役でもあります。
まずは、松江で行われるRubyWorld Conference を紹介しました。「 RubyKaigiに比べると、スーツの多いイベント」と述べていましたが、豪華なメンバーによる講演が予定されています。
前田さんの発表は「Re-introduction to Ruby」と題して、これまでのRubyの言語仕様について変遷を辿りました。
Rubyの特徴として、メソッド呼び出しで括弧が省略可能なことがあります。
実はRuby 0.49までは括弧が必要で、括弧無しのメソッド呼び出しは1994年8月26日に導入されました。これはPerl 5のリリースより速い導入だそうです。
括弧無しのメソッド呼び出しの利点として、書きやすさ、読みやすさ、拡張性があることを挙げました。たとえばincludeはメソッドですが、ユーザはincludeがメソッドとして実装されていることを意識しないなど、Rubyは構文を重視しています。
しかし欠点として、文法が複雑化したと述べました。プログラムはシンプルに見えますが、文法自体は複雑で、構文解析が大変です。
まつもとさんが「世界と人間の精神が複雑だからRubyが複雑なんだ。そうに違いない。 」と述べたことを引用しました。
昔のRubyではSpecがあったことや、!や!=がメソッド呼び出しであったことを挙げました。!や!=は1.9でメソッド呼び出しになりました。また、まつもとさんがエラー処理のrescueをresqueとtypoしたバージョンを実際に実行しました。
そして、Rubyは「変わり続ける言語」であると述べました。
Ruby 1.8の問題点をあげ、暗黙的なレキシカルスコープと多重代入について説明しました。
問題の起こる具体的なコードを挙げ、プログラマの予想と異なる挙動を示す例をいくつも見せました。
1.9での変更として、ブロックパラメータのスコープや、ブロックローカル変数の宣言、メソッドパラメータの一貫性を挙げました。
しかし、1.9でも未解決な問題として、暗黙的なレキシカルスコープを取り上げ、解決策を提案しました。ひとつは、マジックコメントによって動作を制御する方法、もうひとつはlet宣言の導入です。
このパッチは、http://shugo.net/RubyKaigi/2009/no-implicit-lexical-scope.diff にあります。
まとめとして、まつもとさんだけがRubyを変えることができないわけではなく、Rubyは「変わる」言語であり、Rubyを「変える」ことができると述べました。
角谷信太郎さん「Take the Red Pill」
運営委員長・角谷さんの、本日2つ目となる発表は「赤いピルを飲め」 。赤いピルとは、映画「マトリックス」に登場したものです。
この発表は、とてもメッセージ色が強いものだったので、角谷さんの言葉をなるべくそのまま皆さんに伝えたいと思います。
「赤いピルを飲め」
「この発表は、初日の江渡さんのLightning Talksの続きです」
「Ward、Kent、それから、キレイなコード、うまく整理されたオブジェクト指向設計、そして、テストしやすさについて提唱してきたすべての人たちの価値が、そこに受け継がれていたのだ。これらの考えは、他の多くの技術コミュニティにとっても大きなインパクトだったはずだが、Ruby界ではそれが『正統』になっている」( Martin Fowler's Bliki in Japanese - RailsConf2007 からの引用)
「ではなぜ、こういった考え方が正統になっているのかというと、これは当たり前なんです。当然です」
「はい、ここから電波です」
電波──「 言葉を発している本人にだけは確信があるが、客観的証拠に欠く発言」「 周囲に満ち満ちているが目に見えないもの」
「2つ目の意味、周囲に満ちているもの。皆さん何か分かりますか。"The Matrix"ですよ。目には見えないけれど、いつもある」
「そして迫られるわけです。青いピルを飲むか。赤いピルを飲むか。青いピルを飲めば何もかも今まで通り。赤いピルを選んだ人がここにいますね。Welcome to the real world」
「躊躇なく赤いピルを飲めばよい。大丈夫です。我々にはたのしいRubyとナイスな人びととのつながりがある」
「ただ、たのしいRubyとナイスな人びととのつながりはとても自由なものだが無料ではない。どうすれば?」
「Don't Think, Feel」
「月を指さすときには考えてはいけない。感じるんだ。指先に集中していると、向こうが見えなくなってしまう」
「ここでいう指とは何か。Rubyです。その向こうにあるのは何か。いきいきとした世界があります。月のように美しい世界です」
「ソフトウェアづくりに携わる者にとってのいきいきとした世界」
「それは、つくる人が技術的卓越を追求できる、つかう人の欲しかったものが実現される、そんな世界。お互いが同じ目標に貢献することで達成される」
「この考え方は、Christopher Alexanderという建築家の人がルーツになっていて、『 時を超えた建設の道』という本が出ています」
「本の中で、いきいきとした世界は『無名の質(名づけえぬ質) 』と呼ばれています。英語では"Quality Without A Name"(QWAN)」
無名の質
「なんかいい感じ」「 上手く言えないけどいい感じ」
「なんかいいよね、というのを、なんでいいのだろう、と30年くらい研究しているのがChristoper Alexanderです」
「彼の目的意識は『何百年にもわたって育まれてきた、いきいきとした建物や町を現代の建築家が生成できるようにするにはどうすればいいだろうか』というもの。たとえば、VeniceとかAmsterdamとか、なんかいいじゃないですか」
「『 なんかいい感じ』を実現したい」
「一度、冒頭の『正統』の話に戻ります」
「ソフトウェアづくりをする者たちにとっての、いきいきとした世界を作りたい。これについてまとめられた本が『パターン、Wiki、XP』です。翻訳ではなく、この本が日本から登場したのは素晴らしいことだと思います」
Rubyが備える無名の質
「さて、Rubyの話をします」
「Rubyは、無名の質を備えたプログラミング言語です。なぜなら、Rubyがなぜよいのか、誰もきちんと説明できないからです」
「Rubyはプログラミングを楽しくする言語です」( まつもとさんの著書『オブジェクト指向スクリプト言語Ruby』からの引用)
「Rubyをキメると気持ちイイ。説明できていない」( RubyKaigi2008の基調講演でまつもとさんが言った言葉)
「Rubyのすごいところは、言語の特徴を『たのしい』と言い切ってしまったこと」( とちぎRuby会議01での、原信一郎さんの言葉)
「Ruby発祥の地の日本で、最も広く読まれているであろうRubyの入門書が『たのしいRuby』 」
「私たちの楽しさをもっと分かちあうことはできないだろうか」
「自分が語れそうなところ、と考えると、対象はRubyKaigiです」
RubyKaigiの無名の質
「QWAN on RubyKaigiはなんだろう」
「RubyKaigiは2回目の2007から"Matz is nice, so we're nice."というスローガンを掲げています。みんなが気に入っているので、取り下げずに今日まできています」
「RubyKaigiにおける無名の質を、皆さんは既に知っています」
「たとえば廊下の給電所。ホールの前。ホワイトボード。カラフルなポストイットに意見を書いて貼っていく。特別なことをしているわけではありません。だけどなんかいい感じ」
「会場に設置しておいた"WHERE ARE YOU FROM?"の地図をみると、世界中から人が集まっているのが分かる。なんか面白そうだから、といって人が集まってくる」
「RubyKaigiは自分たちのペースでRubyコミュニティ全体とつながろうとしてきた。最初からそう考えて行動していたわけではないけれど、振り返ってみるとそうなっている」
「ちょうど、最初のRubyKaigiが始まる直前くらいに白いMacBookを買った。そこにサインを書いてもらう習慣を2008年まで持っていた。今はMacBookProに変えてしまったけれど、MacBookは蓋だけ外して今も所持しています」
「RubyKaigi2006。最初のRubyKaigi。David H.Hanssonが、ボクたちをマトリックスから解放するためにやってきてくれました。そのときに書いてもらった言葉は"Write Less Software"。この言葉はとても重い」
「RubyKaigi2007。Dave Thomasがきてくれました。彼には"Code Ruby Be Happy"というお言葉をいただいたので、肝に銘じてやっています。また、これとは別に、2つの宿題をもらっていました」
「1つ目の宿題は『自分たちだけで楽しむのではなく、新しくやってくる人たちと仲良くしなさい』というもの。2つ目は『RubyはRubyになれ』でした。これらの宿題をときどき思い出しながら、感極まったりしています。このときのもらった言葉は、あとで紹介します」
「RubyKaigi2008。Chad FowlerとRich Kilmerという、RubyConfをやっている人たちが、ついにRubyKaigiにきてくれました」
Take the Red Pill
「RubyKaigiで実現できている無名の質。どうやったら分かち合えるだろう。もう1回、言いましょう」
「Don't Think, Feel」
「Rubyを使っていきいきとした世界を指す。つくる人とつかう人が一緒になって楽しくなっていくような在り方、というのをどうやって作っていけるか考える。答えはどこにあるのか」
「RubyKaigi2008のときにRichに書いてもらった言葉"Know Ruby Know Life"。Rubyが分かれば人の営みが分かる」
「たのしいRuby。Rubyがあればボクらは大丈夫です」
「Take the Red Pill」
高橋征義さん「基調講演: Rubyと私、そして日本Rubyの会」
日本Rubyの会会長の高橋さんの基調講演です。袴姿で登場しました。まず、今回のテーマは「変える/変わる」について話がありました。
毎年のRubyKaigiのテーマは、高橋さんが決めているそうです。前回のテーマは「多様性」でした。Ruby処理系がたくさんあり、使われ方も多様になってきました。また、Rubyistにも沢山の違いがあります。これを受けて、単に多様であることはバラバラであることで、なにかしらを変えていかなければいけないと考え、「 私たちはどう変わるべきなのか」という考えから、今回のテーマを決めたとのこと。
高橋さんのRubyの出会いは1997年のRuby 1.1で、当時のRubyはバイナリ配布はなく、当然自分でコンパイルして使っていたそうです。この頃、リファレンスマニュアルはありましたが、最終的にはソースを読んで理解したとのこと。RubyのMLに初めてメールをしたのが1998年1月20日で(ruby-list:5905) 、コミッタではなく、パッチを書いたこともほとんどないの述べました。
「開発」には携わっていない、単なる一般ユーザでしたした。一般ユーザでもRubyに貢献しようと思い書籍の執筆を行い,「たのしいRuby」がRuby入門書の定番となったことや、コミュニティやイベントの開催を行い、日本Rubyの会のいいだしっぺとして会長になったことを自身の変化として言及しました。
Ruby自身の変化
続いて、ユーザ視点でのRubyの変化が語られました。
宇多田ヒカルの歌詞から「みんなの願いは同時には叶わない」と引用し、何かを捨てなければ変われないのではないか、捨て去る変化を受け入れることが必要なのではないかと考えていると、述べました。
そんななかで、Rubyの経緯を振り返ると、Rubyにも様々な変化や、様々なあきらめ(具体的には様々なライブラリの取り込みなど)があったことを指摘しました。そして、具体的に振り返りました。
昔のRubyはまつもとさん一人による開発でした。これには問題点が二つあり、一点目は、まつもとさんがよく知らない、興味がないものなどは実装されないということです。二点目は、まつもとさんが書ける速度でしか書けないということです。プログラミング言語には、規格やライブラリの世の中の流行を追わなければなりませんが、一人では追いつけません。その後、コミッタが増加し、みんなでメンテナンスをすることで得たものもありますが、統一性がなくなったり、対応が遅くなってしまったりする問題も発生しました。
Ruby1.6の時代には、海外進出の本格化があり、DaveとAndyによって書かれたProgramming Rubyの出版があり海外でも知られるようになりました。この動きが、Railsが生まれる下地になったのではないかと考えます。しかし、この時代に失ったものにはコミュニティの分裂があります。異なる自然言語やコミュニティの細分化によるものです(本日、ドイツのDanielさんからコミュニティについての発表があり、日本の情報が入ってこないと嘆いていました) 。
Ruby1.8の時代にはRailsの登場もあり一般に普及しました。しかし、この時代でも、要求水準の高度化や重い開発プロセスなどがあり、批判の声が大きくなりました。使いたい人よりも強制的に使わせられる人が増え、文句も増えました。Rails文化とRuby文化の分断や様々な喪失がありました。
しかし、変わらない方が良いのかと問われればNoと答えると述べました。喪失を恐れず、それを越える収穫を得るため、変化を選別する必要があると言及しました。
日本Rubyの会について
そして、Ruby開発のコントロールではなく、傍観者的立場から、私が変えられるものとして、日本Rubyの会であることに話が振られました。
日本Rubyの会の現状ですが、いろいろなことを行っていることが語られました。日本Ruby会議の主催や地域Ruby会議の支援、るびまの発行、るりまの作成や、地域コミュニティのハブとしての活動などです。
ただし、問題点は山積みであると言及し、日本Rubyの会の中での活動を多様化できていない、自由に行えていないことがあると述べました。また、各プロジェクトも、動いてはいますが手が止まりがちで、思い切った改革ができず、情報公開できていないとのこと。
これらのボトルネックになっているのは「私」である、私の限界がRubyの会の限界になっている、と理由付けしました。Rubyの会の構造がRubyと同じ「優しい独裁者制」であり、これが足かせになっている現状があると述べました。
解決策は、ぜんぜん未定とのこと。非公式な場で具体的な施策を検討しているが決定的なものはないそうです。考えられることとして、ひとつは、権限の委譲があると指摘しました。しかし、Rubyの開発スタイルを踏襲し、会長の集団をつくっても、あまり嬉しくないと予想しているとのこと。また、プロジェクトごとの代表を立ててはどうかと考えたが、これだけではあまり変わらないとも思うと語られました。
さらにシステムを変える支援として、MLを捨て、redmineなどのプロジェクト管理システムの導入も考えたそうですが、redmineにすれば全部解決するわけもないと述べました。それよりも、関心あるプロジェクトに属し、属する会員がメンバーとなり、プロジェクトを動かしてほしいとのこと。
現状の最大の課題は、私を捨てられる形をつくることといい、「 トラックナンバー += 1」をしなければならないと言及しました。そして、「 私の知らない世代が、私がさほど面白いとも思わないようなことを喜々としてやってほしい、それが私が思うたのしい未来です。」と述べました。
まとめとして、「 変化には喪失がつきものです。喪失を超える良いものをつくりあげていきたい、Rubyの会も、そのように変わっていきたいと考えています」と結びました。
クロージング
再度、高橋さんが登壇され、閉幕の言葉が述べられました。
三日間、3トラック、懇親会やBeer bustなど、「 楽しまれましたか?」「 また参加したいですか?」と呼びかけ、会場から盛大な拍手がおくられました。
そして、2010年(RubyKaigi2010)についてです。日程は「7月じゃないかも」 、場所は「東京じゃないかも」 、なにも決まっていませんと述べました。今は本イベントでいっぱいいっぱいですが、現実問題として予約などがあるため少しずつ動き出しているとのことです。
そして、RubyKaigiの提供を読み上げ、「 ありがとうございました!」と締めくくりました。
RejectKaigi2009
RubyKaigiの全プログラムが終了後、別会場の撤収作業の合間に、RejectKaigi2009が行われました。一人当たりの持ち時間は3分です。
Florianさん
Sinatraのルーティング情報に特化したドキュメンテーションツールWilson の紹介しました。
星一さん
星一さんは、比較演算子を再定義してPHPのような結果を返すライブラリ、その名も「php」を披露して会場の笑いを誘いました。
ukstudioさん
昨今のキーボード情勢を鑑みながらAlphaGrip の良さを伝えてくれたukstudioさん。
yamashiroさん
java-jaからやってきたyamashiroさんは、「 宮本武蔵は日本最古のアジャイラーである」と言及しました。
tsuyoshikawaさん
「栄光に向かって走り続ける」と宣言したのは、OOPJogのtsuyoshikawaさん。Sinatraの会の会長も務められるtsuyoshikawaさんは、古き良きSinatraの魅力について語りました。
とみたさん
「MySQL/Ruby」「 Ruby/MySQL」という2つのややこしいライブラリの作者であるとみたさん。今後の展望について述べました。
yoshioriさん
java-jaのyoshioriさんは、会期中に高橋会長から「もうRubyistを名乗っていいよ」と言われたそうです。RubyKaigi2009のタイムテーブルのWebページに記載されている時刻の情報を、スウォッチ・インターネットタイムを扱う自作ライブラリ「itime」を使って変換していました。
永井さん
Ruby/Tkのデフォルトウィジェットセット制御の煩雑さを説明し、ライブラリ提供者として「開発者が苦労、利用者は楽しく」という、Rubyらしいスタンスを示す発表でした。
hogelogさん
「Rubyとドラクエのフシギな関係」と題されたこの発表では、Emacsからlisp処理系とソケット経由で通信する「SLIME」が紹介されました。
faultierさん
faultierさんは、自作のプログラミング言語「DT」を披露し、とてもプログラムのソースコードとは思えない文章を実行してみせるデモを行い、会場を盛り上げました。
すがまさおさん
すがまさおさんの発表は「エクストリームSass開発」 。sassファイルの変更時に自動でCSSへの変換を行ってくれるツール「Saag」を作成したと話しました。
mootohさん
きのうに続いて2日連続のRejectKaigi登壇となるmootohさん。RubyKaigiへの関わり方を「参加者」「 発表者」「 スタッフ」と変えてきた中で「友達が増えた!」と喜びを伝え、会場の皆さんにも「スタッフになろう!」と熱く呼びかけました。
Michaelさん
Ramazeの作者であるMichaelさんは、開発中のRuby製テキストエディタ「VER 」を紹介しました。VERの特徴を「ViとEmacsの良いとこどり」とし、「 宗教戦争は終わりにしよう」と叫びました。
吉田裕美さん
Railsの教育事業などを展開しているEY-Officeからは、吉田裕美さんがやってきました。「 来年こそはRubyKaigiのスポンサーになれるように!」と意欲を見せました。
takesakoさん
Shibuya.pmの二代目リーダーtakesakoさん、驚きのPolyglotプログラミングを見せてくれました。単一のソースコードを「Perl」「 JavaScript」「 Ruby 1.8」「 Ruby 1.9」で実行したときに、それぞれの言語に合わせて出力結果が変わるというものです。takesakoさんのブログ に解説がありますので、ぜひご覧ください。
アカイさん
「3日前に楽天ROMAのコミッタになりました」と自己紹介したのはアカイさんです。iPhoneアプリを開発するときには「Rubyの豊富なライブラリを活用してプロトタイピングして、それから移植すればよい」とノウハウを語りました。
井上さん
「ニコニコ動画とスクレイピング地獄」というタイトルで発表したのは井上さん。APIで取得できない情報を得るために、ニコニコ動画のHTMLソースとにらめっこする日々の苦労を漏らし、HTMLの変更に左右されにくいスクレイピングのコツを教えてくれました。
斎藤ただしさん
斎藤ただしさんは「拡張ライブラリを作るとリア充」と言い、ライブラリ「Decimal」を開発する中でRubyのバグを発見した喜びを語りました。発表の最後はDecimalの歌で締めくくられ、大盛況となりました。
tamaさん
「3分前に思い付きました」というタイトルは「拡張ライブラリをD言語で作るとリア充」だったtamaさんの発表です。C言語の後継であるD言語を用いて拡張ライブラリを作る意義について述べました。また、「 四国Ruby会議をやりたい!」という想いも語られました。
syou6162さん
当日スタッフとしても大活躍だったsyou6162さんの発表。統計解析ソフトRのコミュニティ「Tsukuba.R」を発足するに至ったきっかけには、RubyKaigiの存在があったと話し、感謝の気持ちを表していました。
※ほかにも発表がありましたが、執筆が追いつきませんでした。ごめんなさい!
本日のサイン会
最終日のお昼休みに、ジュンク堂書店RubyKaigi店で、Ruby札幌の5人共著の『Ruby逆引きレシピ』( 翔泳社)と、Ruby札幌の島田浩二さんが監訳した『プロダクティブ・プログラマ』( オライリー・ジャパン)のサイン会が行われました。『 Ruby逆引きレシピ』は85冊が完売しました!
WEB+DB PRESSのサイン会も!
また、急遽『WEB+DB PRESS Vol.51 』のサイン会も行われ、特集1「実践投入Rails」の吉見和也さん、「 濃縮還元オレンジニュース 」を連載中の角田直行さん、読者欄を執筆された(というか投稿していただいた)島田さんといがいがさん、和田卓人さんによるサインが行われました。
『パターン、Wiki、XP』も完売御礼
『パターン、Wiki、XP』は80冊が完売しました! 最後のサインはかずひこさんに。
他の書籍も完売御礼
他にも、『 ふつうのコンパイラをつくろう』や『エンタープライズRails』が完売し、大盛況のうちにジュンク堂書店RubyKaigi店は終了しました。お買い上げくださいました皆さま、ありがとうございました。
スタッフによるイベントふりかえり
イベントの撤収作業が終ったところで、スタッフによる本イベントのふりかえりが行われました。その後、スタッフ打ち合わげが行われました。
イベント当日のレポートは以上になります。最後までお読みいただきまして、ありがとうございました。