ドキュメント候補
タイトルの意味は、変更をアスペクトで表そう、みたいな。 AspectJ の魅力的だけど、ちょっと使いどころが難しいそーな機能に、既存のライブラリ(or jar)に対するアスペクトの適用がある。そのような時にでのアスペクトが何をするかということの一つは、ラ…
's'いるのかどうか不明だけど・・・ アスペクトの持つ特徴として、一つ有益かもしれないものとして、アスペクトの機能(アドバイス)を 実行時に オンやオフにするものがあると思う。思う、っていうのは、実用的な状況が明確にイメージできないからだけど、…
この前から書いていた、ArchJava っぽいことを @ (Attribute or Annottation) + AspectJ のソースを生成の話を、ちょっと具体的に。 ArchJava とは程遠いけど、雰囲気的には、以下のようなソースがあるとすると(あとで、ちゃんと実装上の問題とかをまとめて…
基本的に、何かのソフトウェアやライブラリを拡張(or 変更)したい場合に取れるアプローチには: ソースコードを直接変更 継承(or サブクラス化) がある。 前者のアプローチの問題点は、変更される側(つまり、ライブラリ側)の変更に、変更する側が同期を…
直感的には、アスペクトとベースプログラムの関係は、薄くしたほうが望ましいように思える。 しかし、具体的には、どのような理由からだろう? たとえば、Caesar では、クラスとアスペクトの明確な区別はない(クラスの中に、advice が書ける)。 さらに、ダ…
's' いるんかな? まあそれはさておき、、、 AspectJ での一つの面倒な点は、advice に対する advice を行いたい場合があるきがする。 before() : ... { beforeMethod(); // なんらかの前処理 method1(); afterMethod(); // なんらかの後処理 } before() : .…
Bruno Harbulot and John R. Gurd. Using AspectJ to Separate Concerns in Parallel Scientific Java Code. To be published in the Proceedings of the 3rd International Conference on Aspect-Oriented Software Development (AOSD). March 2004. DL: ht…
よくわからんけど、必要最低限のメソッドだけを、特定のクラスに inter-type declaration したいという場合があるきがする。というのも、クラスの interface は必要以上に複雑になってほしくないから。 でも、どうやって特定のメソッドだけを選択して、inter…
今、 Stefan Hanenberg, Robert Hirschfeld Constructing Highly Adaptable Frameworks Using Aspect-Oriented Composition Techniques (実際に論文を見てみるとタイトルは「Applying Aspect-Oriented Composition to Framework Development - A Case Study…
今、ちょうどアスペクト指向な Visitor パターンを適用できる状態なんだけど、スムーズに悩むことなく適用できそうでもない。 この困難さ or 恐怖(先が見えない)の理由の1つは、設計空間の大きさ(or 選択肢の多さ)から来ているように感じる。主な選択肢…
`Aspectual' ってつければ何でもいいと思ってんのか! への回答は、え、うん、どーよ? AspectJ Tip: Chain of Aspect http://www.ncfreak.com/asato/doc/aspectj-tips/chain.html とか Caesar によるデザインパターンの実装 - Abstract Factory http://www.…
ある concern に対して、複数の実現方法(アスペクト)があるとすると、そのアスペクトは、その concern に対してのグループを形成していることになる? たとえば、ロギングの concern を考えてみると、ファイルにログするアスペクトとコンソールにログする…
AspectJ を使ったデザインパターンの改善と支援 - Abstract Factory http://www.ncfreak.com/asato/doc/aspectj_dp/af.html#impl7_3 にフレームワークっぽい実装を書いてみた。いかがなものか?疑問: (オブジェクト指向フレームワークでのような) Aspect-Ori…
英語の怪しさは、さておき・・・ どうなっていればフレームワークでどうなっていなければフレームワークじゃないかの境界線は分からないけど・・・オブジェクト指向フレームワークの開発では、拡張できるようにクラスをそのようにしたりする、と思う。GoF の…
's' いるんかなあ? それはさておき・・・ Caesar によるデザインパターンの実装 - Abstract Factory http://www.ncfreak.com/asato/doc/caesar_dp/af.html#impl2 の「議論2」書いていて分かったことだけど、アスペクトの分割は、なんとかできるみたい。ただ…
タイトルがめずらしく日本語だけど、これは、英語での書き方がわからんかったからだ! ・・・とはかはさておき・・・ AOP が有効である、といわれるようなケースの問題を扱っているとき、その問題は、どのような問題なのかどうか。一般的に、AOP が解決する…
いつものとおり、タイトルの英語が怪しいけど・・・ Open Class と階層拡張 http://www.ncfreak.com/asato/doc/openclass.html というドキュメントを書いていて気づいた or AspectJ を使い始めていたころから気づいていたことだけど、Open Class (or AspectJ…
AspectJ を使い始めていたころの疑問の一つは、アスペクトがアプリケーションのコードの側に現れてもいいのかどうかということ。(特に AspectJ における)ロギングのようなアスペクトは、暗黙なアスペクトとして実装されて、実際のコードのには、現れる必要…
またもや怪しい英語だけど・・・それはさておき・・・ Caesar によるデザインパターンの実装 - Abstract Factory (http://www.ncfreak.com/asato/doc/caesar_dp/af.html#impl2) を書いてて感じたことだけど、大きな crosscutting concerns (例でいえばゲー…
リファクタリングとも関連するけど、調べたいことの候補に、Change Patterns あるいは Evolution Patterns ってのがある(僕が勝手に付けただけ。他にも同様のことがあるかもしれない)。具体的にいうと、プログラムに関する特定の要件や変更に対して、どの…
Nature の使い方間違ってるかもしれんけど・・・それはさておき・・・、Caesar で Abstract Factory のサンプル 書いていて気が付いたんだけど、Abstract Factory を適用したくなる場合って、本質的に crosscutting concern 関連なんだろうか。少なくとも、…
Virtual Class による Factory Method の実装と通常の GoF Factory Method では、どのような違いがあるんだろうか。 一つの違いは、もし、デフォルトの Product がないのであれば、Virtual Class での実装は無理、ということ。なぜなら new で interface と…
*** 書きかけ *** ふむ。インスタンスレベルでアドバイスをウィービングしたい動機は、直感的にわかるけど、アスペクトをインスタンス化する動機は、何だろう? いや、アスペクトをインスタンス化してはいけない、という意味じゃなくて、なんか、こう、違和…
TDD (or テストファースト) で学んだことの一つは、使用者側の視点から見ることは、作者側の視点から見る(考える)よりも、多くのことが感じられるってこと。あるいは、使用者側と作者側のギャップの大きさ。または、使用者側から考えることの、スムーズさ…
最近忙しくってドキュメントを書くひまがない。ということでネタを忘れないようにメモっとく。詳しくはちゃんとしたドキュメントにまとめるけど・・・AspectJ を使っていて、少なくとも3つのケースで Impl アスペクトみたいなインナーアスペクトを使いたい状…