半年以上も前に書きっぱなしにしたことの続編。日頃よりスクリプトは動かないことを前提につくっている
だのCSSは好き勝手にやっていい
だの発言しているが、「じゃ、HTMLはどうなのよ?」という行間を(自ら)考えてみる。
前回の話は、構造に意味づける要素の規格を作ったというところまで。
この規格にそって文章を作成し、規格を解釈できるUA(ブラウザなどのソフトウエア)を使ってアウトプットすれば文意を伝達できるはずだ、という素敵なもくろみ。すべてのHTMLは読み手のためのものである。アウトプットの方法は意味ごとに装飾されたゴージャスなものかもしれないし、ただのテキストかもしれない。あるいは音声や点字や未来に開発される他の何かかもしれない。が、どの場合でも意味を伝える点では変わりない。それがHTMLが作られた、またHTMLを利用する目的だと僕は理解している。
HTML文章の先頭にはDTD(文章型定義)を置くことになっている。UAに「以下の文章は規格にそって作成された文章です」と宣言するわけだ。これを書いたから正統なドキュメントになるわけではなく、ましてや、おまじないなどではない。宣言したからにはルールに則って作成しなければならない責任を負う。
まず、本文である文章なりテキストを書き、マークアップ=意味の印づけしていく。本文作りとマークアップを同じ人間がやる場合は、簡単な作業でルールを守る以外にコツがあるとすれば素直に考えることくらいなもの。HTMLとは、CSSやjavascriptで使われる技巧からもっともかけ離れたものだといえる。想いを伝えたい衝動をとめられずに書いたラブレターに近いだろう(書いたことないけど)。
上手さつたなさはこの際別にして、文章である限り、それはなんらかの構造をもつことになる。ひとつ以上のパラグラフがあり、必要であればその見出しがある。くわえて、意味をこめた部分やとくに伝えたい部分を対応する要素でマークアップすれば良い。非常にシンプルで他の要素で代用するといった技巧の入り込む余地はない。もしも、ページ全体の整合性が壊れるとしたら、変えられるべきは本文のマークアップではなくページの構造、ブログでいえばテンプレのHTMLだと考える。
例えば、テーブルレイアウトを考えてみる。HTML製作者が本文とメニュー(に当る文章)をそれぞれセルだと考え<tabel>要素で段組(のようなもの作成)したとする。当然UAは本文=セル、メニュー=セルと意味を解釈する。それがUAのメインの仕事だからだ。だが、アウトプットの方法がセルを並列することだという保証はどこにもない。その結果、文章全体の意味が変えられて伝わるかもしれない。これは製作者の本意だろうか?
普通、文章やテキストのどこを読んでも段組という意味は見つけ出せない。ないものを意味づけすることが、不自然でそもそもの間違いだということになる。HTMLには意味を持たない要素<div>や<span>が用意されているのだから、ないもの(シュールだ)や、意味を持たせたくない部分をマークアップするには、それらを使うことで意味の伝達(意味のないものを伝達しない)は行われるべきである。
では、文章ではない部分のマークアップはどうなるか。例えば<script>要素。うちの場合DTDはXHTML 1.0 Transitionalなので、この宣言を守りページや文章の中でプログラムコードに<script>要素を使うには
の3通りしかない。これはコードの正誤よりも上位に位置するHTMLのルールだ。
1番目の方法はUAによっては本当のコメントとして扱われる場合や無条件でパージされる可能性がある。2番目の方法は(自分の知っている範囲の)UAで実装しているものはない。3番目の方法はUAの解釈まかせである。古いUAではそのまま表示したり、スキップするUAもある。
フェールセーフの観点からは、どの場合も要素内のコードは実行されないと考えるのが安全だ。これが最初の自分の発言につながっている。FC2ブログでは外部jsファイルを許可しているので<script>要素のsrc属性を使いソースコードを要素の外に出すことで一部は解決される。とりあえず、これが現状でのもっとも素直なマークアップだと思う。
javascriptを配布(テンプレ内に仕込んだり)する場合、もっとも留意すべきは「スクリプトが動くかどうか」ではなく「どのようにHTMLに組み込まれるべきか」である。HTMLの子である<script>要素を使う以上、それはHTMLのルールに従わねばならない。<script>要素はDTDのバージョンによって扱い方が違うので、コピペすればOKというものではない。わからなければAnother HTML-lintなどで検証するのが簡単確実。
javascriptはせまい環境でしか有効ではない。エラーを出したり文章の意味を変えてしまうような問題のある実行コードはユーザ側が任意に切ることができる。だが、組み込み方を間違えればHTMLそのものが破綻する。これはUA・ユーザとも修復する手段がない。
結論として、HTMLの使い方=マークアップは自然でシンプルな形にしていくことだと思う。自分でもすべて正しくできているとは思っていない。でも、正しくありたいと意識はしている。そこさえクリアすればWEBページのいわゆる”カスタマイズ”は好きなようにやって良いだろう。所詮はオマケなのだ。CSSという虚飾とjavascriptの見栄、それらすべて剥ぎ取っても中心に残るものこそがコンテンツであり、それを伝えるためにHTMLはあるのだ。(つづく・・・かも)
< 期待はずれというか期待どおりというか | 春嵐 > | 表紙へ戻る |
あと、デフォルトのスタイルシートをちびっと洗練させるだけでも、かなり違うと思うんだけどなぁ。-19日20時