アスペクト指向とは
アスペクト指向という言葉は耳にしたことはあったけれども、なんのことやらさっぱりわからなかった。そこで、Struts を勉強したついでにちょっとネットで情報収集してみた。
アスペクト指向プログラミング オーバービュー
http://www.atmarkit.co.jp/farc/rensai/redge24/redge24.html
アスペクトは、言語学では、「開始-継続-完了」などの一連の動作のある局面に着目する概念である。ソフトウェア工学におけるアスペクト指向も、ソフトウェアの動作に着目して、さまざまなモジュールにおける動作に共通する局面を集めて、それに対する操作を一箇所に記述しようという試みらしい。
また例によって聞きなれない言葉が登場する。曰く、結合点(joint point)・ポイントカット(pointcut)・アドバイス(advice) 等々。私の理解では、
結合点 | 具体的な動作における、あるアスペクト |
ポイントカット | 結合点の集合 |
アドバイス | ポイントカットをプログラムの制御が通過したときに起こしてやる追加的な動作 |
ということなんだけど、もう少し泥臭く書くと、
結合点 | メソッド |
ポイントカット | メソッドの集合(メソッド名でフィルタされる) |
アドバイス | メソッドの開始または終了をイベントとして呼び出されるイベントハンドラ |
と理解しても、そんなに間違っていないのかな・・・。アドバイスには around とか言って結合点を置き換えてしまうものもあるみたいだけどね。
これが実用的に普通に使われる時代が来るんだろうか?来るような気もするし、永遠に来ないような気もするが・・・。オブジェクト脳とかいう本を書いた人がいたけど、「アスペクト脳」とかいう本はあるのかな?