アスペクト指向プログラミング
#執筆者募集中
略してAOP。
https://www.cs.ubc.ca/~gregor/papers/kiczales-ECOOP1997-AOP.pdf
Gregor Kiczales らパロアルト研究所の研究者たちが提唱。
『ジェネレーティブプログラミング』では、概念の分割の方法にモジュール分割とアスペクト分割の二つがあるとする。モジュール分割は「階層的単位にシステムを分割すること」であり、アスペクト分割は「概念を観点の集合として記述することを基本的な発想としており、各々の観点が他の観点と関係し、かつどの観点も単独では概念全体を十分に記述することができないような場合」に使うものであるとする。モジュール分割とアスペクト分割は相互に補完的なものとして構想されている。「概念を観点の集合として記述する」というのはサブジェクト指向プログラミングや、エリック・エヴァンスのドメイン駆動設計におけるBounded Contextとも共通する考え方である。
https://gyazo.com/27b5e2bb982885d6b780202a4452acdd
(『ジェネレーティブプログラミング』p.115)
AOPのゴールは、問題を多くの機能的なコンポーネントの中に、それらを縦断する多くのアスペクトとして分解し、それらのコンポーネントとアスペクトをコンポジションして、システムの実装を獲得する手法とテクニックを提供することです。
(『ジェネレーティブプログラミング』pp.234,235)