Webを支える技術 -HTTP、URI、HTML、そしてREST | A Day In The Boy's Life

A Day In The Boy's Life

とあるエンジニアのとある1日のつぶやき。

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ヘッダ一覧