書評『HTML解体新書』
2022年5月5日 公開
皆さんこんにちは。今回は、2022年4月19日発売の『HTML解体新書』を読み終わったので、書評という形で感想と紹介を述べたいと思います。筆者はもともと技術書を読まず「ネットでいいやん」派だったのですが、このたびTypeScript入門書を出版したこともあり、それを過去の話として葬り去るべく技術書を読んでいくことにしました。せっかくなので、読んだ技術書の感想等を紹介します。
おことわり: この記事では、「筆者」とはuhyoのことを指し、『HTML解体新書』の筆者たちのことは「著者ら」と呼びます。また、この記事の内容はすべて筆者の個人的な見解であり、本の内容や本を読んで得られる知識について何らかの保証をするものではありません。
筆者について
筆者はTypeScriptとReactを専門とするフロントエンドエンジニアで、HTML歴は17年です。物心ついたときのHTMLバージョンはHTML4.01でした。
筆者は言われなくても仕様書を読みにいくタイプなので上司から「仕様書を読め!」と言われたことはないのですが、自分の知識を整理したり、あるいは人に勧められる本を仕入れたりといったことを期待して今回『HTML解体新書』を読んでみました。
総評
入門書かくあるべし。この本の内容を8割くらいすでに知っていたら「HTMLわかる」と言っていい。
『型システム入門』などもそうですが、入門と名のつく技術書は全部理解すれば入門レベルを脱するところまで読者を導くべきだと思います。この本はまさにそのような本であり、HTMLをしっかり使いこなせるレベルまで読者を引き上げてくれるでしょう。
また、内容は尖っておらず思想もあまり出ていない印象を受けます。仕様に重きを置いた説明をしているだけあってかなり標準的な内容を貫いており、万人におすすめできる本です。
どのような人におすすめ?
本当の初心者向けの説明等は飛ばしているため、HTMLのハの字も分からない人には難しいという印象を受けました。むしろ、仕事でちょっとHTMLを書いている(Reactなども含む)、構文やよく使う要素くらいは分かっていて、CSSなども使って狙った見た目を出せるけど、「熟知している」と言えるほどの自信がない人におすすめです。そのような方が読めばスキルレベル向上に貢献してくれるでしょう。
また、HTMLのセマンティクスやアクセシビリティにこれまであまり興味を持ってこなかった人にとっては得るものが多いでしょう。そのような方が読むのもとてもおすすめです。
本を紹介するという立場からは、自分のチームのマークアップの質を向上したいと思ったときにとりあえずおすすめする本として最適です。この本を読破したエンジニアからなるチームは、HTMLのセマンティクスやWAI-ARIAまで考慮した、最高品質のマークアップを生み出すことができるでしょう。
各章について
CHAPTER 1: HTMLの基本概念
この章は、本書の入り口として「HTMLとは」から始まり、その他「アクセシビリティ」「URL」「HTTP」などの基本的な概念の説明が並びます。一見すると、基礎的ではありつつ雑多な並びにも見えますが、これらは実は次章以降を読むために必要な前提知識の集まりとなっています。例えばHTML仕様書からはURLやMIMEタイプといった概念が参照されているので、この章にそれらの解説を置くことによって、この本のHTML仕様解説書としての網羅性・完成度を高めています。筆者がこのことに気づいたときは、著者たちのこだわりに感心させられるとともに、なかなかやるなと思いました。
また、HTML仕様そのものについて、歴史なども交えて紙面を割いて説明しています。さすが副題を「仕様から紐解く本格入門」としているだけあります。筆者は(自称世界一技術の歴史に興味がないエンジニアなので)歴史はそこまで刺さらなかったのですが、HTML仕様という存在そのものに慣れ親しんでいない人も多くいるでしょうから、そのような読者が仕様に慣れ親しむためにとても有益なセクションだと思いました。
また、アクセシビリティについても関連する概念として紹介されています。本書にも書かれている通り、Webとアクセシビリティは切っても切れない関係にあります。早い段階で読者にそのことを理解・意識させる構成は上手だと思いました。本書はHTMLの解説書ですが、今後随所にアクセシビリティに関する解説が出てくるし、CHAPTER 4ではアクセシビリティを大きく取り上げています。
CHAPTER 1の最後に書かれている「よりよいマークアップのために」というセクションは、CHAPTER 1の内容を総括するとともに、よいHTMLを書くことの意味を読者に説く内容になっています。個人的には、ここが1ページしか無いのがちょっと惜しいと感じました。ここにもっと紙面を割くことで、読者に対してよいHTMLを書くことに対する意欲や情熱を与えられるのでは無いかと思います。今のところ、そのような意欲は読者があらかじめ持っている必要があります。尤も、この本を読めと言ってくれる上司が居てくれるのであればそこはあまり問題ではないでしょうが。
CHAPTER 2: HTMLマークアップのルール
HTML仕様のうち、構文的な部分を紹介する章です。また、コンテンツモデルや真偽属性などの概念を導入し、CHAPTER 3の布石となる章でもあります。構文ルールはかなり細かく解説されており、感心しました。HTMLをわかっているつもりの読者でも、ここに書かれているルールを諳んじることができる人はほとんどいないでしょう(筆者も無理です)。
内容を全部暗記する必要はもちろんありませんが、HTMLを書く上で気をつけなければいけない落とし穴を広く知ることができます。一度しっかりとこの章を読んでおけば、HTMLを読むときの解像度が上がるでしょう。
CHAPTER 3: HTMLの主要な要素
とても長い章です。章の内容は章題の通り、HTMLの要素をひとつずつ紹介していくものです。
章の内容は、かなりHTML仕様への準拠度が高い解説となっており信頼できます。その一方で読みやすさにも配慮されているのがとても良いです。HTMLをちゃんと理解したいが、HTML仕様を直接読みにいくのはとっつきにくいという読者の需要を見事に満たしています。各要素については使用可能な属性などもこと細かに解説されており、辞書的な用途にも耐える内容です。
とくに、各要素の解説については「アクセシビリティ上の注意点」が付記されており、実際の支援技術(スクリーンリーダー)の挙動などの情報も記載されているのが実践的です。
CHAPTER 4: 主要な属性とWAI-ARIA
この章は、前半は各要素に属さないHTMLの属性(グローバル属性)や、WAI-ARIAに由来する一連の属性などを紹介します。後半は雰囲気ががらりと変わり、実践的な題材に対してアクセシビリティを保ったマークアップをする方法を学ぶ内容となっています。
『HTML解体新書』という名前の本でここまで大きくアクセシビリティが取り上げられること自体が、Webとアクセシビリティの深い関係を象徴しています。実際、この章をちゃんと理解すれば高いアクセシビリティを保ったマークアップができると言ってもよいでしょう。そして、それは今時にHTMLを生業とする人には必要なスキルです。
WAI-ARIAに関わる一連の属性は、HTMLに対する理解が浅い人だとそもそも存在を知らないことすらありえるものです。そのような人たちにその存在を知らしめつつ、実際の利用法までカバーしているという点でその章は意義深いものです。
感想
最後に、この本全体に対する筆者の感想を述べます。
本の内容は、良くも悪くも著者らの個性が出ていない標準的な内容だと感じました。特に、この本はHTMLとアクセシビリティの関わりについて、(筆者が見る限り)世の中の標準的な見解を反映した内容に見えます。
この本では、HTMLのセマンティクスについては仕様を根拠とした厳密な解説をする一方で、アクセシビリティの話になると「実際のスクリーンリーダーの挙動はどうか」ということが根拠になり、仕様とは対極の方向に振れてしまいます。とくにstrong要素やem要素などの解説においては、デフォルトのロールが与えられないため1スクリーンリーダーの特別な挙動が期待できず、要素の有無によって意味が大きく変わるような表現は避けるべきだと解説されています。HTMLのセマンティクス上はこれらの要素に確実に特別な意味が与えられている一方で、アクセシビリティ上の観点から意味を表現できないので使わない方がよいという矛盾を抱えた解説内容になっています。
尤も、これはこの本に問題があるというわけではなく、現在のアクセシビリティ界隈の標準的な見解を反映した内容です。現在の一般的な見解では、アクセシビリティにおいては実際の支援技術がどう振る舞うかが全てであり、それがうまくいくようにマークアップすることがHTML文書のauthorの使命です。
余談として筆者の見解を挟むと、筆者はHTML仕様原理主義の立場をとっています。つまり、HTML(および周辺のWAI-ARIAやARIA in HTML)の仕様に準拠したマークアップを書いていればそれで万事うまくいくべきであり、それでうまくいかないのは支援技術の実装や関連仕様の整備が追いついていないからであって、それに対する配慮はPolyfillやワークアラウンドの類であるという立場です。とはいえ、このような立場は現状の多数派からは薄情なものとして批判の対象となるでしょう。
これは筆者の私情ですが、このあたりの矛盾した現状に対して確固たる立場を持って一石を投じるような内容であれば満点だったなあと思います。
最後に不満点を述べてしまいましたが、読者のHTML力やアクセシビリティ力を引き上げるという点では非常に優れた一冊です。筆者もこの先多くの人にこの本を勧める機会があるでしょう。現在の標準的な見解を反映した内容であるという点も、多くの人は標準的な時流に乗りたいでしょうから、その点では悪いことではありません。
95点です。
※点数は筆者の主観によるものです。
- ただし、MEMOとしてWAI-ARIA 1.2で専用のロールが与えられる予定であることにも触れています。↩