html5 と svg で考える、これからの画像アクセシビリティ

46
SV G MANIAX Scalable Vector Graphics Vol. 3

Upload: naoki-matsuda

Post on 17-Jul-2015

19.123 views

Category:

Design


9 download

TRANSCRIPT

Page 1: HTML5 と SVG で考える、これからの画像アクセシビリティ

SVG MANIAXScalable Vector Graphics

Vol. 3

Page 2: HTML5 と SVG で考える、これからの画像アクセシビリティ

松田直樹CCO, Web Designer

Page 3: HTML5 と SVG で考える、これからの画像アクセシビリティ

SVGの特徴って?

Page 4: HTML5 と SVG で考える、これからの画像アクセシビリティ

画像 であり、 文書 である

Page 5: HTML5 と SVG で考える、これからの画像アクセシビリティ

XML文書だから

すべての図形や画像は "要素" となる

Page 6: HTML5 と SVG で考える、これからの画像アクセシビリティ

path 要素 line 要素 rect 要素

circle 要素 ellipse 要素 polygon 要素 image 要素

text 要素

Lorem ipsum dolor

Page 7: HTML5 と SVG で考える、これからの画像アクセシビリティ

<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://

www.w3.org/1999/xlink" viewBox="0 0 100 100">

<path d="M0,42.197C0,18.892,18.892,0,42.197 ... "/>

<rect x="0" y="20" width="10" height="10"/>

<polygon points="81.098,61.017 88.796,76.614 ... "/>

<text>Lorem ipsum dolor</text>

</svg>

Page 8: HTML5 と SVG で考える、これからの画像アクセシビリティ

文書であるということは

テキストノードを含めることができる

マシンリーダブル

アクセシビリティを確保できる

Page 9: HTML5 と SVG で考える、これからの画像アクセシビリティ

HTML5 + inline SVGにおける

アクセシビリティ

Page 10: HTML5 と SVG で考える、これからの画像アクセシビリティ

SVGの最大の利点?

Page 11: HTML5 と SVG で考える、これからの画像アクセシビリティ

画像の「中身」を

アクセシブルにできる

Page 12: HTML5 と SVG で考える、これからの画像アクセシビリティ

画像といえば、代替テキスト

Page 13: HTML5 と SVG で考える、これからの画像アクセシビリティ

JPEG や PNG の代替テキスト

alt="ハンバーガー"

longdesc="http://example.com/desc1"

Page 14: HTML5 と SVG で考える、これからの画像アクセシビリティ

SVG の代替?テキスト

<svg viewBox="0 0 100 100"> <title> ハンバーガー </title> <desc> ハンバーガーのフラットな イラストアイコン </desc> … </svg>

Page 15: HTML5 と SVG で考える、これからの画像アクセシビリティ

SVG の代替テキスト

title 要素 / desc 要素

それぞれの コンテナ要素 や グラフィックス要素 には個別に、

desc 要素, またはテキストのみの説明を与える title 要素,

あるいはそれらの両方を指定することができる。

Page 16: HTML5 と SVG で考える、これからの画像アクセシビリティ

SVG内のそれぞれの要素にも使える

<g> <title>ハンバーガー</title> <desc>…</desc> </g>

<g> <title>ホットドッグ</title> <desc>…</desc> </g>

<g> <title>ドーナッツ</title> <desc>…</desc> </g>

Page 17: HTML5 と SVG で考える、これからの画像アクセシビリティ

<rect x="10" y="10" width="20" height="20"> <title>すごく四角い</title> <desc>…</desc> </rect>

<g x="10" y="10"> <title>たくさん丸い</title> <desc>…</desc> <path …> <circle …> <circle …> <circle …> </g>

図形などの要素にも グループなどのコンテナ要素にもグループ化

Page 18: HTML5 と SVG で考える、これからの画像アクセシビリティ

<svg viewBox="0 0 100 100">

<title>フードメニュー</title> <desc>当店のフードメニューのイラストアイコン</desc>

<g> <title>ハンバーガー</title> <desc>人気No.1。オリジナルのパティとトマトソース…</desc> </g>

<g> <title>ホットドッグ</title> <desc>カリッと焼いた粗挽きソーセージのホット…</desc> </g>

