1.HTML Living Standard という標準仕様
こちらの記事を読んで、改めてHTMLの標準仕様についてキャッチアップしました。
ある程度Webアプリが作れると、このあたりの動きに直接影響はしないけど、知っておくべき仕様については、おざなりにすることが多いです。
こちらの記事を読んで、なるほどと思いました。
現在は、W3Cの策定した仕様ではなく、「WHATWG(Web Hypertext Application Technology Working Group)」という、Apple、Mozilla、Opera、、Microsoftも加わっている団体が作っていると考えて良さそうですね。
2.HTML5、W3Cの仕様と違うのか?(=> ほとんど同じという指摘あり)
以下の記事に記載がありますが、ほとんど同じ仕様で、タグや属性が一部違うだけのようです。
とりあえず、ほとんど一緒だけど、今は、HTML Living Standardが標準だと考えてもいいのかなと考えています。
いや、ここが大きく違うんだよ!という指摘があれば、コメントで頂きたいです。
3.HTMLの仕様の変遷
HTML Living Standardは、HTML5と大きく変わらないと個人的には感じています。そして、W3Cが策定したHTML5とHTML Living Standardは、断絶するものではなく、純粋にこれまでの変遷の帰結だと考えています。その前提で、HTML Living Standardまでの仕様の変遷についての感想を書きます。
(1)1つのコンテキストの情報を構造化するのがスタート
HTMLは、元々、論文をマークアップして、その構造を定義するために作られたと理解しています。
目録にするために、文書のパーツを特定化することや、読みやすさに寄与したと思います。
(2)インターネット上での検索最適化
それがインターネットでは、情報提供手段として使われるようになり、より"検索"の利便性向上になるように仕様が補完されてきた。
新しいタグに、searchがあるが、これは上記を強く意識したものだと思う。
(3)論文とは異なるレイアウト
そして、論文とは違う、レイアウトがWebサイトでは採用されるようになる。例えば、ヘッダやフッタ、左メニューなどは論文にはないレイアウト。フッタは論文でも、注釈としてあるにはありますが。
このレイアウトの変化に対応したタグとしては、menu、header、footerなどに該当すると思います。
(4)アプリのための、静的な構造だけでない動的な構造を定義する仕様
さらに、単なる文書を提供するにとどまらず、アプリのUIを定義するようになりました。
それは、当初、文書の構造化の為に作られたところからは大いなる飛躍にも思います。
formタグもとより、属性などをみても、HTML5やHTML Living Standardは、どちらかというとアプリを意識したものは多いと思います。
data、draggableなどの属性を挙げることができると思います。
こうした、HTMLは使われる場所が広がることに応じて、より細分化し、仕様が追加されている。
タグを上手く使うことで、マークアップだけでなく、JavaScript やTypeScriptでのコーディングのセマンティックをより向上させることができる。
3.コーダー(AI含む)にとって判別しやすいセマンティック・マークアップ
初期のころから、単なる言葉に対して、文書や人との関わりのなかでの関係性や役割を定義してきたマークアップ。
単なる論文からWebアプリへと利用が変遷していくことで、セマンティックの細分化に対応してきたのが、HTML仕様の変遷だと思います。
セマンティックを意識することは、Webプログラマーにあっては、「可読性」を高めるうえでもとても大切なことだと個人的には感じます。
極論、divタグであらゆるものを定義してもブラウザ上ではそれなりに動きます。でも、コーディングする上で、一つ一つの単語や単語のまとまりがどのような役割をしているのかを認識することは、今後以下のような点でメリットがあるのではと感じています。
それは、AIによる情報の解釈です。AIからすれば、文脈をみて判断することができるのでわざわざマークアップをする必要はないかもしれません。ただ、WebサイトやWebアプリは、「文章」だけで構成されるわけではなく、「Webサイト・Webアプリ」というコンテキスト・レイアウトに依拠した構造を持っています。
それを明確に判別できるのが、マークアップではないかと思います。
セマンティックマークアップは、「コードレベル」で意味を把握していくAIやプログラマーにとっては、作業効率化のために必要なのではと、「漠然と」感じます。
特に、明確な情報提供の記事ではないですが、個人的な感想となります。