今号では「アスペクト指向プログラミング(AOP)」について書きます。

 アスペクト指向は、プログラミング言語の分野で有名になりつつある新技術で、1990年代に提唱されたものです。詳細は関連記事(記事末尾参照)に譲りますが、複数のオブジェクトに対して横断的な視点(アスペクト)から抽出した機能(例えばログ管理)を、まとめて記述したり変更したりできる、というものです。現実のシステム構築でも、実際的な「ご利益」がありそうな機能です。

 Java分野では、Javaにアスペクト指向の機能を追加したAspectJが有名です。オープンソースの開発環境を作るEclipseプロジェクトもAspectJ処理系をリリースしています( http://www.eclipse.org/aspectj/ )。Eclipseプロジェクトでは、さらにAspectJ関連ツールをまとめたAJDT(AspectJ Development Tools Project)が公開されています。Javaとアスペクト指向を使ったプログラミング環境が作られつつあるのです。また、IBMからもAspectJやAJDTに関する発表が出ており、研究が進んでいるようです。それとは別に、オープンソースのアプリケーション・サーバーであるJBossが提供するAOP機能も知られています。

 AspectJも、JBossのAOP機能も、AOPの実装の一つで、現段階で標準化を議論するのは時期尚早です。ただ、アスペクト指向はすでに有名な技術なので、Java技術の標準化プロセスのJCPの中では遅かれ早かれこのテーマが出てくるでしょう。実際、「IBMとJBossがJCPにAOP機能を提案するもようだ」とのニュース記事が出ています( CNET掲載記事 http://news.com.com/2100-1007_3-5081831.html およびZDNet掲載記事、http://zdnet.com.com/2100-1104_2-5081831.html 、ニュースソースは発表資料ではなくJBoss関係者らの談話による)。この動きが実現すると、J2SE1.5の次のリリースでは、AOP機能がJavaの標準機能に採用される可能性も、なくはありません。

 Java言語の言語仕様は、まだ変化の途上にあります。Java技術の次期リリースであるJ2SE1.5では、メタデータとGenericsという大きな言語仕様上の拡張が施されます。Java開発者会議JavaOne03の場では、これらの新たな言語仕様をうまく使うことで、コーディングが簡素になるとの説明が聴衆を沸かせました。

 AOPはまだ浸透しているとはいえません。1990年代に提唱されたばかりの新技術がいきなり業務システムの現場で活躍するとは考えにくい、という意見もあるでしょう。しかし、Javaは技術のプールです。プールは、水をくみ上げるだけでなく水源が必要です。実用面での議論は別にして、新しい技術を取り入れていくことは、Java技術の活力を維持するためには必要なことではないかと思います。

星 暁雄=日経BP Javaプロジェクト

●関連記事
Javaの知られざる欠陥(下)」(「日経バイト」2002年10月号より)
記事中、「アスペクト指向」に関する説明がある。