Q1:アスペクト指向とは?

以下、アスペクト指向プログラミングからの引用です。

ログ出力ルールを作ったものの、それに従ってログ出力コードを埋め込むと、かなりの量を記述することになり、非常に面倒だと感じたことはないでしょうか?クラス数が数百オーダの場合、「すべてのクラスのすべての puiblic メソッドで呼び出しログを記録すること」というルールがあったら、それだけでも大変な作業です(本来の機能の実装だけでも大変なのに!)。

また、本来的な処理とログ出力処理が混在しているために、ソース上で本来の処理の流れが追いにくくなります。場合によってはログ出力コードのほうが本来の処理よりもコード量が多くなってします場合もあるかもしれません。オブジェクト指向によって本来的な処理はカプセル化できても、どうしてもロギングのような、どんなクラスにも記述する必要のあるものが存在します。こういった横断的関心事アスペクトとしてモジュール化するのがアスペクト指向です。

JavaのAOPとしては、AspectJ が有名です。その他にもいろいろとありますが、以降の Q&A ではこの AspectJ を使うことを前提とします。尚、AspectJ のインストール、使用方法の詳細は、以下のサイト等を参考にして下さい。


トップページへ戻る