アーキテクチャパターン

パターン指向アーキテクチャという考え方がある.パターン指向アーキテクチャでは,大きく3つの階層それぞれにパターンが存在する.

2つ目のデザインパターンについてはかなり馴染深い方も多いかと思う.ところがアーキテクチャパターンやイディオムに関しては,それほどでもないのが現状ではないだろうか.

それぞれ例をあげると,アーキテクチャパターンのひとつにModel-View-Controllerがある.これはWEBアプリを作る際の大原則として普及していることもあり,認知度も高いでしょう.イディオムとしては『Effective Java』とかを読んだ方はご存知かと思うが,singletonの実装方法の一つとしてinitialize-on-demand holder classというのがある.
(singleton自体がデザインパターンの一つであるけれども)

どちらも,アーキテクチャパターンだとかイディオムだとかそういうメタな意識をすることなく,気がついたら知っていた/使っていたというものかと思う.

デザインパターンであれば,そこそこいろんなパターンを知っていて使い分けることができるけど,アーキテクチャパターンMVCしか知らず,それゆえMVCを客観視することができず,というようなことであれば,それは問題.

とまあ,そんな問題意識がここ2週間くらい前から感じられるようになり,また勉強を始めたわけです.

実は例のJMXの本を読み返していたときに,JMXJBoss→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