IPA


開発成果一覧へ





2005年度上期 未踏ソフトウェア創造事業  採択案件評価書


 



1.担当PM

   千葉 滋 (東京工業大学大 学院 情報理工学研究科 助教授)



2.採択者氏名


開発代表者

笹田 耕一 (東京農工大学大学院 工学部 博士後期課程)

共同開発者

なし


3.プロジェクト管理組織


  有 限会社 シーカネット



4.委託金支払額


  5,000,000



5.テーマ名


  オ ブジェクト指向スクリプト言語Rubyの処理系の刷新



6.関連Webサイト


  http://www.atdot.net/yarv/



7.テーマ概要


 スクリプト言語 Ruby は、フレームワークやライブラリの整備が進み、最近では商用システムにも使われる例がでてきた。しかしながら現行の Ruby の仮想機械 (VM) の実行時性能は必ずしも高くなく、商用利用を躊躇させる要因のひとつであった。そこで、開発者が以前より開発を進めてきた高速Ruby VM であるYARVの完成度、特に従来 VM との互換性を高め、従来の VM の高性能な代替品として利用できるようにする。



8.採択理由


 
日本発の言語として有名な Ruby の次期版の公式処理系となることが予定されている新処理系の開発提案である。開発者は提案している処理系のプロトタイプを前年度の未踏ユースで開発してお り、その経験に基づいて提案された開発計画は、期間内に開発が可能となるように実装する機能の範囲もよく絞り込まれており、十分な実現可能性がある。
  申請者は未踏ユースでの開発実績により、Ruby 開発コミュニティの中でも有力開発者と目されるようになったが、開発したものがプロトタイプであったため、まだ本来の意味で実績ある開発者ではない。今回 の採択により、公式処理系となりうるソフトウェアの開発を支援することは、実績ある開発者への道の途上にある申請者を後押しすることになり、本事業の趣旨 からいっても適切であると考え、採択とした。



9.開発目標


 YARV の完成度を客観的に調べるため、まず網羅的な自動テストを作成し、そのテストに全てパスするように開発を進める。また、OSのネイティブスレッド対応、 Multi-VMインスタンス機能の実装を行い、Ruby処理系としての互換性向上や機能強化を図る。具体的な数値目標としては、2プロセッサ構成の計算 機を用いたネイティブスレッド対応Rubyにより従来比1.5倍以上の性能向上を目指す。Multi-VMインスタンス機能についてはApache用拡張 モジュールであるmod_rubyに対応させ、アプリケーションごとに独立したVMを割り当てることを目標とする。



10.進捗概要


 開発の進行にあわせて、随時中間成果 物のリリースをおこないながら、開発を進めた。また Ruby の次世代処理系としての YARV の認知度をあげるため、積極的な広報活動をおこなった。例えば国内外のワークショップや学会で5回の発表をおこなった。さらに情報処理学会論文誌に YARV の開発内容に基づいた学術論文を発表した他、商業誌等に Ruby 言語の紹介記事を執筆した際に YARV の紹介もおこなった。



11.成果


 最も重要な目標であったYARVのRuby処理系への統合がほぼ完了した。完成度を確認するために用意した約2,000の自動テストも99%以上パスし ている。Ruby 用のアプリケーションの動作確認もすすめ、例えば Ruby の人気アプリケーションであるRuby on Railsの動作を確認した。さらにユーザからのバグ報告を管理するために、日英両言語によるバグトラッキングシステムを稼働させた。

  ネイティブスレッドはPOSIX Thread(UNIX系)、Win32 Thread(Windows系)を用いる実装を行った。ただし、Rubyレベルの並列実行には対応しないグローバルVMロックを用いた実装とした。しか し、拡張ライブラリによる並列実行をサポートするためのAPIを提供し、実験の結果Dual Core CPU上で約2倍の性能向上を確認した。Multi-VMインスタンス機能については暫定的に対応したが、目標としていたmod_rubyの対応までには 至らなかった。各VMの並列実行をサポートして、各VM並列実行の結果約1.5倍の性能向上の達成を確認した。

  詳細は以下のプロジェクトサイトから得られる。

  http://www.atdot.net/yarv/



12.プロジェクト評価


 昨年度の未踏ユースでの成果物である YARV を改良し、Ruby 言語の公式処理系として採用してもらえる品質のものにするのが、本プロジェクトの最終的な目標であった。残念ながら完全にその目標が達成されたわけではな いが、Ruby 言語コミュニティ内で YARV が次期公式処理系であると広く認知されるところまで開発を進めた点は高く評価できる。また実際に公式処理系とするために必要な作業量を考えると、今年度分 の成果も開発者の高い能力あってこそ達成できたといえる。
 なお採択された計画では、本プロジェクトの目標は YARV を Ruby 処理系の内部に組み込むことであった。その点では、プロジェクトの目標は予定通り達成できたといえるが、YARV を組み込んだ Ruby 言語の公式処理系がリリースされるまで開発を継続してほしい。また計画にあったネイティブスレッド対応や、Multi-VM インスタンス機能の実装は、不十分な形でしか達成できなかった。これは開発者の能力不足というよりも、計画が壮大すぎたためといえる。期間内に実現可能な 計画を立案することも大切なので、この経験を今後に生かして欲しい。



13.今後の課題


 YARV の完成度をさらに高め、Ruby 言語の次期公式処理系 Ruby 2.0 として YARV をリリースすることが、早急に実現するべき今後の課題である。しかしリリースのためには単に YARV の完成度をあげるだけでなく、Ruby 言語の開発責任者であるまつもと氏らと協力して Ruby 2.0 言語の仕様策定をおこなう必要がある。このため、YARV を処理系として採用した Ruby 言語の公式処理系を、先行してバージョン 1.9 としてリリースする案も検討されている。


  ページトップへ   






  Copyright(c) Information-technology Promotion Agency, Japan. All rights reserved 2004