スクリーンリーダー特集:スクリーンリーダーモードの作り方その(3)さらに一工夫!

▶(さんかく) を押(お)すと文が増(ふ)えます

えすとれ先輩
えすとれ先輩

さて、その(1)とその(2)で基本きほんはできたんですけれども。ところどころ、使つかいにくい部分ぶぶんは残のこっています。その(3)では、それを少しずつ片付けていきましょう。

変更へんこうするファイルは、WordPress上でいうと外観がいかん → テーマエディターに置おいてあるものです。あ、まなキキでは「cocoon」というWordPressテーマを利用りようしています。

もっと分かりやすいサイトを作るには?

せっかくなので、もっと分かりやすいサイトに仕上げていきたいですよね?ここからは、まなキキメンバーで試行錯誤しながら、分かりやすいサイトを作りあげてきた過程も含めて、追加の工夫をお伝えします。

ルビタグを勝手かってに消けさないで!

目次もくじでルビタグが消きえてしまう

えすとれ先輩
えすとれ先輩

この画像がぞうはリリース当初とうしょのまなキキの目次もくじです。漢字かんじの後うしろにカッコ書がきでふりがなが表示ひょうじされています。指摘してきしてくれたのはYさんでしたね。

Yさん
Yさん

内容ないようの確認かくにんをしていて、目次もくじだけこうなってしまっているのが見みづらいなと感かんじていました。

えすとれ先輩
えすとれ先輩

WordPressが目次もくじを自動生成じどうせいせいするために見出みだしの情報じょうほうを取得しゅとくするのですが、そのときにルビタグが無視むしされてしまっていたんです。これは、phpファイル内ないで関数かんすうを上書うわがきして対応たいおうしました。

まずは親おやテーマから/lib/toc.phpを参照さんしょうし、「if ( !function_exists( ‘get_toc_tag’ ) ):」で始はじまる「目次部分もくじぶぶんの取得しゅとく」用ようの関数かんすうをfunctions.phpにコピー&ペーストしてください。そして、以下いかの箇所かしょを変更へんこうします。

変更箇所:fuctions.php
変更元 :/lib/toc.php get_toc_tag
// 変更前
$toc_list .= '<li'.$hide_class.'><a href="#toc' . $counter . '" tabindex="0">' . strip_tags($headers[2][$i]) . '</a>';

// 変更後
$toc_list .= '<li'.$hide_class.'><a href="#toc' . $counter . '" tabindex="0">' . strip_tags($headers[2][$i], '<ruby><rp><rt>') . '</a>';
えすとれ先輩
えすとれ先輩

phpのstrip_tagsは渡わたした文字列もじれつからすべてのタグを取とり除のぞいて平文ひらぶんにしてしまうのですが、第二引数だいにひきすうで残のこすタグを指定していすることができます。

権限けんげんによって使つかえるタグが違ちがう!?

H松
H松

これ、つい最近さいきんの問題もんだいでしたよね。「投稿者とうこうしゃ」の人ひとを増ふやした途端とたんにルビタグが使つかえなくなってびっくりしました。

えすとれ先輩
えすとれ先輩

はい、最初さいしょは何なんのことかと思おもって……よくよく事情じじょうを聞きいて、背景はいけいを調しらべてようやくわかりました。(気きづくまで頓珍漢とんちんかんな返答へんとうをしてしまってすみませんでした)

なお、参考さんこうリンク後半こうはんのビジュアルエディタ「TinyMCE」は「Gutenberg」に変かわっているので考慮不要こうりょふようです。

H松
H松

どうしてルビタグが消けされちゃうんでしょうね。

えすとれ先輩
えすとれ先輩

ksesはホワイトリスト(OKと確定かくていしているものだけリストアップ)方式ほうしきなので、ルビタグはまだまだ認知度にんちどが低ひくいのかな、と思おもいます。

functions.phpに以下いかを追記ついきすれば、どの権限けんげんでもルビタグが使つかえるようになります。

N川さん
N川さん

ルビ(ふりがな)の問題もんだいって、いたるところに出でてくるものなのですねえ。

変更箇所:fuctions.php
/*********
 * ksesで消されないよう、フィルターフックで追加
 */
