HTML5でセマンティックなマークアップ

39
HTML5 ででででででででででででででで 2011/8/23 でででで

description

2011/8/25にC.A.Mobileさんの社内勉強会で使用したスライド。

Transcript of HTML5でセマンティックなマークアップ

Page 1: HTML5でセマンティックなマークアップ

HTML5 でセマンティックなマークアップ

2011/8/23 白石俊平

Page 2: HTML5でセマンティックなマークアップ

HTML5 =

よりセマンティックな文書プラットフォーム

+よりリッチな

アプリケーションプラットフォーム

Page 3: HTML5でセマンティックなマークアップ

HTML5 においては、「セマンティックなマークアップ」というパラダイムシフトが必要。

Page 4: HTML5でセマンティックなマークアップ

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"><html><body><div> <div> <div> <div>

HTML4では、こんなマークアップが普通でした。 </div> <div> <div> </div> </div> </div> <div> <div> <div> <div>

「分け入っても分け入っても div」 </div> <div> </div> </div> </div> </div> <div> </div> </div></div></body></html>

Page 5: HTML5でセマンティックなマークアップ

これからは?

文書に内在する「意味」(=セマンティック)を意識しながらマークアップする必要がある。

Page 6: HTML5でセマンティックなマークアップ

エンジニアがマークアップに意味を「吹きこむ」

Chrome+HTML5 Conference 開催のご案内

最近、スマートフォンサイトを中心に活用事例が目立つようになり、 HTML5への注目は日々高まっています。その一方、「 HTML5について勉強したいけど、どこから始めればよいか分からない」という方も少なくないのではないでしょうか?HTML5 Developers JPでは、そんなディベロッパーの皆さんに向けて、HTML5を学んで頂くための勉強会「 HTML5とか勉強会」をこれまで毎月開催してきました。その回数は既に 19回に及びます。今回はそんな「 HTML5とか勉強会」の第 20回を記念し、 HTML5 Developers JPとグーグル株式会社の共催で2011年 8月 21日、 "Chrome+HTML5 Conference"を開催いたします。

ここは強調したいな

ここは固有名詞だ

ここは日付だな ここは固有名詞、かつ強調したいな

ここは見出し

ここで第一節終了!

Page 7: HTML5でセマンティックなマークアップ

エンジニアがマークアップに意味を「吹きこむ」

すると、吹きこまれた「意味」を他のプログラムが解釈することも可能になる。

<!DOCTYPE html><html> …</html>

Semantic

Semantic

マークアップを通じた、他者との「コミュニケー

ション」と言って良い。

Page 8: HTML5でセマンティックなマークアップ

HTML5 における「セマンティック」の実際

• 現在の要素数は108• 30 種類の新要素• 14 種類の既存要素が変化

• マイクロデータ• WAI-ARIA との統合

Page 9: HTML5でセマンティックなマークアップ

今回は、「セクション要素」とそれに関連するいくつかの要素について勉強します。

Page 10: HTML5でセマンティックなマークアップ

セクション要素とは?

• セクションとは、文書を論理的に分割した単位のこと• 章、節、項…• メニュー、本文、サイドバー…• ページ、ダイアログ…

• HTML5 では、以下の 4 要素がセクション要素として追加• section/article/aside/nav

Page 11: HTML5でセマンティックなマークアップ

<section>

• 汎用的なセクションを表す要素• <article>/<aside>/<nav> 以外のセク

ションは全て <section> で。

Page 12: HTML5でセマンティックなマークアップ

<article>

• 独立した「本文」として取り扱うことが可能なセクション。

• <article> か? <section> か?• → そのセクションを RSS リーダーで全

文配信しても意味が通るならば<article>

Page 13: HTML5でセマンティックなマークアップ

<aside>

• ページの他の部分と「あまり関連がない」(=重要度が低い)セクション。

• 例えば広告やサイドバーガジェットなど• <aside> か? <section> か?

• → そのセクションをざっくり削ってしまっても、ページの意味内容がほとんど損なわれないなら、 <aside>

Page 14: HTML5でセマンティックなマークアップ

<nav>

• サイト内の「主要な」ナビゲーションメニューを表す。

• 内部に <ul> と <a> を用いてリンク一覧を作るのが基本。

• <nav> を使うか?使わないか?• <nav> の部分のみが「メニュー」とし

て提示された場合に、ユーザにとって便益があるかどうかで考える。

Page 15: HTML5でセマンティックなマークアップ

ヘッダ

本文

サイトナビゲーション

新着記事

月別アーカイブ

アフィリエイト広告

著者のTwitter近況

Page 16: HTML5でセマンティックなマークアップ

ヘッダ

本文

サイトナビゲーション

新着記事

月別アーカイブ

アフィリエイト広告

著者のTwitter近況

<nav>

<section>

<nav>

<section>

<article> <section>

<aside>

<aside>

Page 17: HTML5でセマンティックなマークアップ

セクションとアウトライン• セクションの階層構造が文書のアウトラインを構成する• 「セクション要素の利用=アウトライン操作」であることを常に

意識して!!• <div> と同じ感覚で利用するとか、ほんと NG• スタイル用途でブロックを作成する場合は <div> を使用する

• 「 HTML5 Outliner 」で遊ぼう!

Page 18: HTML5でセマンティックなマークアップ

ハンズオン :<section> でアウトラインをつくろう

<!DOCTYPE html>

<section>

<section>

</section>

</section>

<section>

</section>