<g> <title>ドーナッツ</title> <desc>外はカリッ。中はモチモチ。そこそこヘルシー…</desc> </g>

… </svg>

Page 19: HTML5 と SVG で考える、これからの画像アクセシビリティ

でも、title 要素と desc要素、

スクリーンリーダーが読んでくれない

Page 20: HTML5 と SVG で考える、これからの画像アクセシビリティ

SVG のスクリーンリーダー対応

role 属性 / aria-* 属性 を使いましょう

WebコンテンツおよびWebアプリケーション、

特にRIAを

あらゆるユーザにとってよりアクセシブルにするもの

Page 21: HTML5 と SVG で考える、これからの画像アクセシビリティ

SVG のスクリーンリーダー対応

role 属性 aria-* 属性

要素の「役割」を定義する

要素の「状態」を定義する

Page 22: HTML5 と SVG で考える、これからの画像アクセシビリティ

<svg viewBox="0 0 100 100"

role="img" aria-labelledby="title desc">

<title id="title">ハンバーガー</title>

<desc id="desc">ハンバーガーのフラットなイラストアイコン</desc>

… </svg>

role と aria-labelledby で対応しましょう

Page 23: HTML5 と SVG で考える、これからの画像アクセシビリティ

<svg viewBox="0 0 100 100"

role="img" aria-labelledby="title desc">

<title id="title">ハンバーガー</title>

<desc id="desc">トマトとレタス、チーズのハンバーガーのイラスト</desc>

… </svg>

SVG のスクリーンリーダー対応

ハンバーガー トマトとレタス、チーズのハンバーガーのイラスト イメージ

Page 24: HTML5 と SVG で考える、これからの画像アクセシビリティ

SVG のスクリーンリーダー対応

<g role="img" aria-labelledby="title1 desc1"> <title id="title1">四角</title> <desc id="desc1">黒い正方形</desc> <rect width="100" height="100"/> </g> <g role="img" aria-labelledby="title2 desc2"> <title id="title2">丸</title> <desc id="desc2">黒い正円</desc> <circle cx="170" cy="50" r="50"/> </g> <g role="img" aria-labelledby="title3 desc3"> <title id="title3">三角</title> <desc id="desc3">黒い正三角形</desc> <polygon points="0,207 50,120 99.999,207 "/> </g> <g role="img" aria-labelledby="title4 desc4"> <title id="title4">星形</title> <desc id="desc4">黒い星</desc> <polygon points="169.987,112.12 185.438,143.427 219.987,148.447 194.987,172.816 200.889,207.226 169.987,190.98 139.086,207.226 144.987,172.816 119.987,148.447 154.536,143.427"/> </g>

Page 25: HTML5 と SVG で考える、これからの画像アクセシビリティ

SVG のスクリーンリーダー対応

<g role="img" aria-labelledby="title1 desc1"> <title id="title1">四角</title> <desc id="desc1">黒い正方形</desc> <rect width="100" height="100"/> </g> <g role="img" aria-labelledby="title2 desc2"> <title id="title2">丸</title> <desc id="desc2">黒い正円</desc> <circle cx="170" cy="50" r="50"/> </g> <g role="img" aria-labelledby="title3 desc3"> <title id="title3">三角</title> <desc id="desc3">黒い正三角形</desc> <polygon points="0,207 50,120 99.999,207 "/> </g> <g role="img" aria-labelledby="title4 desc4"> <title id="title4">星形</title> <desc id="desc4">黒い星形</desc> <polygon points="169.987,112.12 185.438,143.427 219.987,148.447 194.987,172.816 200.889,207.226 169.987,190.98 139.086,207.226 144.987,172.816 119.987,148.447 154.536,143.427"/> </g>

四角 黒い正方形 イメージ

丸 黒い正円 イメージ

三角 黒い正三角形 イメージ

星形 黒い星 イメージ

Page 26: HTML5 と SVG で考える、これからの画像アクセシビリティ

• SVGのtitle要素は、仕様書のとおりだと、hoverでツールチップ表示されるべき(UAによる実装)

• ***.svg という単体のSVGファイルでは、まったくスクリーンリーダーで読まれない

小ネタ

Page 27: HTML5 と SVG で考える、これからの画像アクセシビリティ

