トピックを検索
意味ではなく名前で読み上げられる絵文字
パン屋が小麦、乳、落花生、ヴィーガンを絵文字だけで示しているため、スクリーンリーダーは「稲」「新芽」のような絵の名前を読み、見出しを飾るきらきらまで読み上げます。
<span class="marks">🌾 🌱</span> 問題
スクリーンリーダー利用者は、絵の名前を聞かされるだけで、どの商品に小麦や乳が入っているのか、どれがヴィーガン向けなのかが分かりません。
あるパン屋は、Webサイトで注文を受け付けています。「✨ 本日の焼きたて ✨」という見出しの下に並ぶ商品には、アレルゲンの一覧の代わりに小さな絵文字が付いていて、リストの下の「マークの見方」に意味が書いてあります。🌾は小麦を含む、🥛は乳を含む、🥜は落花生を含む、🌱はヴィーガン向けです。見える人は、マークを見方と照らし合わせて、サワードウブレッドがヴィーガン向けで、クロワッサンには乳が入っていると分かります。スクリーンリーダーは、見出しを「きらきら 本日の焼きたて きらきら」と読み、続けて「サワードウブレッド、稲、新芽」「バタークロワッサン、稲、牛乳入りのコップ」「ピーナッツクッキー、ピーナッツ、新芽」と読みます。絵文字はどれも、店が込めた意味ではなく、絵の名前で読まれます。小麦を避けたい人には、どの商品でも「稲」と聞こえ、ヴィーガンの人には「新芽」と聞こえます。見方はリストの後に「マークの見方:稲 小麦を含む」のように読まれるため、意味が分かるのは最後で、しかもどの商品にどの絵の名前があったかを覚えている場合だけです。意味どおりに読まれるのは、たまたまピーナッツだけです。
絵文字はテキストの中の文字ですが、働きは小さな画像と同じです。意味は描かれた絵と、この例ではパン屋が独自に決めた約束事で決まります。スクリーンリーダーが読み上げるのは、絵文字ごとに決まった、絵を表す名前です。たとえばNVDAが使うのはUnicode CLDRの名前で、🌾は「稲」、🌱は「新芽」です。商品の行でマークが持つテキストは、この名前だけです。1.1.1 非テキストコンテンツは、マークと同じ目的を果たすテキストの代替を求めています。ここでの目的は「小麦を含む」「ヴィーガン」を伝えることですが、行の中ではどちらも読まれず、それを書いた見方はリストの後に読まれます。きらきらは、これとは逆の理由で1.1.1を満たしません。1.1.1は、飾るだけのものを支援技術が無視できるように実装することを求めていますが、きらきらは見出しに移るたびに、言葉の前後で2回読まれます。
マークを選んだ人には分かりやすく見えても、その意味は約束事です。新芽がヴィーガン、稲穂が小麦を表すという決まりは、見方にしか書かれていません。また、絵文字はWindows、Apple、Androidでそれぞれ違う絵で描かれるため、店が選んだ絵と、利用者に見える絵は同じとは限りません。
10グループ中2グループに影響
- 全盲 (影響あり)
- 弱視 (影響なし)
- 色覚 (影響なし)
- ろう (影響なし)
- 難聴 (影響なし)
- 発話 (影響なし)
- 手の操作 (影響なし)
- 届く範囲・力 (影響なし)
- 認知 (影響あり)
- 光過敏 (影響なし)
- 視覚を使わない スクリーンリーダー利用者には、店が小麦のつもりで置いたマークが「稲」、ヴィーガンのつもりのマークが「新芽」と聞こえます。小麦を避けたい人に「稲」と伝わってしまいます。
- 言語・認知・学習の能力が限られる 新芽がヴィーガン、牛乳のコップが乳を含むことを表すという店の決まりを知らない人は、意味がマークの隣に書かれていないと、商品ごとに見方を確かめることになります。
axe などのツールには、絵文字を確認するルールがありません。見出しにもリストの項目にもテキストがあるため、ページは合格になります。仮にすべての絵文字を見つけるツールがあっても、意味のあるマークと飾りを区別したり、ここでの意味を判断したりはできません。この診断では、見出し、リンク、ボタン、ラベル、リストの項目、表のセルにある絵文字を、人が確認する候補として報告し、よく似た数学用の文字で書いた言葉を問題として報告します。AIによる手早い修正では、絵文字に絵の内容どおりの名前(「小麦」「新芽」)を付けて、意味ではなく見た目を伝えてしまうか、読み上げを止めるためにすべての絵文字を隠して、アレルゲンの情報そのものを消してしまいがちです。どのマークに意味があり、何を表すかは、メニューを知る人にしか判断できません。
試してみる
見えているマークと、スクリーンリーダーの読み上げを比べてください。
下の欄に、スクリーンリーダーの読み上げが上から順に出ます。小麦を含むのはどれで、ヴィーガン向けはどれですか?
問題あり 修正できますか?
✨ 本日の焼きたて ✨
- サワードウブレッド 🌾🌱
- バタークロワッサン 🌾🥛
- ピーナッツクッキー 🥜🌱
マークの見方: 🌾 小麦を含む🥛 乳を含む🥜 落花生を含む🌱 ヴィーガン
スクリーンリーダーの読み上げ:
- きらきら 本日の焼きたて きらきら、見出し
- リスト、3項目
- サワードウブレッド、稲、新芽
- バタークロワッサン、稲、牛乳入りのコップ
- ピーナッツクッキー、ピーナッツ、新芽
- マークの見方:稲 小麦を含む、牛乳入りのコップ 乳を含む、ピーナッツ 落花生を含む、新芽 ヴィーガン
修正方法
意味のある絵文字にはここでの意味で名前を付け、飾るだけの絵文字はすべて aria-hidden="true" で隠します。
- 1絵文字は名前を付けるか隠すかのどちらかにし、そのまま置かない。
- 2絵の内容ではなく、このページでのマークの意味を、aria-label か、隠した絵文字の隣の言葉で伝える。
- 3飾りの絵文字は aria-hidden="true" で隠し、見出しやリンクを言葉だけで読ませる。
<h2>✨ 本日の焼きたて ✨</h2><ul class="bakes"> <li> サワードウブレッド <span class="marks">🌾 🌱</span> </li> <li> バタークロワッサン <span class="marks">🌾 🥛</span> </li> <li> ピーナッツクッキー <span class="marks">🥜 🌱</span> </li></ul><p class="key"> マークの見方: 🌾 小麦を含む 🥛 乳を含む 🥜 落花生を含む 🌱 ヴィーガン</p>マークに意味で名前を付ける
<h2> <span aria-hidden="true">✨</span> 本日の焼きたて <span aria-hidden="true">✨</span></h2><ul class="bakes"> <li> サワードウブレッド <span class="marks"> <span role="img" aria-label="小麦を含む">🌾</span> <span role="img" aria-label="ヴィーガン">🌱</span> </span> </li> <li> バタークロワッサン <span class="marks"> <span role="img" aria-label="小麦を含む">🌾</span> <span role="img" aria-label="乳を含む">🥛</span> </span> </li> <li> ピーナッツクッキー <span class="marks"> <span role="img" aria-label="落花生を含む">🥜</span> <span role="img" aria-label="ヴィーガン">🌱</span> </span> </li></ul><p class="key"> マークの見方: <span aria-hidden="true">🌾</span> 小麦を含む <span aria-hidden="true">🥛</span> 乳を含む <span aria-hidden="true">🥜</span> 落花生を含む <span aria-hidden="true">🌱</span> ヴィーガン</p>マークの意味はリストの後の見方にしか書かれておらず、商品の行でマークが持つテキストは絵の名前だけです。きらきらは何も伝えないのに、見出しの一部として読まれます。
各マークを role="img" の span で囲んで一つの画像にし、このメニューでの意味を表す aria-label を付けます。この名前が絵文字自体の名前の代わりになり、スクリーンリーダーは「サワードウブレッド、小麦を含む、ヴィーガン」と読み、スクリーンリーダーによっては各マークの後に「画像」や「グラフィック」と加えます。きらきらは aria-hidden="true" で囲むため、見出しは「本日の焼きたて」と読まれます。見方の絵文字も同じように隠します。隣の言葉がすでに意味を伝えているからです。見た目は修正前とまったく同じで、それがこの方法の限界です。意味はスクリーンリーダーには届きますが、画面上の各マークは絵のままで、利用者は見方で一つずつ確かめる必要があります。また、aria-label を翻訳しないページ翻訳ツールもあります。
どちらの方法でも、絵の名前がすべて意味に置き換わり、きらきらは読まれなくなるため、1.1.1を満たします。マークに名前を付ける方法はマークアップを変えるだけで、行はこれまでどおりコンパクトなままですが、その言葉は支援技術にしか届きません。画面を見る人は、新芽がヴィーガンを表すことを見方で確かめる必要があります。絵文字の隣に意味を書く方法は普通のテキストで済み、ページを読むすべての人に伝わり、ARIAに任せるものが残りません。代わりに、行の幅を取ります。こちらを使ってください。名前を付けた絵文字を使うのは、情報の詰まった表など、言葉を置く余白が本当にない場所だけにし、その場合は近くに凡例を表示します。
名前を付けるか隠すかを、一つのコンポーネントで決める。 多くのサイトでは、絵文字はメニューのマーク、バッジ、見出しなど、いくつかのテンプレートで追加されます。それらに共通のコンポーネントを用意し、ラベルを受け取るようにします。ラベルがあれば role="img" と aria-label を出力し、なければ aria-hidden="true" を出力します。こうすれば絵文字ごとに毎回判断する必要がなく、名前も aria-hidden もない絵文字がレビューで目立ちます。
絵文字だけでなく記号も。 マークとして使う記号の文字も同じです。比較表の ✓ と ✗、評価の ★、「次へ」の意味の → などです。「チェック」のような名前で読まれるものも、飛ばされるものもあり、どうなるかはスクリーンリーダーと句読点の読み上げ設定によって違います。意味で名前を付けるか、意味を隣に書きます。
利用者が書いた絵文字。 レビュー、コメント、チャットの絵文字は書いた人自身の言葉で、それぞれにどんな意味を込めたかはページには分かりません。そのままにしておきます。このガイドで扱うのは、サイト自身が加えるマークと飾りです。
飾り文字。 文字を 𝐛𝐨𝐥𝐝、𝘪𝘵𝘢𝘭𝘪𝘤、𝓈𝒸𝓇𝒾𝓅𝓉 のように変える変換ツールは、各文字を、Unicodeの数学用英数字記号にあるよく似た文字に置き換えます。スクリーンリーダーは1文字ずつ名前で読むか、読み飛ばします(W3Cの失敗例F71)。普通のテキストで書き、見た目はCSSで付けます。文字で描いたアスキーアートや顔文字(¯\_(ツ)_/¯ など)も同じで、W3Cの達成方法H86のように、role="img" と aria-label を持つ要素で囲みます(失敗例F72は、それがないアスキーアートです)。
絵は環境によって変わる。 絵文字の絵は、プラットフォームごとに独自にデザインされています。同じ文字が、別のスマートフォンでは違う植物に見えることもあります。意味を絵の細部に頼ることはできず、これも言葉で書く理由の一つです。
AI コーディングアシスタントで修正しますか? このガイドを Markdown で取得、または全ガイドをコーディングエージェントで使う。
デザインの案
マークは小さいままでも、意味を伝えられます。
同じ2つのマークの見せ方をさらに3通りと、伝えているように見えるだけの2通りを示します。スクリーンリーダーに何が伝わるかは、それぞれの説明に書いています。
デザインファイルで
- 各マークの意味を、絵だけでなく、隣か下に言葉で書く。
- ファイルの絵文字すべてに、意味があるか飾りかを書き添え、名前を付けるものと隠すものを開発者に伝える。
- マークとその言葉の一覧を1つにまとめ、メニューの凡例と開発者の両方に使う。
- 太字や斜体は文字スタイルで指定し、飾り文字の変換ツールからコピーした文字は使わない。
合格
- 下に言葉を添えた絵文字のタイル 各マークを、絵文字の下に短い言葉を置いた柔らかい四角にしています。食品アプリのアレルゲン表示によくある形です。絵文字はスクリーンリーダーから隠し、言葉を読ませるため、絵は大きいままにできます。
- 名前の下の控えめな1行 絵文字を使わず、「ヴィーガン・小麦を含む」を小さめの茶色の文字で書きます。#6b5e52で、白に対して6.27:1です。マークと同じくらいの場所で収まり、凡例もいりません。
- 小さな大文字で書いた枠付きのタグ 細い枠の中に、字間を空けた大文字で書いたタグです。最近のメニューでよく見る形です。言葉は普通の大文字・小文字で書き、大文字にするのはスタイルに任せます。大文字で入力した言葉を1文字ずつ読むスクリーンリーダーもあるためです。
不合格
- 色付きの丸に入れた絵文字WCAG 1.1.1 淡い色の丸でマークは仕上がって見えますが、中身は絵文字だけなので、スクリーンリーダーはやはり「稲、新芽」と読みます。丸の中か隣に言葉を置くか、意味で名前を付けます。
- 飾り文字で書いた「NEW」WCAG 1.1.1 飾り文字の変換ツールから貼り付けた太字は、文字に見えるだけの数学用の記号です。スクリーンリーダーは読み飛ばすか、記号の名前を1つずつ読みます。タグは文字スタイルの太字で組みます。
修正の確認
マウスを使わない4つの確認
確認方法: スクリーンリーダー
OS、ブラウザーと支援技術のバージョン、ビルド、実施日、各手順の実際の結果を記録してください。メニューのマークや、それを表示するコンポーネントを変更した際は、再度確認します。
制限
このサンプルは、どのアプリケーションでも同じ結果になることを保証するものではありません。クラス名、色、商品は仮のものです。絵文字の名前の出どころはスクリーンリーダーによって違い、バージョンや設定によっては読まないものもあるため、利用者が使う支援技術で確認してください。画像のアイコンやSVGを同じように使う場合も、同じ決まりに従います。名前がない、または読まれてしまうSVGアイコンを参照してください。絵文字が飾りか意味を持つかは周りの内容で決まり、内容を知る人にしか判断できません。実際に使用する支援技術で、操作全体を確認してください。
よくある問題を再現した学習用のサンプルです。実在のクライアントの診断結果ではありません。コードは出発点となる実装例のため、実際の製品でも確認してください。ここでは支援技術でのテスト結果は報告していません。
コードを更新しても、使いやすさを保つために
ガイドの内容を、コーディングエージェントやCIで使える開発ルールにまとめます。更新後は、キーボードとスクリーンリーダーで再テストし、問題が再発していないか確認します。