ISO-HTML における h1 要素2007年07月11日 23時58分

木構造のルートとなるh1要素は一つだけであり、特別な存在である。この「木構造」は私が勝手にひねり出したものではなく、Pre-HTMLの定義にも表れている。

h1要素は文書のタイトル その2:メモランダム

ということで結論から言うと僕はh1要素はページ内でひとつ、ロゴではなく主題についており、h2以下の見出しが順番に現れるというISO-HTML準拠が良いと思っています。

h1をはじめ、見出し要素に関する議論が盛んになっている件::::::STOPN' LISTEN::::::to the silence:::::::

取りようによっては、ISO-HTML (JIS-HTML) において文書中に存在できる h1 要素はひとつだけ、と読めなくもないですが、そんなことはありません。DTD の Pre-HTML に関する部分から以下に抜粋したとおり、h1 要素は文書中で複数回 (0 回でも) 存在可能です。ちなみに、最初の h1 要素が現れる前に何らかの内容を記述することもできます。

<!ELEMENT BODY        - O  ((%block;)*,(H1,DIV1)* ) +(DEL|INS) >

また、ISO-HTML のユーザーガイドによれば、Pre-HTML の div1 要素は DocBook の sect1 要素に相当するそうです。私は DocBook による文書作成の経験がなく、実際に sect1 要素がどのように使われているのか知りませんが、少なくともスキーマ上では sect1 要素も複数回出現可能なようです。さらに、同ガイド中の構造化された見出しの例示図においては、h1 要素が複数使われている様がはっきりと確認できます。

ISO-HTML において、h1-h6 要素の違いは、major sectionsectionsubsectionsubsubsectionsubsubsubsectionminor subsubsubsubsection という章のレベルの違いのみであり、h1 要素だけが特別な意味を持っているなどということはないと私は考えています。

h は何の略?

余談ですが、ISO-HTML のユーザーガイドによれば h1 要素は Major section header となっています。heading ではなく header なのですね。

h1 要素の内容

余談が続きますが、というかどこかの流れ的にはこちらのほうが本題なのかもしれませんが、私自身は文書のタイトルを h1 要素としてマークアップします。新聞紙で 1 面に「朝日新聞」ってでかでかと書かれていたらどうよ ? (Talk - zcxv.net - h1 要素とサイト名) と同様のこと (報告書の表紙に会社名だけ書かれていたらどう思う?) を言ったこともあります。その後ホップ本でサイト名を h1 要素の内容とする例を見たときには、そういう考え方もあるのかとショックを受けました。

(しかしよく考えたら報告書の表紙は h1 要素じゃなくて title 要素だったりするのかな? 印刷したら title 要素の内容は各ページにヘッダまたはフッタとして表示されているような気もするけれど。)

OSC2007 Kansai2007年07月26日 01時28分

21 日土曜日にオープンソースカンファレンス 2007 Kansai へ行ってきました。

ブラウザでの JavaScript の世界へのお誘い

もじら組のしものさんによる講演。JavaScript や Ajax ライブラリについて触れたあと、Firebug の紹介がありました。addons.mozilla.org へ行き Firebug をインストールするところから実際の使用までを、リアルタイムでデモしてくれたのがわかりやすかったです。ただ、画面の解像度が高すぎてスライドの文字が読みづらかったかも。

Ruby on Rails ハンズオンセミナー

実際に Ruby on Rails で簡単な Web アプリケーションを作ってみようという企画。Ruby on Rails 初体験だったのですが、これは確かに手早くものを作るにはもってこいですね。資料に $ vi ....rb とあって、vi なんて最後に使ったのは何年前だったっけとあせったのですが、さすがにそこは Emacs でも何でもいいとのことで一安心。しかし日本語配列なのはいいとして、Caps Lock と Ctrl の位置、Ctrl + h が一文字消去ではなくヘルプなど、微妙なところでやりづらかったです。

Ruby の紹介で、Ruby を使い慣れてくると for 文を使わなくなるといっていたのが印象的でした。JavaScript でもバージョン 1.6 以降なら Array#forEach、Array.forEach があるのですが、どうも関数生成・関数呼び出しのコスト、いちいち function や return といったキーワードを書かなくてはいけない手間が気になって、何でもかんでも使おうとは思えないというのが個人的な感想です。

環境によっては for 文と配列拡張 (Array Extras) とで速度に大差はないとのこと。ちなみに、SpiderMonkey において for-in 文・for-each-in 文が for 文・配列拡張より遅くなる原因として考えられるのは、新規イテレータオブジェクトの作成、プロトタイプチェーンの探索、重複するプロパティ名の除去といったところでしょうか。

ライトニングトーク

閉会式に先立って持ち時間 5 分のライトニングトーク。収支概算が大流行でした。もじら組某氏のチャイナ服はみんなスルー気味だったような。

Ruby 関西

Ruby 関西に参加すると Haskell ができるようになるそうです。

もじら組

ここに、himorin (しもの) さんによるプレゼン手法、通称「himorin メソッド」が開発されました。

用意するもの
  • バッテリーが寿命を迎えたノート PC
手順
  1. まず Mozilla 24 の紹介。
  2. Mozilla 24 プログラムの書類選考結果 53 件をひたすら読み上げる。
  3. 3 分経過、このまま結果読み上げで 5 分使い切るのかと思ったところで、バッテリー切れにより PC が休止状態へ突入。
  4. そのまま終わってしまうのかと思いきや、1 分程度で復帰完了。残り 1 分をきってる。
  5. とにかく残りのページだけめくり、ネゴロさんの耳付き写真が出たところで再び休止状態へ。
  6. 終。

宇田道信さん

自作の楽器「ウダー」の紹介。和音の構成を多角形として視覚化できるとのことで、音楽的素養ゼロの私にもなんかすごいということは十分伝わりました。TLD la はラオス。