はてなブログからの転記

いわゆるホームページを作成中。

ブログではなく、昔ながらの「いわゆる」ホームページを作成中。

http://aobadaiakira.webcrow.jp/

今のご時世、はてなブログを始めとするコンテンツ自動生成のウェブサービスを使えば、手軽に自分の思いの丈をウェブ上に公開できるわけだが、この辺で初心に帰って、ウェブとは何なのか、HTMLとは何なのかを、自らキーボードを叩きながら考えたくなったからだ。

それで、ウェブクロウという、昔でいうところの「無料ホームページ・スペース」に登録した。

www.webcrow.jp

容量は1GBだ。

PHPやデータベースを使わなければ、つまり、静的なホームページの公開なら、無料であるにもかかわらず広告が表示されることもない。

同時に frickr にも登録した。容量1TBで、アップロードできるファイル1つの大きさも(何MBだったかは忘れたが)巨大で、私の持っている2000万画素のデジカメもわざわざ縮小しなくてもアップロードできる。

この両者の合わせ技を使えば、昔ながらの静的ウェブサイトを思う存分作れる。しかも広告表示無しで。

良い時代になったものだ。

さて、久しぶりに(ほとんど10年ぶりくらいか?)HTMLを勉強し直している最中なのだが、世は正に「HTML5」時代。

そのあまりの進化っぷりというか、言語仕様の変わりっぷりというか、いや、言語仕様というより「考え方」の変わりっぷりに驚いた。

浦島太郎状態だ。

考え方が「変わった」というより、昔に比べて「本来の考え方が徹底された」というべきか。

本来の考え方」の意味は、

  • HTMLは、文章の意味構造をマークアップする言語であり、表示をマークアップする言語ではない。
  • 表示の仕方はCSSに記述する。

……という事だ。

これ自身は、10年前から変わっていない。いや、HTMLが生まれた当初から変わっていない。

しかしHTML5は、私の知っている昔のHTMLよりも「文章の構造を表現する事に特化する」というその特化ぐあいが一段と深化しているようだ。

一番驚いたのは、sectionタグの導入だろうか。

sectionタグなどを使って、文章の「入れ子構造」「階層構造」を厳密に書きなさい、と、HTML5さんは言っている訳だ。

考えてみれば、h1~h5 という「タグ名それ自体に含まれる数字」で階層を表現するのは、おかしい。

今、私がmarkdownで書いているこの記事を含め、従来のHTMLに於いては、文章の階層構造はh1~h5タグが受け持っていた。

例えば……

  • 青葉台旭の小説集
    • 「ハーレム禁止の最強剣士」
      • 第一話 少年剣士アラツグ……
        • 第一章
        • 第二章

という階層構造を持った文章があったとしよう。 これは今までのHTMLでは以下のように記述する。

<html><body>
 <h1>青葉台旭の小説集</h1>
   <h2>長編小説「ハーレム禁止の最強剣士」</h2>
     <h3>第一話 少年剣士アラツグ……</h3>
       <h4>第一章</h4>
       <h4>第二章</h4>
</body></html>

上のHTML文章は、字下げを使って、いかにも階層構造を表すように見せかけているが、h~タグというのは、あくまで表題を記述するタグであって、文章の階層を記述するための物ではない。

ただ、h1~h5 というようにタグの名前それ自体に「序列を表す数字」が含まれているため、h~タグをあたかも「仕切り線」のように使って文章を切り分け、さらにhに続く番号によって、疑似的に階層を表しているに過ぎない。

実際には……

<html><body>
 <h1>青葉台旭の小説集</h1>
 <h2>長編小説「ハーレム禁止の最強剣士」</h2>
 <h3>第一話 少年剣士アラツグ……</h3>
 <h4>第一章</h4>
 <h4>第二章</h4>
</body></html>

という風に、一つの階層の中に線形に列挙されているに過ぎない。

驚くべきことだが、「構造化マークアップ言語」であるはずのHTMLに於いて、HTML5以前は「文章それ自体を階層化するための専用タグ」は無かった。

