表題番号:2012A-031 日付:2013/04/15
研究課題UniAspect: 言語非依存な統一アスペクト指向プログラミングフレームワーク
研究者所属(当時) 資格 氏名
(代表者) 理工学術院 准教授 鷲崎 弘宜
(連携研究者) 理工学術院 助手 坂本 一憲
研究成果概要
プログラミングにおいて、ある要求を実現する処理が複数のモジュールに散らばって出現することがある。例えば、デバッグのためのロギングがこれに相当する。ロギングはプログラム中の様々な箇所に散らばり、各モジュールの本質的処理と混在するため、コードの見通しが悪化したり、修正・削除の際に変更漏れが発生するなど、各モジュールやプログラム全体の保守性を低下させる。このような複数のモジュールに出現する処理は横断的関心事と呼ばれる。AOPでは、横断的関心事をアスペクトと呼ばれるモジュールに分離して記述し、後から専用の処理系を用いて本質的処理に合成する(織り込む)。AOPにより、横断的関心事を本質的処理から独立したモジュールとして管理できるため、プログラムの保守性が向上する。

これまでに様々なアスペクト指向プログラミングの処理系が提案されているが、その多くが特定の言語に依存した処理系として実装されている。一方で、。NETフレームワークの中間言語を対象としてアスペクトを合成することで、言語に非依存なアスペクト指向プログラミングを実現する処理系がいくつか提案されている。これらの手法は、複数の言語に共通な表現上でアスペクトを合成する点で本研究と類似しているが、対応する言語が。NETに依存するため、特定のプラットフォームに依存しない本研究の方がより多くの言語を対象に関心事を織り込める。またJeffらは、既存のソースコード変換処理系DMSを用いて関心事を織り込むアスペクト指向プログラミングの処理系を提案しているが、複数言語を統一的に扱える処理系は提案していない。

これらの問題解決のため本研究では、プログラミング言語に非依存な統一的AOPフレームワークを提案し、その試作を行った。同フレームは、様々なプログラミング言語で記述されたプログラムを統合コードオブジェクトという共通表現に変換し、その上でアスペクトの織り込み処理を行うことで、言語非依存性を実現する。特に、統合コードオブジェクト上で、各プログラミング言語に共通な要素のみを織り込みの対象とすることで、プログラミング言語の種類によらず共通の形式でプログラム中の箇所を指定できる。これにより右図のように、複数の言語のコード群に対する合成を1つのアスペクトとして記述できる。また、同フレームワークが対応するプログラミング言語の単一のAOP処理系としても利用できる。

同フレームワークにより、例えばクライアントサーバ型Webアプリケーションのような、複数の言語で開発されるソフトウェアにおける横断的関心事を、1つのモジュールにまとめて記述でき、生産性や保守性の向上を達成する。また、同フレームワークだけで複数のプログラミング言語に対するアスペクト指向プログラミングが可能になるため、アスペクト指向プログラミング処理系のラーニングコストを低減できる。