アスペクト指向入門

アスペクト指向入門 -Java ・ オブジェクト指向から AspectJプログラミングへ

アスペクト指向入門 -Java ・ オブジェクト指向から AspectJプログラミングへ

目次を見る限り、ちょっと中身は薄そうではあったけれど、何はともあれ 千葉先生 だもの。Javaassistの。千葉研究室の。AOPに関する千葉先生の見解を聞きたくて買ってみた。

千葉研究室の成果物にはかなりお世話になってる。それに、本を読むまで忘れてたけど、OpenC++もこの人か。

本の半分近くを占める AspectJ の解説は、AspectJを通じてAOPの発想を伝えるという趣旨は分かるけれどどうしても冗長に見えてしまう。第1章で「難しすぎてボツにされた」という原稿を読んでみたい。

私はAOP研究の前線は全く追えていないから、p.23の横断的関心の定義はようやく頭がすっきりとした感じだし、p.146のJoin point shadow/residueの議論やらObserverパターンへの適用例とその限界やら、参考になる面は多々あった。でも、まだ私にはアスペクト指向分析の視点が見えてこない。何をアスペクトとして取り出すべきか、この本は従来の解説記事の類に比べてかなり触れてはいるけれども、でも私はまだ分かったという気がしないのである。アスペクト指向自体が発展途上な現在では無理はないのだけれど、その昔、高校生の時に 憂鬱本 を読んでOOに触れたときのような頭の中が整理され冴えわたる音はしない。

アスペクト指向分析が必要だ。AOAができなければ、AOPLは単なる実装上のテクニックを提供するに過ぎず、だったら静的構造のモジュール化については Hyper/JMixJuice のほうが魅力的に感じるし、Methodへのadviceや依存関係の解決についてはDIのほうがより直感的である。

AOPが実装上のテクニックであってはいけない。仮想関数テーブルだって実装上のテクニックとして見れば要は関数ポインタなのだから。OOAがあってこそ、クラスは構造体+関数ポインタ以上のものになるのだ。AOAがあってこそ、AOPLはOO onlyで構築されたDI containerを越える。

だから、私はそのAOAを理解することを求めていて、この本は部分的にその要求に応えてくれたけれども、結局、実務における生産性でAOPLがOOPLを上回るまでに分析に活かせるというレベルまで理解することはできなかった。

Aspect-Oriented Analysis And Design っていう本もあるけど、これ役に立つかな。お金があれば買ってみるんだけど、今お金が無くてねぇ。