Ron Garret「HTMLはオブジェクトコード」
Rondam Ramblingsの2009年8月のエントリ
Rondam Ramblings: HTML is object code
2009年2月にテーブルレイアウト擁護論を公開した元GoogleのRon Garretによる、htmlのハンドコーディング禁止論
- CSSレイアウトのもつ利点は、テーブルレイアウトでも実装可能
- htmlのハンドコーディングはウェブの害悪の根源の1つ。
ウェブ標準な人からは出そうに無い感じの視点が出てて面白い。
いきなりCのソースコードとコンパイルされたコードを並べだしたので、斜め読み無理かもと思ったが、ソースコード/オブジェクトコードの理解が自分のように専門的でなくても斜め読みできた。
通念に反するためコメント欄が盛り上がり過ぎ。辿れない。
CSSアンチの議論の部分は自分は消化不良
以下斜め読んだ内容。
- このエントリは・・・・
- アンチCSSレイアウト&tableレイアウト擁護論への反応が止みそうに無いが、自分はケリを付けたい。それで書いた。
- CSSレイアウトv.s.tableレイアウト再訪
- 両陣営が見落としているポイント。
- HTMLはオブジェクトコードである(もしくは、オブジェクトコードとして扱うべきである)。
- 両陣営が見落としているポイント。
- ソースコードとオブジェクトコード
- コンテンツとレイアウト情報の分離
- tableレイアウトではこれができない。と、批判される。
- この批判には暗黙の想定が2つ。これをこのエントリでは批判する。
- tableレイアウト批判における暗黙の想定
- htmlは「ソース」コードである(オブジェクトコードではない)。
- 分離されたコンテンツとレイアウト情報の結合・マージは「ブラウザで」(クライアントサイドで)やるべき。
- 暗黙の想定は両方とも間違い。
- 分離と結合はサーバーサイドでできるから
- htmlはソースコードではないから。
- 「サーバーサイド」でもコンテンツとレイアウト情報の分離と結合は可能
- クライアントサイド限定にする理由無し。
- 例。htmlテンプレート
- コンテンツとレイアウト情報は分離しつつ、結合できることがわかる。
- htmlテンプレートとtableレイアウトを組み合わせる
- 既に謳われてるtableレイアウトのデメリットは解決済
- 「楽々クロスブラウザ対策」(=tableレイアウトの最大のメリット)を享受できる
- htmlは「オブジェクト」コード(、とみなすべき)
- htmlはハンドコーディングすべきではない
- サーバーサイドでコンパイラから生成させるべき
- htmlはオブジェクトコードとしてのみ扱われるべき。
- オブジェクトコードとして=人間が読み書きしないコードとして。
- 例外は、急いでるときとか暫定的な場面(quick-and-dirty hacks)
- ハンドコードされたhtmlコードは多くのウェブの害悪の根源
- html作成の正しいやり方
- プログラミング言語による生成。
- 高次の抽象化を実装する(building higher-order abstractions)ことでウェブページを生成させる
- この役割を果たす言語は関数型だと思うが、その辺は自分はドグマを持っていない。
- form要素
- tableレイアウトはアクセシブルではない、とされる件
HTMLテンプレートの例
<table>
<tr><td colspan=3> %header
<tr><td> %leftnav <td> %center <td> %rightnav
<tr> <td colspan=3> %footer
</table>
form要素の例
<form method="GET" action="date-foo">
Enter the date:
<input type="text" class="dateinput" name="date">
<input type=submit>
</form>
form要素をサーバーサイドで生成させるテンプレート言語のコード例
<standard-form>
<date-input label="Enter the date">
</standard-form>
Ron Garret氏
- 元google、現VC
- Ron Garret's Home Page
- Ron Garretウェブサイト
- Cnetの取材記事
- 元googleな人たちのその後を取材という趣旨の記事