こつつみ

コツコツ積み上げる

「Webを支える技術」を読んだ

本の基本情報

本の基本情報について紹介する。

  • 著者名:山本陽平
  • 書籍名:Webを支える技術 ―― HTTP,URI,HTML,そしてREST WEB+DB PRESS
  • 出版社:技術評論社
  • 発売日:2018/11/14
  • 頁 数:641ページ

本の目次

以下は本書の目次です。

  • 第1部 Web概論
    • 第1章 Webとは何か
    • 第2章 Webの歴史
    • 第3章 REST -- Webのアーキテクチャスタイル
  • 第2部 URI
    • 第4章 URIの仕様
    • 第5章 URIの設計
  • 第3部 HTTP
  • 第4部 ハイパーメディアフォーマット
  • 第5部 Webサービスの設計

概要

第1部 Web概論

Webの基本的な知識や歴史があったのは、どういう経緯でRESTになっていったのかが知れて良かった。

自分はRESTは、GraphQL or RESTのようにAPIの取得の仕方の一種だと思っていた。しかし、RESTはアーキテクチャスタイルであることが理解できた。

RESTfulに設計されたAPIこそが自分が認識していたものだった。勘違いしている人も多いと思うので、ネットで調べてみることをオススメする。

第2部 URI

URIは URL + URN のこと。

URNはリソースにドメイン名とは別に独立した名前が付けられる。これによって、サーバーが何らかの障害で変更になったり、ドメインを更新してアクセスできなくなるという問題を解決した。 しかし、URLが永続的にアクセスできるようにするべきという考えが普及したため、URNを使うまでもないことが多くなり普及していない。

このことを自分は知らなかったので、勉強になり時代背景も知ることができた。 また、URI設計のテックニックの話などもあり、とても興味深かった。

ここでWeb開発者の言葉を。(書籍にも載っています)

「Cool URIs don't change (クールなURIは変わらない)」

URIは変わらないべきである。変わらないURIこそ最上のURIである。

つまり、いかにURIを変わりにくく設計するかが大事になってくる。肝に命じたい。

第3部 HTTP

HTTP/1.1までしか載っていない。現在は、HTTP/3なので少し内容は古い。 しかし、HTTP/1.1は現在でも使われているし、APIを使う際は変わらずHTTP/1.1なのである。

そのため、APIの使い分けからリクエスト・レスポンス、HTTPヘッダの内容はかなり詳しく書かれているので、とても勉強になった。 HTTPヘッダとかは自分は普段気にしたことがなかったが、ここで内部構造を知れたので今後に

特にHTTPメソッドの「べき等性と安全性」の話は参考になった。

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

HTMLやXMLJSONについては知識はあったが、microformats, Atomは何がなんだかわからなかった。

自分の趣味でやっている競技プログラミングで使われている拡張機能 Greasemonkeymicroformats を利用していることがわかった。 しかし、新規にマイクロフォーマットを実装しようという話はほとんどないみたいだ。

Atomはブログなどの更新情報を配信するためのフィードとして知られているらしい(自分は全く知らなかった)

現在は、RSSの方が使われているのでATOMもそこまで使われていない(?)。情報ください。

qiita.com

第4部は、HTML, JSONだけ見れば良いのかという印象だった。

第5部 Webサービスの設計

読み取り専用のWebサービスの設計 (リソース指向アーキテクチャ)は以下の設計アプローチをとる

  • Webサービスで提供するデータを特定する
  • データをリソースに分ける

そして、各リソースに対して次の作業を行う。

  • リソースにURIで名前をつける
  • クライアントに提供するリソースの表現を設計する
  • リンクとフォームを利用してリソース同士を結びつける
  • イベントの標準的なコースを検討する
  • エラーについて検討する

この章では、上の流れをもとに郵便番号リソースにXML, JSONのどちらを使うかなど解説をしているので参考になる。

書き込み可能のWebサービスの設計に関しても郵便番号リソースをもとに、CRUD操作、トランザクションの話など参考になる。

参考になるとしか書いていないが、本当に参考になる。

この書籍で何回も出てきたのが、「WebサービスとWeb APIを分けて考えない」ということだ。 リソース設計で最も重要な考え方である。

最後に

非常に読みやすく、スラスラ読めた。 組み込み開発からWeb開発になった自分でも知らない単語はちょくちょくあったものの、理解することができた。

とてもおすすめです。