- blogs:
- cles::blog

Aspect指向って知ってますか?

最近はAspectJなんかの解説もずいぶん増えてきたので知っている人も多いと思っていたのだけど、研究者とか新し物好き以外の人にはいまいち浸透していないというのが実情だと思う。
先日ちょっとAOPについて書いたら、ある人から「AOPって何?」と聞かれてしまったのでちょっと解説を。うろ覚えで書いている部分もあるので、間違いがあれば突っ込んでください。まぁ、僕の解説なんか読むより、この辺の本を読むほうが手っ取り早いし正確なんだろうけど。
AOPはPost-OOP*2の有力候補とされている新しいプログラミングパラダイムである。その概念については、当時Xerox PARCで研究にあたっていたGregor Kiczales氏が1997年にECOOP*3で発表した論文*4が最初であるようだ。
内容を読むとjoin pointのモデルが現在のAspectJなんかとずいぶん違ったりするが、現在の形になるまでにそれだけいろいろと紆余曲折があったということだろう。
† AOPとOOPの関係
このように話を始めてしまうと「AOPになったらOOPはいらなくなってしまうのか」という質問を良くされるのだが、決してそんなことはない。AOPはOOPで解決できなかったカプセル化の問題を解決するために考え出された仕組みであり、OOPの代替技術、対抗技術というよりは、OOPの延長線上にある、OOPの補完技術という位置づけという感じだろう。
† AspectWeaver
実際にAOPで書かれたプログラムを実行するにはAspectWeaverと呼ばれているツールが必要になる。Java上で行うための実装としてはAspectJが有名だが、そのほかにも、Jbossの4.0から導入されたAOP機能とか、IBMのHyperJ、AISTのMixJuiceというものもある。
AspectJはもともとXerox PARCで作られていた実装で、現在Eclipseのプロジェクトの1つになっている。IDEのデファクトになりつつあるEclipseとの相性もあって、最近急速に普及が進んでいる(と思われる)。
† Jboss AOP
Jboss AOPのAspectWeaverはJavassistによって実装されているのだが、実はこのJavassistは国産の技術だったりする。開発したのは東京工業大学 大学院 情報理工学研究科 助教授の千葉先生。千葉先生はJbossのコミッターでもあるらしい。
Jbossは仕事でも何かと使う機会が多いので、早めにキャッチアップしておきたい。
† 横断的関心事(cross-cutting concerns)
Aspect指向ではプログラムのレスポンシビリティに関する事柄を関心事という単位で考える。横断的関心事とはOOPではうまくモジュール化することができなかった、モジュールにまたがった機能のことを指している。例えば、トランザクションのbegin/commitに関する処理や、セキュリティ、ロギングなどの問題がこれにあたる。
OOPでは、モジュール間にまたがって存在している機能に関するコードのうち、機能の実現する部分をモジュール化することはできるものの、コードを呼び出す部分についてはモジュール化することができない。
現実にログ出力ルーチンを呼び出すような部分はプログラムのいたるところに散らばってしまっているはず。AOPはこのような問題を解決できる。
† 結合点(join point)
join pointとはプログラム中でAspectが付加出来る場所のことを指す。AOPではjoin pointをpoint cutとして指定することにより、プログラムがjoin pointまで実行されたときに指定したAspectを実行する。point cutは指定したjoin pointでもとのプログラムを中断するような格好になるのでそう呼ばれるんだろう。また、このようなプログラムの実行過程は、プログラムの編み合わせに見えることからWeavingと呼ばれる。これらがAOPの大きな特徴である。
このような仕組みよって、横断的関心事に関するコードをクラスから分離し、Aspectという形でモジュール化することができるようになる。
† 今年の僕の目標
今年中に1つ以上のプロジェクト(プロダクトに)に実践投入すること。新しい仕組みも実際に使ってみてこそ価値があると思う。
- *1: Aspect-Oriented Programming
- *2: Object Oriented Programming
- *3: European Conference for Object-Orientedのこと。OOに関する国際会議としてはOOPSLA(Object-Oriented Programming, Systems, Languages, and Applications)と並ぶ最高峰の舞台である
- *4: PDFがダウンロードできる
このエントリへのTrackbackにはこのURLが必要です→https://blog.cles.jp/item/131
古いエントリについてはコメント制御しているため、即時に反映されないことがあります。
コメントは承認後の表示となります。
OpenIDでログインすると、即時に公開されます。
OpenID を使ってログインすることができます。
2 . 福岡銀がデマの投稿者への刑事告訴を検討中(112957)
3 . 年次の人間ドックへ(112381)
4 . 2023 年分の確定申告完了!(1つめ)(111951)
5 . 三菱鉛筆がラミーを買収(111824)