stin's Blog

HTML 解体新書 読書感想文


Amazon で予約開始してすぐに予約していたものが先日届いて 1 周読み切ったので読書感想文的なものを書こうと思います。

ちなみに学生時代に一番嫌いだった宿題は読書感想文でした。

謝罪と反省

まず初めに、謝罪をします。自分は今まで HTML をまったく理解せずに使っていたことを心よりお詫び申し上げます…。

実は HTML を体系的に学習したことが過去になくて、なんとなくで書いてきました。よくある「HTML & CSS & JS でサイトを作ろう」的な入門書を読もうとしたことはあるのですが、レベルが低くて(失礼)自分で React を学びつつなんかアプリ作った方が習得早いなと思ってすぐ読まなくなっていました。それと、そういう入門書はすぐ古くなる(特にフレームワークの解説書)からという理由で、公式ドキュメントや技術ブログを読めばいいやと思って購入するのを避けていました。

でも結局、どの要素使って表現すべきかわからないからとりあえず div と span で作ればいいや〜となっていました。自分がキーボードのタブキーによる移動で操作することもあるので、さすがに span を button の代わりに使うようなことはしていませんでしたが、セマンティックでない文字や画像の羅列を表示するだけのサイトを作っていたことを深く反省しています…。

本の内容について

HTML の歴史から始まって、URL や HTTP について軽く触れられます。そして HTML の基本的な書き方の説明(タグとか属性とかコメントとか)を解説した後、主要な要素を個別に解説していきます。

ところどころにコラムやメモが散りばめられており、歴史的経緯によって解釈が変わったことや、セキュリティ的にこう書くべき、のような注記が入っています。

そしてなんと言っても、HTML の仕様書を第一に置いた解説の仕方です。必ず仕様書へのリンクが貼り付けられ、説明を省略する場合も「詳しくは仕様書をご覧ください」と記載があります。僕がこれまでやってきたような「なんとなくで HTML を書く」ではなく、HTML の仕様を正しく理解して欲しいという強い意志が感じられました。

また、Web アプリケーションのアクセシビリティについても多くのページを割いて解説されています。WAI-ARIA の role や aria 属性がスクリーンリーダーなどの支援技術にどのような情報を与えるのか、 role と aria 属性の組み合わせについて、WAI-ARIA を使うべき時と使うべきでない時など、アクセシブルなアプリケーションを作るための基礎を学べます。WAI-ARIA についても HTML 同様に仕様ファーストであることを念頭に文章が書かれています。

ただし、全体を通して「Web サイトの作り方」を書いてある箇所はありません。CSS や JavaScript のコードはほとんど出てきませんし、HTML のコードすら控えめに感じました。「HTML 解体新書」という名前にもあるように、HTML とは何か、この要素が意味するものは何でどんな要素を含められるのか、といったことを日本語で細かく書いてあります。

読むべき層

Web サイトを作成するために HTML を書く人のうち、自分で HTML 仕様を読まない人は絶対にこの本を目に通しておくべきです。今 HTML 仕様を読まなくても、今後読むことになる時にこの本が足掛がりとなります。

一方で、これからサイト制作の勉強を始めるという人が HTML 解体新書で HTML の書き方を学ぶことは難しいです。先述の通り、HTML の仕様に重点を置いて解説されているので、初学者が読んでもちんぷんかんぷんです。初学者向けの本で HTML を書くことに慣れた後、ステップアップとして読むといいと思います。

感想

自分は内容モデルについてまったく理解せずに使っていました。この本の帯には「label 要素の中に div 要素を入れたらダメ!」と書いてありますが、まさにその書き方をしていました。それ以外にも初めて知ることに何度も感動を覚えました。読んでいて楽しくなるレベル。

ブラウザによる HTML のレンダリングは、文法的・意味的なルール違反を含んでいても特にエラー表示されることなく画面に表示されてしまいます。それは今後 HTML 仕様が変化していっても過去に作成された Web サイトを閲覧可能にすることに役立っているのでしょう。しかしその反面、自分のように HTML のルール違反に気づかず書き続けている人を増やしている原因にもなっていると思います。そんな現状を打破してくれる一冊になっているんじゃないかなと思いました。Web の会社には必ず置いてあってほしいですね。

1 点だけ内容に不満があって、各要素別に解説している CHAPTER3 で、各要素の内容モデルは書いてあるのにその要素自体はどのカテゴリーに属するのかが書いておらず、特定の要素同士の組み合わせがルール違反になるかどうかをこの本だけで調べられないということがあります。MDN にカテゴリーとそれに属する要素一覧のページがあるので、これとセットで調べればよいのですが。

あと 2 周は読みます。

最後に

<strong>全員買うべし!</strong>