アクセシビリティ

アクセシビリティ記事

トゴルカンパニーによるアクセシビリティ

[an error occurred while processing this directive]

はじめに

Flash は、アクセシビリティに対応しているといわれる。しかし、そのどこが具体的にアクセシビリティなのかがわからない。そもそもアクセシビリティが何の役に立つのか、理解するのも難しい。
アクセシビリティの目的は、どんな状況、環境の人にでも情報にアクセスできる手段を提供することにある。この場合、状況や環境は、その人のもつ障害として定義されることが多い。たとえば、目が見えない、耳が聞こえない、手が不自由、などである。これらの不自由な状況が、怪我をしただけの一時的な場合や、そうでない場合の両方が考えられるし、視力や聴力などは、年齢を重ねれば悪くなるのが自然だ。そこで、これらの問題に対して、Flash が技術的に対応できるものは対処しようというのが、その考え方だ。

Flash のアクセシビリティでは、次の 2 つの技術的アプローチがある。

  1. キーボードだけの操作
  2. 音声読み上げ (スクリーンリーダ) への対応

文字のサイズや、色の使い方など、Flash だけの問題ではなく、デザイン上の問題もアクセシビリティには大きく関係するが、今回の連載では、Flash による技術的アプローチをメインにするため、それらは、また別の機会に述べたいと思う。

Flash とアクセシビリティの背景

Flash のコンテンツがマウスを使わないでも制御できるのをご存知だろうか?TAB キーを押すと、ボタンが黄色い四角で囲まれフォーカスされる。さらに、スペースキーもしくは Enter キーを押すと、ボタンをクリックしたのと同じ操作になる。これは、「1.のキーボードだけの操作」に該当し、ずっと前からデフォルトで対応している。アクセシビリティという言葉が頻繁に使われだす以前からだ。

テキスト情報を音声に変えて読み上げてくれるスクリーンリーダーという種類の便利なソフトウェアがある。これがあれば、視覚障害者もネットサーフィンも楽しめる。しかし、昨今の Web には、テキスト以外のものがたくさん使われている。アニメーション、ナビゲーション、ゲームに Flash は欠かせない。すると、Flash を見たときにもテキストと同じように、スクリーンリーダーで聴くことができなければ意味がない。そこで、Flash はこのスクリーンリーダーにも対応することとなる。

スクリーンリーダーがその基礎としている技術は、MSAA というマイクロソフトのアプリケーション・プログラミング・インターフェース(API)である。この規格を通して、OS、各種アプリケーション、スクリーンリーダーが情報をスムーズにやり取りし、結果的に音声として情報を提供することができるわけだ。そのため、現在のスクリーンリーダーは、Windows プラットフォームで動くものがほとんどであり、Web を見るにはマイクロソフトの InternetExplorer を使用することになる。

ところで、Flash コンテンツは、 Macromedia Flash (最新バージョンは、Macromedia Flash MX 2004)で作成されるが、再生するのは、FlashPlayer である。このため、MSAA に対応すべきは FlashPlayer となる。
MSAA に対応する FlashPlayer は、バージョン 6 以降となるため、インストールされている FlashPlayer のバージョンにも注意する必要がある。

整理すると、Windows 版 InternetExplorer と FlashPlayer 6 以降を使用しているユーザであれば、スクリーンリーダーを使って Flash コンテンツを聴くことができるはずなのだ。

この連載では、現在あるコンテンツにすこしだけ手を加えることで、アクセシビリティ対応を大きく進めることができるように最低限必要な機能を絞り込んで紹介する。誌面の都合上、すべての技術をまとめることはできないが、別の機会を設けてより突っ込んだ内容で再び紹介できればと思っている。

この記事に必要なもの

このチュートリアルをフォローするには、つぎのソフトウェアがインストールされている必要があります。

Macromedia Flash MX 2004

キーボードだけのアクセス

アクセシビリティ対応の 1 つの大きな目標は、キーボードだけでコンテンツが操作できるという点だ。これは障害を持つ人だけの問題ではなく、出張先でマウスを忘れた場合にも助けてくれる。OS やブラウザは、基本的にキーボードだけで操作できるように出来ているのに、Flash コンテンツは、マウスがないと操作できないものが多い。これは非常に大きな問題といえる。今回は、キーボードだけでコンテンツを操作するための基本テクニックを紹介しよう。

TAB キー対応

