概要
ソフトウェアのアーキテクチャの種類について調べようとすると、アーキテクチャスタイルという用語に遭遇する。似た表現としてアーキテクチャパターンがあるため、混乱してしまう人もいるだろう。本記事ではソフトウェアにおけるアーキテクチャスタイルという言葉の定義を検証してみる。
なお、アーキテクチャパターンについてはアーキテクチャパターンとは何かで検証している。
スタイル(style)とは
元々はろう板に物を書くための尖筆(スティルス stilus)のこと。その後、徐々に道具から書き方を意味するようになった。さらにそこから転じて服や髪などの型、流行の型などの意味になった。
(*)日本語のスタイルは容姿や体つきを意味するが、英語では同様の意味はない。
ソフトウェアのアーキテクチャスタイルとは
Webを支える技術 -HTTP、URI、HTML、そしてRESTによると、アーキテクチャスタイルは「複数のアーキテクチャに共通する性質、様式、作法あるいは流儀を指す言葉で、別名マクロアーキテクチャパターンとも呼ばれる。アーキテクチャパターンはデザインパターンのようなより粒度の細かいクラス設計などを指す。」と説明されている。
Microsoft Azureのドキュメントによると、アーキテクチャスタイルは「ある特徴を持ったアーキテクチャの一種のこと」と説明されている。
wikipediaによると、「Architectural StyleはArchitectural Patternと同じものであるという意見と、Architectural Styleは特化したパターンであるという意見がある。パターンとスタイルの大きな違いとしては、パターンは問題の解法として見なされるのに対し、スタイルは問題を解決する必要がないときに用いられる。」と説明されている。
ソフトウェアのアーキテクチャスタイルの例
Webを支える技術 -HTTP、URI、HTML、そしてRESTやMicrosoft Azureのドキュメントには下記が挙げられている。
- クライアントサーバー
- 階層化アーキテクチャ
- キャッシュサーバー
- パイプアンドフィルター
- REST(クラサバ、階層化、キャッシュなど複数のアーキテクチャスタイルの組み合わせ)
- イベントシステム
- MVC(Model-View-Controller)
- オブジェクト指向(OOA)
- サービス指向アーキテクチャ(SOA)
- マイクロサービスアーキテクチャ
- イベント駆動アーキテクチャ
建築のアーキテクチャスタイルとの比較
アーキテクチャスタイルは建築用語としても存在する。ただし、建築用語としてはアーキテクチャスタイルではなく、日本語では建築様式として定義されている。wikipediaの定義によると、建築様式とは「著名な建造物、歴史的な建造物に見られる特徴のことで、構築の手法、建造物の原材料、宗教的な性格などを含む。」と説明されている。
結論
ソフトウェアに置けるアーキテクチャスタイルという言葉の定義は、単に複数存在するソフトウェアのアーキテクチャの種類のことを表現しているに過ぎないように思われる。同じような用語としてアーキテクチャパターンがあり、こちらで検証してみた。結論としては、アーキテクチャスタイルもパターンも一纏めにしてアーキテクチャパターンで表現しても問題ないように思われる。
参考
- https://kotobank.jp/word/%E6%A7%98%E5%BC%8F-145686
- Webを支える技術 -HTTP、URI、HTML、そしてREST (WEB+DB PRESS plus)
- https://docs.microsoft.com/en-us/azure/architecture/guide/architecture-styles
- https://en.wikipedia.org/wiki/Software_architecture