HTMLだけで実現する何かはプログレッシブ・エンハンスメントではないのかな?
スミマセン。このエントリーでroll
属性とありますが、正確にはrole
属性です。
ブログなどでプログレッシブ・エンハンスメントに関するエントリーを読みますと、そのほとんどがCSS3に関するテーマのお話ですよね。なんでHTMLだけのお話でプログレッシブ・エンハンスメントが語られることがほとんどない(まだ僕は聞いたことがない)のかなーと不思議に思ってたりします。
そもそもプログレッシブ・エンハンスメントってなんですか?
僕の中では、「互換性などもふまえてHTMLをしっかりと作りながら、より進んだ技術をサポートしているユーザーエージェント(以下、UA)にはよりよいユーザー体験を提供しましょうね」というのがプログレッシブ・エンハンスメントだと理解していますので、この前提にたってこのエントリーを書いています。
ですのでそもそもその前提が違ってますけど、という場合はご指摘ください。よろしくお願いいたします!
例えばroll
属性を指定するだけでもプログレッシブ・エンハンスメントのような気がする
さて、ではどんな場合がHTMLだけでプログレッシブ・エンハンスメントを実現出来ると思ってるの?ということですが、例えばWAI-ARIAで策定が進んでいるroll
属性を考えてみましょう。
4.4. ロール(role)の定義には、HTML文書に簡単に指定することができる値が用意されています。ざっくりと言ってしまえばページの中で、ここにはナビゲーションがあるよーとか、ここにサイト内検索があるよーということをHTMLに記述することが出来るわけですね。
で、なんでこれを指定するのがプログレッシブ・エンハンスメントなのかと言いますと、スクリーンリーダーの中ではJAWSのバージョン10からと、いつからかバージョンは覚えていませんがNVDAの最新版で、roll
属性を認識して、見出しジャンプのようにページ内の主要な場所へとスキップできるという機能をサポートしています(これをランドマークジャンプと言ったりしますね)。
現状においては、roll
属性を指定することで(X)HTMLはinvalidになりますが、メジャーなUAに何か迷惑をかけるということはありません。JAWSやNVDAを使用してブラウジングしている人にとっては、ランドマークジャンプを利用してサイト内検索やナビゲーションをすぐに発見することが可能になるわけですね。これってプログレッシブ・エンハンスメントじゃないのかなーと思うんですがどうでしょうか?
余談
なんかプログレッシブ・エンハンスメントっていう言葉が分かりづらいなーと思うんですよね。UAによって最適な実装をしましょう、ということであれば、「User Agent Optimization」でUAOとか良いかなーとか思いました。
いろいろ大きなことを言ってしまってスミマセン!
comment