Page 19: HTML5でセマンティックなマークアップ

セクションに関連する要素

• 見出し要素( h1 〜 h6,hgroup )• セクションルート( body/blockquote/

details/fieldset/figure/td )• ヘッダ、フッタ( header/footer )

Page 20: HTML5でセマンティックなマークアップ

見出し要素

• 見出し要素( h1 〜 h6 )は、セクションの見出し、という意味を与えられた。

• 見出しのランクはセクションごとにリセットされる。• 基本的には、 <h1> のみを使うべし!

• セクション要素は、常に見出しとセットだと考えるべし。

Page 21: HTML5でセマンティックなマークアップ

It’s OK!

<body>

<h1>もうすぐ絶滅するという紙の書物について </h1>

<section>

<h1>序文 </h1>

</section>

<section>

<h1>本は死なない </h1>

</section>

</body>

Page 22: HTML5でセマンティックなマークアップ

<hgroup>

• 複数の見出しからなるセクションでは、複数の見出しを使用し、 <hgroup> でまとめる

• 1 セクション 1 見出し、の原則

Page 23: HTML5でセマンティックなマークアップ

<hgroup> の例

<body>

<hgroup>

<h1>HTML5&API入門 </h1>

<h2>

キャンバス、 Videoから WebSocketまで

</h2>

</hgroup>

</body>

Page 24: HTML5でセマンティックなマークアップ

セクションルート

• body/blockquote/details/fieldset/figure/td といった要素はセクションルートと呼ばれ、独立したアウトラインを構築する

Page 25: HTML5でセマンティックなマークアップ

ハンズオン :見出し、 hgroup 、セクションルート<!DOCTYPE html>

<meta charset=UTF-8>

<body>

<hgroup>

<h1>HTML5&API Start Guide</h1>

<h2>

Canvas,Video,WebSocket,etc.

</h2>

</hgroup>

<section>

<h1>HTML5 Overview</h1>

</section>

</body>

Page 26: HTML5でセマンティックなマークアップ

ヘッダ、フッタ

• <header> 、 <footer> 要素は、セクションのヘッダ、フッタを表す

• これらにどんな要素を含めるかは自由(ただ、一般的には見出し要素を <header> に入れる)

Page 27: HTML5でセマンティックなマークアップ

ハンズオン : ヘッダ、フッタ<!DOCTYPE html>

<meta charset=UTF-8>

<body>

<header>

<hgroup>

<h1>HTML5&API Start Guide</h1>

<h2>Canvas,Video,WebSocket,etc.</h2>

</hgroup>

</header>

<section>

<h1>HTML5 Overview</h1>

</section>

<footer>Copyright CAMobile Inc.</footer>

</body>

Page 28: HTML5でセマンティックなマークアップ

暗黙のセクション

• 明示的なセクションなしに見出し要素を使用すると、暗黙セクションが生成される。

• 暗黙セクションは推奨されない。

Page 29: HTML5でセマンティックなマークアップ

ハンズオン : 暗黙のセクション

<!DOCTYPE html>

<meta charset=UTF-8>

<body>

<h1>H1</h1>

<h2>H2</h2>

<h3>H3</h3>

<h2>H2 again</h2>

</body>

このコードを、きちんと sectionで書きなおしてみましょう。

Page 30: HTML5でセマンティックなマークアップ

その他関連する要素

• time 要素• address 要素

Page 31: HTML5でセマンティックなマークアップ

time 要素• 日付、時刻を表す要素。• タグの textContent 、もしくは datetime 属性で日時を

表すことができる。• 日時のフォーマットは ISO8601 形式• pubdate 属性が true の場合、親となる body/article 要

素の「公開日時」を表す。

<time datetime=“2011/08/24T10:13:24.123+09:00”> 2011 年 8 月 24 日 10 時 13 分</time>

Page 32: HTML5でセマンティックなマークアップ

address 要素

• 親となる body/article 要素の「問い合わせ先アドレス」を表す。

<address> <a href=http://twitter.com/Shumpei> Shumpei Shiraishi </a></address>

Page 33: HTML5でセマンティックなマークアップ

ハンズオン : ブログ記事を題材としたマークアップ演習

• http://bit.ly/cam_html5_markup_excersize

• ダウンロードして展開し、 entry.html を開いてください。

Page 34: HTML5でセマンティックなマークアップ

ハンズオン : 見出しを整える

• <body> に対する <header> 要素と<h1> 要素を適切に利用する

• サンプルでは、 <h1> が削除されている• 恐らく、記事のタイトルに <h1> を使用

したかったためだと考えられる。

Page 35: HTML5でセマンティックなマークアップ

ハンズオン :article 要素を利用する

• 記事本文に <article> を使用する• post-858 から <!-- #post-## --> まで

• 投稿日時に <time> を使おう• 作成者に <address> を使おう• <header> も使おう

Page 36: HTML5でセマンティックなマークアップ

ハンズオン :aside,section 要素を利用する

• ソーシャル関連のボタン群を <aside> で囲む

• コメント欄を <section> で囲む

Page 37: HTML5でセマンティックなマークアップ

ハンズオン :nav 要素を利用する

• 右サイドバーを <nav> で囲む

Page 38: HTML5でセマンティックなマークアップ

ハンズオン :footer 要素を利用する

• id=“footer” となっている <div> をfooter に書き換える

Page 39: HTML5でセマンティックなマークアップ

今日もありがとうございました!

@Shumpei