公用語に英語、「再起動」したRubyKaigi 2013が東京で開催3万5000円の参加費でも内外から580人の参加登録

いったん終了していたRubyコミュニティ主催の年次イベントが再開。技術色、国際色を強め、盛況のうちに幕を閉じた

» 2013年06月03日 12時09分 公開
[西村賢,@IT]

 2013年5月30日から3日間、東京・台場の東京国際交流館で「RubyKaigi 2013」が開催された。RubyKaigiは2006年に第1回が開催されたRubyコミュニティが主催する年次イベントだ。ここ数年の実績では700〜1000人の参加者を集める比較的規模の大きなイベントとなっている。ただ、2011年を「最終回」として、いったん終了した経緯がある。ボランティアベースでイベントを回すには規模が大きくなりすぎたことなどが背景にあったという。

 1年のブランクを置いて、正式名称を「日本Ruby会議」から「RubyKaigi」と改めた上で今年再開した形だ。イベント企画チームは今回のイベント再開を「RubyKaigi第2シーズン」と位置付ける。それまで6000円前後だった一般参加費を3万5000円(前払いで2万円)に再設定するなど、運営方針も大きく変えている。コミュニティベースのイベントで2万円を超えるものは日本国内に限って言えば珍しい。それでもチケットは完売して約580人の開催規模となるなど、Rubyコミュニティの活気をうかがわせる再スタートとなった。

生まれ変わったRubyコミュニティのイベント

基調講演をするRubyの生みの親、まつもとゆきひろ氏

 講演の発表内容にも若干の変化が感じられる。従来は「仕事ではJavaやPHPを使っていて、Rubyは週末に趣味で使う」というタイプのエンジニアが多かったからか、発表内容は純技術的な関心や、コードの書き方の話に寄っていた印象がある。今年の発表内容は、技術的に深く踏み込んでいる点は従来以上だが、それに加えて運用やチューニングの話など実践的な話も多い。例えば、Rails利用最大手のクックパッドでチューニングを担当している成田一生氏は、大規模運用ならではの高度なチューニングノウハウや同社独自開発の運用ツールを講演で紹介(スライド)。会場から時々どよめきや笑いが起こるほど説得力があったようだ。講演後の質疑も活発で、RubyやRailsを使ってシステムを開発・運用している層の広がりが感じられた。

 名称の「会議」が「Kaigi」へと欧文表記へと変わったことは、イベントの位置付けの変化を示している。Ruby/Railsに限らず、オープンソースの技術系コミュニティは国境のボーダーレス化が進んでおり、日本のイベントに外国人が訪れるのも普通のこととなっている。今回のイベント参加者も、1〜2割程度が南北アメリカやヨーロッパ、オーストラリア、台湾、南アフリカなど海外からの参加者だった。こうした背景から英語が第一公用語として扱われ、公式サイト、会場の案内、司会、ライトニングトークなど多くが英語で行われた。これまで国内イベントだったものが、海外からの参加者に開かれた国際イベントの色合いを強くしたということだ。Ruby関連のイベントはヨーロッパや南米、中国など海外でも多く行われているが、公用語を英語としているケースが多く、RubyKaigiの国際化も、この流れに沿う変化とも言えそうだ。日本人の発表も一部は英語で行われ、日本語による発表については「日本語→英語」の同時通訳が付くようになった。

 Ruby処理系やフレームワーク、実践で使われるツールやライブラリを開発しているトップエンジニアの発表が主体である点も、ほかの地域Ruby会議と呼ばれる中小規模のイベントと、本家ともいえるRubyKaigiとで一線を画しているところだ。

Ruby 2.1で世代別GC採用、約15%の高速化も

 Rubyの生みの親のまつもと氏が基調講演を行ったほか、現在CRubyのコアとなるVM開発を担当している笹田耕一氏は、次期バージョンのRuby 2.1へ向けた処理系内部の解説を行った。Ruby 2.0は2013年2月にリリースされているが、2013年12月にリリース予定のRuby 2.1では、ガベージコレクタに世代別GCが初めて採用されることになる見通しだ。世代別GCにより、メモリを回収すべきオブジェクトの探索範囲を狭めることができ、1回のGCに要する時間と、トータルでGCに割かれる時間の両方を抑えて処理速度を向上できる。例えば、RDocというドキュメント処理のライブラリを使った処理では、約15%程度の速度向上が見られるという。Webアプリケーションの運用などではリクエスト処理中のGCを強制的に止めるという運用も最近はあるようだが、一般的なケースでは世代別GC導入により大幅な性能向上が見込めそうだ。

