2004-01-01から1年間の記事一覧

Annotation and Inter-type Declarations or Retroactive Abstraction

AOP

時には、あるアノテーション(@)を定義しているかどうかで、クラスの構成を自動的に決めたい場合がある。 たとえば、メソッドをアドバイスとして定義したら、そのクラスは、Aspect の interface を実装するなど: public class Logging implements Aspect {…

ありがとうの価値、拍手の価値、素晴らしいの価値

技術的な話とは関係なさそうだけど、技術的な内容(blogとか)からのネタ元の雑談。 この業界(ソフトウェア開発)では、日々次々と新しいアイデアやライブラリなんかが登場している。技術者の人が書く日記とか blog にも日々それらの新しさについていこう(…

アスペクト指向: 取り組む問題と解決するための技術

AOP

まず、僕自身がアスペクト指向を十分に理解しているとも、僕が言うことが正しい、とかも主張するつもりもない、ということに注意してもらって、以下の話。 アスペクト指向(or AspectJ)に触れ始めてからまだ2年(もう2年?)だけども、アスペクト指向研究者…

AspectJ による GoF デザインパターンの実装

クエッション: どのくらいの AspectJ ユーザが、AspectJ を使って GoF のデザインパターンを再実装しようと試みた? 短いアンサー: ほとんどなし 長いアンサー: Jan Hannemann さんと、Gregor Kiczales さんの「Design Pattern Implementation in Java and A…

アスペクト思考

AOP

「指向」の間違いじゃなく、アスペクトなプログラム「思考」の話。 アスペクト指向が取り組む問題は、横断的関心事のモジュール化にある(僕が決めたんじゃなくて、一般的な話)。横断的関心事は、一般的には、二つの状況を表す: コードのちらばり: ある機能…

Pointcut Overriding

AOP

どうやってポイントカットの定義を拡張する? たとえば、以下のようなコードがあったとして: public aspect MyAspect { pointcut mypc() : call( (MyClassA || MyClassB).myMethod() );}MyClassA と MyClassB に加えて、MyClassC を追加したいとしたら? 最…

再利用性

AOP

あたりまえっぽいけど、あるクラスを再利用 してもらえる かどうかは、誰が再利用するのかに依存する。 たとえば、以下のような Point クラスと: public class Point { private int x; private int y; public void setX(int x) { this.x = x; } public int g…

Type-Safe Pointcut Extension

AOP

タイプセーフかどーかは知らないけど、現在の AspectJ での抽象ポイントカットの仕組みは、やや安全ではないと思う。 たとえば、次のような抽象アスペクトがあるとする: public abstract aspect SetLogging { protected abstract pointcut targetClass(); be…

Predicate Dispatch and Named Advice

AOP

(named advice は公式な用語でないと思うけれど・・・) Predicate Dispatch と名前のついたアドバイスとの関係は? 何か関係がありそうな気がする。ネタ元(といっても関係の答えが書いているわけでなく predicate dispatch の話が書いている): Todd Millst…

beforeadviceexecution, afteradviceexecution, and aroundadviceexecution

AOP

すげえ読みにくいけど、BeforeAdviceExecution, AfterAdviceexEcution と AroundAdviceExecution のこと。現在の AspectJ では、adviceexecution だけしか用意されていない。これは、なかなか面倒なことになりうると思う。詳しくは僕もまだもやもやしてるの…

Advice Reusability and Named Advice

AOP

名前つきアドバイスはなぜ必要か? たとえば: public class Point { private int x; private int y; public Point(int x, int y) { this.x = x; this.y = y; } public void setX(int x) { this.x = x; } public void setY(int y) { this.y = y; } }public as…

Inter-type Pointcuts

AOP

inter-type 宣言(or オープンクラス [1])が面白いのは、外部から、特定のモジュールを変更できること。AspectJ では、たとえば、外部からあるクラスにあるインタフェースを implements させたり、あるいは、外部からクラスに特定のメソッドやフィールドを…

Prametric Pointcuts

AOP

どうやってポイントカットの再利用性を向上させる? or どこでポイントカットのコードの重複が起こる? or ポイントカットの変化点はどこ? 一つは、メソッド名に関連するものがあげられるきがする: public aspect PointLogging { before() : call(void Poin…

Aspects, Unplugability, Extension, and Dependency

AOP

ソフトウェア開発にアスペクトを導入しようとする場合、少なくともアンプラグ可能なアスペクトとそうでないアスペクトの二種類があると思う。 ロギングだけを考えてみても、単にログを取りたいからロギングアスペクトを導入してみる、という一時的なケース(…

Development-Level Crosscutting Concerns

AOP

言語レベルだけじゃなく、ソフトウェア開発全体に影響する Crosscutting Concerns が存在するかも? そしそうだとしたら、どうすれば? たとえば、ある要求が、コードと Ant のビルドファイルに同時に影響する場合。要求 A と要求 B があって、どちらかをや…

Observer and Around Advice

AOP

Observer パターン実装のために、around アドバイスが必要になることはあるか? after アドバイスや before アドバイスはある気がする。

A Family of Aspects

AOP

タイトルはちょっと大げさ(あるいは間違ってるかも)だけど、機能的にみると、アスペクトにはどんな種類が? 暗黙に適用されるアスペクト(AspectJ におけるアスペクト) オブジェクトに対して作られるアスペクト(AspectJ における per-object アスペクト…

Inter-type Implicit Variable or Inter-type Local Variable

AOP

inter-type 宣言の種類の一つとして、暗黙の(or 特殊な)変数を宣言できると便利かもしれない。たとえば、this とか super とか thisJoinPoint とかに相当する変数を新たに宣言できるようにしたい。 考えられるスコープとしては、クラス単位とメソッド単位…

Explicit JoinPoints or JoinPoint Class

AOP

AspectJ における一つの制限(ただし、欠点とは限らない)は、あらかじめ決められたジョインポイントのみが存在すること。したがって、プログラマが望むすべてのジョインポイントとなりうるポイントが、ジョインポイントとは限らない。たとえば、ローカル変…

Aspects, Policies, and Configurations

AOP

特定のメソッドによっては、引数の値(true とか false)によって、そのメソッドの振る舞いが変化するのようなものが存在する。 アプリケーションによっては、常に特定の構成(常に true でいいとか、あるいは、false でいいとか)でかまわない場合があるか…

データ数変化による認識率の変化

めずらしく AOP じゃない話題・・・ 識別器(とかそれ系)のパフォーマンス(認識率 or 汎化能力)を確かめる上で、一つ気になる計り方の一つは、データ数が変化すると、どのくらいそのパフォーマンスも変化するのか、ということ。この分野(パターン認識)…

Aspect-Oriented Design Patterns

AOP

AspectJ を使ってデザインパターンを再実装しようという試み*1を続けて、もうすぐ2年が経つ。しかし、まだ、完成しそうにない。ので、少し、現状を書きとめておきたいと思う。 そう、この試みから、僕は何を学んだのか? なぜいまだに完成しないのか? そし…

Simplifying Pointcut Definitions

AspectJ におけるポイントカットの定義を、もっとシンプルにできるか? 一つの方法は、もし、あるアスペクトが特定のクラス(or アスペクト)にしか興味がないのであれば、クラスの指定を省くことで、ポイントカットの定義をもっとシンプルに書ける。 たとえ…

Object-Oriented Refactoring vs. Aspect-Oriented Refactoring

オブジェクト指向なリファクタリングと、アスペクト指向なリファクタリングは、コンフリクト*1するか? 微妙にあるかもしれない、と思い中。オブジェクト指向な設計(or クラスの分け方とか)とアスペクト指向な設計もコンフリクトするかもしれない。 コンフ…

Aspectual Overriding

AOP の特徴の一つは、メソッドの呼び出しなどのインターセプトができること。オーバーライドは、継承する側が継承される側のメソッドを同じシグネチャを元にして書き換えること(正確な定義は知らない)。 そう、この二つ(インターセプトとオーバーライド)…

Self-Activation/Deactivation

AOP

もしアスペクトの機能(アドバイス)をオンやオフにできるとしても、すべての 機能がオンやオフになって欲しいということにはならないかもしれない。 そのような、つねにアクティブ(オン)なイベント反応としては、特定のイベント(ジョインポイント)が発…

Aspects as Properties of Objects

英語怪しいけど・・・ インスタンス(オブジェクト)単位でアスペクトを適用できるとして、さらに、そのインスタンスに適用できるアスペクトが一つだけだと仮定すると、アスペクトは、オブジェクトのプロパティと見なせるかもしれない。 メソッドやフィール…

(Aspect Group == Aspectual Polymorphism) ?

前にも 書いた と思うけど、、、ある crosscutting concernを考えたときに、その concern に関して、同じ目的をもった複数のアスペクトが存在しているケースがあるように思える。 たとえば、ゲームのモード(レベル)なんかは、たぶん、crosscutting concern…

Dummy Join Points

AspectJ で気になることに一つに、アスペクトがインターセプトしやすいように(ポイントカットを指定しやすいように)、何もしないメソッドなんかを定義する、ということがある。 これが問題であると考えられることの理由は: ベースプログラムがアスペクトの…

Object or Relation or Aspect?

Ilia Bider Who is Agent: Object or Relation 2nd Workshop on Object-Oriented Language Engineering for the Post-Java Era : Back to Dynamicity. (2004) DL: http://prog.vub.ac.be/~wdmeuter/PostJava04/を読んでみて感じたこと。 この論文では AOP に…