SlideShare uma empresa Scribd logo
1 de 34
DOCTYPEという黒魔術の話

     門屋 亮
     @ryokdy
自己紹介
• 所属 サイボウズ
• 手がけた製品
 – サイボウズ ガルーン 2.5 / 3.5
 – サイボウズ Office 8 / 9
 – サイボウズ デヂエ 8
 – サイボウズ メールワイズ 4 / 5
 など
想定するターゲット
• HTMLは書いたことがある
• DOCTYPEって聞いたことがあるけどよく知
  らない
• これからはHTML5らしいので勉強してみた
  い
• なんか昔作られたサイトをリニューアル
  させられるっぽい
アジェンダ
•   90年代ブラウザ戦争
•   Standards mode / Quirks mode
•   DOCTYPEをどう書けばいいか
•   代表的なサイトの例
•   壊れたスタイルの直し方
•   まとめ
第一次ブラウザ戦争




1995~2000
’96/11/2 Netscape Navigator 3.0
        日本語版発売




        6,000
’96/8/13 Internet Explorer 3.0
     ダウンロード開始




            0
シェア争いの結果
• 安定性、安全性よりも差別化が優先され
  る
• 独自仕様による混乱
• HTML規約に違反するページをIEは積極的
  に補正。結果としてNetscapeでレイアウト
  がずれるケースが多発
• 2000年にIEが市場シェアのほぼすべてを獲
  得して第一次ブラウザ戦争は終結
IEのセキュリティ問題と
 次世代ブラウザの登場
W3C標準への準拠が進む
• Acid2 2005/4/13~
  http://acid2.acidtests.org/
IE6
IE7
Firefox2
ここで切実な問題
• W3C勧告には準拠したい
• 仕様にそって正しく表示するようにする
  と、古いサイトがきちんと表示されなく
  なる。
• ブラウザのシェアが下がるのは嫌だ。
Microsoftのたどり着いた解


仕様どおりに表示してほしいときだけ
   そうすればよくない?
DOCTYPEの誕生
どんなふうにレンダリングしてほしいかは
htmlタグより先に書け

<DOCTYPE   これは標準モードのHTML>
<html>
ふー



一件落着
あれ、標準どおりに表示したつも
りだったけど標準じゃなかった
      よ。。


   どうする??
そうだ

こないだのはAlmost Standard mode
(ほぼ標準モード)と呼ぼう!
というわけで
• Quirks Mode(互換モード)
• Standards Mode(標準モード)
• Almost Standards Mode(ほぼ標準モード)
組み合わせ考えると
こんないっぱいできちゃったよ!
結局どうすればいいか
HTML5ではこれだけ



   <!DOCTYPE html>
facebook
標準モード

<!DOCTYPE html>
<html lang="ja" id="facebook" class="no_js">
twitter
標準モード

<!DOCTYPE html>
<html data-nav-highlight-class-name="highlight-
global-nav-home">
2ch
ほぼ標準モード

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0
Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-
transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
mixi
互換モード

<html class="osWindows browserChrome
browserChrome19 serviceLogoutQuirks
pageHomeJpMixi domainJpMixi">
サイボウズ Office
互換モード。。

<html>
ミッション


   IE6 向けに作られたページを
モダンブラウザでも見られるように直せ
IE6だとこう見える
DOCTYPE付きでChromeで見ると
QuirksモードのQuirkなところ
• class, idなどの属性値がcase-insensitive
• CSSプロパティの数値単位を省略できる
• CSSプロパティの色指定で#を省略できる
• text-alignで幅が指定されたブロックレベル
  の中央寄せができる
• ボックスの解釈がおかしい
ボックスの間違った解釈




                padding

     正しいwidth
                          border


    間違ったwidth
まとめ
• DOCTYPEスイッチは過去の戦争の爪痕
• HTML5だとかなり楽に書ける
• サイボウズOfficeにはこれからDOCTYPEを付ける
  つもり(たぶん)
• IEの独自仕様がっつりのページを直すのは大変
ありがとうございました

Mais conteúdo relacionado

Destaque (7)

Rubyとの出会いから黒歴史を築くまで
Rubyとの出会いから黒歴史を築くまでRubyとの出会いから黒歴史を築くまで
Rubyとの出会いから黒歴史を築くまで
 
シェル入門
シェル入門シェル入門
シェル入門
 
C++の黒魔術
C++の黒魔術C++の黒魔術
C++の黒魔術
 
闇魔術を触ってみた
闇魔術を触ってみた闇魔術を触ってみた
闇魔術を触ってみた
 
暗黒美夢王とEmacs
暗黒美夢王とEmacs暗黒美夢王とEmacs
暗黒美夢王とEmacs
 
Glibc malloc internal
Glibc malloc internalGlibc malloc internal
Glibc malloc internal
 
