Status update on HTML/CSS ruby:
— fantasai (@fantasai) 2021年3月11日
➤ https://t.co/eVs8ylc0EN
➤ https://t.co/xffoIkmahD
fantasaiのツイートをたまたま見かけて知ったわけだけど、ここに来てHTML/CSS Ruby方面が一気に加速していると。
CSS Rubyについては、2020年になって6年ぶりにドラフトが更新され、この3月にも更新がされた。CSSでは何がどうなった、というのはここでは触れない。Change logを追ってもらえればと。
で、HTMLはというと、CSS Rubyのドラフト更新と時を同じくして、Restore the rb and rtc elements and update ruby content model accordingly - whatwg/html#6478のPRが出ている。このPRによるビルドのコピーが読みやすいかなと。
PRの骨子としては、古いW3C HTML 5.1をインポートしつつ、本文と例をガラッと変えてセマンティクスをより良く説明するものにした、とのこと。まだ精読はしていないものの、確かにHTML5で見かけなかったものが見えている気がする。いつにマージされるかはわかんないけれども、めちゃくちゃ遠くはないんじゃないか、というのが個人的な展望。
で、ここまでは前振りというか、上記はまあどうとでもなると思っているので脇に置いて、じゃあWAI-ARIA、HTML-AAMはどうなるのよというのが自分の一番の関心事ではあり。ruby
周りに関しては、HTML-AAM(ARIA in HTMLでもよい)を読んでもらえばわかるとおり、今のところデフォルトのロールはない。
w3c/aria#74では、
We don't have consensus on rp , rt and ruby
More details as to what these could map to would be helpful.
という具合に(2018年時点だけれども)、ARIA WGでのコンセンサスが取れていない。
Dupeなissueとしてw3c/aria#488があって、これは[Role Parity] HTML 5.1 Rubyというまさしくそれなissueがあるものの、w3c/aria#529とDupeでは?という話が持ち上がり、#529はaudio
/video
要素の話になっているんだけども、いやいやそうじゃないでしょう…。
とまあこんな調子なので果たしてARIA 1.3で本当に何か入るのか?というのが怪しいのだけれども、アクセシビリティの観点からはWCAG 2.0 Understanding SC 3.1.6 Pronunciation(日本語訳:達成基準 3.1.6 を理解する)にruby
はクリティカルに効いてくるものなので、WAI-ARIAとしていい感じにしておきたいというのはあるよねと。
ちなみに現時点でのrt
の実装は、Firefox+NVDAで読んでくれるけども、Chrome+NVDAでは読んでくれない、といったところ。次の例なんかはルビを読んでくれるかどうかがわかりやすいと思う。
東南の方角
<!-- 現在のHTML Standardの例を改変 --> <ruby>東南<rt>たつみ</rt></ruby>の方角
WAI-ARIAの観点からはマッピングされたrole
がないと始まらないわけで、その上で必要なaria-*
プロパティを与えるのが筋になってくるかなと。プロパティについては例えば日本語に限って言えばrt
やrtc
がリテラルに「読み」そのものなのか、あるいは「説明」なのか「異なる読み」なのか…みたいなところを分類して、適切なセマンティクスを与えられるようにする…というところからかしら。
なんか名詞があるとして、例えばこんな感じで?(現時点でそんなrole
値とかaria-*
属性はなく、あくまでブレストレベルのものです。試しに書いてみたものの、もしかして熟語ルビなのかモノルビなのかなどのセマンティクスを与える方が先だったりして。)
<!-- PRのHTMLの例から --> <ruby role="ruby"> <rb role="rubybase">旧<rb role="rubybase">金<rb role="rubybase">山 <rt role="rubytext">jiù<rt role="rubytext">jīn<rt role="rubytext">shān <rtc role="rubytextcontainer" aria-phoneme="translate" lang="en">San Francisco </ruby>
<!-- 支援技術は文脈でわかるんだろうか --> <ruby role="ruby"> <rb role="rubybase">放出</rb> <rtc role="rubytextcontainer" aria-phoneme="literal" lang="ja-Hira">はなてん</rtc> </ruby>
<!-- 現行HTML改 --> <ruby role="ruby"> <rb role="rubybase">境界面</rb> <rtc role="rubytextcontainer" aria-phoneme="description" lang="ja-Kata">インターフェース</rtc> </ruby>
…いちいちaria-*
プロパティとしていちいち属性値を当てていくの、文章の一部でちょこっとならいいけど、大量になるとオーサリングが面倒なことになるのはもはや宿命か。
話は変わって、個人的にはrtc
要素で夢が広がっていくのでは?と思ってたり。前述したrtc
要素の例(そのもの)をもう一度書くと、
<ruby> <rb>旧<rb>金<rb>山 <rt>jiù<rt>jīn<rt>shān <rtc>San Francisco </ruby>
という具合に、rtc
には別の言語を突っ込んでいるのだけれども、これが発音情報でもいいよね…?という発想はどうだろうと。
手の込んだ発音情報を盛るのであれば、Speech Synthesis Markup Language (SSML) Version 1.1(日本語訳:音声合成マークアップ言語(SSML)バージョン1.1)という合成音声のためのマークアップ言語があり、これをHTMLで借用できないかと。
3.1.10 phoneme要素あたりがたぶん求めているもの最も近しく、そのまま埋め込むのにカスタム要素として扱ってしまえば、構文としては何の問題もない。
<ruby> <rb>トマト</rb> <rtc> <ssml-phoneme alphabet="ipa" ph="təmei̥ɾou̥">tomato</phoneme> </rtc> </ruby>
…とここまで書いて、そういえばどこかで似たような話を見かけたなと思ったら、Two First Public Working Drafts for Pronunciationとかあったよね。あと、総務省の電子書籍アクセシビリティガイドラインが斜め上っぽいとかいうのも大昔に書いてたよね…?さっぱり忘れてた。
まあこれに関してはもっと込み入った実装がないとどうマークアップしようがどうしようもないけども。NVDA方面では@24motzさんのSSMLがまとまっているか。
ブラウザーネイティブだと、QiitaのWebページでブラウザの音声合成機能を使おう - Web Speech API Speech Synthesisとかが詳しいか。WICG/speech-api#37とかがそう?(どっちにせよなんもわからん)。
…まあ、SSML方面とかはどうなるのかまるでわかんないですけども、SSMLよりかはARIAのマッピングむずかしくなさそうかなとか。
とりとめもないんですけどこのあたりで。