概要
ソフトウェアのアーキテクチャの種類について調べようとすると、アーキテクチャパターンという用語に遭遇する。似た表現としてデザインパターン、アーキテクチャスタイルなどがあるため、混乱してしまう人もいるだろう。本記事ではソフトウェアにおけるアーキテクチャパターンという言葉の定義を検証してみる。
なお、アーキテクチャスタイルについてはアーキテクチャスタイルとは何かで検証している。
パターン(pattern)とは
語源はラテン語のpatronus。中世ラテン語では模倣すべき見本という意味であり、中世の英語ではpatron(=父)という語形になった。patronの綴りがpatarne,patternなどと変わっていき、最終的にpatronとpatternが独立した2語になった。
ソフトウェアのアーキテクチャパターンとは
wikipediaによると、アーキテクチャパターンとは「ソフトウェアアーキテクチャで発生する問題の解決策」と説明されている。
ソフトウェアのアーキテクチャパターンの例
POSA本やエンタープライズアプリケーションアーキテクチャパターンには下記が挙げられている。
- 階層化
- パイプアンドフィルター
- ブラックボード
- キャッシュサーバー
- MVC(Model-View-Controller)
- PAC(person-abstract-controll)
- マイクロカーネル
- リフレクション
- webプレゼンテーション
- ドメインロジック
デザインパターンとの違い
ソフトウェアの世界ではアーキテクチャパターンと似たデザインパターンという用語もよく利用される。クリーンアーキテクチャによると「デザイン(=設計)とアーキテクチャには違いがない」と説明されている。もちろん本来的な意味において、アーキテクチャ(=建築)とデザイン(=設計)は異なる意味を持っている。あくまでソフトウェアの開発現場において、アーキテクチャとデザイン(=設計)とという用語が区別されることなく利用されると捉えていいだろう。よってソフトウェア開発においては、デザインパターンもアーキテクチャパターンも同じ意味を表す用語として捉えて良いと思われる。
建築のアーキテクチャパターンとの比較
建築ではアーキテクチャパターン、もしくはArchitectural Patternではなく、Pattern (architecture)という言葉で定義されている。wikipediaによると、建築におけるPatternとは「建築設計のアイデアを典型的かつ再利用可能な記述として取り込む考え方である。」と説明されている。
結論
アーキテクチャパターンと似た表現であるアーキテクチャスタイルという言葉の定義についてはアーキテクチャスタイルとは何かで検証している。結論としては、アーキテクチャパターンもアーキテクチャスタイルも言葉の意味するものはほとんど変わらないと思われる。語源を辿ってみても、スタイル(=型)、パターン(=見本)なのでどちらも意味としては通る。
ただし、インターネット検索や出版されている書籍を調べると、アーキテクチャスタイルよりもアーキテクチャパターンという表現の方が多く利用されている印象がある。これを考慮すれば、アーキテクチャスタイルもパターンも一纏めにしてアーキテクチャパターンで表現しても問題ないように思われる。