小ネタ

Authors should always provide a ‘title’ child element to the outermost svg element within a stand-alone SVG document. The ‘title’ child element to an ‘svg’ element serves the purposes of identifying the content of the given SVG document fragment. Since users often consult documents out of context, authors should provide context-rich titles.

独立した SVG 文書の 最も外側の svg 要素 に対し

常に、 title 要素を子要素として与えるべきである

http://www.w3.org/TR/SVG/struct.html#DescriptionAndTitleElements

Scalable Vector Graphics (SVG) 1.1 (Second Edition)

Page 28: HTML5 と SVG で考える、これからの画像アクセシビリティ

詳細は早川さんのブログにてhttp://blog.e-riverstyle.com/2014/12/svg.html

Page 29: HTML5 と SVG で考える、これからの画像アクセシビリティ

SVGの中でHTMLを使う

Page 30: HTML5 と SVG で考える、これからの画像アクセシビリティ

SVGの中で

「見出し」的なテキストを使いたい

Page 31: HTML5 と SVG で考える、これからの画像アクセシビリティ

SVG の中でHTMLを使う

foreignObject 要素 + HTMLの要素 が使える

foreignObject要素は、グラフィックの描画に、

SVGとは異なる名前空間の要素(HTMLなど)を

用いることができる要素

Page 32: HTML5 と SVG で考える、これからの画像アクセシビリティ

0

30

60

90

120

150

渡辺田中高橋鈴木佐藤

例えば、こんなグラフ

Page 33: HTML5 と SVG で考える、これからの画像アクセシビリティ

0

30

60

90

120

150

渡辺田中高橋鈴木佐藤

<g>

<title id="point-sato"">230点</title>

<text x="450" y="370">佐藤</text>

<rect x="450" y="123" width="70" height="230"

role="img" aria-labelledby="point-sato"/>

</g>

Page 34: HTML5 と SVG で考える、これからの画像アクセシビリティ

0

30

60

90

120

150

渡辺田中高橋鈴木佐藤

このままだと、全部読み上げられるのに

時間がかかってしまう

Page 35: HTML5 と SVG で考える、これからの画像アクセシビリティ

0

30

60

90

120

150

渡辺田中高橋鈴木佐藤

お、なんかこいつ、見出しっぽい

Page 36: HTML5 と SVG で考える、これからの画像アクセシビリティ

0

30

60

90

120

150

渡辺田中高橋鈴木佐藤

<g>

<title id="point-sato">86点</title>

<foreignObject x="76" y="273" width="40" height="25">

<h3>佐藤</h3>

</foreignObject>

<rect x="67" y="116 width="55" height="130"

role="img" aria-labelledby="point-sato"/>

</g>

Page 37: HTML5 と SVG で考える、これからの画像アクセシビリティ

0

30

60

90

120

150

渡辺田中高橋鈴木佐藤

VoiceOver等の

「見出し間スキップ」機能が使える

Page 38: HTML5 と SVG で考える、これからの画像アクセシビリティ

DEMO

Page 39: HTML5 と SVG で考える、これからの画像アクセシビリティ

アクセシブルにできるのは分かったが

どんな画像に向いているのか?

Page 40: HTML5 と SVG で考える、これからの画像アクセシビリティ

こんな一枚画像までもがアクセシブルに

Page 41: HTML5 と SVG で考える、これからの画像アクセシビリティ

地図もそのままアクセシブルに

Page 42: HTML5 と SVG で考える、これからの画像アクセシビリティ

凝ったナビゲーションもアクセシブルに

Page 43: HTML5 と SVG で考える、これからの画像アクセシビリティ

今後のブラウザ対応にも期待

Page 44: HTML5 と SVG で考える、これからの画像アクセシビリティ

SVG Accessibility API Mappings 草案公開http://www.w3.org/TR/2015/WD-svg-aam-1.0-20150226/

Page 45: HTML5 と SVG で考える、これからの画像アクセシビリティ

画像の「中身」を アクセシブルにできること

SVGの最大の利点

Page 46: HTML5 と SVG で考える、これからの画像アクセシビリティ

松田直樹

ありがとうございました

SVG MANIAXScalable Vector Graphics

Vol. 3