闇の魔術に対する防衛術
闇の魔術に対する防衛術闇の魔術に対する防衛術
闇の魔術に対する防衛術
 

Semelhante a Doctypeという黒魔術の話

Firefoxの開発プロセス
Firefoxの開発プロセスFirefoxの開発プロセス
Firefoxの開発プロセス
Makoto Kato
 
4時間まったりWordPressテーマ作成講座
4時間まったりWordPressテーマ作成講座4時間まったりWordPressテーマ作成講座
4時間まったりWordPressテーマ作成講座
Shinichi Nishikawa
 

Semelhante a Doctypeという黒魔術の話 (20)

HTML5での制作、いつから始める?
HTML5での制作、いつから始める?HTML5での制作、いつから始める?
HTML5での制作、いつから始める?
 
Firefoxの開発プロセス
Firefoxの開発プロセスFirefoxの開発プロセス
Firefoxの開発プロセス
 
「html5 boilerplate」から考える、これからのマークアップ
「html5 boilerplate」から考える、これからのマークアップ「html5 boilerplate」から考える、これからのマークアップ
「html5 boilerplate」から考える、これからのマークアップ
 
Yesod(at FPM2012)
Yesod(at FPM2012)Yesod(at FPM2012)
Yesod(at FPM2012)
 
WordPress中級者への道!テンプレートタグはどう動くのか!?
WordPress中級者への道!テンプレートタグはどう動くのか!?WordPress中級者への道!テンプレートタグはどう動くのか!?
WordPress中級者への道!テンプレートタグはどう動くのか!?
 
4時間まったりWordPressテーマ作成講座
4時間まったりWordPressテーマ作成講座4時間まったりWordPressテーマ作成講座
4時間まったりWordPressテーマ作成講座
 
マルチサイトの構築
マルチサイトの構築マルチサイトの構築
マルチサイトの構築
 
Markdownもはじめよう
MarkdownもはじめようMarkdownもはじめよう
Markdownもはじめよう
 
20140926 mt cloud_handson_seminar
20140926 mt cloud_handson_seminar20140926 mt cloud_handson_seminar
20140926 mt cloud_handson_seminar
 
D8でコンテンツをレイアウトする手法について
D8でコンテンツをレイアウトする手法についてD8でコンテンツをレイアウトする手法について
D8でコンテンツをレイアウトする手法について
 
Modulemaking
ModulemakingModulemaking
Modulemaking
 
Mozillaのビルドインフラ
MozillaのビルドインフラMozillaのビルドインフラ
Mozillaのビルドインフラ
 
WordPressって何
WordPressって何WordPressって何
WordPressって何
 
イマドキの「タグ=HTML」とスタイルシート=CSS」を知ろう
イマドキの「タグ=HTML」とスタイルシート=CSS」を知ろうイマドキの「タグ=HTML」とスタイルシート=CSS」を知ろう
イマドキの「タグ=HTML」とスタイルシート=CSS」を知ろう
 
MODXで“超”キレッキレのブログ作る秘訣公開します
MODXで“超”キレッキレのブログ作る秘訣公開しますMODXで“超”キレッキレのブログ作る秘訣公開します
MODXで“超”キレッキレのブログ作る秘訣公開します
 
スマートフォン対応、気をつけたいトラブル
スマートフォン対応、気をつけたいトラブルスマートフォン対応、気をつけたいトラブル
スマートフォン対応、気をつけたいトラブル
 
Ppl
PplPpl
Ppl
 
20141101 handson
20141101 handson20141101 handson
20141101 handson
 
JavaScript 研修
JavaScript 研修JavaScript 研修
JavaScript 研修
 
Getting Started GraalVM / GraalVM超入門 #jjug_ccc #ccc_c2
Getting Started GraalVM / GraalVM超入門 #jjug_ccc #ccc_c2Getting Started GraalVM / GraalVM超入門 #jjug_ccc #ccc_c2
Getting Started GraalVM / GraalVM超入門 #jjug_ccc #ccc_c2
 

Mais de 亮 門屋 (6)

NPOセミナー資料
NPOセミナー資料NPOセミナー資料
NPOセミナー資料
 
Devsumi2015
Devsumi2015Devsumi2015
Devsumi2015
 
kintone Cafe 松山
kintone Cafe 松山kintone Cafe 松山
kintone Cafe 松山
 
レスポンシブWebデザインによる開発効率化
レスポンシブWebデザインによる開発効率化レスポンシブWebデザインによる開発効率化
レスポンシブWebデザインによる開発効率化
 
I18n for Your Web application
I18n for Your Web applicationI18n for Your Web application
I18n for Your Web application
 
Code HAIKU 2012 Introduction
Code HAIKU 2012 IntroductionCode HAIKU 2012 Introduction
Code HAIKU 2012 Introduction
 

Último

Último (11)

論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 

Doctypeという黒魔術の話