アーキテクチャスタイルがよくわからない

j0hn2006-05-15


面白そうな記事がいっぱい載ってるぞ、と思ってうきうきしながら買ってきた「WEB+DB PRESS vol.32」

WEB+DB PRESS Vol.32

WEB+DB PRESS Vol.32

一番気になっていた記事、「RESTアーキテクチャスタイル入門」から読んでみた。

出だしのところでつまずいてしまった。

MVCアーキテクチャスタイルの一種である、と書いてある。これは「アーキテクチャ」というより、MVCアーキテクチャ「スタイル」と呼ぶほうがふさわしいのだ、と示唆しているように読める。(MVCアーキテクチャと呼ぶのは正しくなかったのか!?と。)

RESTはWWWのアーキテクチャスタイルです、とも書いてある。

一瞬、スタイルはあってもなくてもどちらでもいいのかとも思ったが、どっちでもいいならスタイルはつけないはず。

ちょっと調べてみた。

REST 入門(その2) アーキテクチャスタイルとは?

REST 入門(補足) アーキテクチャとアーキテクチャスタイル

REST ってやっぱり難しいかも。

とても詳しく説明されていてわかりやすい。が、よくわからない。

REST の実装は Web だといいましたが、 REST じゃない実装の Web もあります。後ほど詳しく説明する予定ですが、たとえば Cookie、たとえば URI へのアクション埋め込み、キャッシュを無視した POST の濫用、などはすべてアーキテクチャスタイルとしての REST を無視したか、あるいは知らないために起きている問題です。

上記五つのなかで、RESTアーキテクチャスタイルに基づいたアーキテクチャである(もしくは「RESTスタイルに基づいたアーキテクチャで設計される可能性がある」)ものはどれなんだろう。全部だろうか?

HTTPは、RESTアーキテクチャスタイルに基づいたアーキテクチャで設計された「なにか」で使うのにふさわしいプロトコルになっている。(と仮定する) つまり、「なにか」はHTTPではない。

URIにアクションが入っているのはよくない、という話があるので、これは、「Webアプリケーション」の話なんだろうか。Webアプリはブラウザで開いてみるので、それら全部を包括したWWWというシステムがRESTアーキテクチャになってる、っていう話だろうか。

ここで、Macに内蔵されてる辞書でarchitectureを引いてみた。

  • the art or practice of designing and constructing buildings.

the style in which a building is designed or constructed, especially with regard to a specific period, place, or culture : Victorian architecture.

  • the complex or carefully designed structure of something : the chemical architecture of the human brain.

the conceptural structure and logical organization of a computer or computer-based system: a client/server architecture.

ひとつは、建築。「ビクトリア建築」とか。もうひとつは「何かの構造」。脳の化学構造とか。コンピュータシステムの概念的構造「クライアント・サーバーアーキテクチャ」と。

ここで、ちょっと思いついてWikipediaをひいてみた。なんと「Arhitectural Style」という項目がある。

ここに載ってるのは建築の話みたいなんだけど

Architectural style is a way of classifying architecture largely by morphological characteristics - in terms of form, techniques, materials, etc. However it is not a holistic way of understanding architectural works because of its emphasis on style.

アーキテクチャ・スタイルは、形、技術、材質など、形態論的性質に基づいて「アーキテクチャ」を分類する方法である。しかしながら、これはあくまで「スタイル」であるから、(個々の)「アーキテクチャ」を理解する全体論的な方法ではない

ちょっとよくわからない。「個々の」と補ったのは「works」とあるので、具体的な建築物のことなのかな、と。(間違ってる可能性があるので注意)

そのあとには、例えばゴシック・アーキテクチャといえば、文化的な背景も含まれるが、ゴシックスタイルといえば、ゴシック・アーキテクチャの特徴を強調したもので、現代の建築でもゴシックスタイルの教会を作ることができる、と。

ここでのスタイルは「風」つまり、ゴシック風という意味なのかな、という気もする。それともゴシック「様式」のほうが自然だろうか。

正統的なMVC様式にのっとったMVCアーキテクチャに基づいて設計されたソフトウエアという言い方は正しいだろうか。

REST様式を実装に落とすときのアーキテクチャがRESTfulかどうか。RESTfulだったらRESTアーキテクチャと呼んでもよいだろうか。

Architectural Styles and the Design of Network-based Software Architectures を読んだら? という声が聞こえてきそうだけど、疲れたのでまた今度。

(画像は Jan van der Crabben による。Creative Commons Attribution ShareAlike 2.0 License Wikipedia - Gothic architectureより)

追記: naoyaグループ - naoyaの日記 - yohei さんに REST 周りの連載をしてもらいたい人手あげて には俺も一票。naoyaさんがあげておられる各項目はとても気になる。