netail.net
自作フリーソフトや,ゲームに関する雑記を公開してます.
日記はソフトウェア工学の論文ネタが中心です.
最近のお知らせ (古いものはこちら)
2006-10-10 [長年日記] ▲
_ [論文] AOASIA2006関連その2:Fluid AOP ▲
Gregor Kiczales のビデオ接続な Keynote Talk と Terry Hon の発表で,Fluid AOP について説明がありました(Hon, T. et al.: Fluid AOP Join Point Models).
Gregor としては,アスペクトがやっていいことをコード上に明示してアスペクトの能力を制限するのは嬉しくないと思っていたりするようです.どうせほとんどの人は統合開発環境を使うんだから,賢い開発環境のサポート下でプログラムを書く,というのを目指しているようです.
Fluid AOP は,けっこう前にも別のところで論文出てた気がするんですが,プログラミング言語自体は普通のJavaなどを使用し,開発環境が必要に応じて(開発者が「ロギングのコードをいじりたい」というような作業ごとのポイントカットを定義して)該当するコードを発見し,それらのコード片を一括して修正するというアプローチです.
発想としては,「開発者ごとに取り扱うコードのかたまりは違うんだから,開発者が作業ごとに動的にモジュールを構成すればいいよね」といった感じです.過去にあった「ファイル単位にとらわれないソースコードビューを作りましょう」という研究に近いと思います.
今のところ,この手法は,特別なソースコードエディタとして実装されています.クエリに対してコード片集合を抜き出してきて,個々のコード片ごとに違う部分は obj.update***(x, ***) のように塗りつぶしてマージし,見かけ上単一のコード片として提示します.そして,そのコード片を開発者が書き換えると,実際にはポイントカットに該当しているすべてのコードがまとめて編集されます.
このアプローチは,保存結果はただのJavaファイルですし,コンパイラその他の道具も特に変わりません.言語を導入するよりも開発プロセスへの導入の敷居が低く,この環境で書いたコードの実行自体は既存のプラットフォーム上でできるという利点があります.個人的には好みだったりします.
安心して使うには,ちゃんと正しいポイントカットを書いて全部のコードを漏れなく変更しているのかどうかとか,何か他のサポートが必要になってきそうな気はします.しかし,現状,普通のエディタで検索+全置換とかで多数のコード片を編集することを考えると(私が知らないだけかもしれませんが),実用上はそんなに困らないのかもしれません.