Ruby処理系の内部について現在取り組んでいる高速化などを解説する笹田耕一氏

Rubyの並行処理APIへの提案

 2日目の基調講演にはRuby on Railsコアチームのジョセ・バリム(Jose Valim)氏が登壇。国内のRuby/Railsコミュニティでは語られることが少ない並行処理について講演した。バリム氏は、50コアCPUのマシンが2600ドル程度で買える時代となったことに言及しつつ「これはもはや未来のことではない。今こそ並行処理について議論を始めるべきときだ」と呼びかけた。背景にはコア数の増加と、JRubyやRubiniusなど処理系の多様化がある。CRubyはGVL(Giant VM Lock、かつてGILと呼ばれていた)と呼ばれる処理系全体のロック機構が存在しており、ネイティブスレッドを使った並行処理による性能向上は難しい。このためCRubyではプロセス並列によるアプローチが好まれる。一方、JRubyではJava同様にスレッド並列が好まれる。こうした違いを前提として、Rubyコミュニティ全体でどう並列APIを定義していくのが良いか、その議論を始めるべきだというのがバリム氏の問題提起だ。バリム氏はJavaのjava.util.concurrentのAPIや、GoのGoroutine、Erlangのアクターモデル、ClojureのSTMなど多くの並行処理のアプローチを引き合いに出し、複数あるRuby処理系のことを考慮に入れた場合に、どういうAPIが理想的かを論じた。

 バリム氏は、いくつか具体的なAPIの提案を行った。提案のポイントはいくつかある。1つは、大クラス主義のRubyでは、Javaのように細分化されたクラスを用意するのではなく、HashやThreadなど既存のクラスに並行処理に必要なプリミティブと文法を定義するというアプローチが良いのではないかという点。もう1つは共有メモリによるアプローチよりも、GoやErlangのようにメッセージベースのものが良いのではないか、という点。もう1つは、Scalaのようにアクターモデルを言語処理系に取り込むのは良くないのではないか、という点などだ。Ruby向けでは現在、Celluloidと呼ばれるアクターモデルを実現するライブラリがあるが、これは分散システムを実現するもの。言語処理系本体に取り込むほど一般的なユースケースではないからだ、という。

 バリム氏は、自分の提案はあくまでも議論の出発点であり、すぐに結論を出すようなものではないとしつつ、こうした並行処理をRubyにどう取り入れていくのかという議論を始めるべきだと強調して講演を締めくくった。

Railsコミッターが活動を紹介

 同じく2日目、昨年末に日本人として初めてRuby on Railsのコアチームにコミッタとして加わった松田明氏は「Ruby on Your Rails」と題して、自身のRails向けライブラリ開発とRails本体への貢献の方法を紹介した。松田氏はRailsアプリのページネーションでデファクトとなった「Kaminari」や、ビューのヘルパーをメソッドの羅列ではなくオブジェクト指向的に書ける「Active Decorator」などのライブラリ作者として知られている。Rails4に取り込まれたActiveRecordの新クエリAPI、「User.where.not」も、松田氏が実装したものだ。元々はnotのほかにもlikeやnot_likeなどのメソッドもパッチに含まれていたが、これら2つのAPIは、Ruby on Railsの生みの親であるデイビッド・ハイネマイヤー・ハンソン氏に却下されたという。O/RマッパーのActiveRecordでは、少し凝ったクエリを作ろうとすると、生っぽいSQLを書かざるを得ないケースがある。このため、notやlike、あるいはgtやltなどのリッチなクエリAPIの要望や、パッチ提案(pull request)は以前から少なからず存在した。ただ、これまでにそうした新APIが採用されなかったのは、利便性と複雑性のバランスから言って筋が悪いとハンソン氏が判断してきたからという。Rubyコミュニティでは「名前重要」という標語がある。いくら機能的に優れていても、名前がしっくりとユースケースに当てはまらない場合には採用を見送るということが良くある。こうした判断は、まさにこの価値観を体現するようなものと言えそうだ。

