アスペクト指向プログラミング(Aspect Oriented Programming、AOP)は、横断的関心(英語版)を実装する手法によって、プログラムのモジュール性を高めることを目的にしたプログラミングパラダイムである。横断的関心とは、関心の分離によるモジュールの複数以上にまたがっている共通機能を意味している。AOPはこの横断的関心を、既存コードに設けた間接点(joint point)を通しての振る舞い助言(advice)の追加によって、コード変更を伴なわずに実装できるようにしている。任意の間接点および振る舞い助言の定義をまとめたモジュールがアスペクト(英語版)と呼ばれ、これが横断的関心の表現体になる。例としては、全ての関数呼出しにログ出力を伴わせたい時に、全関数冒頭にjoint pointを設けてログ出力コードをadviceにしたアスペクトをプログラム内に定義することで、自動的に各関数
![アスペクト指向プログラミング - Wikipedia](https://cdn-ak-scissors.b.st-hatena.com/image/square/b094f0273ac9fa2deb8f401065b274aa112add10/height=288;version=1;width=512/https%3A%2F%2Fupload.wikimedia.org%2Fwikipedia%2Fcommons%2F1%2F10%2FW3sDesign_Dependency_Injection_Design_Pattern_UML.jpg)