AccCheckerでUIA Treeを覗く - Webじゃないアクセシビリティ Advent Calendar 2016 3日目

Webじゃないアクセシビリティ Advent Calendar 2016 の 3 日目の記事です。

お気づきの方も居られるかと思ひますが、このアドベントカレンダーは早速 1 日目から欠けてます。 さすがに全ての枠を自分で書くのは辛いので、ほどほどのペースで書いて行かうかなあと思ひます。

ところで皆さんは自分が開発してるソフトウェアのアクセシビリティをチェックするために、どの様なツールを使ってますか?

おそらく、実際にスクリーンリーダーを用ゐて何がどの様に読み上げられるかを確かめるのがよくある方法ではないかと思ひます。 私も初めて OpenTween の開発でアクセシビリティについて取り組み始めたときは最初に NVDA をインストールする所から始めました。

そんな中で、私が NVDA と共に使ひ始めた AccChecker といふツールについて紹介します。

AccChecker は Windows アプリケーションのアクセシビリティを自動で検証して問題点を指摘するツールです。 実はこれ、ググっても日本語はおろか英語ですら情報が乏しいのですが*1Microsoft が提供するれっきとした Windows SDK のツールの一つです。

正直私は AccChecker のチェック機能はあまり使ったことがないのでよく分かりません。 私が紹介したいのは自動チェック機能ではなく、AccChecker に搭載されて居る UIA Tree の機能の方です。

実行結果を確認して貰った方が分かりやすいかと思ふので、試しに Windows 10 標準の電卓アプリの UIA Tree を見てみます。

f:id:kim_upsilon:20161202031455p:plain

UIA Tree といふ文字通り、ウィンドウ内の要素がツリー形式で表示されます。

  • (root)
    • 電卓
      • 電卓
        • (中略)
        • 除算
        • 乗算
        • マイナス
        • プラス
        • 等号
        • 正、負
        • 0
        • 1
        • 2
        • (略)
        • 8
        • 9
        • 小数点

電卓の数字ボタンや加減乗除のボタンもちゃんと入ってますね。 ツリー内のそれぞれの名前を選択すると、選択した要素が画面上のどの位置にあるかを示した画像が右側のパネルに表示されます。

また、選択した要素の詳細も表示されます。

  • Name: 除算
  • Value: (空欄)
  • Control: button
  • State: Enabled, Onscreen, Focusable
  • Location: {X=435,Y=482,Width=118,Height=92}

これらの情報が便利な点は、UIA はスクリーンリーダーが扱ふ生の API であるため、もしスクリーンリーダーが不可解な読み上げをした時は AccChecker で確認することによってアプリ側の問題なのかスクリーンリーダー側の問題なのか原因の切り分けをしやすくなることです。

また、初めてスクリーンリーダーを使ひ始めた開発者にとっても、画面上のオブジェクトがどの様にツリー構造で表現されて居るか理解する一助にもなるのではないかと思ひます。

AccChecker の UIA Tree 機能は私が OpenTween でアクセシビリティ対応するときに NVDA の次に役に立ったと言っても過言ではないツールなので、興味を持った方は試しに使ってみてはいかがでせうか。

AccChecker は Windows SDK 内に同梱されてゐるツールであるため、例へば Windows 10 なら Windows 10 SDK – Windows アプリ開発 から SDK をインストールすれば C:\Program Files (x86)\Windows Kits\10\bin\x86\AccChecker\acccheckui.exe から起動できる様になるはずです…たぶん(よく覚えてない)

それでは「Webじゃないアクセシビリティ」Advent Calendar 2016、明日以降もよろしくお願ひします。次の記事は…、12月11日?(余裕があればもう少し早い日にも書くかもしれません)

*1:実際にググると一番始めに CodePlex の AccChecker プロジェクトのページが出てきますが、2010 年にリリースされたバージョンで更新が止まってます。この記事の最後にある Windows SDK に同梱されて居るバージョンがおそらく最新版です