^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
          summary
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

1部 Web概論
  • Webとは何か
  • Webの歴史
  • REST -Webのアーキテクチャ-
2部 URI
  • URIの仕様
  • URIの設計

^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

本書は5部構成で全17章からなるが、通勤時間で2部(5章)読んでしまった。昔からじっくり本を読み進めていくタイプでなく、ざっくり繰り返し読むタイプなので2回目のためにトピックを簡単にdumpしておく。(強くてニューゲームほど楽しい発見があると信じている。)

1章.Webとは何か


Webとは不特定多数をリンクしうるハイパーメディアの特性をもつ概念、もしくは分散システム。またハイパーメディアを実現するHTTP, URI, HTMLなど要素技術の総称。

2章.Webの歴史


  • (1980年代)Webが登場する以前はハードウェアにしろソフトウェアにしろ数や種類が限定された分散システムが主流だった。
  • (1990年代)スイスの原子核研究所の研究員であるTim Berners-LeeがWebの提案書を書く。
  • (1994年)Tim Berners-LeeがW3Cを設立し、HTML、XML、HTTP、URI、CSSなどの標準化を開始する。
  • (2000年)California大学の大学院生であるRoy FieldingがWebのソフトウェアアーキテクチャを「REST」と名付け博士論文として提出する。
  • (1990年代後半〜2000年代前半)学術論文の交換用途に使用されてきたWebの用途が多様化し、プログラムより自動処理を行いたいという要求が出始める。
  • (2000年前後〜2003年)SOAPとRESTで論争が起こるが、「簡易に操作できる」としてGoogleやAmazonがRESTによるWebAPIを提供した事が決定打となりRESTに軍配が上がる。
  • (2003年~)RESTの普及と平行しAjaxなどの使い勝手の良い技術のブレイクスルーがあり、ますますWebは発展していった。
胸熱ポイント

Tim Berners-Leeは提案書を書き、クリスマス休暇を使って最初のブラウザとサーバを自身で実装し、W3CにてHTML、XML、HTTP、URI、CSSなど、今日のWebの礎をほぼ一人で築いた所ですかね。またRoy FieldingがSOAP押しの大手ベンダーと一人の技術者として繰り広げたバトルも涙ものです。圧倒的圧力と政治力の差がありながら彼は必死に叫んだのです。実用的な所でいくとRESTの勝因が「使い易さ」であることですかね。広く普及を考える場合は誰しもが簡単に使いやすい方が高機能より好まれるのですね。

3章.REST -Webのアーキテクチャ-


ハイペーメディアとして

リソースをリンクで接続することでアプリケーションを構築する考え方がRESTの基幹をなす思想。

アーキテクチャとして

RESTはクラ/サバに6つの制約を加えたアーキテクチャスタイル。(制約は理想であり、幾つか制約を妥協しようとも理想を念頭に置くことが重要)

  • クライアント/サーバ  : ユーザインターフェースと処理を分離する。
  • ステートレスサーバ   : サーバ側にアプリケーションの状態を保持しない。
  • キャッシュ       : クライアントとサーバの通信回数を減らす。
  • 統一インターフェース  : HTTPなど各サーバやクライアント感で統一のインターフェースを使用する。
  • 階層化システム     : ロードバランサやプロキシなどシステムを階層化可能である。
  • コードオンデマンド   : サーバからJSなどのコードをダウンロードしクライアント側で実行可能である。

4章.URIの仕様


URIで使用できる文字列はASCII文字(7bitで表現できるコードに割り当てられたアルファベットを記号)。ASCII文字以外を使用するにはencodingが必要。

URIの実装で気をつけること
  • 絶対URLを使用する。(相対URLを使用すると余計な処理が必要なため)
  • エンコーディングはUTF-8を用いる。(現代的な多くのWebサイトが採用しているため)

5章.URL設計


URLは変わらないべきだ。変わらないURLこそが最上のURLである
Tim Berners-Lee

変わりやすいURLはリンク切れを発生させるためですね。

URL設計指針
  • プログラミング言語に依存した拡張子を利用しない。(.pl, .rb, .do, .jspなど)
  • 実装依存のパス名を利用しない。(cgi-bin, servletなど)
  • プログラミング言語のメソッド名を利用しない。(people/show/123)
  • セッションIDを含めない。(友人にメールで送られてきたURLを友人と同じように見せるべき)
  • リソースを表現する名詞を使用する。(動詞はHTTPメソッド)
URL設計テクニック
  • 1つのリソースが複数の表現を持つ時は.ja.jsonなどのように拡張子を使用する。(ロケールはHTTPヘッダのAccept-Languageから取得すると良い)
  • 複数のパラメータで表現されるリソースは/,, ;を使用する。(日付、軽度&緯度など)
  • URIはクライアント側で変更できてはならない、サーバから強制される不透明なものである。

おまけ

Tim Berners-Lee氏が偉大すぎてお話を聞いてみたくなったのでした。




comments powered by Disqus


© 2015 kyuden