もちろん今までも、汎用の階層化タグである div を使って、ブログを始めとするウェブサービスはコンテンツを構造化していた訳だが、div それ自体には意味がなく、あくまでブロックを表しているだけの汎用ダグ、つまり「何でも屋」だ。

文章構造化専用タグ、article、section。

上の例をHTML5で表すと以下のようになる。

<html><body>
 <h1>青葉台旭の小説集</h1>
 <article>
   <h1>長編小説「ハーレム禁止の最強剣士」</h1>
   <section>
     <h1>第一話 少年剣士アラツグ……</h1>
     <section>
       <h1>第一章</h1>
     </section>
     <section>
       <h1>第二章</h1>
     </section>
   </section>
 </article>
</body></html>

うむ。美しい。きれいな弓なりの字下げになっている。

これでこそ本来の意味でのHTML=「印付け(マークアップ)によって構造化された文章」だ。

ところで、読者の皆さんは、上のHTML文書に於いて「全ての見出しタグが h1 になっている」ことに気づかれたと思う。

古典的なHTML記述の規約では「1つのhtmlファイルに記述できる h1 タグは1つだけ」という事になっていたはずだ。

しかし、この規約が表しているのは「h1を持てるのは、文章全体を表すトップレベルの階層だけ」という事だ。

すなわち暗黙のうちに「h1タグの名前に含まれる『1』という数字に『第1階層』という構造的な意味を持たせている

これは「開始タグと終了タグで囲まれたブロックの入れ子構造によって文章を階層化する」というHTMLの主義からして、いかにもマズい。

おそらくW3Cの最終目的はh1~h5という見出しタグから、紛らわしい「数字」を取っ払う事ではないか。

その布石なのかどうか、HTML5に於いてはh1タグは1つのHTMLファイル中に何個でも置いて良いことになっている。

そりゃそうだ。h1タグには、もはや「一番上(一番外側)の階層」という意味は背負わされていないのだから。

「h1~h5 で使い分けていた見出しフォントの大小」は、どうすれば良いかって?

それこそ見た目の話で、HTML自身が背負うべき問題では無いでしょう。div でくくってクラス分けして、CSSでどうぞ……という訳だ。

そうは言っても、タグは少ないに越した事は無い。

これからテキストエディターでしこしこHTMLを書いていこうとしている私としては、なるべくタグの少ない「素のテキスト」に近いHTMLを書いていきたい。

だから、いたずらに div タグを増やしたくない。

そもそも論を言っても仕方のない話だが、HTML が作られた本来の目的は「マン・マシン・リーダブル」すなわち「人間にとってもコンピュータにとっても読みやすい文章フォーマットの策定」だったはずだ。

HTMLの「え」の字も知らない人間がHTMLソースを読んでも、とりあえずは文章の意味が通じる事を目的としていたはずだ。

しかし「ウェブ2.0」以降、ウェブサーバーが動的なアプリケーション・サーバーと化し、HTMLブラウザーがjavascriptバリバリの「グラフィカル・インターフェース実行環境」と化して、自動生成されるHTMLソースは、とても「文章」と呼べた代物では無くなった。

誤解しないでほしいが、それが悪いことだと言っている訳では無い。

はてなブログを始めとする様々なウェブ・サービスは、もはや私にとっても必要不可欠なものだし、その便利さの恩恵は十二分に頂いている。

ただ、今のHTMLはその初期の目的である「人間にとっても機械にとっても読みやすい文章」からは遠く離れて、ウェブ・サーバー⇔ウェブ・ブラウザー間のやり取りのための、機械が機械に指令を送るためのプログラミング言語というか、データ記述言語になってしまった。

「人間のための自然言語であると同時にコンピュータのためのマークアップ言語」という本来HTMLが担うべき役割は、今なら markdown が担っているという事だろう。

今回、自身のウェブサイトを作るにあたり、私は、テキスト・エディターで書いて読める、すなわち「HTMLを知らない人にが読んでも、ちゃんと日本語として理解できる」HTMLをアップロードしていきたいと思っている。

2016-09-09 23:55