アスペクト指向: 取り組む問題と解決するための技術

まず、僕自身がアスペクト指向を十分に理解しているとも、僕が言うことが正しい、とかも主張するつもりもない、ということに注意してもらって、以下の話。


アスペクト指向(or AspectJ)に触れ始めてからまだ2年(もう2年?)だけども、アスペクト指向研究者(or ソフトウェア工学者 or プログラミング言語研究者)と、アスペクト指向を理解しようとしている現場の技術者との間の理解度の差は、結構あるように感じる*1もちろん、それは仕方がないことだと思う。研究者の人みたいに他人の論文を何本も読んだり、論文を書く暇なんてないと思うから。


でも、僕が観察した感じでは(たとえば、はてなAspectJとかアスペクト指向の話題に触れている人を対象にすると)、多くの人が、技術的な部分のみに注意をひきつけられすぎだと思う。もちろん、もちろん、もちろん、研究者でないのであれば、本質を無視して、技術的な部分だけを理解すればいいのかもしれない。でも、問題は、その人たちが、今まで研究者の人たちが積み重ねてきた基礎を無視して「俺的アスペクト指向」とか「アスペクト指向の哲学」みたいなのを、勝手に主張してしまうんじゃないか、と思える。もちろん、勝手に主張したり提案したりするのは自由だけど、他人の主張を無視して(or アスペクト指向の勉強せずに)、それを行うのは、望ましくないように思える。


ここで「技術的な部分」というのを具体的にしないまま書いてきたけど、たとえば、AspectJ でいえば、アスペクト指向とは、外部からのコードの埋め込みだ、とか、インターセプトだ、とか、いう部分(そんなこと言ってる人いねーよ、とかつっこまれるかもしれないけど)。そういう部分だけを見て、感じて、アスペクト指向を理解しようとしている人は多いんじゃないかと思う(実際はわからないけれど)。


でも、あえて僕が言うのも偉そうな感じだけど、重要なのは、なぜアスペクト指向の考えが必要なのか、というアスペクト指向が解決しようとする本質的な、従来のオブジェクト指向技術ではうまく取り扱えなかった問題の部分を理解しようとすることだと思う。


何度も書くけれども、僕がアスペクト指向を生み出したわけでもなし、長年研究しているわけでもない(AOP は 1997 年ごろ ECOOP の論文で発表された・・・んだったと思う。AOP の名前がついてない時も含めると、確かもっと古い)ので、僕が言ったところで偉そうに聞こえるだけかもしれないけれど、アスペクト指向の研究に興味のある一人の立場からすると、技術的な部分だけにとらわれた理解で終わろうとするのは、残念に思う。


面白くて、興味深くて、考察が深くて、自分の理解度の低さを思い知らさせてくれる、そんな素晴らしい研究をしている人は多くいると思う。技術だけを理解しようとするのではなく、そのような研究者の人のアスペクト指向の理解を理解しようとする姿勢が、もっとあってもいいのでないかと思う。もちろん、僕が知らないだけで、みんなそうしているのかもしれないけれど。

*1:注意して欲しいのは、僕自身がじゃあちゃんとアスペクト指向を理解できてる人なんですよ、と自慢したいわけではない