▶ を押すと文が増えます
こんにちは。今回はみなさまに、まなキキ独自の工夫、「スクリーンリーダーモード」の作り方を解説していきたいと思います!
ふりがながあっても、スクリーンリーダーが正しく読み上げを行うことができる工夫です。Webサイトを作る人が、「この漢字はこう読んでほしい!」と思った場合、スクリーンリーダーの読み上げ方を指定することもできます。
こうした工夫は、おそらく、日本初の取り組みだと思います。
この記事を読んで頂ければ、プログラミングの知識がない方でも、ご自身のサイトにスクリーンリーダーモードを導入頂けます!是非是非、ご一読ください。
スクリーンリーダーモードの作り方を公開する理由
今まで見過ごされてきた、ふりがなとスクリーンリーダーの読み上げの共存。
まなキキの制作を開始した当初、ふりがなをつけた途端にスクリーンリーダーの読み上げの音がおかしくなった!という大問題が起こりました。解決方法を探した私たちでしたが、「ふりがな(ルビ)とスクリーンリーダーの相性が悪いらしい」というコメントは見つかっても、どのようにしたら解決できるのかを説明しているサイト・研究は見つかりませんでした……。
実は、ルビ(ふりがな)とスクリーンリーダーの読み上げの共存方法を考える工夫は今まで十分になされてこなかったんですよね。
そうなのです。頑張って色々と調べたのですが。スクリーンリーダーが漢字を間違った読み方で読んでしまうことを何とかしようという取り組みはあっても、ふりがなとの共存を何とかしなければ!という取り組みが十分にはないということが分かったんです。
それで、結構苦労して、スクリーンリーダーモードという解決策を生み出したんですよね。
なんだか、懐かしいですね。
当時の私たちは、目の前の課題に1つ1つぶつかっていって、その都度「どうしよー」と、無我夢中で対処してたんですよね。
無事にスクリーンリーダーモードが完成して、ちょっとホッとしたところで、「もしかしたら、制作過程を言語化しておいた方がいいのかも…。」という話になったんですよね。それで、2020年度第1回IES研修講演会「スクリーンリーダーとWEBアクセシビリティ」の開催に至ったという。
いやはや。それも懐かしいですね。この講演会で頂いた意見が1つのきっかけになって、「スクリーンリーダーモードを公開しよう!」という話になったんですもんね。
自分のサイトでも、ふりがなとスクリーンリーダーの読み上げを両立させたいという声。
2020年7月6日開催「スクリーンリーダーとWEBアクセシビリティ」の講演会の終了後、参加者の大学生からこんなコメントを頂きました。
ふりがなとスクリーンリーダーの両立は大変興味深いなと思いました。しかし基準を満たしているサイトはとても少ないのではないかと思いました。晴眼者にとって見やすいと思われるサイトが、全ての人にとってわかりやすいものなのか、今一度考えなおすべきだと思いました。
私は既存のブログサイトを利用してブログを投稿したり、ホームページ作成サイトのテンプレートを使用してページの作成を行うことがあります。ふりがなとスクリーンリーダーが両立するようなインクルーシブなサイトを作成するためには、htmlを使用して自分で作成する必要があるのでしょうか。既存のサイトを利用して工夫できることはありますか。
コメントを頂いたときの、私たち(H松・えすとれ先輩・N川さん)の会話
自分でサイトを作っている方から、こんなコメントを頂きましたー。嬉しいですねえ。
でも、講演会で紹介した内容をヒントに、スクリーンリーダーモードを自力で作るのは、プログラミングの知識がないとちょっと厳しいかも…。
スクリーンリーダーモードを導入することによって、ふりがなとスクリーンリーダーの読み上げの共存が可能になるんですよね?ふりがながあっても、スクリーンリーダーを使って読み上げることができるサイトがもっと増えればいいなと心から思うのですが…。
スクリーンリーダーモードが当たり前になったら、Webサイトの文章を今までのように苦労して読まなくてよくなるもんね。どのサイトにいっても、スクリーンリーダーモードがあって、ボタンを押すだけで、スクリーンリーダーの読み上げに適したページに切り替わってくれれば。
だったら、誰でもスクリーンリーダーモードを作れるように、作り方を公開してしまいましょうよ!まなキキからお借りしました、って
おそらく日本初の工夫だから、やろうと思えば、特許をとれてしまうかもしれないけれど(笑)。でもそれは、まなキキの想いに反する行為だもんね。
あ…。H松さん、ちょっとだけお金に目がくらみかけましたね?
(全く考えなかったかと言えば、否定はしがたい……)
いやいや、H松はまなキキの社会科担当ですからね!スクリーンリーダーモードが情報格差を減らす一助となるなら、無料でドンドン公開しますよ!
と、いうことで。ふりがながあってもスクリーンリーダーの読み上げに対応できるサイトが増えてほしいという願いから、作り方を無料公開することにしました!
小さく書いてしまいましたが。実は、スクリーンリーダーモードの制作過程・方法を、学会でも発表したんですよね。
4月にまなキキを始めたときには、まさか学会発表を行うまでになるとは一切思っておりませんでした。でも、学会では「ルビ(ふりがな)の存在が、ここまで読み上げに悪影響を与えていたとは考えていなかった。今後どのようにWebアクセシビリティ改善の呼びかけを行っていけるかを考えなければ!」という有り難いご意見を頂くことができたんですよね。少しでも、アクセシビリティの向上の助けになれば……と思って学会発表を行ったこともあって、本当に嬉しく、今後の議論の発展にワクワクする気持ちになりました。
今後、ルビ(ふりがな)とスクリーンリーダーの共存を考える議論が学術の場においても、もっともっと盛り上がったらいいなと思いますよね。
おっと!ついつい、前置きが長くなってしまいましたね。
それでは、いよいよ。スクリーンリーダーモードの作り方をご説明します!
まずは、ふりがなボタンを作るところからですね!
そうですね。ふりがなのオンオフをボタン1つでできる機能をつけると、読む人の事情に合わせて切り替えてもらえますから。ふりがなボタンの設置は、誰しもが読みやすいサイトにするための第一歩とも、言えるかもしれませんね。
ふりがな切り替えボタンをつくる
ボタンをつくる
ふりがなボタンを配置したい場所に、以下のHTMLコードを入力してください。WordPressでは「PRyC WP」というプラグインを導入すると、投稿記事の本文上に自動で表示してくれるので便利です。
ふりがな切り替えボタン:HTMLコード
<!-- ふりがな切り替えボタン -->
<button id="rubyChange" type="button">
<span>ふりがなをつける</span>
</button>
ボタンの動きを作る
ボタンを押した時の処理はJavascriptで記述します。
WordPressを利用している方は、外観 → テーマエディター → javascript.jsに追記してください。
ふりがな切り替えボタン:Javascriptコード
/*
* 振り仮名切り替えボタンを押した時の処理
*/
$("button#rubyChange").click(function() {
$('body').toggleClass( 'ruby_flag' );
if ($('body').hasClass( 'ruby_flag' )) {
$("#rubyChange>span").text("ふりがなをけす");
}else{
$("#rubyChange>span").text("ふりがなをつける");
}
});
ふりがなの見え方を設定する
ふりがな表示がオンのとき、オフのとき、それぞれどう見せるかはCSSで記述します。
WordPressを利用している方は、外観 → テーマエディター → style.cssに追記してください。
ふりがな切り替えボタン:CSSコード
/* ふりがな */
button#rubyChange{
padding:7px;
margin:0px;
line-height: 100%;
}
button#rubyChange > span{
line-height: 100%;
}
/* ふりがなが非表示のとき */
ruby {
display:inline;
}
rt {
display:none;
}
rp {
opacity:0;
}
/* ふりがなが表示されているとき、いつも見せたいとき */
.ruby_flag ruby,
ruby.rb_display_always{
display:inline;
/* firefox向け設定 */
ruby-position: over;
ruby-align: center;
display:ruby !important;
}
.ruby_flag rt,
ruby.rb_display_always rt{
line-height: 100% !important;
display:block;
/* firefox向け設定 */
display:ruby-text !important;
}
.ruby_flag rp,
ruby.rb_display_always rp{
opacity:1;
}
これで無事、ふりがなのオン・オフができるようになりましたね!
ということで、ここからは、いよいよスクリーンリーダーモードを作成していきますよ!
スクリーンリーダーモードをつくる
ボタンをつくる
ふりがな切り替えと同じく、まずはボタンの設置からですね。「記事本文の上」だとボタンに辿り着くまでに時間がかかってしまうので、「コンテンツ上部」に配置してみましょう。
WordPressメニューの外観 → ウィジェット → コンテンツ上部です。ここにカスタムHTMLを追加して、以下を入力します。
スクリーンリーダーモードボタン:HTMLコード
<!-- スクリーンリーダー向け ふりがなを取り払ってテキストをまとめる -->
<div class="visually-hidden">
<h5>
<button id="sr" type="button">
<span>スクリーンリーダーモード。このボタンを押すと、
ご利用中のスクリーンリーダーの読み上げをスムーズにできます</span>
</button>
</h5>
</div>
ボタンの内容が長いですね。それに、5レベルの見出し要素になっています。
見出しになっていると、見出しジャンプを使ったときでも聞き落とさずに済むんです。内容も「このボタンを押したら何が起こるのか?」がわかるように説明してもらっています。
ボタンの動きを作る
ボタンを押した時の処理はJavascriptで記述します。
WordPressを利用している方は、外観 → テーマエディター → javascript.jsに追記してください。
スクリーンリーダーモードボタン:Javascriptコード
/*
* スクリーンリーダーモード
*/
$("button#sr").click(function() {
if ($('body').hasClass( 'sr_mode_flg' )) {
// <ruby>タグを復活させるため、ページを再読み込みする
location.reload();
} else {
// スクリーンリーダー向けにふりがなデータを編集する
$('ruby').each(function(){
// thisを消す前に親要素を取得しておく
var parent = $(this).parent().get(0)
if (parent !== undefined && parent !== null) {
var readText;
if ( $(this).hasClass('read_kana') ) {
// ふりがなを読み上げテキストとして取得する場合
readText = ' '+$('rt', this).text()+' ';
} else {
// 漢字を読み上げテキストとして取得する場合
// <ruby>直下の漢字だけ取得できればいいのでふりがなは削除
$(this).children().remove();
readText = $(this).text();
}
// 自分の要素の手前に読み上げテキストを配置し、<ruby>タグ自身は削除
$(this).before(readText);
$(this).remove();
// 親のテキストをひとかたまりにする
parent.normalize();
}
/*
* <ruby>タグに誤りがある場合でも、スキップして最後まで処理を終わらせる
* スクリーンリーダーの読み&画面表示がおかしくなるので発見次第本文を修正
*/
});
// ボタンのテキストを変更し、目印のclassをつける
$("#sr>span").text("変更完了しました。ページを再読み込みするか、他のページに移動すると元に戻ります");
$('body').toggleClass( 'sr_mode_flg' );
//<ruby>タグを消してしまったので、ふりがなボタンは隠す
$("#rubyChange").hide();
}
});
ボタンをかくす
いやー。これで無事に、「スクリーンリーダーモード」というボタンができましたね。よかったよかった。
ちょっと待ったー! こんなに長いボタン、見えっぱなしでいいんですか、いやよくない!
画面の幅を取るというのもそうなんですけれどもね。H松さん、「スクリーンリーダーモード」が何をどう変えているかもう一度思い出してください。
スクリーンリーダーとルビの競合を防ぐために……
あっ、ルビタグを消してますね。ふりがな切り替えボタンもなくなっちゃう。
うっかり晴眼者がこのボタンを押すと、却って目では読みにくくなるんです。ページの再読み込みで元に戻るとはいえ二度手間ですよね。だから、スクリーンリーダーを使った時だけこのボタンを見つけられるように隠してしまいましょう。
そんな便利なことができるんでしょうか?
はい、これについては先行事例があったのでそのまま使わせていただきました。「見せないけれども読み上げる」通称visually-hiddenというもので、CSSに追記して使います。詳細はリンク先を参照してください。これで、ふりがな切り替えボタンとスクリーンリーダーモードの作成は完了です。
ふりがなボタンとスクリーンリーダーモードの作成方法は以上です!次回、スクリーンリーダーモードの作り方その(2)に続く!