レポート

「札幌RubyKaigi03」詳細レポート

この記事を読むのに必要な時間:およそ 5 分

12月4日(土)に,北海道のRubyユーザが中心となって札幌RubyKaigi03が札幌市で開催された。本稿では,その模様をレポートする。

レポートの前に,地域RubyKaigiについて説明しておきたい。⁠地域RubyKaigi(Regional RubyKaigi)⁠とは,その名の通り国内各地域で行われるRubyKaigiである。もともとは,国内だけでなく海外からも多くのRubyユーザが集まる「RubyKaigi」というイベント(以下わかりすさのために「本家RubyKaigi」と呼ぶ)が毎年夏に大規模に開催されている。地域RubyKaigiはその弟分であり,小規模なイベントのため,開催したい人と思う人がいれば各地で比較的気軽に開催されている。なお,ここでは説明のために「弟分」と紹介したが,本家RubyKaigiと地域RubyKaigiには階層関係があるわけではない ⁠これについては,後述の角谷氏のセッションレポートも参照のこと)⁠

札幌RubyKaigiは,地域RubyKaigiのひとつである。今でこそ各地で開催される地域RubyKaigiであるが,地方で最初に開催されたのが札幌RubyKaigiであり,今回で3回目となる。また発表者も年々豪華になっており,今回はRubyの父であるまつもとゆきひろ氏が基調講演を務めた。筆者の印象であるが,札幌RubyKaigiは数ある地域RubyKaigiの中でもいちばん熱気と勢いを感じるKaigiである。

司会の島田浩二氏

画像

※今回のレポートの写真は,Kuniaki IGARASHI氏より提供いただいた(オリジナルの写真はflickrを参照)⁠

Shibata Hiroshi氏「Rubyのテスト文化とツール 2010」

Shibata Hiroshi氏

画像

発表の先陣を切ったのは,北海道出身で,現在はtDiaryやasakusa.rbで活躍されているShibata Hiroshi氏。氏は,Rubyやアジャイル関連で有名な永和システムマネジメントに今年入社しており,入社して得られたRubyとRails界隈のテスト事情について発表を行った。

氏はまず,⁠Rubyには非常に成熟したテストのツールと文化がある」と述べ,それから永和システムマネジメントでの文化について,Rubyでのツールとともに説明した。発表では4つの文化が紹介された。

