RubyKaigi 2014 レポート

笹田耕一さん,「Ruby開発者にとって簡単なこと,難しいこと」を語る ~ RubyKaigi 2014 基調講演 1日目

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

2014年9月18日~20日の3日間,タワーホール船堀にてRubyKaigi 2014が開催されました。基調講演をそれぞれレポートしていきます。

画像

1日目の基調講演は,YARVやRGenGC,RincGCを始めたした主要機能の開発に携わっているRubyのコアコミッターの笹田耕一さんの「Ruby開発者にとって簡単なこと,難しいこと(Building the Ruby Interpreter What is easy and what is difficult?)」という講演です。

Rubyコントリビューターとしての活動

笹田さんにとって次の事柄が10年になることを挙げ,2014年はRubyコントリビューターとしての節目の年になったと言及しました。

  • YARVの開発から10年(2004年1月~)
  • 日本Rubyの会発足から10年(2004年7月~)
  • Rubyist Magazine発刊から10年(2004年9月~)

画像

笹田さんは,Herokuでまつもとゆきひろさんのチームに所属し,フルタイムのRubyコミッターとしてRubyの中核となるインタプリタの開発を行っています。

Ruby 1.9ではYARV・Nativeスレッド・Fiberを,Ruby 2.0ではFlonum・メソッドキャッシュを,Ruby 2.1では世代別ガベージコレクション(GC)となるRGenGCを開発しました。

現在は,Rubyの次期バージョンに組み込む予定のインクリメンタルGCの開発に携わっています(RubyのインクリメンタルGCについては,Rubyist Magazine 0048号にインクリメンタル GC の導入という記事を寄稿しています)。コンパイラの性能や並列処理,プロファイルにおける研究にも取り組んでいて,Rubyの性能向上に多大な貢献をしています。

また,Rubyコミュニティでも多くの活動を行っています。日本Rubyの会の理事として過去のRubyKaigiを運営したり,Rubyアソシエーションの理事として2014年には世界中のRubyConfに参加し,Rubyの普及・発展活動に取り組んでいます。

笹田さんの数々の活動はホームページにまとまっています。

Rubyの改善とトレードオフ

インタプリタ開発者としてのミッションは「インタプリタのクオリティの改善」と笹田さんは語ります。クオリティの改善はトレードオフを招きます。例えば,性能をあげるとリソース消費量の上昇,信頼性や互換性,拡張性の低下に繋がる可能性があります。エンジニアやプログラマはそういったトレードオフのパターンを理解し,考え,打ち勝つ必要があると笹田さんは述べました。

Ruby自体も,言語としての力と読みやすさ・書きやすさのトレードオフに打ち勝って生産性を獲得してきました。現在のRubyが抱える性能面の問題においても言えることであり,生産性と性能のトレードオフに打ち勝つために,笹田さん含め,Rubyコミッターは日々Rubyの改善を続けています。

今回の基調講演では,Rubyに携わっている中で得られた,開発者にとって「簡単なこと・難しいこと」という知見をテーマごとに紹介しました。

画像

シリアル実行性能

Virtual Machine(VM)と最適化,RubyとCの共存について話しました。

  • 簡単なこと
    • VMをシンプルに作ること
  • 難しいこと
    • Rubyを動かすVMを,人間が管理しやすいように作ること
    • C言語との親和性を保つこと

簡単な処理系は,作り始めてから1週間で実装できたそうです。しかし,このVM上でRubyは動かなかったため,命令を徐々に追加してYARVを開発したとのことです。

すでに存在していたRubyのテストスイーツをすべて動かすことをゴールとして作業を進めました。この作業は非常に大変で,テストフレームワークがRubyで書いてあるため,そもそもテストが動かないという問題に陥ったそうです。テストが全部最後まで実行できた時は達成感を感じたと当時の心境を語りました。

今後の展望として,アグレシッブな最適化の実施やソースコードをCで書き直すことの可能性,LLVMの導入やRubyとCをうまく混ぜる仕組みを作ることなどを検討しているそうです。

著者プロフィール

トクトミヒロキ

業務システム系のエンジニア。最近Rubyが好きになり,Rubyプログラマになるための就職活動中。

twitter:@talkto_me
github:https://github.com/ta1kt0me
blog:http://jangajan.com

コメント

コメントの記入