なぜRESTは流行ったのか?理由はブラウザから簡単に呼べるから
mozaic.fmで「なぜRESTは流行ったのか?」について話していたので私も自分なりに理由を考えてみました。
この番組ではRESTの歴史的経緯などが語られていましたけれど、私はもっと単純に考えています。
私が思うRESTが流行った理由は、「リモートコールする一番簡単な手段だから」というだけだと思っています。
詳しく紹介します。
厳密なRESTは流行っていない!
RESTについて、WikiPediaには以下のように書かれています。
RESTは次に述べるように2つのやや異なる意味で使われている。
1.FieldingのRESTアーキテクチャスタイルの原則に合わせたWebサービスシステム。
2.RPCスタイルに合わせた簡易な XML+HTTP インターフェイスを採用したシステム(SOAPは使わない) 。
2は流行ったけど、1は流行ってませんよね。2も正確に言うとJSON/XML+HTTP インターフェイスを採用したシステム(SOAPは使わない)ですよね、今となってはXMLを返すREST APIの方が少数派です。
1はURIの命名規則だったりGET, POST, PUT, DELETEを用途に合わせて使い分けるとかっていう厳密な意味でのRESTですが、現実的にはPUTやDELETEなんて使わないし、URIも自由につけてる場合が多いと思います。
そんなわけで、REST APIの使われ方のほとんどはGETかPOSTでリモートコールをしてレスポンスのフォーマットがJSONかXMLってだけです。
これをこの記事では簡易RESTと呼ぶことにします。
なぜ、簡易RESTは流行ったか?
RESTが流行る前からシステム間連携する時に、CGIのGETパラメータでデータ送って、DB更新して、レスポンスはOKとかの単純な文字だったり、独自フォーマットを返すような使われ方がされていました。
その後、時代は進みAjaxが生まれ、レスポンスをJSONやXMLで返すという使い方が広まったのです。
Ajaxからリモートコールする手段はGETかPOSTリクエストするしかなく、JavaScriptからJSON、XMLの操作が容易という理由でこの簡易RESTが流行ったのでしょう。
「ブラウザからリモートコールする手段が他にない上に、手軽に簡単に使える」、そりゃ流行るに決まってます!
SOAPが流行らなかった理由
RESTのライバルだったSOAPはRESTほど流行りませんでした。
SOAPはスキーマ(WSDL)を定義してプロキシコードを生成するのがめんどくさかったのと、そもそもブラウザのJavaScriptからSOAPを呼び出せないので、「SOAPいらないじゃん」となったんでしょう。
それにSOAPはWSDLとUDDIとセットでSOA(Service Oriented Ahchitecture)とか言って、特にエンタープライズ系システムでは
「SOAを実践すればサービスを組み合わせるだけでシステムが作れます。サービスとして再利用できる設計が出来ます。SOAを取り入れないと企業の競争力が失われまぁぁぁぁぁす!!!」
みたいな嘘くさいマーケティングがなされていました。
SOAPは単なるリモートコール技術なのに、その周りに嘘くさいうんちくが足されていたので。当然、Webエンジニアからは無視されていました。エンターブライズ系のエンジニアの中には本気で「SOAすごい!やらなきゃ!」って思った人もいたかもしれませんが、今では全く目にしません。
SOAって「宣伝文句がうるさくて偉そうなくせに実際役に立たない技術」という印象なんですよね。
実用的なものが選ばれる
SOAPではなくRESTが流行って本当に良かったと私は思っています。
私の周りでSOAPとかSOAとか言ってた人達は本当に嘘くさかったし、コードを書いてない人たちでした。
RESTも厳密な方のRESTは説明がうるさいけれど、簡易RESTはシンプルで簡単で実用的です。
そういう技術だからこそ流行ったのだと思います!