平成12年度未踏ソフトウェア創造事業


採択案件評価書

1.担当PM  12.湯淺 太一
2.採択者氏名  松本 行弘 (ゼータビッツ株式会社)
3.プロジェクト実施管理組織  ゼータビッツ株式会社
4.委託金支払額  11,430,505円
5.テーマ名  「オブジェクト指向スクリプト言語 Ruby 次期バージョンの開発」
6.関連Webサイトへのリンク  http://www.ruby-lang.org/
7.テーマ概要

本提案は,提案者が既に開発し,国内外で高い評価を受けているオブジェクト指向スクリプト言語Ruby を改良し,国際的な競争力を向上させるものであり,主に次の項目からなる.


(1) 現在の構文木インタープリタを,バイトコードインタープリタに変更することによって,保守性・実行性能を向上する.

(2) 処理系のごみ集め方式を,現在のマーク・スイープ方式から,実行時性能に優れる世代別方式へ変更する.

(3) 国際化に対応するために,文字コードをユーザ定義できる機能の追加.
8.採択理由

 Ruby は日本人によって開発され,国際的に評価されている数少ない言語・処理系であり,今回の提案によって,さらにその国際競争力が向上すると期待される.申請者の熱意と実力はこれまでの開発によって十分に証明されており,半年という短期間ではあるが,提案事項の実現性はきわめて高い.また,今回の改良にあたっては,Lisp などの言語処理系を専門とする PM からの助言がおおいに役立つものであり,本事業の趣旨に適合するものである.

申請者はこれまでに,Lisp および CLOS を用いた電子モールシステムの開発経験があり,学生ではあるが,提案事項の実現性はきわめて高いと判断した.

また,プロジェクトの進行にあたっては,豊富な Lisp アプリケーション開発経験を持つ PM が,おおいに貢献できるものと思われる.
9.開発目標

バイトコードインタープリタに関しては,性能目標を再帰を多用するプログラムにおいて消費メモリを著しく増大させることなく処理速度が50%以上向上すること,ごみ集めに関しては,オブジェクトを大量に割り当てるプログラムにおいてGC 処理時間が有意に向上すること.また,その際の消費メモリ空間の増大が20% 以内であること,国際化に関しては,現状のマルチバイト文字列処理と比較して,文字単位処理速度の低下が10 %以内であることを開発目標とした.
10.開発者への助言と指導

バイトコードインタープリタに関して,バイトコード命令設計の参考とするために,
プロジェクトマネージャー自身が以前設計したバイトコード命令セットの仕様(非公開)を提供した.


ごみ集め方式に関して,「スクリプト言語」という特徴に適した方式を検討するよう指導した.ただし,スクリプト言語で多用される傾向にある文字列に関しては,従来版でもごみ集めの対象としていないので,今回は対応が見送られた.


国際化に関しては,基本的な方針を開発者と議論し,その妥当性を確認した.


本実施テーマは,従来のシステムに改良をほどこすものなので,成果報告書作成にあたって,従来版との相違が明確になるように指導した.
11.開発成果

バイトコードインタープリタに関しては,12命令の仮想マシンを実現しハンドコンパイルしたコードにより性能目標を達成していることを確認した.ごみ集めに関しては,世代別方式のGCを実装することにより所期の目標を達成した.国際化に関しては,言語ユーザがエンコーディングを拡張できる仕掛けを実装したことが重要である.性能面は特に問題ないと思われる.

開発成果は,http://www.ruby-lang.org/ においてフリーソフトウェアとして公開されているRuby言語に将来導入される予定である.


(講評)

既存ソフトウェアをベースにしているとはいえ,野心的なテーマであった.短い開発期間であったが,一応の成果を達成した.バイトコードインタープリタのプロトタイプによって速度向上が確認でき,世代別GCの導入によってメモリ効率の向上を達成し,新しい国際化機能によって実際にエンコーディングを追加できることを確認した.


しかし,開発期間の制約のために,開発者自身も必ずしも満足できるレベルには達していない.開発成果を実用化するためには,三つのサブテーマのそれぞれについて,主として次の改善が必要である.

(1) バイトコード命令をフルセットにし,今回は検証のために手動で生成したバイトコードを,自動生成するためのコンパイラの開発.

(2) 世代別GCのバグの除去.

(3) 国際化機能のユーザインターフェイスの改善.



今回は開発成果を確認できるように,従来版に開発成果を組み込むことは敢えて行わなかったが,今後は従来版に統合して,より良いRubyシステムを構築することが望まれる.



Ruby はすでに国内外で高い評価を受けている.特に国内では,日本発のプログラミング言語でありその処理系である Ruby は注目を集めている.今回の開発により、性能面で改善のめどが立ったといえる.PerlやPythonなど,他のスクリプト言語との競争力を高めることが期待される.