add_filter( 'wp_kses_allowed_html', 'customKsesAllowedHtml' );

function customKsesAllowedHtml( $tags ) {
  $tags['ruby'] = true;
  $tags['rt'] = true;
  $tags['rp'] = true;
  return $tags;
}
H松
H松

今いままでは、ふりがながついているサイトが少すくなかったので、ルビタグの認知度にんちどが低ひくくても仕方しかたなかったのかもしれませんが…。オンライン化かかが急速きゅうそくに進すすんでいる状況じょうきょうだからこそ、子こどもたちもWebサイトの文章ぶんしょうにアクセスできるよう、ふりがなへの注目ちゅうもくがなされていくと良よいなあと切せつに願ねがっています。ルビタグの認知度にんちど、もっと高たかまってほしいなあ…。

読よみ上あげカスタマイズいろいろ

不要ふようなものは読よませない、あるいは適切てきせつな読よみ方かたに変かえる

えすとれ先輩
えすとれ先輩

javascript.jsを更新こうしんしていきます。まずはページ読よみ込こみ時じに動うごく関数かんすうとして、これを。

ひとつめは、吹ふき出だしアイコンからalt属性ぞくせいを空からにします。アイコンのalt属性ぞくせい、アイコンの下したにある発言者名はつげんしゃめい、吹ふき出だしの内容ないようの順じゅんに読よみ上あげるので実質じっしつ二重読にじゅうよみ上あげになっていました。

ふたつめは、検索けんさくボタンの虫眼鏡むしめがねマークの読よみ上あげを直なおしています。確たしか修正前しゅうせいまえは「ボタン」としか読よみ上あげなかったんですよね。

H松
H松

どうしてスクリーンリーダーモード起動時きどうじではなく、ページ読よみ込こみ時じに動うごいているんですか?

えすとれ先輩
えすとれ先輩

吹ふき出だしalt属性削除ぞくせいさくじょの方ほうは、スクリーンリーダーモードにした時ときの処理しょりに含ふくめてもOKです。スクリーンリーダーモードを思おもいつく前まえに入いれた処理しょりなので、まなキキではこの位置いちです。

検索けんさくボタンはスクリーンリーダーモードのボタンよりも先さきに読よみ上あげられるので、ページ読よみ込こみ時じじに変かえておく必要ひつようがあります。

変更箇所:fuctions.php
$(document).ready( function(){
  // 吹き出しのアイコン画像からalt属性を削除する(その後に発言者名も読んでくれるため)
  $('.speech-person > .speech-icon').each(function(){
    $("img", this).attr("alt", "");
  });

  // サイト内検索機能の、検索ボタンに関する読み上げを更新
  $('.search-submit').each(function(){
    $(this).attr("aria-label", "検索ボタン");
  });
});
えすとれ先輩
えすとれ先輩

続つづいて、スクリーンリーダーモードを起動きどうしたときの追加処理ついかしょりについてです。

まなキキの記事きじの先頭せんとうには時計とけいのマークや、ピリオドで区切くぎられた日付ひづけがありますね?

N川さん
N川さん

スクリーンリーダーモードを使つかわずに読よみ上あげると、「にせんにじゅう、どっと、ぜろはち、どっと、じゅうろく」のようになっていた部分ぶぶんですね。最初さいしょは日付ひづけだとわかりませんでしたし、マークがあることにも気きづいていませんでした。

えすとれ先輩
えすとれ先輩

実じつは更新日こうしんびと投稿日とうこうびだったんですよ。そこもわかりやすく変かえておきますね。カテゴリ一覧いちらんやタグ一覧いちらんもアイコン情報じょうほうしか無なかったので、文字もじの読よみ上あげ情報じょうほうに直なおしています。

変更箇所:fuctions.php
/*
 * スクリーンリーダーモード
 * 1.rubyタグとVoiceOverの競合対応
 * 2.日付情報の読みやすさ確保
 * 3.アイコンの補足説明追加
 */
