yohei-y:weblog

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

2005-04-27

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

» REST 入門 目次

僕の説明だと、どうもアーキテクチャとアーキテクチャスタイルについて混乱を招きそうなので、 補足しておきます。 デザインとデザインパターンが違うように、 アーキテクチャとアーキテクチャスタイルは別物です。 デザインパターンの本といえば GoF とか結城さんの2冊が有名ですね。 デザパタ本に載っているのはデザインそのものではなくデザインのパターンです(ムズカシイ?)。

つまりこういうことです。 僕たちは結城さんの本でデザインパターンを勉強します。 デザインパターンはある問題領域においての経験則的なクラス設計の指針、作法、流儀です。 あの本自体に自分のプログラムのデザイン(設計)が書いてあるわけではありません。 本に書いてあるパターンを学習して、そのパターンを自分自身のプログラムのデザインに適用します。 デザインというのは本に書いてあるのではなく、 僕たちが実際に作るプログラムにおいて初めて具現化されるものなのです。

アーキテクチャスタイルも同様です。 現実の世界で作られる実際のシステムはアーキテクチャを持っています。 そのアーキテクチャを設計するときに、ただ闇雲にものを作っていくのではなく、 世の中にすでにたくさんあるアーキテクチャ設計の指針、作法、流儀を適用するはずです。 そのほうが作業効率がいいし、先人の知恵を活用することできちんと動くものが作れるから。

でも、実際は忙しかったり、納期が迫っていたり、 調べるのが面倒だったり、とにかく作らなければならなかったり、 あるいは単に無知だったりして、アーキテクチャスタイルを適用しない(できない)こともあります。 すると、いちおう動くんだけどちょっと変なシステムや、 最悪だとパフォーマンスやセキュリティに重大な欠陥を抱えたシステムができたりします。

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

本題がちとずれました。 元の話(アーキテクチャとアーキテクチャスタイル)に戻ります。 アーキテクチャはあなた自身のシステムのものです。 それを作るときに、アーキテクチャスタイルを適用しましょう。

ラベル: , ,