{{category 正しいHTML文法}} {{outline}} !!!煽動は理念を持って HTMLの文法ルールに従うべきだと言ってる人達は、ルールに従わない人にルールを押し付けようとしているわけではありません。公共の利益に繋がる理念{{fn HTMLで言えば文法ルールに従うべきということ}}を普及しているだけあり、逆に、公共の利益に反する理念を広めようとするなと言ってるだけです。決して、何らかの事情によってルールに従えない人に、ルールに従えと言っているわけではありません。 HTMLの文法ルールに従いたくないなら従わなければ良いんです。既存の文書を直したくないなら直さなければ良いんです。ルールに従えと誰にも強要することは出来ません。自分でやりたいようにやれば良いんです。適用範囲が自分だけのルールなら、自分が勝手に決めれば良いことです。しかし、その適用範囲が自分以外に拡張される場合は、話が別です。web上で公開した文書を見るのは自分だけではありません。それは、他人に見せるために公開しているのだから、当然のことですね。公開文書の中で統一ルールに従う必要がないと書くことは、他人もそうするように煽動する行為です。個人的我が侭{{fn 我が侭は個人的と決まっているのだが・・・}}に基づいて公共の利益を害するような煽動を行うことは迷惑千万です。 俺流、大いに結構。でも、俺流は俺の中だけにしてください。俺流を通すために他人を巻き込む必要は全くありません。ましてや、高い理念に基づいて活動している人を、俺流のために非難することは、傲慢以外の何物でもありません。それは、ようするに「赤信号みんなで渡れば怖くない」と言ってるのと同じで、赤信号を渡ってる自覚がありながら一人で渡る勇気がないから他人を巻き込もうとしてるだけです。俺流が自由だと思うなら、誰がついてくるかなんて気にする必要はないはずです。たとえ、一人っきりになろうとも堂々と俺流を貫いてください。追従者がいなくなれば止める程度の弱い信念では、俺流に全く説得力がありません。 !!!論理構造は最初からある HTMLは論理構造を記述する物だと言うと、必ず、次のような反発があります。 *物理構造を書く自由を奪うな *論理構造なんか考えるのは面倒だ まず、前者については、「物理構造を書いてはいけない」と言われていると思うのは勘違いです。いや、むしろ、「物理構造を今までよりもっと簡単に書ける」が正解です。詳細は後で述べます。 後者についても、典型的な勘違いです。HTMLを記述するために論理構造を作る必要はありません。どんな文章にも初めから論理構造があるのです。良く分らないという方は、何のために物理構造を書くのか考えてみてください。何のために、文字の色、大きさ、太さ、フォントを変えるのでしょうか。何のために、下線や取消線を入れるのでしょうか。何のために、字下げをするのでしょうか。それは、見出し、強調、引用、その他の論理的意味を明示したいからではないでしょうか。文章を書くのは、言葉で何かを伝えたいからです。アスキーアート等の一部例外を除いて、美術的表現のために文章を書く人はいません。だから、文章は、必ず、見出し、強調、引用等の論理構造を持っているのです。括弧や鍵括弧なども論理構造を示す一種の表現方法です。空気と同じように有って当たり前だから存在を忘れているだけで、論理構造は間違いなく初めからあるのです。初めからある物を明示する、ただ、それだけのことなのです。 {{ref_image markup.png}} 論理構造への変換が面倒だと思うのは全くの勘違いです。どんな人であっても、表現しようとする思想自体は論理構造を持っているはずなのです。それを無意識のうちに物理構造に変換してしまうから、論理構造への再変換の手間が生じるのです。物理構造に変換しなければ、そのままテキスト化とマークアップだけを行なえば済むのです。 !!明示するメリット 論理構造を明示せず、物理構造から推測してもらうやり方では、人間が見ても誤解が生じる危険性は否定できません。機械なら、尚更、論理構造を把握することは困難でしょう。 機械が論理構造を把握できないことのデメリットの最たる物には検索エンジンの精度があります。今の検索エンジンはタイトル要素や見出し要素を重視して、より適切なページに利用者を誘導しようとします。しかし、これらの要素が不適切に使われていると、利用者を目的とは全く違うページに誘導してしまいます。貴方にも、何か調べ物をしようと検索エンジンを利用して、全然関係ないページに誘導された経験が、一度や二度はあるでしょう。さらに、今、タイトル要素や見出し要素以外の要素は多くのサイトで正しく使われておらず、それらの要素は検索エンジンの精度向上には全く役に立ちません。機械に出来ることを機械に出来なくしているのでは、人手の無駄使いですね。検索エンジンの精度を上げたいと思うなら、まず、正しいHTMLの普及に努めるべきでしょう。 その他、機械が論理構造を把握できないと、視覚障害者にとってのデメリット等もあります。 !!作成者の利便 HTMLでは、物理構造の記述は禁止されていません。ただ、最新版で物理構造を目的としたタグの大多数が廃止され、論理構造と対でなければ物理構造を書けなくなっただけです。というのも、文章には、論理構造と対にならない物理構造は存在し得ないはずだからです。さらに、物理構造を別ファイル(CSS)として分離すれば非常に便利なことになります。 CSSを使うことで、物理構造の記述は今までよりずっと楽になります。とくに、複雑な物理構造を指定する場合は、CSSを使うとかなり楽になります。というのも、その都度、複雑な指定をする必要がなくなるからです。ただ単に論理構造だけ書いておけば、同じ論理構造の所は全てCSSに指定した通り表示してくれるからです。フリーで公開されているCSSファイルもあるので、それを使えば、格好良いデザインのwebページが簡単に作れます。 物理構造記述主義から論理構造記述主義へ移行すると、驚くほど手間が減ります。頑に拒絶している人も、論理構造記述主義へ移行してみると、「何故早く移行しなかったのか」「俺って馬鹿だなあ」と思うに違いありません。移行は早ければ早いほど無駄な手間がかからずに済みます。 !!物理構造記述主義の欠陥 たとえば、表組を見栄えのために使う人が居ますが、こうした使い方はすべきでないとされています。なぜなら、表組は一次元以上の項目と内容の対応を示す物であって、見栄えのために存在するわけでないからです。現在は、多くのブラウザが表組を縦横に規則正しく並べて表示しますが、それは、それ以上に優れた表示方法を誰も思いつかないからです。もっと優れた表示方法を誰かが思いついたら、見栄えが全く違う物になることだってあり得ます。見栄えを統一しなければならないと言ってしまうと、そうしたHTMLの進化をも否定することになります。 もっと凄い話をすると、現在のHTMLでは三次元の表組も作ることが出来るようです{{fn かなりややこしいけど}}。そうした三次元の表組を平面に表示する方法については、確立された方法が存在しません。当然、見栄えはブラウザによって違う物になるはずです。こうした表組は、物理構造記述主義では絶対に語ることの出来ない物です。 「そんなことを言われても代替手段がなければ表組みを使うしかない」と言う人は、最初に書いた物理構造を禁止していない旨の記述を思い出してください。表組みと同等の物理構造を記述する方法は、きちんと用意されているのです。たとえば、このページがそうです。CSS対応のブラウザで見るとメニューが左に表示されているでしょうが、HTMLソースを見るとメニューは一番下に書かれています。このように文章の配置を操作するだけなら、表組みを使わずともCSSで実現できます。 !!!ブラウザ非依存の重要性 次のようなことを書いているサイトを良く見かけます。 ""○○Ver.xで正しく表示されるように記述してあります ""○○Ver.xで表示を確認しています ""○○Ver.x以降で閲覧してください はっきり言って全く無意味です。{{fn 実話だが、某政府系サイトに「ブラウザver4.以下では表示が乱れる場合があります。ver4以上での観覧をお勧めします」と書いてある。「観覧」も笑ってしまうけど「ブラウザ」とはどのブラウザなのだろう?}} *[Another HTML-lint gateway|http://openlab.ring.gr.jp/k16/htmllint/htmllint.html]等で文法チェックをすればこの記述は不要 *わざわざ特定のブラウザに限定するメリットは無い *特定のブラウザでしか読めないなら、それ以外のブラウザではこのメッセージ自体が読めない 正しく表示されない原因の99.99%は文法エラーにあります。逆に言えば、文法エラーさえなければ、特定のブラウザで見えなくなることは、まず、あり得ません{{fn 見えなければ、それはブラウザのバグ}}。webブラウザの多くは、文法エラーがあっても、それなりに表示しようとします。しかし、文法エラーに規則性はありません。だから、文法エラーにどんな対処をするかは、ブラウザごとに違います。これが、ブラウザごとの見え方の差を生じさせる原因です。しかし、そもそも、文法を正しく書くことが正論なのであって、文法エラーがある文書の見え方を論じることは本末転倒なのです。 !!エラー訂正機能依存原理主義の限界 !原理的に不可能 一番普及しているブラウザの見え方に合わせれば良いと主張する人も居ますが、それは、全くナンセンスです。なぜなら、そんなことは、当の一番普及しているブラウザでさえ不可能だからです。それを言ったら、バージョンアップは一切出来なくなります。何故なら、仮に、百歩譲って独自規格をデファクトスタンダードとして受け入れたとしても、文法エラーは決してデファクトスタンダードには成り得ないからです。同じメーカーのブラウザであっても、プログラムを修正する限り、文法エラーへの対応は変化してしまいます。なぜなら、文法エラーに規則性はないからです。規則性がないものへの対応を常に一定にすることなど、技術的に不可能なことです。何故なら、プログラムは想定した動作をするように作る物だからです。 規則に従う文章に対する動作を想定することは出来ます。しかし、規則性がない文法エラーの全てのパターンを想定することは不可能です。想定外の文法エラーであってもwebブラウザは可能な限り表示しようとします。しかし、それは、結果的に表示できているだけであって、バージョンアップ後にも同様に表示される保証はありません。それは、プログラマーが文法エラーを排除するということではありません。そうした意図が全くなくても、想定内の動作を変更すれば、それにつられて想定外の動作も変化します。プログラムは、そうした性質を持ったものです。それを防ぐには、エラーの事例を全世界の全てのwebページから拾い上げ、それを全てwebブラウザの仕様に盛り込むしかありません。全webページを調べるだけでも膨大な手間です。そして、それを元にした仕様書も極めて複雑となります。文法規則は構造的に整理されたものとなっていても、文法エラーには規則性がないから全てのケースを列挙しなければなりません。そんな複雑な仕様を元にプログラムを開発する手間も超膨大です。そこまで苦労しても、調査漏れがあれば、表示できなくなるページが発生します。プログラムを開発している最中にも、また、新たな文法エラーが生まれてくるでしょう。そうなれば、いたちごっこです。と、ここまで言えば、文法エラーに合わせろという要求{{fn ブラウザのエラー訂正機能依存原理主義}}が如何に現実離れしているか、よく分かるでしょう。つまり、文法エラーに合わせろと要求することは、あらゆるwebブラウザの進化を否定するのと同じ行為です。技術の進化の産物を利用してインターネット上にwebページを公開する一方で、技術の進化を否定するのでは、全く持ってナンセンスです。 それに比べれば、文法エラーのないブラウザ非依存の文書を書くことは、とても簡単なことです。そして、それ以外に問題を解決する方法はありません。簡単で確実な方法を否定して、難しくて不確実な方法を推奨するのはナンセンスです。そのようなナンセンスを押し通すのは、他人に手間を押し付けたいという動機がある{{fn 文書を直すのが嫌だから「ブラウザの方が俺流に合わせろ」と言う。単なる我が侭}}からです。しかし、誰だって、他人に手間を押し付けたいと思います。誰かが我慢しなければ、問題はいつまで経っても前進しません。我慢したくないと思うのは自由です。しかし、「俺様だけは特別だ」という論理は成り立ちません。 !ブラウザを選ぶ権利 私はMacintoshを使っていますが、某シェア最大のブラウザや標準ブラウザ[Safari|http://www.apple.com/jp/safari/]には目もくれず、[iCab|http://www.icab.de/]を愛用しています。その理由は、次の通り。 *動作が軽かった{{fn 発表当時は他社ブラウザより圧倒的に軽かった}} *ダウンロード機能が充実している *メニューからJaveScriptを一発でON/OFFできる *コンテキストメニュー{{fn 右クリックで出るヤツ}}が豊富 *フレームのスクロールバーを強制的に表示できるので、小さい画面等で閲覧不可なページも閲覧できる([参考|http://www10.ocn.ne.jp/~i-zac/good.html#frame]) *簡易なエラーチェック機能を備えている *エージェント自称名その他のカスタマイズ項目が多い ユーザーには、各自の好みで、ブラウザを自由に選ぶ権利があるはずです。しかし、ブラウザのエラー訂正機能依存原理主義者は、皆で同じブラウザを使うことを強要し、ユーザーの自由な選択を許しません。高機能、軽量性、操作性、省メモリ、セキュリティ強化、その他の事情で、ブラウザを自由に選ぶことを許しません。きっと、彼らは、今使っているブラウザより魅力的なブラウザが登場しても、全く見向きもしないのでしょう。 !競争がなくなると・・・ 現在のシェア最大の製品を将来も使い続けるという人にとっても、競争が生じることによって多大な恩恵を受けます。その典型的な事例として、[PHS|http://taste.sakura.ne.jp/index.cgi/computer?page=%B7%C8%C2%D3%C4%CC%CF%C3%CE%C1%B6%E2%A1%F5%A5%C7%A1%BC%A5%BF%C4%CC%BF%AE%C4%EA%B3%DB]が挙げられます。現在の[PHS|http://taste.sakura.ne.jp/index.cgi/computer?page=%B7%C8%C2%D3%C4%CC%CF%C3%CE%C1%B6%E2%A1%F5%A5%C7%A1%BC%A5%BF%C4%CC%BF%AE%C4%EA%B3%DB]の[携帯市場でのシェアは5%程度|http://www.tca.or.jp/japan/database/daisu/]です。これまで、[PHS|http://taste.sakura.ne.jp/index.cgi/computer?page=%B7%C8%C2%D3%C4%CC%CF%C3%CE%C1%B6%E2%A1%F5%A5%C7%A1%BC%A5%BF%C4%CC%BF%AE%C4%EA%B3%DB]に見向きもしなかった人は圧倒的多数でしょう。しかし、そうした人も[PHS|http://taste.sakura.ne.jp/index.cgi/computer?page=%B7%C8%C2%D3%C4%CC%CF%C3%CE%C1%B6%E2%A1%F5%A5%C7%A1%BC%A5%BF%C4%CC%BF%AE%C4%EA%B3%DB]の携帯市場参入の恩恵を受けています。最大の恩恵は、料金の大幅な低下でしょう。[PHS|http://taste.sakura.ne.jp/index.cgi/computer?page=%B7%C8%C2%D3%C4%CC%CF%C3%CE%C1%B6%E2%A1%F5%A5%C7%A1%BC%A5%BF%C4%CC%BF%AE%C4%EA%B3%DB]が参入する前の携帯通話料は馬鹿高でした。しかし、[PHS|http://taste.sakura.ne.jp/index.cgi/computer?page=%B7%C8%C2%D3%C4%CC%CF%C3%CE%C1%B6%E2%A1%F5%A5%C7%A1%BC%A5%BF%C4%CC%BF%AE%C4%EA%B3%DB]の参入によって、携帯各社は、シェアを奪われないために、料金の大幅な値下げを余儀なくされました。今の料金体系があるのは、間違いなく、[PHS|http://taste.sakura.ne.jp/index.cgi/computer?page=%B7%C8%C2%D3%C4%CC%CF%C3%CE%C1%B6%E2%A1%F5%A5%C7%A1%BC%A5%BF%C4%CC%BF%AE%C4%EA%B3%DB]という競争相手のおかげです。 webブラウザも競争によって発展してきました。しかし、ブラウザのエラー訂正機能依存原理主義者の主張するように、皆が同じブラウザを使わなければならないのでは、競争が生じる余地がありません。競争相手が居なくなれば、機能向上や性能向上、コストダウンの努力は必要なくなります。結果として、ユーザーは高価で不便なブラウザを使い続けなければならなくなるのです。ブラウザのエラー訂正機能依存原理主義を主張することは、このような形で自己の不利益として跳ね返って来ます。それでも、ブラウザのエラー訂正機能依存原理主義を貫くのでしょうか。 !!継ぎ接ぎだらけのその場凌ぎ規格の限界 ブラウザメーカーの都合で独自規格を定めて、それが、デファクトスタンダードになると、後で大きな問題になります。いや、問題になりつつあった{{fn 論理構造のないデタラメなwebページが量産され、執筆者の意図が不明確となった}}からこそ、論理構造と物理構造を整理するという整理がなされたのです。メーカーは、ただ、現時点での商業的都合のみに基づいて、勝手に規格を拡張します。そして、そうしたメーカーが複数いれば、互換性のない独自規格が乱立することになります。仮に、それらの規格を一本化することに成功したとしても、拡張性に難があったり、グチャグチャで分かりにくい規格になったりします。それは、その場しのぎで好き勝手な拡張をしたせいです。だからこそ、将来を見越した標準化団体が、将来の拡張性を確保し、分かりやすい整理された体系を維持するように、標準規格を策定し、それに従うことが重要なのです。 !!!参考 {{ref_image wtw.png}} [割と正しいWebPage|http://www3.tokai.or.jp/shine/wtw/] !!文法チェッカ *[Another HTML-lint gateway|http://openlab.ring.gr.jp/k16/htmllint/htmllint.html] !!解説 *[ごく簡単なHTMLの説明|http://www.kanzaki.com/docs/htminfo.html] *[好ましいHTML文書を書くための方法と考え方|http://www.asahi-net.or.jp/~wq6k-yn/konomac.html] *[HTML鳩丸倶楽部|http://www.ne.jp/asahi/minazuki/bakera/html/hatomaru.html] *[PC Tips|http://members.jcom.home.ne.jp/pctips/] !!批評 *[いくつかの書籍のあらさがし|http://openlab.ring.gr.jp/k16/htmllint/findfault.html] *[あやしい本|http://www.asahi-net.or.jp/~jy3k-sm/i_net/books.html] *[のけぞる本!|http://www.ne.jp/asahi/minazuki/bakera/html/book/] *[「トンデモ」な「ホームページ入門」を斬るコーナ|http://members.jcom.home.ne.jp/pctips/Tondemo/] *[いくつかのHTMLエディタについて|http://openlab.ring.gr.jp/k16/htmllint/htmleditor.html] !!興味深い話 *[「正しい HTML 」 = 「正しい日本語」|http://piro.sakura.ne.jp/latest/flakes/018nihongo_html.html] *[デースケドガーの文法チェック 正しいHTMLとSEO|http://seo.blog4.fc2.com/blog-entry-60.html] //*[割と正しいWebPage|http://www3.tokai.or.jp/shine/wtw/] !!正しいHTMLと見栄えを両立した事例 *[娘娘飯店しるきぃうぇぶ|http://www.remus.dti.ne.jp/~a-satomi/] !!殊勝な公共団体 *[福井県 1.正しいHTML(XHTML)の使用 福井県ウェブページ作成ガイドライン|http://www.pref.fukui.jp/guideline/valid.html] !!企業向け *[ホームページ作成代行とSEO 東京/大阪/千葉|http://www.get-cool.com/] *[ホームページ制作・作成 名古屋 愛知県 WEBサイトのSEO対策の株式会社アイプレス|http://www.i-press.jp/] {{lastmodified}} {{category_list 正しいHTML文法}}