✍️

「Web 技術解体新書」執筆について

2020/10/05に公開
1

「Web 技術解体新書」執筆について

Intro

「Web 技術解体新書(Web Anatomia)」という書籍の執筆と、 zenn 上での販売についてアナウンスします。

Web 技術解体新書(Web Anatomia)

各章を分割して執筆し公開していく予定です。

Web 技術解体新書とは

Web というものを正しく理解するために必要な知識や技術は日増しに増え、それに従い学ぶためのコストもかなり上がってきています。 一方で、多くの書籍や雑誌、 Web 上の記事、動画や音声コンテンツは充実しており、学ぶための手段もかなり広がっています。

しかし、 Web に関わる技術書籍の多くは、何らかのフレームワークの解説や、 JS/CSS などの特定技術、特定の非機能要件に特化したものが多く、(その括りの曖昧さ故) Web という括りで書かれたものはあまりありません。

あったとしても、多くは初心者向けなものが多く、ある程度の初級編の知識を得た中級者が、その先にレベルアップするための一歩を踏み出すためには、「仕様を読め」や「実際に経験しろ」といた飛躍のあるステップになりがちで、それは事実である一方そこにも何か補助できるコンテンツがあっても良いのではとずっと思っていました。

そして、 IETF や W3C/WHATWG の仕様を、その内容を仕様だけを読んで正しく理解するのは一般的には難しいと考えています。仕様は主に実装者のためにあり、「どうあるべきか」は書かれていますが、「どうしてそうなったか」という背景は細かくは書かれていないことが多いからです。

多くの開発者にとっては「どうしてそうなったのか」という背景こそ重要な場合があり、そこがきちんと理解できないでいると、誤ったサービス実装や、技術選択を行ってしまったり、そこからの連続として進展したはずの議論についていけず、新しい仕様の話が出たときにそれがなんで必要なのかが理解できなくなってしまうこともあると思います。

この書籍は、単に定義や使い方ではなく、「どうしてそうなっているのか」という背景を含めて正しく知ることで、「Web を正しく理解し、正しく実装する」ための知識を、特定の技術や非機能要件に特化せず、俯瞰して体系的にまとめることを目的とし、本書が書かれた後の議論に読者がついていくためのベースになればと思って書いています。

何であり、何でないか

何であるか

例えば、最初の章は「Origin 解体新書」として、「Origin とは何か」について網羅的に解説しており、既に公開しています。

Origin は Web における基本的な知識であり、理解して使っている人も多いでしょう。しかし、自分の理解がどの程度であるのか、どこまで正確なのかを推し量る機会は意識しないと無いかもしれません。実務ではサーバが Access-Control-Allow-Origin を返すように設定してしまえば、サービスが動くことがほとんどだからです。

こうした「知っていることの知らなかった部分」に気づくのは、理解を深める上では重要です。知らないことに気づけば調べることができるからです。このように「知識の解像度を高める」ために、本書では基礎から最新の仕様や議論まで網羅します。

例えば Origin 解体新書では以下のような内容が含まれます。

  • なぜ Origin という概念が必要なのか
  • Preflight が必要な理由
  • Simple Request とは何か
  • document.domain の危険性
  • JSONP を使ってはいけない理由
  • SOP 以前からある Form や Cookie の正しい扱い
  • WebSocket や Service Worker はなぜ Origin をまたいでも安全なのか
  • Spectre がいかに Origin という概念を揺るがしたか
  • CORS/COOP/COEP による Site Isolation や Origin Isolation はなぜ必要なのか

単に CORS の設定方法といった話だけではなく、 「Origin がいかに現在の Web において重要な概念なのか」を軸に書くとこうなり、本来こうした内容は Web 開発に携わる全ての開発者に理解されていることが理想です。

何でないか

本書は HTTP の本でも、 HTML の本でも、 JS の本でも、特定のフレームワークやツールの本でもありません。

セキュリティ、パフォーマンス、アクセシビリティなど、特定の非機能要件に特化している本でもありません。

どんなフレームワークやツールを使っていても必要となる共通の知識、そして Web が本来的に備えている非機能要件に関する「ポテンシャルを正しく引き出す」ために身に着けておくべき知識について、網羅的に解説する「Web 技術の本」であることを目指します。

今後

以降の章立てもほとんど決まっているのですが、全て 1 章同様に網羅的にまとめるつもりでおり、書いてる途中で挫折するリスクが常にあるため、とりあえず 5 章までは予定にあるとだけお知らせします。

構想自体は 2018 年くらいからありましたが、こうして書籍を書く方法を色々と模索しながら紆余曲折を経て、 zenn にたどり着きました。 zenn は本当に書く気を起こさせてくれるプラットフォームなので、しばらくはこのプラットフォームをありがたく使わせていただきながら執筆を進め、 zenn 側への手数料のフィードバックの意味も込め、有料書籍として公開したいと思います。

zenn での公開は著作権の制限が一切無いとのことなので、何年先かわからないけれどいつか書き終われたら(それが一番むずかしい)どこかの出版社に持ち込んだり、ダメなら同人誌なりで、記念として物理本にできたらと思っています。

Jxck

Discussion