IPA


IPAトップ





2004年度未踏ソフトウェア創造事業(未踏ユース)  採択案件評価書


 



1.担当PM


 筧 捷彦   (早稲田大学教授)



2.採択者氏名


 代表者

淺川 浩紀  (名古屋工業大学)

共同開発者

なし



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


  三菱マテリアル株式会社



4.委託支払金額


 3,000,000円



5.テーマ名


  Ruby.NET コンパイラの開発



6.関連Webサイト


 なし



7.プロジェクト概要


 Ruby の生産性と .NET の汎用性を備えた Ruby.NET コンパイラを開発した。従来の Ruby インタプリタと比較して当初に期待通りの高速化を実現できた。これを出発点として,さらなる高速化へ向けてのチューンアップや未実装機能の実装組み込みを行って, Ruby による実用的なアプリケーション開発の道具として仕上げていくことが望まれる。




8.採択理由

 

 Ruby の高速化につながる話ではあるけれど,.NET でのコンパイラという設定から,Ruby のダイナミズムを制約してしまうのでは困る。
 いずれにしても,採択数との兼ね合いもあるが,試してみてもらってもよいプロジェクトであることに変わりはない。



9.成果概要

 

Ruby の言語仕様のうち,つぎのものの翻訳を行うことができる。

•  クラスやメソッドの定義
•  クラス変数 , インスタンス変数 , グローバル変数 , ローカル変数

•  while for case if else 等すべての制御構文

•  例外処理

•  埋め込み構文や正規表現
•  特異メソッドや Mixin ( include ) , require (ソースファイルの分割)
•  .NET のクラスを使うイベント処理が可能, Windows プログラムも
•  スレッド 配列 ハッシュ …

 

次のものにはまだ対応できていない。

•  ヒアドキュメント
•  標準ライブラリの半分くらい(多倍長整数演算など)
•  メソッドのアクセス制御( private, public… )
•  こまかな機能( alias, defined?, undef )

 

Ruby の根幹となる部分については,対応ができた。その範囲で, Ruby プログラムの実行速度を,現状のインタプリタで動作させる場合と,開発したコンパイラで翻訳して得た .NET IL のコードで動作させる場合とで比較してみると後者が数倍程度以上高速になってる。





 



10. PM評価とコメント


 

 開発者の 淺川浩紀君は,情報系学科に在学する大学生である。コンパイラの作成法を身につけたので,コンパイラを作るのが楽しくて仕方がない,という人である。筧PMが抱えるプロジェクトの中でも,書き下したソースの行数でいけば,どうやら断トツに一番のようである。若いってすごいな,と年寄りとしてはうらやましく思う。

 

 いまから振り返ってみると,応募をした時点で, Ruby やそのインタプリタの詳細や, .NET の詳細まではまだ勉強できていなかったように思われる。それが,この半年の間で,オブジェクトコードを設計してそれを吐き出す翻訳部分を実現するところまで詳しく勉強しきったのだから,まさに若さの勝利である。

 

 ところで,一方ではその若さに心配が残る。同じ Ruby を対象に処理系の高速化をさまざまに工夫している笹田さんが書いた行数を聞くと,わずかに 7000 行という。さまざまな生成系をうまく使い,計算機にプログラムを作らせているからである。それに対して淺川さんの方は,それぞれの Ruby 言語機能ごとに試行錯誤を重ねていることもあって,どんどんとソースプログラムが増えていってしまうのだろう。いくらでもプログラムが書けてしまうので,ついついそうなる。もう少し経験を積み,見通しがつくようになると,「楽」をすること,「楽」ができることを考えるようになるし,考えられるようになる。

 

 プロジェクトの目標であった, “ Ruby で開発したアプリケーションを .NET 上に配付する”ことを可能とするレベルまで仕上げることを急いで欲しい。そして,公開して世の中で使ってもらおう。

 

 そこで一段落がついたら,ゆったりとした気分で書き重ねたソースコードを眺め直して整理することを勧めたい。そうするとさらに“コンパイラって面白い”ことを見つけ出せるに違いない。


 差し当たりは,実装ができていない機能の追加を仕上げて,早く公開するところまでもっていくことが何より必要とされている。なにより,“ Ruby で開発したアプリケーションを .NET 上に配付する”ことを可能とするのが目的であったのだから,具体的な Ruby で書いたアプリケーションを開発したコンパイラで翻訳して配付する,という実績を一つでも二つでも作ってみせるところまで頑張り抜いて欲しい。

 

 Ruby のもつ動的な側面への切り込みや,すでにコンパイラ開発ができてしまった静的な側面での最適化など,やるべきことはいろいろ見つかる。今回のプロジェクトで培った力をもって,さらに大きな課題に挑戦してみて欲しい。



  ページトップへ   






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