デジタル人材の育成
首藤 一幸(東京工業大学 大学院情報理工学研究科 数理・計算科学専攻 准教授)
チーフクリエータ
坂本 一憲(早稲田大学大学院)
コクリエータ
太田 大地(早稲田大学大学院)
コクリエータ
岩澤 宏希(早稲田大学大学院)
コクリエータ
大橋 昭(早稲田大学大学院)
近年、ソースコードを対象とした解析や変形の処理ツールの発展がみられる。例えば、メトリクス測定ツールやアスペクト指向プログラミング(Aspect Oriented Programming、以降AOP)処理系が挙げられる。
処理ツールは、一つのプログラミング言語(以降、言語)に特化して開発されることが多く、複数言語に対応した統一的な処理ツールが存在していない。複数言語を用いたソフトウェア開発プロジェクトが増加しているが、ユーザがこうしたプロジェクトにいて処理ツールを利用することは困難である。
一方、処理ツールの実装はコンパイラの実装と同程度に困難である。さらに、様々な言語に対応した様々な処理ツールが別々に開発されており、莫大な開発コストがかかる上、開発者間で処理ツールに関するノウハウの共有が進んでいない。
本プロジェクトで開発する、複数言語対応の処理ツールフレームワーク、題してUnified Code Processor Framework(以降、UCPF)は、言語対応の実装と処理ツールの実装を分離することで、対応言語と処理ツールにおける多対多の関係を対応言語とUCPF/処理ツールとUCPFの一対多の関係に簡略化する。これにより、処理ツールの開発コストを大幅に削減して、複数の言語に統一的に対応した処理ツールの開発を支援する。さらに、UCPFの利用例として世界初の複数言語対応AOP処理系を実装することで、UCPFの有用性を証明する。
本プロジェクトは、UCPFが対応する全ての言語に対応した統一的な処理ツールを低コストで開発できることを目的とする。これによって、開発者が利用可能な言語の選択肢を広げ、言語間の垣根を崩し、処理ツールにおけるノウハウ共有を促す。処理ツールと言語の発展から、ソフトウェア産業界全体、それに関わる全てのインフラやシステムの品質向上を図ることを目指す。
プログラムの解析や変形、例えば、規模や複雑さといった指標の測定や、アスペクト指向プログラミングのための変形を行うツールは、これまで、対象とするプログラミング言語ごとに開発されてきた。
このプロジェクトでは、様々な言語を統一的に扱える枠組みを開発する。
それなりの規模になる野心的な提案である。
言語や処理内容に依存する部分を小さく保ちながら、なおかつ、できることを制限せずに、使い勝手のいい枠組みとするには、設計センスが問われる。 こうした設計やチーム開発においては、数字に表れにくい様々なトレードオフ、判断を経験することだろう。 それらを形式知に持ち上げることをも、狙って欲しい。
ソフトウェア工学のためのソフトウェア工学にとどまらず、エンジニアを幸せにする成果を期待している。