AspectJによるアスペクト指向プログラミング入門

ASIN:4797326387
日本語で書かれた唯一のアスペクト指向本なのだが、正直あまり読みやすくはなかった。
機能的な面については非常によく語られているのだが、アスペクト指向の思想的な面がイマイチよくわからなかった。当然、自分自身がアスペクト指向プログラムをやったことがないというのもその一つの原因であるが、アスペクト指向を布教活動するための本としては弱い気がした。
経験がほとんどない自分が意見を言うのもなんだが、この本の最後の主張である「既存のソースを改変せずに機能を追加するのにアスペクト指向は向いている」という主張は違うのではという気がした。この本では、既存のソースが非常にへたな構造である「へたれコード」である場合に、アスペクト指向を用いることの利点を挙げていますが、ちょっとそれは違うような気がした。おそらく最初はその思想でアスペクト指向を用いてもいいと思うのだが、その上にさらに機能追加をするなどの長期的なスパンで見た場合、アスペクト指向は一時的な解決策にしかなりえないのでは?という素朴な疑問がある。そもそも、アスペクト指向が一般的でないために、さらにそのソースを保守するのは難しいのでは?と思う。まぁ、本書でもこの主張は「アスペクト指向のイレギュラーな面である」と述べているが。
AspectJの機能が向上し、アスペクト指向Javaのクラスファイルに対して適用出来るようになったために、ソースにアクセスできない場合でも機能が追加できるという面がクローズアップされている。アスペクト指向は今までのパラダイムと何が違うの?という答えに対しては非常にわかりやすいだろう。.NETの中間コードに対しても適用出来る様になったら、アスペクト指向のこうした面が大きな利点として働くだろう。
しかし、自分としては、クラスに対して横断的な機能の集約という、アスペクト指向本来の思想にこだわりたい。理由としてはネイティブコードを吐く言語(C,C++)では、先の段落の利点は享受できないだろうというあきらめが大きいのかもしれない。
なんにせよ、アスペクト指向はこれからのパラダイムである。アスペクト指向デザインパターンのような、アスペクト指向の適用範囲が今後整備されていくであろう。それに注目したいと思う。