知る人ぞ知る存在からRailsブームで一躍有名に、Rubyの20年の歴史

 2013年2月、Rubyは生誕20周年を迎えた。

 その節目を祝うかのように2月にはRuby 2.0がリリースされている。RubyKaigi 2013の冒頭で講演した日本Rubyの会の高橋征義氏は、Rubyの20年の歩みを振り返った。

 1993年2月24日に生まれたRubyは、1995年12月に初めての一般向けリリースが公開されている。1996年にRuby 1.0の正式版が登場。この頃はプログラミング言語に強い関心を持つ人たちだけがRubyを知っているという「知る人ぞ知る時期だった」(高橋氏)。その後、1999年に初めて日本語で書かれた解説書籍が出版される。執筆したのは、まつもと氏と、Rubyの名付け親である石塚桂樹氏で、Rubyの解説を執筆することを通して徐々に曖昧だったRubyの仕様が固まっていった面があるという。

 1999年にはRuby関連書籍の出版ブームが起こった。ただ、その後はいったんブームが下火となる。

 次の大きなRubyブームはRailsとともに海外から起こった。まず2001年に初めての英語によるRubyの解説書籍が登場し、これがオンラインで無償の電子書籍として参照できたことから、海外でRuby利用者が増えた。同じ2001年、初めての国際会議としてRubyConfが開かれる。この頃には海外でも「知る人ぞ知る」存在となっていた。

 2004年に登場したRuby on Railsは、2005年にはブームを巻き起こして主に欧米で一気にRubyが広がった。「つまり2013年は、Rails登場から、すでに10年近くが経っているということ」(高橋氏)

 2006年以降も、Ruby処理系とそれを取り巻くエコシステムはどんどん進化している。

 2006年、2007年にはRubiniusやJRuby、IronRubyといったC言語以外によるRuby処理系が登場した。PaaSベンダとしてEngine YardやHerokuもこの時期に創業している。Ruby 1.9が登場したのも2007年。Ruby 1.9は、機能的にも実装的にもRuby 2.0というリリース番号が付されておかしくなかったものだ。Ruby on Railsもバージョン2.0となり、より軽量なWebアプリケーションフレームワークとして、Sinatraも登場している。RailsやSinatraは、ほかの言語コミュニティにも影響を与え、類似のWebアプリケーションフレームワークが数多く生み出されている。

 2008年にはRailsの開発はGitHubへ移行した。2大フレームワークと目されていたRailsとMerbがプロジェクト統合を発表し、Ruby界隈でRailsの圧倒的強さが決定的となった。現在、iOSアプリがRubyで書けるということで注目されている開発環境のRubyMotionが登場したのもこの頃。

 2009年にはRubyのライブラリを扱う新たなホストとしてRubyGems.orgが立ち上ったほか、ChefやJekyllといったライブラリも登場している。Rubyは現在、Webアプリやデータセンターの自動化などで使われているが、この頃から多くのツールが登場するようになっている。2010年にはRuby 1.9.2、Rubinius 1.0、JRuby 1.5、Rails 3.0など各種実装でマイルストーン的なリリースが出た。Ruby処理系の切り替えを行うRVMや、ライブラリ管理システムのBundlerといったツールも登場している。また、この頃に世界各国でRubyConfが広がりを見せ始めたという。

 早い時期からRubyユーザーだった高橋氏は、こうした歴史を振り返り、次のように聴衆に呼びかけた。「今この場に、Rubyの歴史の教科書に載っているような人たちがたくさん来ています。あなたの隣に座っているかもしれません。ただ、あなたも歴史の一員で、あなたもRubyの歴史を作っていく1人だということをお話しておきたいと思います」。

 20年の歴史の中で、日本生まれのRubyは国内、国外の多くのエンジニアを惹きつけてきた。そうした内外の活動の結節点として、また未来につながる活動のキッカケが生まれる場として、日本のRubyKaigiは今後も多くの人が参加する定番イベントに成長しそうだ。

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。