LoginSignup
62
62

More than 5 years have passed since last update.

REST について思っていること

Posted at

REST について思っていること

Web が生まれた時代

先日 Web が 25 周年を迎えた、一方でインターネットは 45 周年だ。
一般人にインターネットと Web の区別はそこまで無いだろう。

インターネットはパソコンを繋いだ。
しかしそこに流れる情報にはあまり統一性がなく、アクセスしたい情報によって、プロトコルやフォーマットを学ばないといけなかった。

「みんなが同じプロトコルとフォーマットで情報を共有すれば、研究はもっと捗る」

情報を HTML という統一したフォーマットで記述し
それを HTTP という統一したプロトコルで配信する

このルールを守ることで、だれもが同じく情報を発信し、受け取れるようになった。

彼はそれを Web と名づけた。

Web が「ページ」だった時代

Web の最初の用途は「文章を共有すること」だった。

HTML は文書を記述し、 CSS がそれを修飾し、ブラウザは Viewer(閲覧装置) だった。
ハイパーリンクはそれぞれの文書を接続し、ブラウザの挙動から人はそれを「画面遷移」と読んだ。

全ては人間に最適化されていた。

Web が「システム」になった時代

Web サーバにプログラムを連携させることで、 HTML を動的に書き換えることができるようになったとき、Web はシステムとして機能しはじめた。

実際にはバックエンドにある DB の中身を可視化するシステムとして機能した。

多くのロジックがそこに移植され、「処理」「業務」「機能」と呼ばれるあらゆるもののインタフェースとして Web が採用されるようになった。

未だに設計の中心には画面の遷移があった。
しかし、Cookie を用いて実現された「セッション」という概念が併用されていた。

「ステートレス」だった Web の上に、「ステート」が持ち込まれた時代であり、

その設計の大半は、VB などで作られた GUI のそれを、 Web でやっていただけのものが多かった。

Web が 「アプリ」になった時代

それまで「画面遷移」で作られていた Web に変化が起きた。

Flash でしかできなかったサーバとの通信と、ダイナミックな更新が、 JS で実現できることが発見された。

世界はクライアントサイドに広がる可能性に注目が集まった。

ある男がそれを Ajax と名付けた。

責務の多くがクライアントに移り、「世界で最も誤解された言語」と言われた JS に比重が増えた。

今までにない表現ができるようになり、またそれが当たり前になった。
「Viewer」 だと思っていたブラウザが「Platform」であったことに、人々が気がついた時代でもあった。

人間が運用でカバーしてたことに気づいた時代

Web はクライアント・サーバ型の方式をとる。
ずっと「クライアント」の先にいたのは人間だった。

しかし、 Ajax を組む場合は JS からリクエストし JS がレスポンスを取得する。

そこで求められたのは、人間に最適化された「画面」ではなかったし、
ログインして画面を遷移するプログラムは、だれも書きたくはなかった。

その事実に直面して開発者は過ちに気づいた。

識別されていない URI に、遷移によって辿り着くことも
全てのリクエストが POST で行われるシステムも
ステータスコード 200 で返るエラー画面を解釈するのも
HTML の余白が全て連続する br でできていても

全ては「人間」だから成り立っていた。
ブラウザの抽象化による助けもあり、不備は人間が運用でカバーしていたのだ。

フォーマットとしての JSON が発明され、別途 JavaScript 用の API が作られることが多かった。
その実装は、「人間向け」のそれとは乖離し、開発者は設計方針の落としどころを探り始めた。

Web の実体が「説明」された時代

Web にはルールがあった。

「URI」 により識別された「リソース」を、
「HTTP メソッド」で操作し、
「HTTP ヘッダ」でメタデータを表現し、
「ステータスコード」で結果を知り、
「レスポンスボディ」で情報を取得する。

「URI」 は画面の場所ではなかった。
「画面」とは「リソース」の一つの表現形式でしかなかった。

ステータスコードや HTTP ヘッダは人間の目に触れることは無かったかもしれないし、フォームは GET と POST しか投げられなかった。

でも全てに意味があった。
その意味を知り、正しくと使うことで、相手が「人間」であろうと「プログラム」であろうと、使いやすい Web ができることが HTTP の作者によって説明された。

彼はそれを REST と名づけた。

REST がひとり歩きした時代

開発者は、ぼんやりしていた 「Web とはどういう構造だったのか」を知り、「どういうポテンシャルを持っているのか」を理解した。

人間だけを相手にしていた時代の設計は見直され、結果的に人間にとっても使いやすいものになった。
もちろん、 HTML5 によってさらに加速したフロント開発の進化も支えた。

多くのサービスが RESTful を標する API を提供し、クライアントは JS にとどまらず、多くの「プログラム」との連携を加速した。

「統一したインタフェースで情報を共有する」という Web が生まれた本来の目的が、もう一度実現されたと言えるかもしれない。

一方で、ぼんやりしていたものに、筋の通った考え方が持ち込まれると
それは議論の中で非常に大きな力を持つ。

Web を開発する多くの場面で REST は拠り所になった。

その力は大きく、固執する者もいた。

彼らは RESTafarians と呼ばれた。

あちらこちらで、REST の是非が議論された。

REST は流行った。良くも悪くも。

REST から学んだこと

REST は「アーキテクチャスタイル」だと言われる。
REST は必ず必要な何かではない。
REST が無くても Web は成り立っていたことからも自明だ。

しかし、 REST が Web のポテンシャルを引き出す礎となることもまた事実だと思う。

今では REST を学ぶ事自体が目的になりえている。
自分もそうだったところはある。
これはまあそれで良いと思う。


でも、自分が REST を学んでよかったと思うのは、 REST で設計ができるからでも、 REST の議論ができるからでもない。

「Web ってなんなのか」が分かったことだ。

それは、 Web を興味の中心に置く自分にとって、最も価値のある知識だと、今となっては思う。

62
62
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
62
62