「RESTは目的ではなく手段である」…ならば、RESTの目指す目的はどこ?

以前、RESTfulWebサービス読書会の議論の中で、「RESTは目的ではなく手段である」というような言葉があって、「それはまさにその通りだよな…」と思った訳ですが、その時から「じゃあ、RESTが目指す目的ってどこ?」なんて事をぼんやり考えてました。
8月の読書会は諸々の理由から中止になった訳ですが、スタッフだけで反省会と称して色々と議論をして*1、そのぼんやり考えていた事が少しばかりクリアになって、考えが少し前進できた気がするので、アウトプットしてみようかと思います。

RESTful読書会の反省会で得た自分的結論

反省会で色々と話をした結果、結局のところ、第0回読書会で話されていた内容に4ヶ月間掛けてやっと実質的に知識が追い付いたんだという事が分かりました…。(^^;ゞ 時間はずいぶんと掛かりましたが、自分の感覚としてRESTfulな考え方が身に付いたという意味では意義があったと思います。
で、反省会での議論で自分的に得る事ができた結論は、

  • "Webサービス"と"Webアプリケーション"はきちんと区別しましょ。
  • RESTfulにすべきは"Webサービス"であって"Webアプリケーション"はRESTfulである必要は無いよね。

という事でした。

WebサービスとWebアプリケーションを区別する

という訳で、自分的に改めて定義してみたWebサービスとWebアプリケーションの違いは以下の通り。

で、WebサービスはRESTfulになっているべきですが、逆にWebアプリケーションはRESTとは関係なく、Webサービス層のもう一つ上にあるべきものだと思います。
読書会の中で時々「REST的に確認画面ってどうなるの?」という話が挙がっていましたが、この区別で考えると、確認画面はWebアプリケーションの責務であって、本来、RESTの世界で考える必要の無いものじゃないかと思います。

RESTは何の為の手段?

こういう定義で考えてみると、Webサービスというのはできるだけシンプルである方が良くて、その実現の為の方法は色々ある訳ですが、RESTはその方法の一つと言えるのかなと。
で、「RESTは目的ではなく手段である」とするならば、当然「んじゃ、RESTは何をする為の手段なの?」という疑問が湧いてくる訳ですが、結局のところ、

  • RESTというのは"Webサービスをシンプルにする為の手段である"

と言えるんじゃないかなと、思う訳です。

RESTの目指す目的

では、世の中の全てのサービスがRESTfulなWebサービスになれば、いきなり皆が幸せになれるかと言うと、決してそういう訳ではなく、「そもそも目指すべき目的があって、それを実現する為に、WebサービスがRESTfulであるべき」と考えるべきなのではないでしょうか。
じゃあ、「"目指すべき目的"というのは何なんだ?」となる訳ですが、ここに至るまでの前段を書いてみたら案外長くなってしまったので、続きはまたその内…。(^^;ゞ 結局、タイトルに書いた疑問に答えないで、次回にそのまま丸投げする記事って…。(笑)

まとめっぽいようで、まとまってない気がする締め

結局のところ、RESTって手段でしかないので、きちんと果たすべき責務を明確にして使ってあげれば非常に強力な武器になるし、逆にそれ以上のものを求めてしまうと絶望してしまうだけじゃないのかなと思います。
という事で、最後はREST++して締めておこうと思います。