noyのブログ

健康なエンジニアを目指す人のブログ

『Webを支える技術 -HTTP、URI、HTML、そしてREST』を読んだ

gihyo.jp

2010年出版

この本は,Webに関連するいくつかの技術の仕様を解説し,Webサービスの設計方法を示すことを目的としている.Webについて学びたい人の最初の一冊に良さそう.ただ,約10年前の書籍である.むしろ,10年近く経っても基礎的な部分はあまり変わっていないことを体現していると言える.

Webサービスの開発手法ではなく仕様と設計の話なので,今すぐサービスを開発したいという人には向かない.「Webサービスの開発って何を考えないといけないんだろう……?」「そもそも仕様は……?」と気になってきた人向け.Webサービスの動作に意識が向けられるようになる.

第1部~第3部は基礎的な内容で,それらに比べると後半の内容はやや難しい.とりあえず前半部分を読んで,後半は必要に応じてで良さそう.

自分は「JavaScriptが難しい」という話を聞いて,それと関連して(JavaScriptが使われる)Webの仕組みも複雑だと思い込んでいた.しかし,著者はWebがシンプルであると言い切っている.考えてみると当たり前のことだけど,Webの仕組みと言語の仕様は別である.各技術をひとまとめにして複雑さを感じるのは良くない態度だなぁ,と反省.

Webは色々なところで使われているし,基礎の技術が大きく変わることもあまりないので,それらについて知っておくのは割と良いかもしれない.

おすすめ

第3部HTTP

Real World HTTPが背景知識がないためか読みにくかったので(文章が読みにくいわけじゃないよ!),先に本書を読んだ.HTTPの構成,メソッド,ヘッダについてわかりやすくまとめられている.

ある技術を学ぶときに,それが利用されている環境や状態がわかっているのとそうでないのでは,学習のしやすさが段違いだと改めて思った.

メモ

Web概論

Webを支える技術

  • HTTP 情報を取得するためのプロトコル
  • URI 情報を指し示す
  • HTML 情報を表現する文書フォーマット

ハイパーメディア

様々なメディアをハイパーリンクで結びつけて構成したシステム

REST

Webのアーキテクチャスタイル(アーキテクチャパターン)の一種.他に,MVC(Model-View-Controller)やパイプ&フィルタ,イベントシステムなど.

RESTは以下の6つを組み合わせたアーキテクチャスタイルのこと.

  • クライアント/サーバ
  • ステートレスサーバ
  • キャッシュ
  • 統一インタフェース
  • 階層化システム
  • コードオンデマンド

HTTP

MIMEメディアタイプ

リソースの表現の種類を指定する.

  • Content-Type メディアタイプ(テキスト,画像,音声など)の指定
  • charsetパラメータ 文字エンコーディングの指定

コンテントネゴシエーション

メディアタイプなどをクライアント側が指定する.

ハイパーメディアフォーマット

microformats

Web上のリソースにメタデータを与えるための技術.

Atom

凡用XMLフォーマットの一種.ブログなどの更新情報を配信するためのフィードとして知られている.