続 atsushifxの七転八倒

ウツ、発達障害の闘病記とIT関係のつれずれを書いていきます

アスペクト指向ってテンプレートだ

SeasarのからさわぎAOP(アスペクト指向)について説明されたわけなんですが、それで僕が理解したのが上記のことです。
ちなみにここでいうテンプレートってのは決まりきったパターンみたいなあいまいなものです。イメージとしてはホームページデザインソフトのテンプレート機能。

さて、アスペクト指向を考える前に理解しておきたいのはシステムやアプリケーションにはパターンがあるということです。
GUIにおけるメニューやショートカットキー、Web画面でのメニュー部、システムで言えばログイン・ログアウトといったユーザー認証機能やロギング機能、
こういったものはどの画面や機能でも似たようなパターンなんですが、開発の分割時にこれが各機能に分散して存在するようになってしまう。
で、同じような部分が複数あって、それぞれをちゃんと管理しなくちゃいけないので不具合の原因になってしまう。
それが今までの問題だったわけです。
アスペクト指向では、この似たようなパターンというのに着目します。
この似たようなパターンというのは、それぞれが共通の目的をもってます。メニューだったら画面に表示されるUIは一緒で、それぞれに一発で飛んでいけるようということだし、ユーザー認証だったらその機能を実行する前に権限があるかどうかを確認して、権限がない場合はログイン画面を表示するといった具合です。
アスペクト指向では、この共通の目的をConcernと呼んで区別します。その機能で実現すべきただ一つの目的がCore Concern、その他の目的がCrosscutting Concern。
その他の目的は一つとは限りませんから、Crosscutting Concernは複数あることになります。
このCrosscutting Concernの一つを取り出し、一つのモジュールとしてまとめあげたものがアスペクトです。
つまり、アスペクト指向におけるプログラミングでは
複数のアスペクトの集合+本来行うべき処理
というのが一つの機能(クラスやメソッドなど)なのです。

暴論を覚悟で言うと、この考え方はWordやホームページ作成ソフトなどのテンプレートに似ていると思います。
Wordのテンプレートではドキュメントの雛型を作成できます。
タイトルの大きさなどのUI部はもとより、ドキュメントに必要なものがタイトルだけなのか、タイトルとサブタイトルなのか、版数や更新日時が必要なのかということもテンプレートで指定できます。
このようにすることでドキュメント作成者は抜けや漏れがほとんどない文書を作成することができます。
いわばバグを減らせるということですね。

アスペクト指向はWordのテンプレートよりもっと優れいていてるし、もっと深いものはあるのですが、ポイントはWordで以下にテンプレートを作るかのような共通部分をくくりだすイメージだと思うのですよ。
だから、タイトルのアスペクト指向はテンプレートだってのがでてくるわけです。
(つづく)