平成14年度未踏ソフトウェア創造事業(未踏ユース)

採択案件評価

1.採択者氏名 加藤 勇也 18歳  (株式会社グローバルギア)
2.プロジェクト実施管理組織 株式会社 創夢
3.委託金支払額  2,997,387円
4.テーマ名  Rubyスクリプトの隠蔽とWindows実行ファイルへの変換
5.関連Webサイトへのリンク  http://exerb.sourceforge.jp   http://bruby.sourceforge.jp/
6.テーマ概要

オブジェクト指向プログラミング言語Rubyはさまざまな特徴をもつプログラミング言語だが,Rubyを商用利用しようとすると,いくつかの問題が生じる.その問題の一つが,Rubyがインタプリタ型であって,入力がソースコードであることである.「入力がソースコードである」ということは,プログラムが可読状態にあるということであり,培ったノウハウが流出してしまう可能性があるということでもある.

 本提案ではソースコードを隠蔽する手段として,ソースコードをバイトコード化するコンパイラを開発する.また,生成したバイトコードを単独で実行可能なWindows実行形式ファイルに変換するソフトウェアも開発する.

 バイトコード化によってソースコードを隠蔽することにより,Rubyの商用利用が拡大されることが期待される.また,インタプリタが不要な実行形式ファイルに変換することにより,Windows上でのRubyの利用が活性化することも期待される.

7.採択理由

加藤君は提案書の文章もプレゼンでの応対も非常にしっかりしていたが,18歳,中学を出てすぐ業界に飛び込んだという人.これまでの日本の常識ではちょっと考えられなかったような新人類的なソフトウェア技術者だ.いろいろな意味でスターになれる素質を備えていると見た.

 提案テーマも旬だと思う.ちゃんとできれば,Rubyの可用性が上がる.計画も堅実で妥当.所属会社とのネゴをきちんとしてあり,信頼性が高い.
 
8.成果概要

Rubyを使用して商用ソフトウェアを開発する際に生じる2つの問題,すなわち
(1) Rubyにはソースコードを隠蔽する手段がないことから,商用ソフトウェアの開発には不向きとされている.
(2) Rubyスクリプトの実行にはインタプリタが必須であり,実行環境にインタプリタをインストールする必要があるため,導入コストが高い

を解決するために,本プロジェクトでは2つのオープンソフトウェアを開発した.

問題(1)に対しては,ソースコードをバイナリコードに変換し,ソースコードを隠蔽した状態でプログラムを実行するためのソフトウェアbRuby (ビー・ルビー) を開発した (加藤・図1)bRubyは,Rubyインタプリタ内部で生成される構造木を,バイナリコード (構造木のバイナリ表現) に変換することによって,ソースコードをある程度隠蔽することができる.bRubyWebサイトは

  http://bruby.sourceforge.jp/

で,そこから最新版をドキュメントも含めてダウンロードが可能である.


加藤・図1


問題
(2)に対しては,バイトコードとそれを実行するインタプリタを結合し,単独で動作可能なWindows実行ファイルに変換するExerb (イグザーブ) を開発した (加藤・図2,加藤・図3)Exerbによって実行ファイルに変換すれば,実行環境にインタプリタが不要となり,実行環境の整備なしにRubyで作成されたプログラムを実行することができる.ExerbWebサイトは

  http://exerb.sourceforge.jp

で,そこから最新版をドキュメントも含めてダウンロードが可能である.



加藤・図2


加藤・図3


両ソフトウェア共に計画通りの機能を実装することができ,
Rubyによる商用ソフトウェア開発の問題点はほぼ解決できたと言える.なお,両ソフトウェア共にXPのテスト手法などを用いることにより,実使用可能な程度の品質を確保できた.また,日本語のドキュメントも実使用可能なレベルに仕上げた ----- 今後英語のドキュメントも現在以上に整備する予定である.

 
9.PM評価とコメント

 加藤君は未踏ユースで採択された中では最年少であるが,その流麗でよどみのないプレゼンを聞いているかぎり,まるで35歳ぐらいのベテランSEという印象である.いつのまにこんなに「熟成」したのかと言いたくなるくらいである ----- とはいえ,リラックスした状態ではやはりふつうの18歳の好青年だし,上記のWebページからたどれる彼の個人ページを覗くとわかるように,感受性の強いロマンティストである.採択コメントでもちょっと書いたが,スター的なポテンシャルが彼には潜んでいる.

 それとは裏腹にというか,なんというか,当初の期待どおり,加藤君のソフトウェア開発のスタイルは非常に堅実で,コードはできたが種々のテストにほとんどパスしていなかった12月初旬から,2月末までに100%パスまで着実にこぎ着けた.ドキュメントの整備も簡潔ではあるがきちんと行なっている.
 ソースコードの隠蔽ができないことが,Rubyの商用利用の拡大を阻んでいるというのはある程度わかるが,bRubyのようなバイナリコード化をしても,本格的なリバースエンジニアリングには耐えられないことも事実.むしろ,bRubyExerbのための準備であったと見るのが正しいかもしれない.実際,Rubyコミュニティでは,bRubyではなく,Exerbのほうに圧倒的に関心をもたれているそうである ----- Rubyコミュニティそのものが商用と遠いせいかもしれないが.

 ともかく,ExerbによりRubyプログラムが,Windows環境など,ずっと広い範囲で無意識のうちに使われるようになることは確かである.ただしその際,Exerbでパックされたプログラムが大きくなってしまう心配があるが,ここは必要なクラスライブラリをオンデマンドでロードする方法などを採用して解決している.開発では,結局この部分が一番複雑で大量のコード (全体の60) を要したという.すなわち,性能のチューンにもかなりの労力が割かれている.

 ここまで来れば,Rubyの最大の課題である,ネイティブコードコンパイラなどを用いた実行性能の改善に取り組んでほしいものである ----- 本人もそのつもりらしい.ここでの成功体験は,それに力を与えるものと信じている.

★★ スーパークリエータ: 新人類的ソフトウェア技術者.見切りが明解で,必殺仕事人的にプロジェクトをこなした.加藤君に冒険をさせるとなにが起こるか,それが楽しみだ.


   
(補足)