オープンソースの再利用による迅速なソフトウェア開発のための一手法――逆エンジニアリングツール開発の経験から
Mono meetingに参加されていた人は、中に愛知県からはるばるいらっしゃっていた前田さんという方がいたことを覚えているかもしれません。その前田さんから、mcs/jayを使った、コンパイラからリバースエンジニアリング*1などに使用することができるメタデータ抽出ツールみたいなものを出力する手法についての論文ができた、と教えていただきました(情報処理学会誌なのでオンラインでは買わないと読めません)。以下サンプルPDFから
本稿では、既存の情報システムの一部を再利用するのに必要となることがあるツールの基本機能であるパーザを,オープンソースコンパイラを使って迅速に開発する手法について述べる.主要なプログラミング言語のソースコードを解析する逆エンジニアリングツールを従来の方法で開発するには,かなりの工数を必要とする.そこで,その工数を大幅に減らすために,パーザを2つに分ける手法と実装のためのパーザ生成系MJayを考案した.MJayは,従来のLALRパーザである第1パーザを生成すると同時に,還元-還元競合を持たない第2パーザのための文法規則を生成する.これまでに,MJayを使った経験では,C#やVisual Basicの逆エンジニアリングツールを短時間で開発することが出来た.
Monoからこういう成果が出てくるというのは非常に興味深いですね。Mono meetingはとんでもない人たちwの集まりだとは思っていましたが、改めて実感しました。
追記: ↑の要約では理解するのが難しいだろうということで、前田さんが簡単な概要をまとめられています。
*1:コンパイラから生成するのであれば正確にはフォワードエンジニアリングかも。いずれにしろ、ここではUMLツールなどで使用する機能としての「リバースエンジニアリング」という意味。