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では継続はサポートしないとの方針が示された事があったが、結局は取り入れることになった。
Ruby1.9では「Fiber」と呼ぶ新たな軽量スレッド機能が加わった。Fiberは自動的には切り替わらず、明示的に処理の移動を記述するスレッドで、ネイティブ・スレッドよりも軽量。スライドのプログラム例では、f1というFiberの中でf2.yieldと書くことで、明示的にf2というFiberに処理を移動している。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に合わせて公開された。
JRubyのベンチマーク・テスト。表示している数字は、左からユーザ時間、システム時間、合計時間、実測時間。JRuby1.0のベンチマーク結果は、1回目の実行では2.07 秒。Cで記述したRuby1.8.5では1.68秒なので、それより遅い。2回目の実行では1.234秒に高速化し、Ruby1.8.5を逆転している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だった。
(星暁雄=コモンズ・メディア)
関連記事
情報をお寄せください:
- PHPでGAE上に社員検索アプリを作る (2010/3/18)
GAEの制約により使うことができなかったテンプレートエンジン。PHP4GではSmartyが使えるようになった - 構造体の便利な用途、インターフェイス入門 (2010/3/10)
継承機能を排除したインターフェイス機能でダックタイピングが可能となった。サンプルで確かめてみよう - プライベートモードの履歴状態 (2010/3/1)
仕事に集中できるときと、なかなかできないとき、ありますよね。状態遷移図で考えてみよう - Goのswitch文で解くFizzBuzzと構造体のイントロ (2010/2/25)
Goではif文と同等の制御構造をswitch文で表現できる。試してみよう
|
|
スポンサーからのお知らせ
- - PR -
| 「いつかは壊れるサーバ」そんな故障に 迅速で安価に手軽に対応する方法とは? New! |
| 「特権ユーザー」の事件を防げ! 万能権限を持つユーザーの管理方法とは? New! |
| 仮想環境の構築とデータ保護の特効薬?! 実績と信頼性の高いパッケージで安心運用 |
| 仮想環境のバックアップもこれまでどおり 「まるごと取ってまるごと戻す」簡単運用 |
| おばかアプリ選手権、第4弾開催中!! ムダにカッコよくてくだらない作品求ム! |
| 社内ファイルサーバを“クラウド”に統合 VPN直結「クラウド型ストレージ」を紹介 |
| その数、なんと400台以上! グループ内 サーバの「統合管理」によるメリットは? |
| 美人!? まあまあ? 気になる いやし系!! PV急増で「美人時計」がとった手段とは? |
| 進化を続ける富士通ストレージETERNUS DX 製品開発者の自信を裏付けるものとは何か |
| 運用管理の課題を“2つの観点”から分析 ユーザー満足度の高い「仮想環境」とは? |
お勧め求人情報

**先週の人気講座ランキング**
〜CCNA編〜
| ◆ | TomcatやJBossなどAPサーバ環境に関する 情報を集約! “業務”用APサーバ大百科 New! |
| ◆ | 一気に解説! 最新のクラスタストレージ 「RAIDを超えたストレージ基準」……など New! |
| ◆ | クラウド的ユーザー体験の変化は脅威か? 仮想化技術を使いこなす運用管理術を紹介 New! |

| ◆ | 上司や部下、部署内メンバーとの情報共有 を“ガラッ”と変えるコラボツールとは? New! |
| ◆ | おばかアプリ選手権、第4弾開催中!! ムダにカッコよくてくだらない作品求ム! |
| ◆ | 社内ファイルサーバを“クラウド”に統合 VPN直結「クラウド型ストレージ」を紹介 |

| ◆ | Twitterのアカウントはなぜ突破された? メールによる新手の攻撃手法とその対策 |
| ◆ | もう仮想化のお試しフェイズは終わりだ! Hyper-V 2.0が基幹システムも仮想化 |
| ◆ | 美人!? まあまあ? 気になる いやし系!! PV急増で「美人時計」がとった手段とは? |

| ◆ | クライアント企業から求められる人材 ⇒IT技術と経営戦略を併せ持つ「戦略家」 |
| ◆ | .NET編集長が実践する「技術情報検索術」 サンプル・コードを簡単に探す“技”は? |
| ◆ | 業務効率と情報セキュリティ対策を両立! 手間なく確実に機密情報を守る方法とは? |

| ◆ | 進化を続ける富士通ストレージETERNUS DX 製品開発者の自信を裏付けるものとは何か |
| ◆ | 運用管理の課題を“2つの観点”から分析 ユーザー満足度の高い「仮想環境」とは? |

| ◆ | 【CTC事例】約30の基幹システムを統合! 膨大なバッジジョブを制御した方法は? |
| ◆ | 仮想化すればコストは削減できるか? 仮想化に必要な「3つの視点」を解説する |
| ◆ | その数、なんと400台以上! グループ内 サーバの「統合管理」によるメリットは? |






