2004-04-28
アスペクト指向プログラミング
最近あちらこちらで見かける「アスペクト指向プログラミング」という言葉。
私が思うには、開発の手法というよりは、保守性、機能拡張を向上するために研究されたものという感じかな。
このアスペクトという考え方はすごいというか、こんなことができるのかという感じです。
いろいろなところで説明がされていますが、例がないと分かりにくいし、説明をするのも難しくなります。
そのため、概念説明+例による説明って構成で説明されています。
面白いのは、ほとんどの例に取り上げられるのが、ログ機能の追加という例。みなさん、よほどロギングの機能の実装に苦労しているのでしょうかね。(笑
簡単に説明すると、ある機能を実装するオブジェクトがあるとします。そのオブジェクトにログ機能を追加するとしましょう。
いろいろなアプローチがあるかとは思いますが、そのオブジェクトのメソッドにログ出力を行うための処理を追加するのが一般的なのかもしれません。
しかし、それが1個所なら問題がありませんが、いろいろな個所に追加しなければならないとしたらどうでしょうか。
まぁ、力技でコーディングすればいい話ですが、実装ミスや再テストが必要になるでしょう。
そこでアスペクトという考え方が登場するわけです。
上記の例ならまずログを出力する機能を実現するオブジェクト(アスペクト)を用意します。
そして、ログ出力をいつ実行するか記述するだけなのです。
つまり、もとのオブジェクトは一切変更せずに、ログ機能を追加することが可能なのです。(信じられません)
私はどうやって実現するのかを考えることがあるので、一種のフックかなぁと思ったりもしますが、実現方法を考えるとアスペクト指向の本質を誤解する可能性があります。
ということで概念を学ぶことが重要だと思っています。
しばらくはアスペクト指向に興味を持って勉強してみたいと思います。










楽天
アマゾン








2005-09-09 17:30
アスペクトじゃなくてアクセプトになっちゃってますね。
2005-09-09 19:38
おお、ご指摘ありがとうございます。
恥ずかしいので修正しました。(w