タグ: hiroshima

  • #OSH2014 感想と懇親会LT #nvdajp

    オープンセミナー2014@広島に参加しました。
    懇親会LT(ライトニングトーク)の私のスライド「テスト駆動開発とアクセシビリティ(仮)」は下記の通りですが、スライドだけではわからないでしょうし、トークも言葉足らずだったので、昼間のセッションの感想をふくめて補足します。

    NVDA 日本語版 の紹介。NVDA の開発には Python が使われています。
    実は「NVDA日本語チーム」を立ち上げる前に、私はまず「NVDAユーザ会広島」を立ち上げて、地域コミュニティ活動を始めました。
    オープンソースカンファレンス2013広島への参加の後、活動が滞っていますが、暖かくなったら再開したいです。
    アクセシビリティ、Python、Windows API、テキスト音声合成、自然言語処理、バージョン管理など、NVDA の開発を語る切り口はいろいろあるので、いろいろな団体と交流が必要だと思い続けています。
    NVDA は Web 開発者の方々にも、アクセシビリティチェックツールとして注目されています。
    NVDA は誰にでも無料で使えて、視覚障害をもつユーザーに実際に利用されている(され始めている)ツールです。
    一方で、ソフトウェアの自動テストという文脈からは、例えば Selenium でスクリプトを書いて Web アプリのテストをされる方も多いでしょう。
    NVDA が動いている状況で Selenium で Firefox を制御するスクリプトを書いて実行するとどうなるか、最近少し試してみました。
    Tab によるフォーカス移動、フォーム要素(コントロール)の操作、文字入力などはうまく制御できるので、Firefox でウェブを操作する様子を読み上げながら自動テストすることができます。
    しかし、NVDA が提供しているのは単なるフォーカス移動だけではありません。ブラウズモードという特別な操作が追加され、例えば数字キーの1から6で見出しジャンプができたり、文字単位で任意のテキストの内容を確認できたりします。
    こうした機能は Firefox ではなく NVDA がキーイベントを受け取って、NVDA と Firefox のプロセス間通信(IAccessible2という専用プロトコルが使われます)を通じて Firefox を制御しているため、Selenium で Firefox に ‘1’ や ‘2’ などのキーイベントを送っても見出しジャンプは実行されません。
    残念ですが、もうちょっと何かできないかなと検討中です、というのが最初に言いたかったネタでした。
    2個目のネタですが、NVDA を Windows 7 以降で使うと UI Automation という技術がデフォルトで有効になります。
    この技術は Windows システム・スクリーンリーダー・アプリケーション、というレイヤーをつなぐ一種のプロセス間通信で、特に GUI をリモートプロセスから制御するモダンなオブジェクトモデルを備えています。
    そして UI Automation は「ソフトウェアの自動テストの技術」でもあり、Microsoft のエバンジェリスト(当時)だった長沢さんが、そういう文脈でいろいろ記事を書いておられたわけです。
    しかし、和田さんの朝一番のセッションで FAQ として触れられた「GUIはテスト駆動開発に向いていない」という話は、私もうすうす気づいていた事実でした。
    Python 界隈では「Selenium は負債」という認識 がちらほら聞こえていましたが、どう「負債」なのかは、和田さんの講演で腑に落ちました。
    GUI テストは一般にターンアラウンドが長すぎて、「黄金の回転」が回せない、「ただのテストがある開発」になってしまうのです。
    「早くて小さい回転をうまく回す」という「TDDのこころ」を、テスタブルでアクセシブルなUIの開発という目標にどうつなげていくか、新しいチャレンジが必要と痛感しました。
    3番目のネタですが、NVDA 日本語版は点訳エンジンを「テスト駆動開発」しています。
    こう書くと大げさですが、実は liblouis という(日本語に対応していない)多言語対応オープンソース点訳エンジンはちゃんとテストを Jenkins でチェックしながら開発が行われています。
    それに倣って、日本語点訳エンジンを、まずテストを書いて、テストが落ちることを確認して、それから実装を直す、というサイクルで作ってみました。
    実際の作業は2012年春から2013年春にかけて行ったのですが、実は最初はタッチカーソルのカーソル位置を処理する「ポジションマッピング」というアルゴリズムを入れていませんでした。
    点訳エンジンをあちこち書き換えつつ、既存の処理を壊さずに最小限の修正でタッチカーソル対応できたのは、テストケースという命綱のおかげでした。
    最後に2枚追加したスライドは、昨日のオープンセミナーを通じて感じたことでした。
    私はチクセントミハイの「フロー体験理論」を1990年代後半に知り、最初はヒューマンインタラクションの評価手法などに応用したいと思っていました。
    スライドに張り付けた「技能と挑戦のモデル」はちょっと古いモデルの図ですが、要するに「いきなり難しいことをする、身の丈に合わないことをすると、不安になり、挫折する。自分の技能にあったちょうどよいレベルのチャレンジを繰り返していくと、人はその作業に集中でき、没入でき、自己目的的な楽しさを得られる」ということです。
    このフロー体験理論のことを最近ふっと思い出したのは「アジャイルサムライ」の読書会でした。
    フロー体験理論という社会心理学のモデルは、日本ではゲームデザインの研究者に着目され、近年ではモチベーションの研究で参照され、もはや古典なのかも知れません。
    しかし、テスト駆動やアジャイルというプラクティスの根幹に、フロー体験というシンプルな社会心理学のモデルが、やはり無視できないかかわりを持っているように、あらためて感じた、和田さんや長沢さん、そのほかの貴重な事例報告のセッションでした。

  • NVDA 日本語版の設定

    すごい広島#23に参加して、NVDA 日本語版チュートリアル(導入から入力ヘルプまで)の続きを書きました。
    (2) NVDA 日本語版の設定
    NVDA を使うときに知っておくとよい設定を紹介します。
    以下、NVDA制御キーはInsertや無変換キーなど、「ようこそ画面」で説明されたキーを使います。
    ここでは NVDA 制御キーを押しながら N を押すことを NVDA+N のように表記します。
    NVDA+N を押すと NVDA メニューが開きます。
    下矢印キーを1回押すと「設定」という項目にフォーカスが移動します。
    nvda-menu-01
    このメニュー項目にはサブメニューがあるので、右矢印キーを押すと「一般設定」という項目にフォーカスが移動します。
    nvda-menu-03
    下矢印を何度か押して「キーボード設定」を見つけて、Enter キーを押してください。
    「キーボード設定」ダイアログが開きます。
    nvda-menu-04
    nvda-menu-05
    ダイアログの最初の項目にフォーカスが移動して、
    「キーボードレイアウト(K) コンボボックス デスクトップ クローズ Alt+k」
    と読み上げられます。
    このチュートリアルでは「ラップトップ」配列を使うので、選択項目を変えてみます。
    下矢印キーを押すと「ラップトップ」と読み上げます。
    この状態でEnterキーを押すと選択項目が保存されますが、Escキーを押すと選択の変更がキャンセルされて設定は「デスクトップ」のままになります。
    しかし、選択を保存する前に、もう少し「コンボボックス」の操作を確認しましょう。
    「ラップトップ」に選択項目が変更された状態で、さらに下矢印キーを押すと、何も読み上げされません。これは、さらに下にはもう選択肢がないことを意味します。
    逆に、上矢印キーを押すと「デスクトップ」に戻り、さらに上矢印キーを押すと、何も読み上げません。これは、さらに上にはもう選択肢がないことを意味します。
    つまり、このコンボボックスには2個の選択肢だけがあるわけです。
    コンボボックスには折り畳まれた(クローズ、閉じている)状態と展開された(オープン、開いている)状態があります。
    マウスやタッチの操作ではコンボボックスを展開して選択肢の一覧を確認してから項目を選べますが、キーボードではコンボボックスが折り畳まれた状態のまま矢印キーで操作できます。
    NVDA+Tabキーで、現在のコンボボックスの状態を確認できます。
    コンボボックスの状態の説明でAlt+kと読み上げていましたが、これはアクセラレーターキーと呼ばれる操作方法のヒントです。
    Tabキーでひとつずつ移動する代わりに、ダイアログボックスの中の項目にジャンプしたりチェック状態の変更ができるのですが、慣れるまでは覚えなくてもかまいません。
    ダイアログボックスの項目は Tab キーで移動できますが、この順番はソフトウェアの開発者が決めた順番です。ふつうは画面の上から下、左から右に決められています。そろそろ Shift+Tab キーで逆方向に移動できることを覚えると、行き過ぎたときに戻ることができるし、先頭の項目から一番最後の項目に移動するときにも便利です。
    読み上げの中止は Ctrl キーで、中断は Shift キーでできます。
    中断したあとでShiftキーをもう一度押すと、続きを読み上げます。
    ラップトップレイアウトを選択してEnterキーを押すか、フォーカスをOKボタンに移動してスペースキーを押しておいてください。
    今度はNVDAメニューから設定「音声設定」を確認していきます。
    nvda-menu-06
    nvda-menu-07
    「速さ」などは「スライダー」という形式の項目で、数値を視覚的に表現して、値を変更できるようになっています。
    スライダーという名前のとおり、マウスでつまみをスライドするような操作ができるのですが、キーボードでも操作できます。
    キーボードでは左右または上下矢印キーやPage Up, Page Downキーで値を増やしり減らしたりできます。EndキーとHomeキーで最小値や最大値に変えることもできます。
    キーを押すたびに数値を読み上げます。
    この音声設定のスライダーでは、変更した結果がどんな音声になるのかを確認しながら操作できます。
    コンボボックスの「記号読み上げレベル」は読み上げる情報に含まれる句読点やカンマ、ピリオド、カッコなどの読み上げかたの指定です。
    記号読み上げレベルを「読まない」にしたら、比較のためにNVDAメニューからヘルプ「ようこそ画面」を開いてみてください。
    設定によって例えば「NVDAへようこそ」のあとの「感嘆符」を読んだり読まなかったりすると思います。
    記号読み上げレベルは NVDA+P でも変更できます。
    NVDAメニューから設定「オブジェクト設定」で「オブジェクトのショートカットキーの通知」をチェックなしにすると、アクセラレーターキーを読み上げなくなるので、説明がすっきりします。
    nvda-menu-08
    nvda-menu-09
    繰り返しの説明になりますが、チェックとチェックなしの状態を切り替えるにはスペースキーを押します。
    備考:2013年10月24日 画面キャプチャーを追加しました。

  • NVDA 日本語版の導入から入力ヘルプまで

    広島のエンジニアやウェブデザイナーの活動 すごい広島 #20 に参加して、私の NVDA 講習会の資料を、文章にしてみました。
    いままでメモ程度に書いていたものの、ちゃんとしたチュートリアル版です。3時間かかって(1)を書くのがせいいっぱいだったので、(2)と(3)は次の機会に書きます。
    公開したあとで画面キャプチャーを追加して加筆しました(10月3日 0時20分)。
    (さらに…)