- ベストアンサー
アスペクト指向について
アスペクト指向プログラミングについて今勉強中です。 分からないことはいくつあります。 1)その手法はなんのものものですか? 単純なクラスの設計の手法ですか?その手法を適応するために あるツールを使わないといけないでしょうか? 簡単なサンプルソースをあれば、いい 2)ログの出力にいい方法ですか? 以上です。よろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
これは、横断的関心事というやつにどれだけの価値を見出すか、ということかと思う。クラス設計の手法とは、ちょっと違うのでは。 例えば、あるシステムを設計するとき、それぞれのクラス図のようなものを描いて全体を定義していくわね。そして、細かな仕様などを決めていき、設計する。が、そこには、果たして「ログの出力」だのといったものは含まれているだろうか? もちろん、例外発生だのといった、必要なログ出力は最初から定義されるだろう。が、開発中に必要に応じて用意されるさまざまなログ出力などはどうか。それらは、そもそも完成したプログラムからは取り除かれる機能だ。開発中に、一時的に用意しておくもの。そして、完成したときには、不要となり削除される。 この種の機能は、「このオブジェクトにこういう理由で必要とされる」というより、すべてのオブジェクトに片っ端から一律に用意される。そしてそれを元に開発を行い、完成したらば、それらは一律に削除される。オブジェクトの内容とは無関係に、「すべてのオブジェクトに、一律に足したり引いたりされる機能」だな。 これが横断的関心事というやつ。これ、ほとんどすべてのところで、ほとんど同じような機能を組み込み、そして最終的に取り除かれる。だったら、こうした横断的関心事を「全部にまとめて入れたりはずしたりできる」ようにシステムを設計できないか、ということで考えられたのがAOP。まぁ、ログ出力などは格好な題材だと思う。 AOPは、ツールを使うというより、そのためのフレームワークを利用して組み込むのが一般的だろう。Javaだと、AspectJが一番有名だろうな。他、Spring Frameworkとか、Seasar2などもAOP機能を備えている。そうしたフレームワークを利用してAOPを組み込むのが一般的だろう。
その他の回答 (2)
- newta777
- ベストアンサー率58% (20/34)
通常DIの機能と共に使用してAOPの機能を利用します。 Javaでよく言われるフレームワークはSeasar2とSpringですね。 私はSeasarのほうが好きです。 回答 1)手法といえば手法ですが、フレームワークを利用するのが普通なので 自分で作る必要はありません。 DIとAOPの関連解説 http://www.atmarkit.co.jp/fjava/rensai3/seasar2_02/seasar2_02_2.html http://www.atmarkit.co.jp/fjava/rensai3/seasar2_02/seasar2_02_3.html 2)ログ出力にも便利ですよ。 そのほかDBのトランザクション管理や Exceptionのthrowされたものに対する処理など アイデアしだいではさらに便利になりますよ。
- choconamacream
- ベストアンサー率44% (152/338)
私自身、質問者さんと同じように「アスペクト指向」を今も勉強中の者です。よって、今回はお勧めサイトだけを紹介しておきます。 「Spring Framework」 http://www.techscore.com/tech/Others/Spring/index.html 【コラム】ライトニングJava (33) アスペクト指向(1) - 新しいプログラミングの形、アスペクト指向 http://journal.mycom.co.jp/column/java/033/index.html
お礼
勉強になりました。返答ありがとうございました。