本文開始

当協会の会報を、バックナンバー含めて総てお読みいただけます。1999年から続く本会の歩みをぜひご覧ください。視力を使わずに自由に街路を闊歩できる技術、歩行訓練。ここではその体験者の皆様のお声をインタビュー形式でお読みいただけます。ここでは視力を用いずにパソコンを利用されている様々な当事者の方の事例をご紹介します。

見えない見えにくい方のパソコン活用

近年、内蔵部品の高性能化によりPCの情報収集に果たす役割は更に大きくなりました。
視覚障害から文字情報の入手が困難となる状況では、音声パソコンの活用により生活面は勿論仕事や学び、趣味など多方面に渡って良い方向へ大きく変化いただけます。
本コラムでは、視覚障害の方々が音声パソコンを活用されている様子やソフトをご紹介します。


視覚障害とWebアクセシビリティ

視覚障害の有無に関わらず、情報収集、ショッピング、銀行の振込、音楽やビデオ購入・レンタル、株取引等が可能となるのがインターネットの魅力です。
但し、視力に頼らないWebページの利用を円滑にいただくには、スクリーンリーダーの特性を踏まえたHTMLレンダリングが必要になります。
以下では主にWebページ開発をされている方へ、音声パソコン利用時に役立つHTMLおよびCSSのコーディング手法を紹介します。


ソースコードの軽量化

Webページの読み込みを高速化することで音声パソコンでの利用を円滑にします。


・軽快な動作の必要性

スクリーンリーダーは画面の内容を音声に変換して読み上げる作業を常時行い続けているため、常にCPUリソースを消費します。
また、スクリーンリーダーは動作に即応性が求められることからメインメモリに常駐し、PC-Talker7 Ver5.09の場合、常に84MB(32bit環境)~98MB(64bit環境)ほどのワーキングスペースを専有し続けています。
加えて、音声ブラウザ「NetReader2」では、Webページ内の文章が画面へすべて表示されているとしても、1つでも読み込みが終わっていない画像があれば音声読み上げを開始できません。
そのため、Webページ全体の読み込みを速くすることが音声利用の場合にのみ生じる動作遅延の低減へつながる場合があります。


・htmlレンダリングの実行効率を上げる

HTMLやCSSは、インタプリタ型プログラム言語です。
インタプリタ型プログラム言語とは、命令を1行ずつ順に実行するものです。
したがってプログラムで実行される命令の絶対数、およびプログラムがメモリ上へロードされるまでの時間が少なければ少ないほどWebページの読み込み時間が短くなります。
例えば、



このスタイルシートは、



とも表現可能です。
この例では、177byteのデータが79byteになりましたが、この軽量化処置をWebサイト全体で積み重ねることでスクリーンリーダー操作時の体感速度が向上します。


・ファイルサイズを4096byte以内にする

CSS Compressorなどの最適化ツールの活用により、スタイルシート軽量化を自動で行えます。
こうした軽量化は、Webサイトが大規模である程表示速度の改善に効果があります。
また、Googleより公開されているPageSpeed Insightsをご利用いただくことで、画像、JavaScript、CSSの圧縮されたデータを入手可能です。


・ファイルの断片化を防ぐ

WindowsOSの動作するローカルドライブは多くの場合でNTFSでフォーマットされていますが、そのファイルアロケーションユニットサイズは、特にOSインストール時に設定しないかぎりは4096byteとなります。
「ファイルアロケーションユニットサイズ」とは記憶ストレージ(SSDやHDD)の最小利用単位のことです。
ファイルアロケーションユニットサイズを4096byteとしてストレージをフォーマットした場合、そこへ保存するファイルのサイズが1byteだったとしても3000byteだったとしても、ドライブマップ上はいずれも4096byte(4kbyte)を消費した扱いとなります。
一方、1ファイルの容量が4096byte以内の場合は既に予約された1クラスタ内への連続書き込みとなるため、ファイル断片化が一切発生しません。
ある程度以上の規模のWebページとなると、画像に加えてCSSやJavaScriptの容量、場合によってはHTMLソースの容量が増大します。
そしてそのファイル1つ1つのデータ量が4096byteを超過した場合、残りの容量は別のアロケーションユニットへ書き込まれ、このタイミングでいわゆるフラグメンテーション(断片化)が起こります。
ランダムアクセスがボトルネックになるハードディスクを搭載した音声パソコンはまだ多く、システムドライブのHDDがデフラグされず何年も放置されているケースは決して珍しくありません。
こうしたPCで音声ブラウザを利用する場合は少しのファイル分割が多くのシークタイムを生じることとなります。
データ量が4096byte以内のファイルであれば、1度のクラスタ読み込みでデータロードが完了するためファイル断片化を原因とする動作遅延がそのファイルに限れば理論上発生しないこととなり、そのためにもソースの軽量化が重要となります。

例えば700行の外部CSSファイルがあったとします。
このファイルから、1つ2byte(CRLF)の改行コードを省くのみの作業で、700行×2の1400byte、実に1.4kbyteの容量が削減されます。
UNIX系のWeb開発環境で改行コードが1byte(LF)のみで出力される場合も700byteの軽量化となります。
一般にCSSやHTMLソースの改行やインデントは、手動編集時の可読性を高めますが、最終的にソースコードを解析して実行するのはブラウザのレンダリングエンジンであると考えると、「改行」というジャンクデータを省くことで命令の読み取りに要するフェイズが削減され、結果的にブラウザの動作が高速となります。
これは、ソース内のインデント処理、パラメータ間のスペース挿入へも同様に適応可能な考え方です。

この他にもHTMLレンダリングの効率化手法は様々に存在します。
Webサイトの運用をレンタルサーバで行う場合、よりハイスペックなマシンを利用可能なメーカーを選ぶ方法や、linkタグへprefetch属性を加え、リソース取得を円滑にする方法も、データ読み込み速度の改善へ役立ちます。