アスペクト指向プログラミング(Aspect Oriented Programming、AOP)は、横断的関心英語版を実装する手法によって、プログラムのモジュール性を高めることを目的にしたプログラミングパラダイムである。横断的関心とは、関心の分離によるモジュールの複数以上にまたがっている共通機能を意味している。AOPはこの横断的関心を、既存コードに設けた間接点(joint point)を通しての振る舞い助言(advice)の追加によって、コード変更を伴なわずに実装できるようにしている。任意の間接点および振る舞い助言の定義をまとめたモジュールがアスペクト英語版と呼ばれ、これが横断的関心の表現体になる。例としては、全ての関数呼出しにログ出力を伴わせたい時に、全関数冒頭にjoint pointを設けてログ出力コードをadviceにしたアスペクトをプログラム内に定義することで、自動的に各関数呼出しとログ出力が同時実行されるようになる。

アスペクト指向は本来、命令型プログラミングの一角を占めるパラダイムであり、オブジェクト指向とは異なる視点で命令型を発展させたサブジェクト指向英語版の一種でもある。状態の遷移がプロセスに影響を与える命令型の特性(プログラム副作用)に加えて、サブジェクト指向はプロセスもsubjectに基づいた遷移対象にしている。オブジェクト指向は、状態とプロセスの抽象化を追求したパラダイムなので、プロセスの具象/抽象を問わずにaspectに基づいた遷移対象にできるアスペクト指向と直交している。

しかし現状のアスペクト指向は、オブジェクト指向のコードをサポートする役割に留まっていることが多く、独立したパラダイムとして扱われることは稀である。OOP言語JavaにAOPを追加した「AspectJ」がその代表例である。純粋OOP言語Ruby[1]もAOP由来の機能を補完的に取り入れている[2]

主なアスペクト指向言語

編集

主なアスペクト指向フレームワーク

編集

主なアスペクト指向準拠のプロダクト

編集

脚注

編集
  1. ^ まつもと直伝 プログラミングのオキテ 第0回 あらためてRuby入門(基本と他言語との違い)”. 日経クロステック. 2020年12月18日閲覧。
  2. ^ Module#prependによってCLOS(Common Lisp Object System)のaround hookと同じように,あるメソッドの前後をフックして処理を行えるようになりました。これは以前注目されていた「アスペクト指向プログラミング」に近い振る舞いになります。https://gihyo.jp/news/report/01/rubykaigi2017/0002

関連項目

編集

📚 Artikel Terkait di Wikipedia

オブジェクト指向分析設計

ラミングにおける考え方も、必要に応じて考慮する。 アスペクト指向プログラミング アスペクト指向プログラミング (AOP; aspect-oriented programming) では、プログラム (システム) のすべての主だった機能は、アスペクトであると考える。アスペクトには、中心的な関心事 (ビジネスロジック)

関心の分離

Tutorial and Workshop on Aspect-Oriented Programming and Separation of Concerns Chris Reade (1989). Elements of functional programming. International computer

Seasar

正確にはS2Container)と呼ばれるJavaのためのDI (Dependency Injection) とAOP (Aspect Oriented Programming) をサポートした軽量コンテナの開発を進めるプロジェクトであったが、現在は特定非営利法人Seasarファウンデーションの元、The

AOP

AOP アスペクト指向プログラミング (Aspect-oriented programming) - プログラミング技法。 保護原産地呼称(アペラシン・ドリジン・プロテジェ) - Appellation d'Origine Protégée - 欧州連合の保護原産地呼称。 オーサーズ・オブ・ペイン

ブラッド・コックス

ISBN 978-0-7872-4980-9. https://books.google.com/books?id=zKHZAAAAMAAJ  Object Oriented Programming: An Evolutionary Approach. Addison Wesley. (1991). ISBN 0-201-54834-8 

制御の反転

Brian Foote (1988年). “Designing Reusable Classes”. Journal of Object-Oriented Programming, Volume 1, Number 2. Department of Computer Science University of

形式意味論 (自然言語)

D. (英語). Theoretical and Crosslinguistic Approaches to the Semantics of Aspect. John Benjamins Publishing. pp. 349–386. ISBN 978-90-272-9158-5. https://books

ファイルフォーマット一覧

Service Microsoft Corporation ASO Assembler object (object-oriented) file Turbo Assembler ASP ASPECT source code file Procomm Plus ASP Association of Shareware