« abbr の title 値を CSS でポップアップ | トップページ | みくだりはん? »

2006-11-27

abbr は本来 機械のための要素 —マークアップは誰(何)のためのものか?

さきの2つのエントリーと関連して。

  1. 略語に振り回される今日この頃
  2. abbr の title 値を CSS でポップアップ

abbr を使わずに直書きするのが最善?

ANOTHER PIECES(id:xcezx さん)の「abbr 要素 その2」というエントリーで、次のようなご指摘をいただきました。(id:xcezx さん、ありがとうございます。個人的にこういう前向きな批判や議論は大歓迎です!)

「CSSを処理しないテキストブラウザや音声読み上げブラウザでは、やはり略語のフルスペルは表示されないよね。」というのがユーザビリティ的な観点から、満点をあげられない理由。

ユーザビリティを考えるなら、小賢しいテクニックなど使わずに、"XHTML (eXtensible HyperText Markup Language)" とかした方がよっぽどいい気がする。

結論からいえば、この指摘は大変ごもっともで、括弧でくくってベタ打ちテキストを直書きするのが、一般的には最善の策といえます。(一応、「略語に振り回される今日この頃」の方で選択肢として挙げたつもりではあるんですけど..。(^ ^;) )

abbr要素 + title属性よりも直書きの方がアクセシビリティ的に良い理由には、id:xcezx さんが指摘されているテキストブラウザ上で表示されないことに加え、 IE 6- が abbr 要素に非対応なこともあります。

ただ、もしこれに「音声ブラウザ」(スクリーンリーダー)での「ユーザビリティ」を加えるとなると、話は少し変わってきます。

abbr, acronym は本来 機械のためのマークアップ

HTML 4.01 の仕様書をご覧いただければわかるように、この abbr (acronym)要素は、元々、略語のセマンティクス(というとちょっと大げさかも知れませんが)を、マシンリーダブル...機械可読な形にすることが強く意識されています。たとえばスペルチェッカーや、スクリーンリーダー、翻訳システム、検索エンジンなどの分野などですね。

Marking up these constructs provides useful information to user agents and tools such as spell checkers, speech synthesizers, translation systems and search-engine indexers.

つまり、これは規格ではなく実装の問題で、Webブラウザやスクリーンリーダーが、どこまで規格の趣旨に沿って実装するかの問題になるわけです。

ひとくちに略語といっても、読み方はまちまち

加えて、さらに仕様書を読み進めると、略語の読み方についても、かなり強く意識されていることがわかります。

Note that abbreviations and acronyms often have idiosyncratic pronunciations. For example, while "IRS" and "BBC" are typically pronounced letter by letter, "NATO" and "UNESCO" are pronounced phonetically. Still other abbreviated forms (e.g., "URI" and "SQL") are spelled out by some people and pronounced as words by other people.

IRSBBCアルファベットをひと文字ずつ読み上げるのに対して、NATO(ナトー)やUNESCO(ユネスコ)のように、略した字面をそのまま読み上げた方が適切なケースもあるわけです。挙げ句の果てには、SQL のように人によって読み方が変わってしまうケースもあったりします。要はこうした場面でも、適切な読み方や正式な名称を、機械が理解できるようにするための規格だということです。

つまり、「音声ブラウザ」の「ユーザビリティ」を考えるなら、本来は abbr でマークアップしておくことの方が、むしろ、中長期的に見て正解だと思うのですが、いかがでしょう?

機械が理解できるセマンティックマークアップが重要

HTML にせよ、XHTML にせよ、XML にせよ、そもそも何でマークアップなんて面倒なことをするのかといえば、断じて見栄えのためなどではなく、要は、人間の言葉の意味(セマンティクス)を機械に理解させるためです。

ベタ打ちテキストは、確かに人間には優しいかも知れませんが、上記の意味でみると、機械には極めて理解しにくいフォーマットになるということが、おわかりいただけるかと思います(かならずしも長所ばかりではないんですよね。もちろん、自然言語解析という手もありますけど、たとえば2ちゃんねるを形態素解析|構文解析にかけるなんて悪夢ですから)。

