質問: ある本にはインターフェースが統一されることで サーバとクライアントの実装の独立性が向上するとか 書かれているんですが、もうちょい詳しく書けよバカという感じです。 ネットで調べても書籍の引用みたいな内容で抽象的なことばかり 書かれているのですがもう少し具体的に統一インターフェースの メリットを知りたいです。 統一されている時に何らかのメリットがあるということは、 統一されていないならそのメリットが得られないということですよね。 例えば、ある機能Cのインターフェースが統一されておらず、 Cを扱う上でAとBという二つの異なるインターフェースが あったとしたら、どう都合が悪いのですか? Aを使っているやつとBを使っているやつを入れ替えることで 問題が発生するとかではないですよね?だってこの前提なら Cという機能はA,B両方のインターフェースで使用できるわけですから。 WEBについて昨日から勉強しはじめたのでいろいろ認識が 間違っているとこが多々あると思いますが、そういう点も含めて 指摘してもらえると嬉しいです。
回答: こんにちは。 RESTに限った話でもなさそうなので、例えば、そうですね...... ブラウザではJavaScriptが動作しますね。もし、無数に存在する各ブラウザごとにJavaScriptの仕様が全く異なっていたらどうなると思いますか?サポートしたい全てのブラウザに対して、それぞれ特化したJavaScriptを書かないといけなくなるわけです。 「ある機能C」が、例えば画面を動かすための機能だとしたら、それを実現するためのインターフェースがAブラウザの「A」、Bブラウザの「B」、さらに......で、別のものを書かないといけないということです。 Webエンジニアがしんでしまいます。 20180130 追記: コメントへの返答と追記です。 > > どのブラウザだろうがAもしくはBを使っていればCを利用できるということです。 > > > はい。全てのブラウザがAもしくはBを使えるようになっていればという前提ですね。ブラウザはAとBをサポートすることを強制されるわけです。途中でCが新登場し、いつしかZまで増えたらどうなるのでしょう? > > したがってブラウザの種類に依存しない仕組みがすでにできているわけで、 > > > あっ、逆です。RESTの統一インターフェースを実現したからこそブラウザの種類に依存しない仕組みになったんです。RESTというのはその「ブラウザの種類に依存しない仕組み」そのものです!RESTというのが質問者さんが考えているより一段階下のレイヤの話だったということかもしれません。 質問のインターフェースA,Bというのが特定サーバ上でのWebAPIの一つのことを指していたなら、それは「REST統一インターフェースに則って具体化された窓口」であり、インターフェースが統一されているからこそ、複数の、同じように扱える窓口を定義できているのです。 RESTインターフェースの利点のことに絞って具体的に話をすると、 RESTインターフェースというのは、リソースに対する操作というのもある一種では正しい表現と言えますが、正しくはインターフェースという文字通りの「コミュニケーションのための規格の一」と考えるのが良いです。 RESTというWeb上のやりとりのための厳格なルールを定め、それを通してコミュニケーションを取るように取り決めると、 * 情報の提供者(サーバ)は、RESTのルールに合わせてリソースを提供すれば、RESTを解する全てのWebクライアントに正しくリソースを提供できる * 情報の利用者(クライアント)は、RESTのルールに則って要求を投げると、RESTで提供される全てのWebリソースに正しくアクセスできる ということになります。 これが、REST以外に山のように種類があったとしたら、「相手のサーバがどのインターフェースをサポートしているか」と「自分がどれだけのインターフェースをサポートしているか」の組み合わせでアクセスができなかったりするわけです。 これをREST一つに固定すれば、「みんながRESTをサポートしていてみんなと正しく通信できる!」となるわけで、これが統一インターフェースの利点なのです。 「みんなが日本語を話すように統一すれば、みんなと日本語でお話できるよね」 というだけの話でしたね。