書いた人:郡司啓 (@gunjisatoshi)
一昨年の五十嵐さんの EuRuKo 2011 レポート、昨年のかくたにさんの EuRuKo 2012 参加レポートを見て羨ましくなったので、私も EuRuKo 2013 に参加してきましたので、簡単ですがレポートをお送りします。
EuRuKo は 2003 年から毎年ヨーロッパの各都市で持ち回りで開催されているプログラミング言語 Ruby に関するカンファレンスです。Ruby に関するカンファレンスとしては、北米の RubyConf に次ぐ歴史があります。今年はギリシャのアテネで開催されました。
なおカンファレンス以外の行き帰りの道中や観光などについては私の個人ブログのほうにぼちぼち書いているのと、ささださんが旅行記を書いていらっしゃるので、ご興味のある方は合わせてご参照ください。
EuRuKo 2013 の会場となるバドミントンシアターは、2004 年のアテネオリンピックの際にバドミントンの試合会場として建設され、その後劇場に改装された建物なのだそうです。
広々としたホワイエ (ロビー) では無料のコーヒーが提供され、Rubyist 達の交流の場となっていました。またスポンサーブースが設置され、様々な展示がされていました。
参加者は 600 名程度でしたが、会場は 2500 席ほどあり大変余裕がありました。会場では無線 LAN のほか足元には電源も提供されていて、ノート PC のバッテリー切れを心配しなくていいのが嬉しいですね。
今回はちょっと司会が変わっていて、スピーカーの紹介をちょっとした漫談風にやっていたのが印象的でした。ありきたりの司会ではなくて、こういう面白くする工夫も良いかもしれませんねえ。
まつもとさんの発表は基本的には RubyKaigi 2013 で発表された「プログラミング言語のデザイナーになろう」という内容を踏襲したものでしたが、英語で聞くとまた違った印象になるのが不思議ですね。また、あとで聞いた話では「イリュージョニストっていう言葉は直前で思いついた」とおっしゃっていました。
Pat Shaughnessy 氏の発表では、高階関数、遅延評価、メモ化などの関数型言語の特徴に触れ、関数型言語などの他のプログラミング言語のアイデアを学ぶことの重要性について説いていました。関数型言語は数年前から日本でも話題になっていますが、この流れは世界的なものなのですねえ。
Konstantin Tennhard 氏の発表は、Apache OpenNLP という Java の自然言語処理のライブラリを Ruby(JRuby) から利用する話でした。JRuby のおかげで Java のライブラリであっても Ruby から利用して楽しくプログラミングできるというのは、やはり素晴らしいことですね。
会場であるバドミントンシアターは公園のど真ん中にあり、外のレストランに行こうと思っても 15 分も暑い中 (ギリシャは「太陽の国」と呼ばれる晴天続きの気候で、夏はとても暑いのです) 歩く必要があります。というわけで、参加者には事前にケータリングを申し込むように勧められていました。しかし会場の椅子やテーブルは圧倒的に足りなくて、みんな地べたに座ってお昼ご飯を食べていました。ちなみにケータリングのメニューは、もちろんギリシャ料理です。
Xavier Noria 氏の発表は、Ruby には数の表現 (自然数、整数、有理数、実数など) ごとにクラスがあり、それらの間で変換や計算を行うとなぜ誤差が生じるのか、誤差が生じないようにするにはどうすべきか、という話でした。「値」というのは普段は抽象化されていてあまり気にする必要はありませんが、それを Ruby がコンピュータの中でどのように表現し、値を保持しているかというのも時には思い出してみるのも重要ですね。
Grzegorz Witek 氏、Simon Kroger 氏の発表は、Ruby のアプリケーションサーバとして人気の高い「Unicorn」の問題点 (並列処理の弱さ) に触れ、スレッドセーフなコーディングの重要性と、スレッドセーフな代替のアプリケーションサーバの紹介 (Puma, Passenger EE 等) をして、並列性の向上による性能向上について話されていました。このあたりは個人的には「本当にそうなの?」という疑問もあり、ベンチマーク等をしっかり取ってみないと何とも言えない感じではあります。
コーヒーブレイクには無料コーヒーのほか、入場の際にもらった引換券でミネラルウォーターが入手できたり、フルーツが振る舞われたりしました。それぞれのテーブルに盛られたフルーツには「->{“Free fruits”}.call」とか「[*fruits].sample(1)」とか書かれた札があり、Rubyist なら思わずニヤリとしてしまうのではないでしょうか。
Chris Kelly 氏の発表は、Ruby の GC (ガベージコレクション、不要になったオブジェクトを自動でメモリから解放する機能) の進化 (マーク&スイープ、コピーオンライト、ビットマップマーキング) について、Ruby のオブジェクトがどのように実装されているかの解説を交えての説明でした。また「続きは明日のささださんの発表を聞いてね」と、ささださんに花を持たせていたのが印象的でした。
Alexandre de Oliveira 氏の発表は、オブジェクト指向プログラミングの本質はクラスとメソッドではなく、状態の保持とメッセージパッシングである、という話でした。Java などのクラスベースのオブジェクト指向言語からプログラミングを学ぶとついクラスありきの発想になってしまいがちですが、クラスではなくオブジェクトを意識してコードを書こう、という発想の転換が Ruby でコードを書く上では重要なのかもしれませんね。
初日のライトニングトークス (5 分間の持ち時間で次々とプレゼンテーションを行うスタイルの発表) は 4 件で、Elia Schito 氏による Opal (Ruby のサブセットを JavaScript のコードに変換するツール) の話、Christopher Bertels 氏による Fancy というプログラミング言語の話、Andrey Savchenko 氏による小さなカンファレンスのすすめ、Richard Schneeman 氏による「プログラマをプログラミングする」という話でした。
ライトニングトークスは 5 分を過ぎると強制的にドラを鳴らしてプレゼンテーションを打ち切るルールですが、意外と 5 分を使い切る人がおらず、ドラの出番はあまりありませんでした。
初日のプログラムも無事終了し、GitHub がスポンサーとなるオフィシャルパーティが行われました。パーティー会場はアテネ中心部の Agia Irini Square 付近が「パーティーゾーン」になっているようで、会場に入場した際に配られていたドリンクチケットを指定されたいくつかのバーで利用できる、というスタイルでした。パーティ会場でもまつもとさんは大人気で、いろいろな人と話をしたり写真を一緒に撮ったりしていたのが印象に残りました。やはりまつもとさんは世界の宝ですねえ。
二日目も漫談形式の司会で幕を開けました。余談ですが、Rubyist の朝が遅いのは世界共通なのか、前日のオフィシャルパーティーで飲みすぎたのか、朝の人の集まりが悪くて開始が 15 分遅れたのでした。
ささださんの発表は、今年のクリスマスにリリース予定の Ruby 2.1 のリリーススケジュールの紹介と、現在ささださんが精力的に開発されていて Ruby 2.1 に入る予定の新しいガベージコレクタ「RGenGC」の話でした。どちらかというと EuRuKo では「Ruby を使う」話が中心なので、Ruby の中身の話 (しかも次のバージョンの話) が行われたのは大変有意義だったのではないでしょうか。
Ruby のもう一つの実装である Rubinius のメンテナをされている Dirkian Bussink 氏の発表では、マルチコアの CPU が当たり前の世の中となった今日では並列処理の性能が重要であり、ネイティブでマルチスレッドをサポートする Rubinius の優位性について語られていました。この話に限らず、マルチスレッドのパフォーマンスを阻害するとされる Ruby の GIL (グローバルインタプリタロック) を批判する発表が多い印象でしたが、本当に GIL がパフォーマンスのボトルネックなのかどうかは個人的には疑問に思っており、やはりユースケースに応じたベンチマークを取ってみないことには何とも言えないですねえ。
Benjamin Smith 氏の発表は、Rails アプリケーションの開発において再利用を容易にする仕組みを提供する Rails Engines についての話でした。小規模の開発ではあまり気にしないところですが、大規模な開発ではこうした再利用性が重要になってくるのでしょうねえ。
お昼ご飯の前に突然のライブが始まりました。こういう余興が入るのは EuRuKo の特徴なんでしょうか。このお昼ご飯前のほか、エンディングでもライブ演奏が行われました。
Steve Klabnik 氏の発表では、プログラミングには 2 種類のモードがあり、TDD (テスト駆動開発) できっちりとしたプロダクトコードを書くモードと、テストを気にせず思うままにコードを書くモードがあるとのことで、それはどちらも必要で、かっちりとしたプロダクトコードばかりではなく、もっと気楽にクリエイティブなコードを書こうよ、という話がされていました。
Ben Lovell 氏の発表は、Ruby にて Erlang のような Actor モデルのプログラミングを可能にするライブラリである Celluloid についての話でした。マルチコアの CPU と相性の良い Actor モデルのプログラミングは、今後も注目される分野の一つではありますねえ。
Javier Ramirez 氏の発表は、高速な KVS (キーバリューストア) として有名な Redis を Ruby から利用する話でした。データの永続化についてはひと昔前は何でもかんでもリレーショナルデータベースを利用していましたが、最近では用途に応じて KVS を始めとする様々なデータ管理ソリューションを利用するのが流行りですね。
Bill Kalligas 氏の発表は、e-Travel というオンライン旅行サイトの開発運用の際に、テストコードがどんどん膨らんでしまい、それにどう対応したかという話でした。TDD による開発ではコードを書くたびにテストコードも増えていきますので、Jenkins 等の継続的インテグレーション (CI) ツールのテストサイクルが長くなってしまう問題が発生します。こうした悩みや解決法は日本の RubyKaigi でも同様の発表があったりと、世界共通の問題なのだなあと実感しました。
二日目のライトニングトークスは 6 組で、Rails Girls Berlin の Debora Blass 氏と Rails Girls Netherlands の Karen Sijbrandij 氏による Rails Girls の紹介、Panos Papadomitsos 氏による DevOps の話、スポンサーでもある anynines の人による CloudFoundry の話、Yorick Peterse 氏による Rakefile から make を呼び出す話、Javier Gonel 氏による Python の紹介、Nicolas Sanguinetti 氏による Metaphone とレーベンシュタイン距離の話でした。
ライトニングトークスはホワイエに設置されているホワイトボードに発表したい人が名前と発表内容を書くというスタイルだったのですが、ご覧のとおり枠が埋まっていません。こんなことならネタを仕込んで行けばよかった、と少し後悔しました。「幸運とは準備が機会に出会うことである」という言葉もありますが、皆さんも海外のカンファレンスに参加するときは、いつでも発表できるように常に (英語で) ネタを準備しておくことをお勧めいたします。
毎年ヨーロッパの各都市で持ち回りで開催される EuRuKo は、翌年の開催都市を EuRuKo 会場で決定します。今年はウクライナの首都キエフと、スイスのチューリッヒの 2 都市が立候補しました。司会者と、なぜか各都市のプレゼンターも古代ギリシャっぽい出で立ちで登場です。
投票の結果、キエフが EuRuKo 2014 の開催地に選ばれました。次の開催都市に「ライトニングトークスで鳴らすドラ」が引き継がれます。
昨年に続きチューリッヒは残念でしたが、昨年のかくたにさんのレポートにもあるとおり、「地域の Ruby コミュニティを育てていく」という使命が EuRuKo にはあるのか、コミュニティのしっかりしているチューリッヒでの開催は、あえて後回しにされているのかもしれませんね。
これですべてのプログラムが終了しました。スタッフの皆さま、お疲れさまでした。
遠路からやってきた日本組に「撤収後に打ち上げをやるからおいでよ」とお誘いがあり、スタッフ打ち上げに混ぜていただきました。打ち上げの席でスタッフの方と色々とお話をしたのですが、「毎週打ち合わせしてたのにもう終わっちゃうのがさみしい」と言っていたのが印象に残りました。これをきっかけとしてギリシャの Ruby コミュニティが継続していくといいですね。
また普通の観光客はまず行かないであろう地元のお店で美味しいギリシャ料理が堪能できたのは、とても有意義でした。お話をしたスタッフの方は「日本の RubyKaigi にも是非行ってみたい」と言っていたので、その時には日本の地元のお店を紹介してあげられたらいいなあと思いました。
今回の EuRuKo に参加しようと思ったのは、私がよく参加する Asakusa.rb という Ruby コミュニティで「ユーザーグループチケットがあるよ」という話を聞いて、興味を持ったからでした。
Asakusa.rb では国内・海外問わずこうした Ruby のカンファレンス情報を交換したり、また海外の Rubyist がふらりと立ち寄ったりしています。
逆に、Asakusa.rb がお手本にした Seattle.rb という Ruby コミュニティにも日本から飛び入りで参加したりといった、Ruby コミュニティ同士の「人材交流」も頻繁に行われています。
プログラミング言語 Ruby は、なぜだかとてもコミュニティ活動が盛んで、世界中に Ruby コミュニティやコミュニティ主催のカンファレンスがあります。日本からもっとたくさんの Rubyist が海外の Ruby カンファレンスに参加して、海外の Ruby コミュニティとの交流が増えていくと素敵だなあと思っています。
今年の 11 月には RubyConf 2013 がアメリカのフロリダ州マイアミにて開催されます。日本 Ruby の会では渡航支援プログラムが組まれる予定ですので、我こそはと思う人は積極的に利用されることをお勧めいたします。
そして RubyKaigi に外国からやって来た人を見かけたり、あなたの所属する Ruby コミュニティに外国から人が来たりした時は、ぜひ積極的に声をかけ、温かく迎え入れてあげてください。
ふつうの Rubyist Magazine 編集者。Rubyist Magazine では編集者を切実に募集しております。Rubyist Magazine の編集にご興味のある方は、是非るびま編集部までご連絡ください。