先のエントリーで紹介した Tips は、そんな背景から、略語のセマンティクスを機械に理解させるついでに、それを可視化することで、人間側にも歩み寄ろうという趣旨で紹介したものです。いや、まぁ、所詮は小手先のワザなので、小賢しいというのは否定しませんけど。(^v^;ゞ

対策1: CSS の speak プロパティ

折角なので、以下にちょっとだけ abbr の読み上げを快適にする工夫を1つ2つ挙げてみましょう。ただ僕は、スクリーンリーダーにはあまり詳しくないので、本当は実際に使っている方々のナマのご意見を聴いてみたいというのが本音です。調べれば情報は出てきますけど、こういうのは実際に使い込んでみないと分からない部分が多いので。

まず、スクリーンリーダー用に speak というプロパティがあるので、これを活用するという手段があります。

@media speech { /* スタイルを適用するメディアをスクリーンリーダーに限定 */
abbr { /* 通常の abbr 要素(略語)*/
speak: normal; /* 字面のまま読み上げる */
}
abbr.alpha { /* "alpha" class を持つ abbr 要素 */
speak: spell-out; /* アルファベットを1文字ずつ読み上げる */
}
}

これで一応、NATO(ナトー)と IRS(アイ・アール・エス)の読み上げを、スクリーンリーダーに区別させられます。(多少、スクリーンリーダーの実装に読み上げられ方が左右される部分もありますけど。)

対策2: XHTML 2.0 では full 属性が追加

XHTML 2.0 では、abbr 要素に、新たに full 属性が追加されます。これで、原語なり正式名称なりを直書きしている場合でも、実は後から略語と関連づけることができるようになります。使い方は次の通り。

<abbr full="#xhtml">XTHML</abbr>(<span id="xhtml">Extensible Hyper Text Markup Language</span>)

要するに任意の id を持つ、インライン要素と関連づけるためのレファレンス属性的な役割のようです。title に読みを挿入することで以下のような記述も可能になります。

  • <abbr title="wiziwɪg" full="#wysiwyg">WYSIWYG</abbr>(<span id="wysiwyg">What You See Is What You Get</span>)
  • <abbr xml:lang="ja" title="ウィジウィグ" full="#wysiwyg">WYSIWYG</abbr>(<span id="wysiwyg">What You See Is What You Get</span>)

たとえば 2番目の例なら、"WYSIWYG" の完全表記(原語)は "What You See Is What You Get" で、日本では "ウィジウィグ" と読む...という寸法。(ruby 要素を併用した方がより妥当なマークアップになるような気もしますが..。ふと思いついたことですが、abbr を ruby や dl のような構造モデルにするのはダメなのかな。)

でも、これなら人間も機械も満足させられますよね。(^-^)v
ま、これが使えるようになるのは、遠い(?)未来の話かもしれませんけど。(- -;)

対策3: IE 6- 対策には JavaScript (追記: 2006-11-28)

IE 6- 対策を書き忘れてました。すみません。ごく簡単にですが、書き足しておきます。

IE には、略語の原語を本文に直書きするか、そうでなければ JavaScript を利用するのが、もっとも現実的な方法かと思います。JavaScript を使う場合、方法はいくつかあります。

  1. abbr を acronym に変えてしまう
  2. abbr の title 属性値を取得して、本文に書き出す
  3. abbr の title 属性値を取得して、ツールチップとして表示させる

あとは想定している閲覧者層の対象と、制作者の好み次第です。


最後に abbr について、基本的な資料を一応挙げておきます。ご参考までに。

[資料1]WCAG 1.0

4.2 Specify the expansion of each abbreviation or acronym in a document where it first occurs. [Priority 3]

For example, in HTML, use the "title" attribute of the ABBR and ACRONYM elements. Providing the expansion in the main body of the document also helps document usability.

[資料2]W3C XHTML 2.0 Text Module Working Draft

The abbr element indicates that a text fragment is an abbreviation (e.g., W3C, XML, Inc., Ltd., Mass., etc.); this includes acronyms.

[資料3]参考リソース

  1. フレーズ系要素タイプの精緻化と問題(The Web Kanzaki)
  2. 省略語句の説明(The Web Kanzaki)
  3. ABBR and ACRONYM are for user agents not for end users(SmackTheMouse.com)
  4. abbr要素と acronym要素の違い(SEO-Equation)
  5. 略語にabbrかacronymか(Lucky bag::blog)

|

« abbr の title 値を CSS でポップアップ | トップページ | みくだりはん? »

[Web]XHTML」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.f.cocolog-nifty.com/t/trackback/15394/4336573

この記事へのトラックバック一覧です: abbr は本来 機械のための要素 —マークアップは誰(何)のためのものか?:

« abbr の title 値を CSS でポップアップ | トップページ | みくだりはん? »