アーキテクチャパターン
パターン指向アーキテクチャという考え方がある.パターン指向アーキテクチャでは,大きく3つの階層それぞれにパターンが存在する.
- アーキテクチャパターン
- デザインパターン
- イディオム
2つ目のデザインパターンについてはかなり馴染深い方も多いかと思う.ところがアーキテクチャパターンやイディオムに関しては,それほどでもないのが現状ではないだろうか.
それぞれ例をあげると,アーキテクチャパターンのひとつにModel-View-Controllerがある.これはWEBアプリを作る際の大原則として普及していることもあり,認知度も高いでしょう.イディオムとしては『Effective Java』とかを読んだ方はご存知かと思うが,singletonの実装方法の一つとしてinitialize-on-demand holder classというのがある.
(singleton自体がデザインパターンの一つであるけれども)
どちらも,アーキテクチャパターンだとかイディオムだとかそういうメタな意識をすることなく,気がついたら知っていた/使っていたというものかと思う.
デザインパターンであれば,そこそこいろんなパターンを知っていて使い分けることができるけど,アーキテクチャパターンはMVCしか知らず,それゆえMVCを客観視することができず,というようなことであれば,それは問題.
とまあ,そんな問題意識がここ2週間くらい前から感じられるようになり,また勉強を始めたわけです.
実は例のJMXの本を読み返していたときに,JMX→JBoss→Microkernelアーキテクチャ→参考書籍『PATTERN-ORIENTED SOFTWARE ARCHITECTURE』という流れでこのパターン指向アーキテクチャのところに流れ付いて,というのが先だったりしたわけですが.
さておき,JBossを学ぶ上でもパターン指向アーキテクチャは重要となっています.Microkernelについても,OSの設計に関係する物として(Micro-kernel対Monolithic-kernelの論争)有名ですが,そうではなくて,まずアーキテクチャありきで学んで見ようという感じです.
抽象概念としてのMicrokernelアーキテクチャはどんなもので,それに対してJBossはMicrokernelをどのように実装しているのかだとか,いくつかの段階を持ちながら評価すべき,というわけであります.
うーん,今回は何かうまく思っていることが文章にできていないです.
以下,問題意識を列挙.
- デザインパターン以外のパターンについてほとんど分かっていない
- システム全体への影響度でいうと,アーキテクチャパターンが一番大きい.
- いざ勉強しようと思っても,日本語圏には情報が少ない.上述の書籍の翻訳本が1つあるのみ.Amazonのレビューを見る限りは日本語訳の評判も悪い.
- 英語圏のエンジニア達はここらへんは当然の如くやってそう
まいったな,こりゃ.
パターンはそれが存在する以前の世界においては,経験の積み重ねによって導き出される.つまり帰納的なアプローチ.もちろん僕等も同じ過程を経ることで同じ用に学習しても良い.しかしながらパターンが導き出された後のより洗練された世界では,パターンを効果的に用いた設計に基づくソフトウェアが出現してくる.例えばJBossのようなソフトウェア.こういったソフトは演繹的なアプローチを採用しており,僕等が帰納的なアプローチのみで行くのはかなり大変.従って必然的にそういった演繹的アプローチを取る有用性が出てきているわけだが,今の現状を見るに,それそのものを実行するのも難儀な状態,という感じでしょうか.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
参考
『PATTERN-ORIENTED SOFTWARE ARCHITECTURE』によるアーキテクチャパターン
- Layers
- Pipes and Filters
- Blackboard
- Broker
- Model-View-Controller
- Presentation-Abstraction-Control
- Microkernel
- Reflection