ALFパターンについて

Webシステムの概要説明で「我々のシステムはMVCパターンを使っている」というのは些か問題である。なぜなら「MVCパターンを使っている」といった表現は何も説明していないに等しいからである。現代のWebシステム開発では殆どがMVCパターンを採用している。MVCパターンを使っていると説明に何の意味もない。

だがMVCにもバリエーションがある。MVCをベースとした様々なパターンが存在する。例えばALFパターンである。ALFパターンを使っている、と云えば相手もイメージしやすいだろう。少なくともMVCパターンを使っているといった説明よりはマシである。

ALFパターンはAction,Logic,Facadeという3クラスで主に構成される。この3クラスは[M]VCパターンの[M]に当たる。

3クラスには其々責務がある。

Actionの責務は画面から要求を受け取り、編集してLogicに渡し、Logicから返却された処理結果を画面に渡すことである。

Logicの責務はActionから受け取った要求に対する処理をし、その結果をActionに返却することである。但しLogicはあくまでビジネスロジックの処理を担う。DBにアクセスするような処理は行わない。そうした処理はFacadeに委譲する。

Facadeとは特殊なライブラリを使った処理をする責務をもつクラスである。典型的なFacadeはDAO(DBアクセス専門のクラス)である。

大概のDBアクセスはjava.sqlパッケージやDBMSベンダが提供するライブラリを使う。だがLogicクラスでそのライブラリを使えばビジネスロジック処理と混在し複雑性が増してしまう。そこでビジネスロジックからDBアクセス処理を切り離しFacadeとして定義する。これによりクラス責務は単純化され品質は向上する。

同時にFacadeは開発効率向上にも貢献する。特殊なライブラリはその仕様を理解するために時間がかかる。だがFacade専任の技術者を設定し開発を任せることにより学習コストを大幅に削減できる。

FacadeはDAOの他にFAO(ファイルアクセス専門のクラス)やLAO(レガシーシステムアクセス専門のクラス)がある。特殊なライブラリにアクセスする専門クラスは全てFacadeクラスと云う。

何れにせよALFパターンはWebシステム開発の常套手段である。この要訣を知らずしてシステム開発は語れない。