高度なテキスト整形

テキストの整形のための HTML には他にも多くの要素がありますが、これは HTML テキストの基礎 には書かれていません。この記事で説明されている要素はあまり知られていませんが、知っていると役に立ちます(これはまだいかなる意味でも完全なリストではありません)。ここでは、注釈、説明リスト、コンピューターコードとその他の関連テキスト、下付き文字と上付き文字、連絡先情報などのマークアップについて学習します。

前提条件: HTML を始めように載っている、基本的な HTML を理解していること。 HTML テキストの基礎に載っている、 HTML のテキスト整形。
目的: 高度な意味付け機能をマークアップするための、あまり知られていない HTML 要素を学ぶ。

説明リスト

HTML テキストの基礎では、HTML で 基本的なリストをマークアップする方法を見てきました、しかしたまに出てくる第 3 のリスト — 説明リスト — については触れていませんでした。このリストの目的は、項目とそれに関連する説明を一緒にマークアップすることで、用語の定義や、質問と回答などに使います。用語の定義の例を見てみましょう。

独り言 (soliloquy)
ドラマで、登場人物が自分自身にしゃべりかけ、内なる考えや感情や、そうなった過程を(他の登場人物ではなく)観客に対して表現するものです。
独白 (monologue)
ドラマで、登場人物が自分の考えを観客や他の登場人物に伝わるように喋るものです。
傍白 (aside)
ドラマで、登場人物が観客のみに対し、ユーモアやドラマチックな効果を狙ってコメントをします。これは通常は感情や、考えや、追加の背景情報です。

説明リストは他の種類のリストと違うラッパー — <dl> を使います。それぞれの用語を <dt> (description term、説明用語)要素で囲み、それぞれの説明は <dd> (description definition、説明定義)要素で囲みます。

説明リストの例

例をマークアップしましょう。

html
<dl>
  <dt>独り言 (soliloquy)</dt>
  <dd>
    ドラマで、登場人物が自分自身にしゃべりかけ、内なる考えや感情や、そうなった過程を(他の登場人物ではなく)観客に対して表現するものです。
  </dd>
  <dt>独白 (monologue)</dt>
  <dd>
    ドラマで、登場人物が自分の考えを観客や他の登場人物に伝わるように喋るものです。
  </dd>
  <dt>傍白 (aside)</dt>
  <dd>
    ドラマで、登場人物が観客のみに対し、ユーモアやドラマチックな効果を狙ってコメントをします。これは通常は感情や、考えや、追加の背景情報です。
  </dd>
</dl>

ブラウザーの既定のスタイルでは、説明を用語からいくらかインデントします。 MDN のスタイルはこの慣習にほぼ従いますが、用語を太字にします。

1 つの用語に複数の説明

なお、例えば、単一の用語に複数の説明を持たせることも可能です。

html
<dl>
  <dt>傍白 (aside)</dt>
  <dd>
    ドラマでは、登場人物が観客のみに対し、ユーモアやドラマチックな効果を狙ってコメントをします。これは通常は感情や、考えや、追加の背景情報です。
  </dd>
  <dd>
    文章では、現在のトピックに関連するコンテンツの一部ですが、本文の流れに直接合わないため、近くに表示されます(多くの場合、横に並んでいる枠の中に入ります)。
  </dd>
</dl>

アクティブラーニング: 定義リストのマークアップ

説明リストを作ってみましょう。入力欄の生テキストに要素を追加して、出力欄に説明文のリストとして現れるようにしましょう。お望みなら、自身の用語や説明文を使用してみるのもいいでしょう。

間違えたら、常に リセット ボタンを使用してリセットすることができます。本当に行き詰まったら、答えを表示 ボタンを押して、答えを見ることができます。

引用

HTML には引用をマークアップするための機能もあります。どちらの要素を使用するかは、ブロックとインラインのどちらの引用をマークアップするかによって異なります。

ブロック引用

ブロックレベルの内容(段落、複数の段落、リストなど)の一部が他の場所から引用されている場合、それを示すために <blockquote> 要素で囲み、 cite 属性の中に引用元を指す URL を記載する必要があります。例えば、以下のマークアップは MDN の <blockquote> 要素のページから引用しています。

html
<p>
  The <strong>HTML <code>&lt;blockquote&gt;</code> Element</strong> (or
  <em>HTML Block Quotation Element</em>) indicates that the enclosed text is an
  extended quotation.
</p>

これをブロック引用にするには、次のようにします。

html
<p>こちらが引用です。</p>
<blockquote
  cite="https://developer.mozilla.org/ja/docs/Web/HTML/Element/blockquote">
  <p>
    The <strong>HTML <code>&lt;blockquote&gt;</code> Element</strong> (or
    <em>HTML Block Quotation Element</em>) indicates that the enclosed text is
    an extended quotation.
  </p>
</blockquote>

ブラウザーの既定のスタイル設定では、これがインデントされた段落として、それが引用であることを示すインジケーターとして表示されます。

インライン引用

