6
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

ざっくり知るアスペクト指向 (AOP)

Last updated at Posted at 2020-06-27

Aspect Oriented Programming(アスペクト指向プログラミング)とは

一言で言うと「cross cutting concerns(横断的関心事)を、統一化する為の仕組み」

オブジェクト指向は結合度は高め。カプセル化して副作用を内側へ隠蔽。
 疎結合にする方法例がデザインパターン。
関数型は変数の値変更をさせない。関数は同じ引数ならば同じ結果を返すことが保証されていて副作用を減らす。
アスペクト指向は複数のクラスの中から同じ機能をまとめて切り出す。

デザインパターン
https://refactoring.guru/design-patterns/proxy

例)
ログ、トランザクション、セキュリティ、例外処理、キャッシュ、リトライなど

今のところは、AOPと言うキーワード自体は人気はない。
この機会に技術選定のメモを書いた。
https://qiita.com/miyamotok0105/private/b1eec284a0887236a4a0

スクリーンショット 2020-06-27 10.28.38.png

AOP用語

DIコンテナに登録されてるBeanを呼ぶ場合は、内部でProxyが自動生成されてAdviceを実行してる。

アドバイス:アスペクト内の関数
ポイントカット:関数を実行する場所
ジェインポイント:関数実行のタイミング

JointPoint(実行タイミング)

Before:関数の実行前にAOP関数を実行
After:関数実行後に実行
AfterReturning:正常終了したら実行
Around:開始前と実行後に実行
AfterThrowing:異常終了時に実行

AOP事例

Laravel+AOP
→ ライブラリあるが、スター数が少ないので途中でサポート切れになる可能性あり。

Spring+AOP
→ Springコミュニティによってサポートされてる。

https://github.com/spring-projects/spring-framework/tree/master/spring-aop

Javascript+AOP
→ ほぼサンプルもない状態。

Vuejs,ReactJS+AOP
→ フロントでもやろうと思えばできそう。

Frontend AOP — React Hooks vs. Vue Composition API
https://medium.com/@vyaron/frontend-aop-react-hooks-vs-vue-composition-api-7889d917d4cf

Porxy+ DecoratorパターンでAOPを実装もできそう
https://meetup-jp.toast.com/284

6
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?