yohei-y:weblog

XML と REST/Web サービス関連の話題が中心の weblog です

2005-04-23

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

» REST 入門 目次

REST そのものを説明する前に、まずアーキテクチャスタイルとは何なのかを解説します。

アーキテクチャスタイル(英文では architectural style です) は別名(マクロ)アーキテクチャパターンともいい、 複数のアーキテクチャに共通する性質、様式、作法あるいは流儀を指す言葉です。 パターンという言葉からデザインパターンを想像する人も多いかもしれませんが、 いわゆるデザインパターンは別名マイクロアーキテクチャパターンといい、 アーキテクチャスタイルよりも粒度の細かいクラスなどの設計様式を指します。

具体例を挙げましょう。
たとえば MVC (Model View Controler) はアーキテクチャスタイルの一種です。 他にパイプ&フィルタ、インタプリタ、イベントシステムなどもアーキテクチャスタイルになります。

REST は数あるアーキテクチャスタイルの中でも特にネットワークシステムのアーキテクチャスタイルになります。 ネットワークシステムのアーキテクチャスタイルとして最も有名なのはみなさんご存知のクライアントサーバです。 サーバとクライアントが線で結び付いている絵を思い浮べてください。

クライアントサーバと聞いて「あれれ」と思った人がいるかもしれませんね。 「はじめに」で REST は Web のアーキテクチャスタイルだと言いました。 しかし、Web はクライアントサーバでもあります。 これはいったいどういうことでしょうか。

実は REST はクライアントサーバから派生したアーキテクチャスタイルなのです。 素のクライアントサーバアーキテクチャスタイルにいくつかの制約を加えていくと、 REST アーキテクチャスタイルになります。 この「制約」というのはアーキテクチャスタイルにおいて重要な概念です。 一般にソフトウェアアーキテクチャは複数のコンポーネントを組み合わせて実現しますが、 それぞれのコンポーネントがバラバラに動いているのでは動作しません。 そこで、各コンポーネントに制約を課していきます。 その結果、全体として各コンポーネントが協調して動作するようになります。

クライアントサーバから REST に至る過程で加えられた制約には、 たとばステートレスやキャッシュなどがあります。

最後に、アーキテクチャスタイルとは特定の実装を指すものではないことに注意してください。 WWW は REST の一実装形態です。WWW 以外の REST の実装も考えられます。 しかし、現実には REST といえば WWW のアーキテクチャスタイルを指す場合が多いので、 これからは特にことわりなく REST の実装例として WWW を使っていきます。

はやっと REST そのものについて記述します(長いなー)。

[update 2005-04-27 アーキテクチャとアーキテクチャスタイルについて補足を追加しました。]

ラベル: ,