これが私の考える「アーキテクチャ」だ
「アーキテクチャ」という言葉を下記のように理解してかまわないのでしょうか。
たとえば Ruby on Rails が、Merb でも Sinatra でもない、現在の Ruby on Rails のような形になるにあたって下されたであろう設計判断の総体、および「現在の Ruby on Rails のような形」という言葉をきいた開発者の脳裏に浮かぶであろう構造、それらを合わせて「Ruby on Rails のアーキテクチャ」とよぶ。
簡単にいえば「設計思想+構造」となるのでしょうが、それだけだとイメージしにくいので、もう少し分かりやすく定義してみたつもりです。
「アーキテクチャ」の定義について考えはじめたきっかけは、前々回の日記にいただいた、id:yoheiさんのコメントでした。
私は Smalltalk がアーキテクチャの一種だと思っていたんですね。いや、もちろんプログラミング言語であることは知っていますが、アーキテクチャとよんでも差しつかえないと思っていたわけです。
「じゃあアーキテクチャって何なの?」と、定義がずばり書かれているらしい「ソフトウェアアーキテクチャって何なの?(前編) (1/3) - ITmedia エンタープライズ」を読んでみたんですが、難解な哲学書みたいで、さっぱり理解できませんでした。同様の感想が「アーキテクチャとは何であろう - ぼそっと」という記事に書かれているので、似たような方も多いのではないかと思います。
ほかにも定義を探してみたんですが、結局いちばん理解しやすかったのは、IT用語辞典バイナリによるものでした。
アーキテクチャとは、あくまでも設計思想、設計方式、基本設計、構築様式などを指す言葉であり、個別具体的な実装そのものや、個々の規約を指すものではない。このため、例えば通信の個別の規約(HTTP等)については、プロトコルのような他の語を用いる。
アーキテクチャとは (architecture): - IT用語辞典バイナリ
で、これを私なりに言い換えると、冒頭に掲げた定義になります。例によって間違っているかもしれませんので、お気づきの方はご指摘いただけると幸いです。