もっとも簡単なのは、TAB キーによるボタンフォーカスの移動だ。これは、普段通り作成した Flash コンテンツを再生してみればわかるように、デフォルトで対応可能だ。しかし、フォーカスの順序は、ボタンの位置(おおよそ左上から右下の順になる)に関係しているため、制作者の意図どおりに動く場合は少ない。そこで、意図した通りにするため、アクセシビリティ用 ActionScript へ一歩踏み出す必要がある。

tabIndex の利用

ムービークリップやボタン、テキストフィールドには、tabIndex というプロパティがある。これは、TAB キーを押されたときにフォーカスを受ける順位を決定するためのプロパティだ。たとえば、tabIndex=20 と 10 のボタンがあれば、そのボタンの位置によらず 10 のボタンが先にフォーカスを受ける。若い番号から順にフォーカスが当たり最後まで行けばまたはじめにもどって繰り返す。tabIndex の意味は、非常にシンプルだ。
ボタンが btn1~btn6 までインスタンス名として設定されており、その順番を、インスタンスの名前と同様に設定するには、次のようにすればよい。

btn1.tabIndex = 10
btn2.tabIndex = 20
btn3.tabIndex = 30
btn4.tabIndex = 40
btn5.tabIndex = 50
btn6.tabIndex = 60

tabIndex の値は、必ずしも 1 刻みの連番である必要はない。小さいものから大きいものへ順位が移動するだけなので、10づつ間を空けておく。そうすることで、将来ボタンが増えたときでも btn7.tabIndex=45 などと容易に追加設定できるようになる。

tabIndex を、Flash MX 2004 Professional では、[アクセシビリティ]パネルで設定できる。([ウィンドウ]-[他のパネル]-[アクセシビリティ] を選択)

アクセシビリティパネル

どちらの場合も注意しなくてはいけないのは、tabIndex プロパティを持つムービークリップ、ボタン、テキストフィールドのすべてを、すべての階層をまたいで、まとめて順位を決定しておかなくてはいけないことだ。番号を振り忘れると、逆にアクセスできなくなってしまう。

tabIndex のプロパティのほかに、TAB フォーカスを強制的に無視する tabEnabled、ムービークリップの中の TAB フォーカスを制御するtabChildren がある。これらのプロパティについても、ヘルプなどを参照して使い方を学んで欲しい。
また、ショートカットキーなどのように Ctrl+A などのキーの組み合わせをチェックして Flash の制御をすることも可能だ。ただし、この場合は、Key イベントリスナーを利用することになる。[アクセシビリティ]パネルのショートカットフィールドでは、設定できないので注意しよう。

スクリーンリーダーに対応する

スクリーンリーダーが読み上げるのは、テキスト情報である。このテキスト情報は、Flash の場合、アクセシビリティパネルを使って設定することになる。Flash MX のアクセシビリティパネルと Flash MX 2004、Flash MX 2004 Professional はそれぞれ設定できることが異なるが、基本的な機能は同じである。

まず、最初に知っておかなくてはいけないのは、アクセシビリティパネルで設定したとしても、スクリーンリーダーが対応していなければ、正しく読み上げられることはないということだ。私の知る限り現在の日本語対応のスクリーンリーダーで、「説明」は、読み上げられるものとそうでないものがある。そのため、「説明」に頼らないでも十分に内容が伝わるような「名前」を作成することが重要だ。このフィールドは非常に狭いが、文字列は長くとも入るので、注意して入力しよう。

アクセシビリティパネルで設定するのは、ムービークリップとボタンに関する名前だ。通常の静止テキストやダイナミックテキストなどはそれ自身がテキスト情報のため、自動的に内容を読み上げることが可能になる。

アクセシビリティパネル

どんな情報を入力するか

名前フィールドには「ボタンの名前を入れればよいか」というと、必ずしもそうではない。たとえば、ボタンの機能、押すことにより導かれる結果などがわかるほうが親切だ。筆者は、アニメーションページへ切り替わるボタンには「アニメーションページへのリンク」などと入れている。ボタンのテキストがアニメーションだとしても「アニメーションボタン」では、聴いたときに何を意味するのかわかりにくいのだ。 この部分は、アクセシビリティの肝であるが、絶対的に正しい表現があるわけではない。ある程度のルールに従いつつも、あとは制作者の何を伝えたいかという意図に任される部分が大きいところと言える。

ダミーのボタンで状況説明