$("button#sr").click(function() {
  if ($('body').hasClass( 'sr_mode_flg' )) {
    // <ruby>タグを復活させるため、ページを再読み込みする
    location.reload();
	
  } else {
    // ルビタグに関する処理は省略しています。
    // その(1)の記事を参照してください。

    //------------------------------------------------------------------

    // 日付情報の読みやすさ確保
    if ( $('body').hasClass('single-post') || $('body').hasClass('page')) {
      // 日付情報の書式変更(記事)
      if ( $(".single-post .entry-date.date.updated.published").length ) {
        // 投稿日=更新日の場合
        changeDateFormat($(".entry-date.date.updated.published"), '.', '投稿:');
      } else {
        // 投稿日と更新日が別々の場合
        changeDateFormat($(".entry-date.date.published"), '.', '投稿:');
        changeDateFormat($(".entry-date.date.updated"), '.', '更新:');
      }
    }else if ($('body').hasClass('category') || $('body').hasClass('tag')) {
      // 日付情報の書式変更(カテゴリ一覧、タグ一覧)
      $('.post-date').each(function(){
        changeDateFormat($(this), '.', '投稿:');
      });
      $('.post-update').each(function(){
        changeDateFormat($(this), '.', '更新:');
      });
    }

    //------------------------------------------------------------------

    // タイトル情報の変更(アイコンから読み上げ情報へ)
    if ($('body').hasClass('category')) {
      // カテゴリ一覧の場合
      addTextToElement($('#archive-title'), 'カテゴリ一覧:', 'before');
    } else if ($('body').hasClass('tag')) {
      // タグ一覧の場合
      addTextToElement($('#archive-title'), 'タグ一覧:', 'before');
    }
  }
});

/*
 * 関数の定義:日付のテキスト変更
 * yyyy年mm月dd日の書式に書き換える
 * element: 日付データをもっているオブジェクト
 * delim: 元の日付の区切り文字
 * dateName: その日付が意味するもの
 */
function changeDateFormat(element, delim, dateName){
  var oldDate = element.text().split(delim);
  var newDate = dateName+oldDate[0]+'年'+oldDate[1]+'月'+oldDate[2]+'日';
  element.text(newDate);
}

/*
 * 関数の定義:テキストの前または後ろに補助情報を追加
 * element: 補助情報を追加したいオブジェクト
 * addText: 追加する補助情報
 * direction: before または after。補助情報の追加位置
 */
function addTextToElement(element, addText, addDierction){
  if (addDierction == "before"){
    element.text(addText + element.text());
  } else if (addDierction== "after") {
    element.text(element.text() + addText);
  }
}

アイコンの読よみ上あげ変更へんこう

H松
H松

N川かわさん、投稿日とうこうびや更新日こうしんびのアイコンに気きが付ついていなかったってことは、もしかして……このアイコンボックスの鉛筆えんぴつマークも……

ここは「鉛筆えんぴつのマーク」がついたアイコンボックスです。

N川さん
N川さん

はい、気きづいていなかったです。というか、そのアイコン?は「発音不能はつおんふのう」って読よみ上あげられるんですよ。だからスルーしていました。

H松
H松

がーん……

えすとれ先輩
えすとれ先輩

「疑似要素ぎじようそ」を使つかってアイコンを入いれているとそういうこともあるようです。読よみ上あげ対象たいしょうとなるcontent属性ぞくせいがバックスラッシュから始はじまる英数字えいすうじになりますので、そりゃ読よみ上あげようが無ないなと……。

これについては力技ちからわざなんですが、CSSファイル内ないで「スクリーンリーダーモードに切きり替かえたら、小ちいさいフォントでアイコンの読よみ上あげ情報じょうほうをみっしり詰つめる」で対応たいおうしています。本体ほんたいのphpファイルを見みつけて、アイコンは見みせたまま読よみ上あげ情報じょうほうも追加ついかするのがスマートなのでしょうが……。また検討けんとうします。

変更箇所:style.css(一部抜粋)
/* スクリーンリーダーモードにしたときの、アイコン読み上げ変更 */
.sr_mode_flg .memo-box::before {
  border: none;
  font-size: 3px;
}
.sr_mode_flg .memo-box::before {
  content: '鉛筆マーク';
}
/* ページ最上部に戻るマーク */
.sr_mode_flg .fa.fa-angle-double-up::before {
	content: 'ページトップへ戻る';
}
タイトルとURLをコピーしました