この内容は古いバージョンです。最新バージョンを表示するには、戻るボタンを押してください。
バージョン:5
ページ更新者:guest
更新日時:2026-06-11 07:07:02

タイトル: DOCTYPE宣言
SEOタイトル: HTML DOCTYPE 宣言完全ガイド(HTML5 / Quirks Mode / Standards Mode)

この記事の要点
  • 現代の DOCTYPE は 一択(HTML5 / HTML Living Standard)
  • 昔は HTML 4.01 / XHTML 1.0/1.1 用に SGML 由来の長い DOCTYPE が必要だった
  • DOCTYPE 無しだと Quirks Mode(互換モード)で古い IE 互換挙動 → レイアウト崩れの原因
  • DOCTYPE 有り → Standards Mode(標準モード)で現代の CSS 仕様通り描画
  • 確認は document.compatMode: CSS1Compat なら標準、BackCompat なら Quirks

結論: 現代の HTML はこれだけ




    
    ページタイトル


    

Hello

HTML 文書の先頭に必ず書きます。これがあるとブラウザはStandards Mode(標準モード)で描画します。大文字小文字は区別されませんが、慣習的に大文字で書きます。

DOCTYPE の歴史

バージョンDOCTYPE由来
HTML5 / Living Standard2014 ~ 現代。極限まで短縮
HTML 4.01 StrictSGML の DTD 参照
HTML 4.01 Transitional非推奨タグ許容版
XHTML 1.0 StrictXML ベース
XHTML 1.1モジュール化 XHTML

HTML5 で DOCTYPE が 15 文字に縮んだのは「ブラウザをStandards Modeに切替えるためだけのスイッチ」と割り切ったため。SGML / XML としての形式的意味は捨てられました。

Quirks Mode vs Standards Mode

ブラウザは DOCTYPE を見て2 つの描画モードを切り替えます。

モード挙動発動条件
Standards ModeW3C / WHATWG 標準通り
Almost Standards Mode標準 + 一部 IE 互換(インライン画像下の空白等)HTML 4.01 Transitional 等
Quirks Mode古い IE 互換(box-sizing、margin 等が異なる)DOCTYPE 無し / 古い / 文字列誤り

Quirks Mode で起きるトラブル例





    

レンダリングモードの確認方法

// ブラウザ DevTools の Console で実行
console.log(document.compatMode);

// "CSS1Compat" → Standards Mode(OK)
// "BackCompat" → Quirks Mode(NG、DOCTYPE 不足の疑い)

または:

  • Chrome DevTools: Application タブ → Manifest 付近で「Rendering mode」確認
  • Firefox DevTools: Inspector 開いてページ情報
  • Lighthouse: Audits で「No DOCTYPE」警告

HTML5 でも書ける旧式

HTML 5.2 まではこんな書き方も許容されていましたが、2026 年現在は 推奨








よくあるミスと対処

ミス結果対処
DOCTYPE 無しQuirks Mode で CSS 崩れ1 行目に
DOCTYPE 前にコメントや BOM 以外の文字Quirks Mode必ず最初の行に
を冒頭に書くIE で Quirks ModeHTML5 では XML 宣言不要
文字コード宣言が DOCTYPE の前HTML としては OK 内に
テンプレートエンジンで漏れる本番のみ Quirks Modeレイアウトテンプレートの先頭で固定

HTML5 Validator で確認

FAQ

Q: でもいい?
A: OK。HTML5 では大文字小文字を問いません。慣習的に大文字を使いますが、Prettier 等のフォーマッタは小文字を使うことも。

Q: なぜ HTML5 の DOCTYPE は短い?
A: SGML の DTD 参照を捨て、「Standards Mode に切替えるためだけのマジック文字列」にしたから。仕様策定者が「人間が書ける最短形」を目指しました。

Q: XHTML 文書では?
A: 現代では XHTML はほぼ使われません。XML として処理させたい場合のみ + application/xhtml+xml MIME。

Q: HTML PUBLIC "..." を見かけた
A: 古い HTML 4 系の名残。現代の新規ページで書くべきではありません。