- Webを支える技術 -HTTP、URI、HTML、そしてREST (WEB+DB PRESS .../山本 陽平
- ¥2,699
- Amazon.co.jp
あけましておめでとうございます。本年もこのブログともどもよろしくお願いいたします。
新年一発目のエントリは、休みの間に読んだ書評から。
この「Webを支える技術」は副題にあるように、RESTの技術を中心としながらHTTPやHTML、AtomなどWebの技術やその技術の歴史的な背景や経緯などを幅広くまとめた教科書的な本でした。
(後述の目次を見ればわかるようにかなり広い範囲の技術が取り扱われています)
プログラマの人には、HTTPの技術を中心としてその書いたコードがどのようにクライアントとやり取りされ動いているか、またRESTやAtomを中心としてそのコードを幅広クライアントに利用してもらうためにはどのような技術やアーキテクチャが存在しているのかという知識を与えてくれます。
また、URIやWebサービスの設計に必要な知識なども盛り込まれていてシステムアーキテクチャの人にも十分に参考になるのではないかなと思います。
小規模なWebサービスではなかなか構築しないAPIや拡張性などをどういった技術や思想で作りこみ、公開していくかってところが書かれていて、「自分もそういったものを作りたい!」って気分にさせてもらいました。
また、プログラミングやインフラ系の構築をしている中で出てくる技術の意味を再度整理して見直すのにもちょうどいい網羅性も持っています。
本書に記載の幅広い技術は、プログラマやインフラエンジニア、システムアーキテクチャなどそれを支える幅広いエンジニア層にもそれぞれ参考になるのではないでしょうか。
目次
第1部 Web概論 第1章 Webとは何か 1.1 すべての基盤であるWeb 1.2 さまざまなWebの用途 1.3 Webを支える技術 1.4 本書の構成 第2章 Webの歴史 2.1 Web以前のインターネット 2.2 Web以前のハイパーメディア 2.3 Web以前の分散システム 2.4 Webの誕生 2.5 Webの標準化 2.6 Web APIをめぐる議論 2.7 すべてがWebへ 第3章 REST - Webのアーキテクチャスタイル - 3.1 アーキテクチャスタイルの重要性 3.2 アーキテクチャスタイルとしてのREST 3.3 リソース 3.4 スタイルを組み合わせてRESTを構成する 3.5 RESTの2つの側面 3.6 RESTの意義 第2部 URI 第4章 URIの仕様 4.1 URIの重要性 4.2 URIの構文 4.3 絶対URIと相対URI 4.4 URIと文字 4.5 URIの長さ制限 4.6 さまざまなスキーム 4.7 URIの実装で気をつけること 第5章 URIの設計 5.1 クールなURIは変わらない 5.2 URIを変わりにくくするためには 5.3 URIのユーザビリティ 5.4 URIを変更したいとき 5.5 URI設計のテクニック 5.6 URIの不透明性 5.7 URIを強く意識する 第3部 HTTP 第6章 HTTPの基本 6.1 HTTPの重要性 6.2 TCP/IPとは何か 6.3 HTTPのバージョン 6.4 クライアントとサーバー 6.5 リクエストとレスポンス 6.6 HTTPのメッセージ 6.7 HTTPのステートレス性 6.8 シンプルなプロトコルであることの強み 第7章 HTTPメソッド 7.1 8つしかないメソッド 7.2 HTTPメソッドとCURD 7.3 GET - リソースの取得 7.4 POST - リソースの作成、追加 7.5 PUT - リソースの更新、作成 7.6 DELETE - リソースの削除 7.7 HEAD - リソースのヘッダの取得 7.8 OPTION - リソースがサポートしているメソッドの取得 7.9 POSTでPUT/DELETEを代用する方法 7.10 条件付リクエスト 7.11 べき等性の安全性 7.12 メソッドの誤用 7.13 Webの成功理由はHTTPメソッドにあり 第8章 ステータスコード 8.1 ステータスコードの重要性 8.2 ステータスラインのおさらい 8.3 ステータスコードの分類と意味 8.4 よく使われるステータスコード 8.5 ステータスコードとエラー処理 8.6 ステータスコードの誤用 8.7 ステータスコードを意識して設計する 第9章 HTTPヘッダ 9.1 HTTPヘッダの重要性 9.2 HTTPヘッダの生い立ち 9.3 日時 9.4 MIMEメディアタイプ 9.5 言語タグ 9.6 コンテントネゴシエーション 9.7 Content-Lengthとチャンク転送 9.8 認証 9.9 キャッシュ 9.10 持続的接続 9.11 その他のHTTPヘッダ 9.12 HTTPヘッダを活用するために 第4部 ハイパーメディアフォーマット 第10章 HTML 10.1 HTMLとは何か 10.2 メディアタイプ 10.3 拡張子 10.4 XMLの基礎知識 10.5 HTMLの構成要素 10.6 リンク 10.7 リンク関係 - リンクの意味を指定する 10.8 ハイパーメディアフォーマットとしてのHTML 第11章 microformats 11.1 シンプルなセマンティックWeb 11.2 セマンティクス(意味論)とは 11.3 RDFとmicroformats 11.4 microformatsの標準化 11.5 microformatsの分類 11.6 microformatsとRDFa 11.7 microformatsの可能性 11.8 リソース表現としてのmicroformats 第12章 Atom 12.1 Atomとは何か 12.2 Atomのリソースモデル 12.3 エントリ - Atomの最小単位 12.4 フィード - エントリの集合 12.5 Atomの拡張 12.6 Atomを活用する 第13章 Atom Publishing Protocol 13.1 Atom Publishing Protocolとは何か 13.2 AtomPubのリソースモデル 13.3 ブログサービスを例に 13.4 メンバリソースの操作 13.5 サービス文章 13.6 AtomPubに向いているWeb API 第14章 JSON 14.1 JSONとは何か 14.2 メディアタイプ 14.3 拡張子 14.4 データ型 14.5 JSONPによるクロスドメイン通信 14.6 ハイパーメディアフォーマットとしてのJSON 第5部 Webサービスの設計 第15章 読み取り専用のWebサービス設計 15.1 リソース設計とは何か 15.2 リソース指向アーキテクチャのアプローチ 15.3 郵便番号検索サービスの設計 15.4 Webサービスで提供するデータを特定する 15.5 データをリソースに分ける 15.6 リソースにURIで名前をつける 15.7 クライアントに提供するリソースの表現を設計する 15.8 リンクとフォームを利用してリソース同士を結びつける 15.9 イベントの標準的なコースを検討する 15.10 エラーについて検討する 15.11 リソース設計のスキル 第16章 書き込み可能なWebサービスの設計 16.1 書き込み可能なWebサービスの難しさ 16.2 書き込み可能な郵便番号サービスの設計 16.3 リソースの作成 16.4 リソースの更新 16.5 リソースの削除 16.6 バッチ処理 16.7 トランザクション 16.8 排他制御 16.9 設計のバランス 第17章 リソースの設計 17.1 リソース指向アーキテクチャのアプローチの落とし穴 17.2 関係モデルからの導出 17.3 オブジェクト指向モデルからの導出 17.4 情報アーキテクチャからの導出 17.5 リソース設計で最も重要なこと 付録A ステータスコード一覧 付録B HTTPヘッダ一覧