RubyKaigi2007レポート(後編)
Ruby1.9は継続と“Fiber”をサポート
2007/06/12
RubyKaigi2007レポート(前編)に続いて、RubyKaigi2007で明らかになった技術的な内容についてもお伝えしよう。
次世代のRuby処理系「Ruby1.9」開発の中心人物である笹田耕一氏は、「Ruby1.9実装の現状と今後」と題して講演し、「Ruby1.9は、今年(2007年)12月に出る」とスケジュールを改めて確認した。過去のRuby処理系のリリースは予定通りに出ないことが通例だったが、この「2007年12月」というスケジュールは、2006年8月に開催された軽量言語に関するイベント「Lightweight Language Ring」の場で公表されて以来、何回か強調されている。開発メンバーたちが自分自身に言い聞かせるための念押しなのかもしれない。「ちょっと品質が悪くても、1.9.1を2007年12月25日にリリースする」(笹田氏)。バグが取れた処理系を使いたい開発者には、現行の安定版であるRuby1.8.6の利用を勧めている。
Ruby1.9の主な変更点は、新たな仮想マシン(YARV)の導入、多言語対応(M17N:Multilingualization)、言語仕様の一部変更、である。現行のRuby1.8系とは完全互換ではないものの、比較的互換性があるという。Ruby on Railsも、Ruby1.9の上で「数行を手直しする程度で動作した」(笹田氏)としている。
現行のRubyインタプリタは構文木をそのまま実行する形式のインタプリタだが、Ruby1.9では、中間言語をスタック・マシンで実行する仮想マシン・アーキテクチャを導入することにより処理を高速化する。実行前にRubyコードをC言語コードに変換するAOT(Ahead-of-Time)コンパイラも搭載し、高速化のための選択肢を増やした。
Ruby処理系の代替実装として、Java仮想マシン(JVM)上の「JRuby」や、.NETのDLR(Dynamic Language Runtime)上の「IronRuby」、Smalltalk風のバイトコード・インタプリタに基づく「Rubinius」などが話題となっている。このような状況を意識してか、Ruby1.9は「たぶん最も高速なRuby処理系」(笹田氏)と強調した。ただし、ベンチマーク結果の数字などは今回は示していない。
新たにネイティブ・スレッドに対応
Ruby1.9の仮想マシンでは、新たにネイティブ・スレッドに対応する。ただし、スレッドの並列実行はしない方針である。理由は、現行の拡張ライブラリのかなりの部分が動作しなくなるためである。並列処理による高速化は、その先の世代に持ち越す形となる。
また、現行のRuby1.8系で提供している「継続(continuation)」の機能(Ruby言語のcallcc/callメソッド)をRuby1.9にも採用するとの発表があった。継続を実現できるプログラミング言語はいくつかあるが、Scheme以外の言語では利用者は非常に少ないと言われている。ある時期、Ruby1.9では継続はサポートしないとの方針が示された事があったが、結局は取り入れることになった。
![rubykaigi201.jpg](rubykaigi201.jpg)
Ruby1.9では、新機能として、一種の軽量スレッドである「Fiber」を取り入れる。Fiberは、自動的に処理が切り替わらず、明示的に処理の切り替えを記述するスレッドである。マイクロ・スレッドやコルーチンと呼ばれる機能と同じものである。OSが提供するネイティブ・スレッドよりもはるかに軽量である。前述の継続と似た使い方ができるが、継続よりもコンテキスト切り替えのコストが低く、記述がよりシンプルになるという特徴がある。
その先の世代では並列処理も意識
最近のプログラミング言語処理系の動向として話題となっているのが並列処理である。背景として、単一CPUの性能向上が限界に来ており、マルチコア・プロセッサの採用が進んでいることがある。ただ、前述したようにRuby1.9では並列性への対応は後回しとなっている。Rubyが、普及した言語と先進的な言語という二面性を保ち続けるためには、いつかは並列処理は避けては通れないテーマとなるだろう。
RubyKaigi2007でのまつもとゆきひろ氏の基調講演では、マルチコア対応の重要性への言及や、並列処理機能に適した記述能力を持つ言語であるErlangやScala、Fortressなどへの言及により、Ruby1.9の先のバージョンのRubyではなんらかの並列処理機能を取り入れるとのニュアンスを示した。ただし、具体的にどのような機能を取り入れるかについては明言しなかった。
また笹田耕一氏は、研究テーマとしてスーパーコンピュータ向けのRuby技術「HPR」(High Performance Ruby)に取り組んでいるが、これもRuby言語に並列計算と分散データ処理の機能を追加するものである。
安定版Rubyは2系列を同時にメンテナンス
Ruby1.9が登場してもすぐには安定しないと予想されることから、実用的なRuby処理系としてはしばらくの間はRuby1.8系の「安定版Ruby」が使われ続けることになる。安定版Rubyの保守を担当する中心メンバーである卜部昌平氏からは、Ruby1.8系の開発状況についての発表があった。
現在、Ruby1.8.5とRuby1.8.6の2系統についてパッチをリリースし続けている。今後も、同時に2系統のリリースを続けていく。方針は、脆弱性のように緊急性がある修正は随時、それ以外の修正は3カ月間隔でパッチをリリースしていく、というものである。世界中のRubyユーザーを支えているのは、この安定版であることを考えると、定期的な保守リリースが安定的に供給されることは非常に重要であるといえる。
JRuby1.0をリリース、繰り返し実行で高速化
JRubyの開発者であるチャールズ・ナッター(Charles Nutter)氏とトーマス・エネボー(Thomas Enebo)氏は、Java仮想マシン(JVM)上のRuby処理系であるJRubyについて発表した。発表者の2人は、もともと本業の合間にオープンソース・プロジェクトとしてJRubyの開発を進めていたが、2006年9月に米サン・マイクロシステムズが2人を雇用したことで、現在はフルタイムでJRuby開発を進めている。JRubyのリリース1.0が、このRubyKaigi2007に合わせて公開された。
![rubykaigi202.jpg](rubykaigi202.jpg)
JRuby1.0はRuby1.8.5互換の処理系で、RubyコードからJavaバイトコードへの変換機構を備える。この変換機構と、Java仮想マシン(HotSpot VM)が備える実行時コンパイル機能の組み合わせにより、同じプログラム・コードを繰り返し実行すると高速になっていく。
JRubyの大きなメリットは、Javaのライブラリ群を活用できることである。例えば、Ruby on Railsで利用できるデータベースの選択肢が大幅に増える。またエンタープライズ向けJava技術であるJava EEのAPI群の中から、必要なものを選択して使うことができる。例えば管理フレームワーク「JMX」などである。また、Ruby on Railsアプリケーションについて、データベース接続プーリング、WAR形式でのデプロイなどの機能を利用できる。
このほか、RubyKaigi2007では多数のセッションがあり、Rubyの応用範囲の広がりを見せた。その中には、次期MacOS Xである「Leopard」がMacOS XのGUIフレームワークをRubyから呼び出す「RubyCocoa」を標準搭載するというニュースも含まれていた。
現在のRuby人気は、まつもと氏が指摘するようにRuby on Railsの影響による部分が大きい。しかし、Rubyの可能性はRailsだけではなく、もっと幅広いものである──そのような自負心と、「ブームに踊らされてRubyコミュニティの良さを見失ってはいけない」、というメッセージを感じたRubyKaigi2007だった。
(星暁雄=コモンズ・メディア)
関連記事
情報をお寄せください:
- プログラムの実行はどのようにして行われるのか、Linuxカーネルのコードから探る (2017/7/20)
C言語の「Hello World!」プログラムで使われる、「printf()」「main()」関数の中身を、デバッガによる解析と逆アセンブル、ソースコード読解などのさまざまな側面から探る連載。最終回は、Linuxカーネルの中では、プログラムの起動時にはどのような処理が行われているのかを探る - エンジニアならC言語プログラムの終わりに呼び出されるexit()の中身分かってますよね? (2017/7/13)
C言語の「Hello World!」プログラムで使われる、「printf()」「main()」関数の中身を、デバッガによる解析と逆アセンブル、ソースコード読解などのさまざまな側面から探る連載。今回は、プログラムの終わりに呼び出されるexit()の中身を探る - VBAにおけるFileDialog操作の基本&ドライブの空き容量、ファイルのサイズやタイムスタンプの取得方法 (2017/7/10)
指定したドライブの空き容量、ファイルのタイムスタンプや属性を取得する方法、FileDialog/エクスプローラー操作の基本を紹介します - さらば残業! 面倒くさいエクセル業務を楽にする「Excel VBA」とは (2017/7/6)
日頃発生する“面倒くさい業務”。簡単なプログラミングで効率化できる可能性がある。本稿では、業務で使うことが多い「Microsoft Excel」で使えるVBAを紹介する。※ショートカットキー、アクセスキーの解説あり
![]() |
|
|
|
![]() |
キャリアアップ
- - PR -
転職/派遣情報を探す
「ITmedia マーケティング」新着記事
生成AIはGoogle検索をどう変えたのか?(無料eBook)
モダンマーケティングの最新トレンドを無料eBookにまとめてお届けするこのシリーズ。今回...
気になる「ATTオプトイン率」は今どのくらい? 日本のモバイルアプリ市場の現状
AdjustとSensor Towerが共同で発表した「モバイルアプリトレンドレポート 2024 :日本版...
シニアの生活意識 「生まれ変わっても今の配偶者と結婚したい」において男女で20ポイント以上の差
ソニー生命が実施した「シニアの生活意識調査2024」の結果です。