インラインの引用は、<q> 要素を使用することを除いて、まったく同じ方法で機能します。例えば、以下のマークアップには MDN の <q> ページからの引用が含まれています。

html
<p>
  The quote element — <code>&lt;q&gt;</code> — is
  <q cite="https://developer.mozilla.org/ja/docs/Web/HTML/Element/q">
    intended for short quotations that don't require paragraph breaks.
  </q>
</p>

ブラウザーの既定のスタイル設定では、これは引用符で囲まれた通常のテキストとしてレンダリングされ、次のようになります。

引用元

cite 属性の内容は有用そうに見えますが、残念ながらブラウザーや スクリーンリーダーなどは、この属性を実際にはあまり使用してくれません。 JavaScript や CSS を使って自身の解決策を書かない限り、ブラウザーに cite の内容を表示させる方法はありません。もしページ上で引用元を利用できるようにしたいのであれば、リンクやその他の適切な方法で本文中に利用できるようにする必要があります。

<cite> 要素がありますが、これは引用されたリソースのタイトル、例えば書籍の名前を格納することを意味しています。しかし、 <cite> 内のテキストを何らかの方法で引用元とリンクできない理由はありません。

html
<p>
  According to the
  <a href="/ja/docs/Web/HTML/Element/blockquote">
    <cite>MDN blockquote page</cite></a>:
</p>

<blockquote
  cite="https://developer.mozilla.org/ja/docs/Web/HTML/Element/blockquote">
  <p>
    The <strong>HTML <code>&lt;blockquote&gt;</code> Element</strong> (or
    <em>HTML Block Quotation Element</em>) indicates that the enclosed text is
    an extended quotation.
  </p>
</blockquote>

<p>
  The quote element — <code>&lt;q&gt;</code> — is
  <q cite="https://developer.mozilla.org/ja/docs/Web/HTML/Element/q">
    intended for short quotations that don't require paragraph breaks.
  </q><a href="/ja/docs/Web/HTML/Element/q"><cite>MDN q page</cite></a>.
</p>

引用元は、既定ではイタリック体で表示されます。

アクティブラーニング: 誰がそう言ったの?

もうひとつのアクティブラーニングの例です。この例では、次のことを行ってください。

  1. 中央の段落を cite 属性を含むブロック引用にしましょう。
  2. 3 番目の段落の一部を、cite 属性を含むインライン引用に変換しましょう。
  3. 各リンクに <cite> 要素を含めましょう。

必要な引用元は以下のとおりです。

  • Confucius の引用については http://www.brainyquote.com/quotes/authors/c/confucius.html
  • "The Need To Eliminate Negative Self Talk" には http://example.com/affirmationsforpositivethinking

間違えた場合は、 リセット ボタンを使用していつでもリセットできます。本当に動けなくなったら、答えを表示 ボタンを押して答えを見てください。

略語

ウェブを見て回っているときによく出会うもう一つの要素は <abbr> です。これは略語や頭字語を囲むために使用されます。どちらかを記載する場合、最初の使用では、略語をマークアップする <abbr> と共に、プレーンテキストでその用語の完全な展開を提供してください。これは、ユーザーエージェントに内容をどのように告知/表示するかのヒントを提供すると同時に、すべてのユーザーにその略語の意味を知らせます。

略語に加えて展開形を提供することにあまり意味がありません。略語や頭字語がかなり短縮された用語である場合、 title 属性の値として用語の完全な展開形を提供してください。

略語の例

例をご覧ください。

html
<p>
  We use <abbr>HTML</abbr>, Hypertext Markup Language, to structure our web
  documents.
</p>

<p>
  I think <abbr title="Reverend">Rev.</abbr> Green did it in the kitchen with
  the chainsaw.
</p>

これらは次のように見えます。

メモ: 以前のバージョンの HTML では <acronym> 要素にも対応していましたが、省略形と頭字語の両方を表現するために <abbr> を使用することにしたため、 HTML 仕様から削除されました。<acronym> は使用すべきではありません。

アクティブラーニング: 略語のマークアップ

この簡単なアクティブラーニングの課題では、略語をマークアップしていただきたいと思います。以下のサンプルを使用することもできますし、自身のものに置き換えることもできます。

詳細な連絡先のマークアップ

HTML には連絡先の詳細をマークアップするための要素 — <address> があります。これは単に連絡先の詳細を囲むだけです。例えば、

html
<address>Chris Mills, Manchester, The Grim North, UK</address>

また、もっと複雑なマークアップや、他にも例えば連絡先情報などを記載することも可能です。

html
<address>
  <p>
    Chris Mills<br />
    Manchester<br />
    The Grim North<br />
    UK
  </p>

  <ul>
    <li>Tel: 01234 567 890</li>
    <li>Email: me@grim-north.co.uk</li>
  </ul>
</address>

なお、リンク先のページに連絡先が記載されている場合は、このような方法でも問題ないでしょう。

html
<address>
  Page written by <a href="../authors/chris-mills/">Chris Mills</a>.
</address>

