▶ を押すと文が増えます
このページは、以前「スクリーンリーダーモードの作り方」と題して3つの記事で連載した内容のまとめです。作成に必要な工程・工夫のみを抜粋しています。
このページではこんな問題の解決ができます。これらを解決する工夫を、まなキキでは「スクリーンリーダーモード」と呼んでいます。
- スクリーンリーダー(VoiceOver、PC-Talkerなど)の利用を想定したページだが、難読漢字や固有名詞などの読み上げ方が間違っているので補正したい。
- キッズページを作成してふりがなをつけたが、スクリーンリーダーで読み上げさせると漢字とふりがなを二重に読み上げてしまう。二重読み。文章が途切れる。
簡単な仕組み
ふりがなのルビタグを含む、Webページのソースコード構成がスクリーンリーダーにとって読み上げにくくなっていることが二重読みの原因です。Javascriptを使って一時的にHTMLソースを書き換えることで、スクリーンリーダーの読み上げに最適化します。書き換えのついでに、固有名詞などはふりがなの方を読ませるようにすれば誤読もなくなります。
「HTMLソースの書き換え」は各クライアントのブラウザ上・そのページでのみ実行され、サーバ側には影響しません。ページを移動したり、再読み込みするたびにスクリーンリーダーモードはリセットとなります。
つくりかた
HTMLファイル
スクリーンリーダーモードを切り替えるボタン
Webページの可能な限り上に配置してください。スクリーンリーダーを使ってアクセスした時に、真っ先に変更できるようにしましょう。見出し要素で囲むことで、見出しジャンプ機能でも確実にみつけることができます。
<!-- スクリーンリーダー向け ふりがなを取り払ってテキストをまとめる -->
<div class="visually-hidden">
<h5>
<button id="sr" type="button">
<span>スクリーンリーダーモード。このボタンを押すと、
ご利用中のスクリーンリーダーの読み上げをスムーズにできます</span>
</button>
</h5>
</div>
ふりがなをつける箇所
<!-- 基本の振り方。スクリーンリーダーモードでは「四月一日」が残り、読み上げられます -->
<ruby>四月一日<rt>わたぬき</rt></ruby>
<!-- 漢字ではなくふりがなを読ませる。スクリーンリーダーモードでは「わたぬき」が残り、読み上げられます -->
<ruby class="read_kana">四月一日<rt>わたぬき</rt></ruby>
『四月一日(わたぬき)』、のような括弧書きによるふりがなには対応できません。ルビタグをご利用ください。
CSSファイル
スクリーンリーダーモードのボタンを見せる必要はないので、隠してしまいましょう。リンク先のCSSを書き写してください。
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();
}
});
末尾で隠している「ふりがなボタン(ふりがな切り替えボタン)」については後述しています。必要があればそちらもご利用ください。
スクリーンリーダーモードの利用について、まなキキからのお願い
おまけ:ふりがな切り替えボタン
ふりがな切り替えボタンを設けることで、ふりがなを見せたり隠したりできます。切り替えにかかわらず、常に表示することもできます。
HTMLファイル
ふりがな切り替えボタン
<!-- ふりがな切り替えボタン -->
<button id="rubyChange" type="button">
<span>ふりがなをつける</span>
</button>
ふりがなをつける箇所
<!-- 基本の振り方。スクリーンリーダーモードでは「四月一日」が残り、読み上げられます -->
<ruby>四月一日<rt>わたぬき</rt></ruby>
<!-- 常にふりがなを表示。スクリーンリーダーモードでは「四月一日」が残り、読み上げられます -->
<ruby class="rb_display_always">四月一日<rt>わたぬき</rt></ruby>
<!-- 漢字ではなくふりがなを読ませる。スクリーンリーダーモードでは「わたぬき」が残り、読み上げられます -->
<ruby class="read_kana">四月一日<rt>わたぬき</rt></ruby>
<!-- classは複数指定できます。常にふりがなを表示。スクリーンリーダーモードでは「わたぬき」が残り、読み上げられます -->
<ruby class="rb_display_always read_kana">四月一日<rt>わたぬき</rt></ruby>
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;
}
Javascriptファイル
/*
* 振り仮名切り替えボタンを押した時の処理
*/
$("button#rubyChange").click(function() {
$('body').toggleClass( 'ruby_flag' );
if ($('body').hasClass( 'ruby_flag' )) {
$("#rubyChange>span").text("ふりがなをけす");
}else{
$("#rubyChange>span").text("ふりがなをつける");
}
});
関連記事
本記事の内容の初出は「スクリーンリーダー特集:スクリーンリーダーモードの作り方」です。制作に至った経緯も含めて紹介しています。
- スクリーンリーダーで「まなキキ」をよむヒント 公開:2020年05月19日
- スクリーンリーダ特集1:【入門編】「スクリーンリーダー」とは何ぞや? 公開:2020年05月27日
- Voiceoverおためしページ:アイコンの読み上げいろいろ 公開:2020年05月30日
- スクリーンリーダー特集・社会科合同企画「みんなが読みやすいサイトってなんだ?」その1 公開:2020年06月11日
- スクリーンリーダー特集・社会科合同企画「みんなが読みやすいサイトってなんだ?」その2 公開:2020年07月02日
- スクリーンリーダーモード(読み方指定)の効果 公開:2020年11月01日
- スクリーンリーダー特集:スクリーンリーダーモードの作り方その(1) 公開:2020年10月31日
- スクリーンリーダー特集:スクリーンリーダーモードの作り方その(2)ルビの振り方マニュアル 公開:2020年10月31日
- スクリーンリーダー特集:スクリーンリーダーモードの作り方その(3)さらに一工夫! 公開:2020年10月31日
- スクリーンリーダー特集:ふりがなをつけたページでも、スクリーンリーダーに正しく読ませることができます! 公開:2021年08月12日