その1:テストを書く
ツール:RSpec,metric_fu。
その2:テストを書くレイヤーを分割する
ツール:モックやスタブではrspec-mocks, rr, mocha, flexmock, webmock。フィクスチャではfactory_girl, Machinist。受け入れテストではCapybara, Selenium Webdriver。
その3:動かないテストを放置しない
ツール:Hudson,paralell_tests。
その4:バグを再現するテストを書いてから直す
ツール:Spork ⁠ロード時間を短縮する), Guard::Rspec/Zentest ⁠ファイルを保存した段階でテストを自動実行)⁠
その5:DRY (Don't Repeat Yourself)
ツール:RSpecのCustom Matcher。

ただし,すべてがうまくいっているわけではなく,テストの高速化など課題もあることが説明された。

Ruby on Railsやアジャイル方面で有名な永和システムマネジメントのテスト事情(どのような文化が根付いているのか,またどのようなツールが使われているか)は,Ruby on Railsユーザでなくても参考になるので,ソフトウェア開発者の方はぜひ動画を参照してみてください。

村田賢太氏「高速な乗除算の実現と性能評価」

村田賢太氏

画像

次に発表を行ったのは,苫小牧出身の村田賢太(株式会社ジェネティックラボ)⁠氏は,Rubyにおいて巨大な数を使った乗算の高速化について説明した(除算は発表までに間に合わなかったそうだ)⁠

氏はまず,乗算や除算を筆算で行ってみせ,筆算のやり方だと桁数が増えるほど計算コストが増大することを説明した。それから巨大な数の乗算を高速に行うアルゴリズムを紹介した。

  • (A)⁠ Karatsuba
  • (B)⁠ Toom-Cook
  • (C)⁠ Shonhage-Strassen Multiplication
  • (D)⁠ Fuler Multiplication

このうち(A)はRuby1.9で使われているが,より高速な(B)を氏が1.9.3に向けて実装し,まつもと氏により承認されたことが紹介された。

またベンチマークでは,最大で2倍以上高速化されることが説明された。巨大な数の乗算なんて使う人はいるのか?という疑問もあるが,氏によると有理数を計算するRationalや素数を計算するprime.rbなど必要な場面は確かにあるそうで,なにより『速さはロマンである』と断言した。

質疑応答では,巨大な数では速くなることはわかったが,そのオーバーヘッドのせいで巨大ではない数で遅くなる可能性はあるかという質問に対し,巨大な数に対してのみアルゴリズムが適用されるようになっているため,小さい数で遅くなるようなことはないと回答された。

まつもとゆきひろ氏「基調講演:Rubyの未来/未来のRuby」

まつもとゆきひろ氏

画像

基調講演は,Ruby生みの親であるまつもとゆきひろ(株式会社ネットワーク応用通信研究所)が行った。氏はまずRubyの歴史を簡単に振り返り,1993年には利用者がわずか1名(もちろん氏自身のこと)だった言語が,2010年にはTIOBE Indexでランキング10位になるほどの人気言語になったことを紹介し,⁠言語の数は数千とも万とも言われる中で,Rubyがトップ10に入っている』と感慨をこめて語った。

それから話は氏の経歴に移った。大学卒業後は職業プログラマーになり,バブル崩壊後は景気が悪くて残業代が出なくて困ったこと,Rubyの開発は会社のマシンでこっそり行っていたこと,プログラマー歴は20年になるが実はチームでソフトウェア開発をしたことがないこと,などが氏の口から語られた。

またRuby開発の動機として,次の要素を合わせ持った言語が欲しかったことが言及された。

  • Lispの「高階関数」というパワー
  • Smalltalkの「オブジェクト指向」というパワー
  • Perlの「簡潔さ」というパワー

たとえば「オブジェクト指向」は今でこそ当たり前の存在になっているが,Rubyの開発が始まった1993年当時はそうではなかった。当時でもSmalltalkやC++は存在したが,C++はオブジェクト指向を面倒くさいものにしてしまっており,かといってSmalltalkは日常で使えるオープンソースな処理系がない(まともな処理系はどれも商用だった)という状態であった。それを考えると,Smalltalk級のオブジェクト指向機能を持ち,気軽に使えるスクリプト言語であり,オープンソースで開発されているRubyは,まさに当初の狙い通りであろう。

このあとは,Ruby 2.0で入る予定の新機能(詳しくはMatz日記(2010年11月13日)を参照のこと)や,東大平木研と共同で行っているHPC ⁠High Performance Computing)への取り組みや,組み込み分野向けの取り組みなどが紹介された。特に最後の組み込み分野については,「RiteVM」という新しい処理系を開発する意向であることが発表された。この新しい処理系はRubyのサブセットを対象とし,実装はLua言語を参考にするとのことだ。残念ながらソースコードの公開は2年ぐらい先になるらしいのだが,まつもと氏自身が手がける新しい処理系なので,注目を集めること必至であろう。

このほかにも講演では,⁠良いものを届ける,なければ自分で作る」⁠自分を変えよう,世界がそれについてくる」など,"まつもと語録"が満載であった。

著者プロフィール

桑田誠(くわたまこと)

プログラマー。メインはRubyだが,PHPやPythonもこなす。gihyo.jpではほかに「言語別YAML用ライブラリ徹底解説」という記事を執筆。

次のRubyKaigi2011では「O/Rマッパーを支える技術」というタイトルで発表に応募する予定。

コメント

コメントの記入