たとえば、晴眼者には、一瞬で判断できて、視覚障害者には判断が難しいものに、今自分がどのページを見ているのかということがある。通常、そのページのコーナータイトルやコーナーカラーがわかり、どのボタンと関連付いてこのページが開いたのか、あるいは、この結果になったのかが、ひと目でわかる。しかし、視覚障害者にとっては、それを理解するのは大変難しい。そこで、ダミーのボタンを作成し、現在見えている状況を説明するようにすると良い。たとえば、「トップメニューです。コーナーが 3 個あり、それぞれのコーナーへのリンクボタンが用意されています。1.新着情報、2.製品情報、3.サポート情報です。」といった具合だ。


(左上の黄色い矩形はダミーボタン)

スクリーンリーダーごとの癖

名前フィールドに書いたものが、そのまま読み上げられるわけではなく、ボタンとムービークリップでは、読み上げのルール(語尾など)が異なっていることもある。これはスクリーンリーダーごとの違いであり、Flash 側ではどうしようもない。そのため、いくつかの想定される利用方法を想像しながら作ってみることが必要だろう。たとえば、ボタンの最後に「~の確認」と発声するのは、PC-Talker のデフォルトの仕様だ。

スクリーンリーダーは、以下のサイトからトライアル版が手にはいる。実際にインストールしてみると、どの程度の情報が読み上げられれば正しく Flash コンテンツを理解し利用できるのかが体験できるだろう。まずは、使ってみることをお勧めする。

UIコンポーネントの活用

Flash MX 2004 が標準で備えている UI コンポーネントは、アクセシビリティに対応している。これは、非常に大きなメリットだ。なぜなら、スクロールバーやコンボボックスなどのインターフェイスは、マウスで操作することを前提に作られているため、キーボードでの操作にまで考えが及ぶことが少なく、自作した場合にそこまで対応するのは大変だからだ。

UI コンポーネントでも対応するのは、MX 2004 に搭載されているものだけなので、MX ユーザは注意して欲しい。
もし、このUIコンポーネントを利用する機会があるなら、ぜひアクセシビリティ対応も付け加えて欲しい。というのは、実は、コンポーネントを対応させるには、1行の ActionScript を記述する必要がある。それらは、コンポーネント単位で異なり、以下のようになる。

コンポーネント名

ActionScript

mx.accessibility.ButtonAccImpl.enableAccessibility();

mx.accessibility.CheckBoxAccImpl.enableAccessibility();

mx.accessibility.RadioButtonAccImpl.enableAccessibility();

mx.accessibility.LabelAccImpl.enableAccessibility();

不要 *2

不要 *2

mx.accessibility.ComboBoxAccImpl.enableAccessibility();

mx.accessibility.ListAccImpl.enableAccessibility();

mx.accessibility.WindowAccImpl.enableAccessibility();

mx.accessibility.NumericStepperAccImpl.enableAccessibility();

*1

mx.accessibility.AlertAccImpl.enableAccessibility();

*1

mx.accessibility.DataGridAccImpl.enableAccessibility();

*1 ・・・Professional版のみに搭載
*2 ・・・アクセシビリティパネルの設定だけで機能する

これらの ActionScript を記述する場所は、1 フレーム目に 1 回だけ登場させればよい。使用するコンポーネントの回数には無関係だ。

これからはじまるアクセシビリティ

アクセシビリティというと障害者対応というイメージが多いのが事実だろう。しかし、怪我をしたりマウスを忘れたり、日常よくあるアクシデントに際しても、コンテンツへのアクセスを容易にするのが目的なのである。もっと、身近に考えてみれば、自分自身が、年を取ることだってアクセシビリティと無関係ではない。高齢になれば、自然と視力、聴力は衰え、マウス操作だって苦手になるかもしれない。自分自身が若くても、私たちの親の世代は、確実にこのアクセシビリティにお世話になるのではないだろうか?

つまり、アクセシビリティは、必須なのだ。そして、長い付き合いになる。一過性の流行テクノロジーではないという認識が必要であり、この先何十年と手法が変われども必須となる考え方だ。だから、あまり気負わずに取り組んで欲しい。

また、アクセシビリティは誰からの強制も受けるべきではないし義務でもない。クリエイターならば、自発的により多くの人に情報を伝えたい、そういう欲求のもとにアクセシビリティ対応をして欲しいと願う。

最後に、弊社のサイトで使用している Flash メニューをアクセシビリティ対応したものをダウンロードできるようにした。これが正解であるわけではないが、少しでもアクセシビリティ理解の助けになれば幸いである。そして、実はまだまだ日本語環境下でのアクセシビリティははじまったばかりで、まったく整っていない。この状況から少しでも前進するには、私たちの日々の制作が重要であることを認識して欲しい。

この記事に必要なもの

ソースファイル

著者について

[an error occurred while processing this directive]