メモ: <address> 要素は、最も近い <article> または <body> 要素で含まれる文書の連絡先情報を提供するためにのみ使用すべきです。サイト全体の連絡先を記載するためにサイトのフッターに使用したり、著者の連絡先を記載するために記事の中で使用することは正しいことですが、そのページの内容に関係のないアドレスのリストをマークアップすることはできません。

上付きと下付き

日付、化学式、数式などの項目をマークアップするときには、上付き文字と下付き文字を使用する必要がある場合があります。<sup><sub> 要素がこの仕事を処理します。例えば、

html
<p>My birthday is on the 25<sup>th</sup> of May 2001.</p>
<p>
  Caffeine's chemical formula is
  C<sub>8</sub>H<sub>10</sub>N<sub>4</sub>O<sub>2</sub>.
</p>
<p>If x<sup>2</sup> is 9, x must equal 3 or -3.</p>

このコードの出力は次のようになります。

コンピューターのコードを表現する

HTML を使用してコンピュータのコードをマークアップするために利用可能な要素がいくつかあります。

  • <code>: コンピュータのコードの一般的な部分をマークアップします。
  • <pre>: 空白を保持する場合(一般的にはコードブロック) — テキストの中でインデントや余分な空白を使用すると、ブラウザーはそれを無視するので、レンダリングされたページにはそれが表示されません。しかし、テキストを <pre></pre> タグで囲むと、エディターで見たのと同じように空白が表示されるようになります。
  • <var>: 特に変数名をマークアップするためのものです。
  • <kbd>: コンピューターに入力されたキーボード(およびその他の種類の)入力をマークアップするためのものです。
  • <samp>: コンピュータプログラムの出力をマークアップします。

いくつか例を見てみましょう。これら (other-semantics.html サンプルファイルのコピーを入手してください) を試してみるべきです:

html
<pre><code>const para = document.querySelector('p');

para.onclick = function() {
  alert('Owww, stop poking me!');
}</code></pre>

<p>
  You shouldn't use presentational elements like <code>&lt;font&gt;</code> and
  <code>&lt;center&gt;</code>.
</p>

<p>
  In the above JavaScript example, <var>para</var> represents a paragraph
  element.
</p>

<p>Select all the text with <kbd>Ctrl</kbd>/<kbd>Cmd</kbd> + <kbd>A</kbd>.</p>

<pre>$ <kbd>ping mozilla.org</kbd>
<samp>PING mozilla.org (63.245.215.20): 56 data bytes
64 bytes from 63.245.215.20: icmp_seq=0 ttl=40 time=158.233 ms</samp></pre>

上記のコードは次のようになります。

日付と時刻をマークアップする

HTML には、時間と日付を機械可読形式でマークアップするための <time> 要素もあります。例えば、

html
<time datetime="2016-01-20">20 January 2016</time>

なぜこれが有用なのか?さて、人間が日付を書き表す方法はいろいろあります。上の日付はこう書くことができます。

  • 20 January 2016
  • 20th January 2016
  • Jan 20 2016
  • 20/01/16
  • 01/20/16
  • The 20th of next month
  • 20e Janvier 2016
  • 2016 年 1 月 20 日
  • など

しかしこれらの異なる形式はコンピューターでは容易には認識できません。ページ内のすべてのイベントの日付を自動的に取得してカレンダーに挿入する場合はどうなりますか。 <time> 要素を使用すると、この目的のために、明確で機械可読な日時を付けることができます。

上記の基本的な例は単純な機械可読な日付を提供するだけですが、可能な他の多くのオプションがあります。例えば、

html
<!-- Standard simple date -->
<time datetime="2016-01-20">20 January 2016</time>
<!-- Just year and month -->
<time datetime="2016-01">January 2016</time>
<!-- Just month and day -->
<time datetime="01-20">20 January</time>
<!-- Just time, hours and minutes -->
<time datetime="19:30">19:30</time>
<!-- You can do seconds and milliseconds too! -->
<time datetime="19:30:01.856">19:30:01.856</time>
<!-- Date and time -->
<time datetime="2016-01-20T19:30">7.30pm, 20 January 2016</time>
<!-- Date and time with timezone offset -->
<time datetime="2016-01-20T19:30+01:00">
  7.30pm, 20 January 2016 is 8.30pm in France
</time>
<!-- Calling out a specific week number -->
<time datetime="2016-W04">The fourth week of 2016</time>

スキルをテストしましょう

この記事の最後にたどり着きましたが、最も重要な情報を覚えていますか?次に移動する前に、この情報を覚えているかどうかを確認するためのテストがいくつかあります - スキルのテスト: 高度な HTML テキスト をご覧ください。

まとめ

これで HTML のテキストの意味づけに関する学習は終了です。このコースで見てきたものは、 HTML テキスト要素の完全なリストではないことに留意してください。私たちは、基本的なものと、より一般的なものをカバーしようとしました。より多くの HTML 要素を探すには、 HTML 要素リファレンス を参照してください(インラインテキスト意味づけの節はよい出発点となることでしょう)。次の記事では、 HTML 要素を HTML 文書のさまざまな部分を構造化するために使用する方法ついて見ていきます。