導入
多くの人々はページのソースを見てコピー & ペーストすることで、元のサイトが上手に作成されているかを考えることなく HTML、CSS、JavaScript を学習しました。これは、過去には必要であったかもしれないが現在は無意味になっているコーディングの慣習を習得してしまうことを意味します。このページでは、時間がたつにつれて不要あるいは悪い慣習になった事柄を説明します。
Doctype
(X)HTML には 10 種類ほどの doctype があります。それらの違いはわずかです (違いがない場合もあります)。HTML5 の doctype の使用を推奨します。
<!DOCTYPE html>
これはすべてのブラウザ (Internet Explorer 6 を含む) で標準準拠モードになります。
<meta> 要素と charset
属性
以下の記述を含むソースコードを見ることがよくあります:
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
ところが、すべての Web ブラウザ (Internet Explorer 6 を含む) は以下のように短縮した場合でも同様に動作します:
<meta charset="UTF-8" />
すばらしい リバースエンジニアリング や プラグマティズム によってこの知識を獲得しました。これを使用してください。
- 【訳注: HTML5 ではこの挙動を元にして、この構文が正式に採用されたという経緯があります。HTML5 で用いるのが良いでしょう。また、HTML5 で以前の構文を利用する事もできます。】
- 【訳注: Web 開発者の中には、適切なセマンティクスやユーザビリティを持つ HTML となっているかチェックする為に Lynx というテキストブラウザを利用する人がいます。新しい構文を用いると Lynx での表示に支障が出る場合がある点に注意して下さい。】
存在しない <meta>
要素
多数の非推奨、非標準、不使用な値がいまだにサイトからサイトへコピーされています。特に以下の値は使用しないでください:
<meta name="MSSmartTagsPreventParsing" content="true">
。これは Internet Explorer 6 のベータ版でしか役に立ちません。このバージョンはもはや使用されず、またスマートタグ機能は削除されており復活することはないでしょう。<meta name="robots" content="all">
。robots 値が存在して、また正当であれば、all
のような存在しない値を使用してはいけません。既定値はindex, follow
であり、これは基本的に、存在しない値all
で想定される動作です。<meta>
全体を削除してください。<meta name="copyright" content="
…
">
。この meta は存在しません。このタグは削除して著作権表示のページまたは箇所を作成して、それにrel="copyright"
値を持つ<link>
HTML 要素でリンクしてください。<meta name="rating" content="
…
">。
この meta は存在しません。<meta>
全体を削除してください。
スクリプト内の HTML コメント
かつては一部のブラウザのみが <script>
タグを認識していました。そのためスクリプトとして解釈されるべきテキストを、ブラウザが表示してしまうことがありました。この現象に対する自然なアイデアは、スクリプトを HTML のコメントに収めることでした。この方法では、スクリプトを実行するブラウザはそのスクリプトを実行し、スクリプトを認識しないブラウザはスクリプトを無視しました。
そのような時期から、我々は以下のような記述を受け継いできました:
<script><!-- var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "https://www."); document.write(unescape("%3Cscript src='" + gaJsHost + "bla.com/ga.js' type='text/javascript'%3E%3C/script%3E")); //--> </script>
または以下のような記述:
<script type="text/javascript"> <!--//--><![CDATA[//><!-- Blabla.extend(MyFramework.settings, { "basePath": "/" }); //--><!]]> </script>
このような記述は、今日では無意味です。スクリプトを実行しないブラウザであっても、 <script>
タグを無視します。スクリプトだけを <script>
要素の開始タグと終了タグの間に記述してください。また、src
属性で指定する別のファイルにスクリプトを含めることもよいです。合わせて、HTML5 の async
属性や defer
属性を用いることも考えてみましょう。
もはや使用すべきではない要素
font
<font> タグに代わり、CSS を用いて要素や id/class セレクタにフォントスタイルを適用してください。
b, i, u
これらは少々議論の余地がありますが、適切な場合はできる限り、それぞれ <strong>
、 <em>
、CSS (text-decoration:underline
) を適用した <span>
を用いるようにしてください。
これらのうちどの要素を選択するかは、裁量に任せます。一部の開発者向けページでは、単純に <b>
を <strong>
で、<i>
を <em>
で置き換えるようにアドバイスしています。このアドバイスに従うことは悪い考えです。 <strong>
は特に重要な記述のため、一方 <em>
はそれ以外に強調する記述のための要素です。たとえば、文字をイタリック体にする目的で単純に <em>
を用いるのは悪い考えです。強調しないイタリック体の文字列は、CSS で font-style:italic
を用いて実現してください。同様に、書籍や芸術作品のタイトルは伝統的にイタリック体のテキストで記載しますが、このような箇所は <em>
や <i>
より <cite>
用を用いる方が、より意味を持ちます。