#RubyKaigi 2017 終了

What visually impaired programmers are thinking about Ruby?

発表も終了し、オーガナイザーとしての3日間も終わりました。

参加したことさえなかった RubyKaigi のオーガナイザーを引き受けることになり、どうなることかと思いましたが、スピーカーもさせていただいて、素晴らしいチームの一員として働かせていただいたことに、満足そして感謝しています。

ウェブアクセシビリティの観点から Ruby のドキュメントツールについて指摘したので、具体的に何をどう直したらいいか、もうすこし考えてみます。それまでは私の中で RubyKaigi は終わらないような気がしています。

なぜ @24motz aka @nishimotz は #RubyKaigi で講演をするのか

いよいよ開催が迫ってきた RubyKaigi 2017 (開催地:広島)で、オーガナイザーのひとりとして活動している「にしもつ」 @24motz aka @nishimotz です。

What visually impaired programmers are thinking about Ruby? というトークもさせていただく予定です。

2015年から Python の活動を広島でやっていて、やっと Python がブレイクしてきた今年、そっちの活動を保留して RubyKaigi のお世話をすることになったのですが、私のもともとのモチベーションが NVDA 日本語版の紹介、そして「アクセシビリティ」だったので、じゃあ RubyKaigi で自分がアクセシビリティ関連の貢献をすればよいのでは、と気持ちを切り替えたのが、上記のトーク提案の背景です。

今年 PyCon JP 2017 ではスクリーンリーダー関係の発表や活動をしていません(聴講者として参加して楽しんできました)が、かわりに東京では NVDA ワールド 2017 を10月31日(火曜)に開催します。

私がアクセシビリティの委員会活動やスクリーンリーダーのコミュニティでつながっている人の何人かは、音声合成による画面読み上げや、点字ディスプレイというデバイスを PC に接続して、プログラミングやインフラ管理などをやっておられます。

その人たちに Ruby について質問してみたことをヒントに、私が Ruby のドキュメントやエディタなど主にツールのアクセシビリティを調べています。その結果を NVDAでの実演を交えて紹介します。

今年の RubyKaigi サイトにはアクセシビリティのポリシーのページがあります。
会場に託児所を用意していること、発表は録画して後日公開されること、など、いままで RubyKaigi が取り組んでいたことも「アクセシビリティ」の一環として位置づけられています。

現在まで視覚や聴覚の障害をお持ちの方から「参加するので配慮をしてほしい」というご要望はありませんでしたが、もし早い段階でなにかご要望があれば、可能なことの手配をお手伝いしようと思って構えていたのは事実です。

(すべての日本語セッションに英語同時通訳をつけるというレベルの予算と体制のイベントなので、やれば手話通訳も要約筆記もできるはず。今年なくても来年でも)

いや、いまからだと遅いといっているわけではありません。いまからできることをベストエフォートで提案するので、障害をお持ちのかたの RubyKaigi 参加を今からでも(少なくともオーガナイザーの一人である私は)歓迎します。

チケットの購入はこちらです。

本当に障害の当事者の人に参加してもらうためには「その人たちが聞きたいと思うコンテンツ」を用意することも必要だと、私は過去の学会活動やイベント運営の経験から感じています。

RubyKaigi は「Ruby プログラミングが気になる人のためのイベント」というよりも「Ruby 言語の開発者たちが集まって Ruby の未来を真剣に語り合う場」なので(たぶん)、敷居が高いのだと思いますが、そんな中で私が「Ruby の開発者にも障害の当事者にも興味がありそうな話」ということで提案したのが「視覚障害者は Ruby についてどう思ってるのか」という発表です。

なんせ私が当事者の声を代弁するだけなので、ぜひ「本当はこう思ってる」という人にフロアにいてほしい、あるいは後からでも議論のきっかけになってほしいと思っています。

実は最初は「プログラミング言語の文法の違いは、アクセシビリティに影響がある」「Ruby の文法はアクセシビリティ的に優れている」みたいな仮説を検証できるといいなあ、と思ったのですが、ちょっと考えたり調べたりして、やはり無謀な計画だと思いなおしました。

そういう話は10年くらい前に、視覚障害の学生にプログラミングを教えている先生からちらっと聞いていました。

いわく、メソッドチェーンでどんどん1行で書いていけるので、コーディングを教えやすいし、音声読み上げにも向いている、と。。

この仮説の検証はいまは無謀だと思えてきたわけですが、たとえば Python と比べて Ruby の文法が「視覚障害者に書きやすいか?」と自問自答すると、はっきり言えるのは「インデント」でしょうか。単純な問題ではなさそうです。

けっきょくは、何をやりたいのか、求められるアウトプットはどういう状態なのか、仕事なのか趣味なのか、どういう環境やツールなのか、本人のスキルはどうなのか、といった話になります。

最後に広島のグルメ情報でも書ければいいんですが、あいにく私はグルメでないし人生の半分くらい広島県外にいたので、「るびま」のリンク集にお任せします。

かわりに、視覚障害者のプログラミングについて雑談します。

彼ら(主に男性)は、スクリプト言語やドメイン固有言語(DSL)が好きな人たちだと私は見ています。

たとえば Hot Soup Processor (HSP)日本語プログラミング言語「プロデル」はスクリーンリーダー利用者にとても愛されています。

また世界的に有名なスクリーンリーダー JAWS には JAWS スクリプトという言語があって、アクセシビリティに問題のある Windows アプリの不具合を補うためにエンドユーザーがスクリプトを書いて共有しあっています。(同じようなことを汎用プログラミング言語 Python でやれるようにしたというのが NVDA の特長の一つです)

ニュースサイトをスクレイピングして簡単に音声読み上げできるようにする「視覚障害者専用アプリ」もいくつかあり、人気を博していますが、スクレイピングのためのマクロや正規表現をメーリングリストで共有する、という文化も根強く続いています。

そんな人たちが Ruby に向き合うとどうなるのか。。できるだけわかりやすく話せるように頑張りたいと思います。お楽しみに。

余談:もうすこし予習したい人には、ラックの外谷さんの記事「スクリーンリーダーの音声を聞いたことがありますか?」をご紹介しておきます。

こどもプログラミング教室(PCNひろしま)参加について

「PCNひろしま」という団体の立ち上げに参加し、こどもたちに「プログラミング専用パソコン IchigoJam」を体験していただくイベントを開催することになりました。

第1回は私が講師を担当する予定です。開催日は7月30日(日曜)午後1時開始、3時30分終了の予定です。

会場は「イノベーション・ハブ・ひろしま Camps」です。

募集開始が7月になっていますが、詳しくは connpass のイベントページをご参照ください。

経緯

ここでは、私の視点での IchigoJam の魅力、そしてこの活動に関わることになった経緯を書いておきたいと思います。

2015年の年末に「こどものプログラミング教室」について相談を受けたことがあり、ちょうど気になっていた教材候補の一つとして2016年1月に IchigoJam を購入してみました。
いわゆるビジュアルプログラミングの教材もいくつか試してみたのですが、私は IchigoJam がシンプルで扱いやすい、魅力的な教材だと感じました。

また、ある程度ハードウェアを拡張でき、しかもその扱いも簡単であることから、教育用としてだけでなく、大人のちょっとした電子回路の実験にも使えるように思いました。

とは言いつつ、最初はいろいろ不満もありました。なぜ PS/2 キーボードなのか、なぜ(アナログの)ビデオ出力なのか、などなど。。

私の作業場所にはアナログビデオ入力のディスプレイがなかったため、アナログから HDMI に変換するスキャンコンバーターを購入してみたのですが、微妙に信号の規格がずれているらしく、実用的なクオリティの画像を HDMI ディスプレイに出力できませんでした。
中国からの輸入品で購入した超小型の液晶モニタがちょうどよくて、作業環境はやっと落ち着きました。

けっきょく去年「こどものプログラミング教室」に私は関わることはなく、しばらく IchigoJam の応用例を参考にして MicroPython + ESP8266 の実験をやったりもしていました。

今年の2月の「オープンセミナー広島」に jig.jp の福野さん(IchigoJam の開発者)がいらっしゃって、それにあわせて開催された IchigoJam の体験会に立ち会わせてもらいました。

そして、この教材に対する見方がまた変わりました。
一言でいえば「こどもの教材としてよく考えて作られている」ということでした。
ご自身がちゃんとこどもたちと向き合ってプログラミングを教えながら、その経験を踏まえて仕様を改良して、現在に至っているということが理解できました。

その後、福野さんを広島に招いたり体験会を企画してくださった石崎さんを代表として「プログラミング・クラブ・ネットワーク (PCN)」の広島版を立ち上げることになり、やっといま、第1回イベントの告知にこぎ着けたところです。

広島に戻って以来、大学生にプログラミングを教えることからもしばらく遠ざかっていたのですが、私自身がこども時代に「黒い画面とキーボードだけのコンピューター」にワクワクしていた気持ちを思い出して、私が理解した IchigoJam の魅力を多くの人にお伝えしたいと思っています。

おまけ

西本はことし RubyKaigi 2017 オーガナイザーとして、全国・世界の Ruby 技術者が9月18日からの3日間広島に集まるお祭りの裏方をやっております。
現在は Super Early Bird 料金でのチケットを販売中です。
またスポンサー企業も募集しております。
そろそろカンファレンスの詳細がいろいろ発表されると思います。ご期待ください。

去年まで活動していた Python のイベントはどうなったのかというと、今年は「すごい広島 with Python」として、4月から毎月1回、定期的な勉強会として盛り上げていこうとしています。

スクリーンリーダー NVDA に関しては、VIC への参加、そして今年は秋以降に NVDA 日本語チームとして東京圏での活動を計画中です。

あわせて今後ともよろしくお願いします。

NVDA で Excel を使う

NVDA の Excel 罫線対応を実装するために使ったワークシート

この記事は Webじゃないアクセシビリティ Advent Calendar 2016 13日目の記事です。
前日はFCSアプリが公開されました。:友加の日々の記録:So-netブログでした。

オープンソースの Windows 用スクリーンリーダー NVDA の日本の開発者コミュニティ、NVDA日本語チームの西本です。

NVDA 2016.4jp

このアドベントカレンダーにエントリーした時には NVDA (本家版)の次のバージョン 2016.4 は string freeze (翻訳者向けに新機能の追加や英語のドキュメントの更新が停止された段階)に入っていました。
予想では11月29日にリリース候補版(RC)が出て、12月6日に正式リリース、ただし、なにかの事情でRCが2回出ることになったら1週間遅れるだろうと思い、この日を登録しました。
結果的に「なにかの事情でリリース候補が遅れる」に加えて「リリース候補が2回でる」ことになり、本日12月13日には 2016.4 RC2 が出ました。おそらく正式版は今週末か来週でしょう。
本家の正式版が完成したらすぐに日本語版 2016.4jp をリリースする見込みです。

NVDA日本語版 2016.4jp の新機能ですが、Microsoft Excel でセルの罫線の報告を実装しました。
この機能は(本家版にも提案はしていますが)いまのところ日本語版限定の機能なので、「日本語設定」に罫線報告を「なし」にしたり、色だけを省略できるオプションがあります。

NVDA の Excel 罫線対応を実装するために使ったワークシート

このほかには「NVDAキー」の表記を「NVDA制御キー」に揃えるなどの用語の変更、修正を行っています。

NVDA 日本語版の課題やご要望の報告には「新規チケット登録」をご利用ください。
ご報告いただいた件について詳細の調査や本家への提案などをお手伝いいただける NVDA 日本語チームの仲間も募集しております。

前置きが長くなりましたが、ここから本題です。

NVDAのExcel関連機能の紹介

NVDA ユーザーガイドには Excel 関連機能がまとめられています

VIC 広島市視覚障害者情報支援センター(ボランティアサークル)の12月4日の例会で、この NVDA の Excel 関連機能を講習会形式で紹介してみました。

教材として使ったファイルは docs.com に置きました
マクロを有効にした、いわゆる xlsm ファイルでお配りしています。
メッセージボックスを開く簡単な VBA マクロを使っています。

マクロが無効のままだと最後の「フォームフィールド」の実習がうまく動きません。
「セキュリティの警告 マクロが無効にされました。」
のようなペインが(F6キーで移動していくと)表示されるので、右側の「コンテンツの有効化」ボタンを押してください。

NVDAでExcel.xlsm ファイルのSheet1を開いた画面

ワークシートの切り替え

Excel のファイル(ブック)には複数のワークシートを含むことができます。

表示中のワークシートを切り替えるキーボードショートカットは Ctrl+PageUp および Ctrl+PageDown で、これは Excel の標準機能です。

しかし NVDA で Excel を操作しているときには、要素リストで切り替えることもできます。

NVDA+F7 :要素リストを開く

要素リストで Shift+Tab を押して種別を「シート」に切り替えて、ツリービューに戻って、移動したいシートの名前で Enter を押します。

なお NVDA 制御キーを押し損なうとただの F7 キーになってしまい、これは Excel のスペルチェックの呼び出しです。

では、教材ファイルの Sheet2 に切り替えてみましょう。

グラフの値を読む

NVDAでExcel.xlsm の Sheet2 の画像。日付と数値の右側に棒グラフがある

ワークシートの中を矢印キーで移動すると「グラフ」を選択することができませんが、要素リストを使うとフォーカスをグラフに移動できます。

  1. グラフが含まれているワークシートに移動します。
  2. NVDA をフォーカスモードにします。(ブラウズモードのままだとうまくフォーカスがグラフに移動しません)
  3. 要素リストで種別「グラフ」を選び、ツリービューでグラフを選択して Enter を押します。
  4. 要素リストのダイアログが閉じて、そのグラフにフォーカスが移動した状態になります。

NVDA+Tab を使うと、グラフがフォーカス位置であると確認できます。

この状態で、下矢印キーを押していくと、グラフを構成する各要素にフォーカスを移動できます。

グラフの種類やオプションによって変わりますが、以下のような要素が見つかります。

  • 系列 系列1 1の1
  • 目盛
  • データラベル
  • グラフの軸 種類 項目 グループ 主
  • グラフの軸 種類 値 グループ 主
  • プロットエリア
  • グラフエリア

「系列 系列1」に移動した状態で、今度は右矢印キーを押します。
すると、以下のように値を読むことができます。

  • 1月2日 363.5
  • 1月9日 418.0

右矢印キーを押し続けて、最後までいくと先頭に戻ります。
また左矢印キーで逆方向に移動できます。

この機能ですが、グラフの内容やデータの形式によっては不完全だったり不自然な読み上げになります。

例えば、日付をシリアル値(数字)として読み上げてしまう、セルの書式設定を無視して小数点以下をすべて読み上げる、といった課題を確認しています。
今回の教材では「NVDAがうまく読み上げるように」あらかじめ手を入れてあります。

コメント

Sheet1 のセル B12 には「コメント」がついています。

NVDA はコメントのつけられたセルに移動すると「コメント」と報告します。

コメントの内容は NVDA+Alt+C で確認できます。

また要素リストの種別「コメント」を使うと、コメントを一覧できます。

数式

要素リストの種別「数式」を使うと、現在のワークシートに含まれる数式を一覧できます。

Sheet1 のセル B3 には「=B2*消費税率」と書かれています。

「消費税率」はセル B8 につけられた「名前」です。

名前を管理する方法は NVDA にはありませんが、Excel の機能「名前の管理」は Ctrl+F3 で呼び出すことができます。

行と列の見出しの自動報告

A1 から B3 にかけて見出しのついた「表」があります。

ちょっと小さくて物足りないので、以下のように書き足してください:

  • C1: 商品B
  • C2: 200
  • C3: (セルB3をコピーして貼り付けます)

セル B2 の数式は B8 を名前で参照しているので、C3 には 200 * 1.08 = 216 が表示されます。

では A1 にカーソルを移動して、以下を実行します。

NVDA+Shift+C 見出し列の設定

列を左右に移動したときに、1行目の内容を見出しに使って「商品A」「商品B」と読み上げるようになります。

もういちど A1 にカーソルを移動して、今度は以下を実行します。

NVDA+Shift+R 見出し行の設定

さきほどの列見出しの報告に加えて、今度は行を上下に移動したときにも、A列の内容を見出しに使って「金額」「税込金額」と読み上げるようになります。

この「見出し行と見出し列の場所」を保存するときに NVDA は Excel の「名前」機能を使っています。
(さきほど紹介した Ctrl+F3「名前の管理」で確認できます)

この状態でファイルを保存しておくと、Excel や NVDA を起動し直しても見出しの自動報告は再現されます。

フォームフィールド

NVDA 2016.3 で追加された機能が「フォームフィールドの操作」です。

Sheet1 で NVDA+F7 要素リストを開いて、「種別」フォームフィールドに切り替えます。
「ボタン1」というボタンが見つかるので、Enter を押します。

これでフォーカスが Sheet1 のシートに貼り付けられた「ボタン」に移動した状態になりました。

スペースを押すとボタンを押すことができます(既定のアクションの実行)。

教材ファイルは「こんにちは」という小さなメッセージボックスを表示しています。
「OK」というボタンがあります。
このメッセージを閉じるまで Excel の他の操作ができません。
OK ボタンにフォーカスを移動してスペースを押す、
Enterを押す、あるいはEscを押す、といった方法でダイアログを閉じてください。

最後に

以上、要素リストの機能を中心に、NVDA が Excel に対して提供している機能を紹介しました。

機能の実装や日本語の翻訳など、まだまだ課題もあると思うので、なにかお気づきのことがあればお知らせいただけると助かります。

なお Excel をスクリーンリーダーで使う場合の一般的な解説をいくつか紹介しておきます:

視覚障害者のためのExcel 2010キー操作マニュアル

Microsoft Office 2013 のアクセシビリティ

Excel 2016 でスクリーン リーダーを使用する方法のヘルプ

PyCon JP 2016 ポスター発表: NVDA の開発とコミュニティ活動

9月21日と22日の2日間、PyCon JP 2016 に参加しました。2日目に「スクリーンリーダー NVDA の開発とコミュニティ活動」というポスター発表をしました。多くの人に見ていただけたようです。長い時間をかけてこちらの話に付き合ってくださったかたも多かったです。

PyCon JP 2016 ポスターの前に立つ西本

23日には開発スプリントのリーダーとして、NVDA 日本語版の開発の具体的な作業を紹介、そして Python でアドオンを開発するチュートリアルなどを行いました。メンバー4人で楽しくハッカソン的な時間を過ごしました。

NVDA日本語チームは2013年からユーザーを対象にしたイベントを行ってきましたが、今年、方針を変更してこういう技術者向けイベントに参加しました。結果として、より多くの人にNVDAを知ってもらったり、コミュニティのメンバーを広げたりする手段になったと感じています。

特に今年の PyCon JP は「多様性」がキーノートや講演でも取り上げられました。そのような中で、アクセシビリティの話が、多様性についての視野を広げるお役に立てていたらうれしいです。

PyCon JP の参加を通じて得た知識、気づいたことなどは、また改めて書いたり喋ったりしたいと思います。

11月12日開催の PyCon mini Hiroshima 2016 も「視覚や聴覚に障害をお持ちのかたを含めて、 誰にでも参加して楽しんでいただけるイベント」を目指しています。発表のプロポーザルを9月30日まで募集しています。

それから10月2日に広島での勉強会で Python と機械学習をテーマにLTをしようと思っています。こちらもよろしくお願いします。

PyCon mini Hiroshima 2016「広島とPython」 #pyconhiro #pyconjp

プログラミング言語 Python (パイソン)が気になりはじめた広島の皆様、広島のことが気になっていた全国の Python ファンの皆様のために、今年も PyCon mini Hiroshima を開催します。
開催日は2016年11月12日(土曜)、会場は広島市立大学サテライトキャンパス(広島市役所のすぐ前)です。

これから connpass サイトでの参加募集(および講演の申込受付)を開始します。

2015年11月22日、第1回 PyCon mini Hiroshima の基調講演は石本敦夫さん「Pythonの肩にのる」でした。
一人前のプログラマになるための勉強は果てしなく続く。でも焦ることはない。なにかひとつの技術やプロダクトに深く関わることが重要。
深く学ぶほど大きく広がる Python の世界はその理想的な入口のひとつ。
そんなことをご自身の20年の経験を踏まえて語っていただきました。

たまたま NVDA という Python プロダクトの活動(NVDA日本語チーム)をきっかけに Python を深く学ぶことになり、日本の Python の技術者やコミュニティの素晴らしいパワーに触れる機会を得てきた私には、自分の気持ちととても重なった内容でした。

半年以上が過ぎたいま、Python やその関連プロダクトは、広島の技術者の勉強や仕事に役立ち始めているでしょうか?

広島での PyCon mini の第2回となる今年は「広島から発信しよう」を目指しています。
県外から著名人をお招きしてお話を伺うことよりも「広島で Python がどう使われているのか」「広島で Python 技術者にどんなチャンスがあり得るのか」といった話題を持ち寄って、なにかを生み出したいと思います。
まず「広島で暮らす人々」「広島に観光で訪れる人々」をターゲットに「人間の言葉を理解するコンピュータ」の研究に取り組んでいる広島市立大学「言語音声メディア工学研究室」の関係者にご協力をお願いして、「広島とPython」の接点を探ります。
また IoT (Internet of Things) に適した言語としての Python という側面(例えばハードウェアの制御も Web APIの利用も Python から簡単にできたりします)を掘り下げていくために、今年立ち上がったフレッシュなコミュニティ IoTLT 広島と LT セッションを共同開催します。
スペシャルトークの火村智彦さんには「私はいま広島で○○というプログラミング言語を使っているけど、Python も勉強した方がいいのかな?」と思っている人に刺激を与えるようなお話をお願いしています。どんな内容になるのか、私もまだわかりませんが楽しみにしています。

今年、日本の Python コミュニティでは、初学者向けの勉強会(BootCamp)など新しい取り組みが各地で始まっています。
また Python を基盤にしたビッグデータ、機械学習、インフラ管理など、いろいろなツールのコミュニティも広がりつつあります。
この第2回 PyCon mini Hiroshima を、広島での継続的な Python コミュニティ活動のきっかけにと願いつつ、まずはご参加のご案内をさせていただきます。
講演テーマ募集は9月30日を締切とさせていただく予定です。
参加申込とあわせて、お気軽にご提案いただければ幸いです。

Firefox 43 と WebVisum のこれから

NVDA ユーザーが画像認証 (CAPTCHA) の壁を克服する手段として広く知られている WebVisum という Firefox アドオンがあります。
ミツエーリンクス まほろば などで紹介されています。

最近の Firefox と WebVisum について私が知っていることの整理と、問題提起をしておきます。

最近リリースされた Firefox バージョン 43 から、Firefox の開発元が認証をしたアドオンだけがインストール、実行できるようになりました。

WebVisum はまだ Firefox 開発元の認証を受けたバージョンを公開していないようです。

未認証のアドオンの実行を禁止するようになったのは、システムを不安定にしたり不正アクセスの原因になったりするアドオンが広まることを防ぐ目的のようです。

回避策はいくつかあり、後述しますが、どれも根本的ではありません。

根本的には WebVisum が最新の Firefox に対応するように、ちゃんと開発、システム運営を続けてもらう必要があります。

英語でしか書かれていませんが、WebVisum に寄付をしたり運営に協力したりしてください、みたいなことはサイトに書かれてはいます。

いままでそういう支援を検討しておられたのなら、この機会に WebVisum の運営元に対して、今後もちゃんと開発されていくのか、確認をしてみられるのがよいと思います。

たしか今年の夏ぐらいに WebVisum のサーバーが止まって、一時的に WebVisum が使えなくなったことがあったはずです。
海外のメーリングリストでは WebVisum の代わりになるものがないか、という質問がときどき出るようになりました。

Firefox のアドオンは今後も大きな仕様変更が予定されているはずです。
もし WebVisum の開発が止まっているなら、将来の Firefox のバージョンアップに追従できなくなり、WebVisum は使えなくなってしまうと思います。

以下、暫定的に WebVisum を使えるようにするいくつかの方法です。

(1)
自己責任で Firefox の設定を書き換えて、未認証のアドオンを有効化する。

例えば「窓の杜」の以下の記事に書かれています。

「Firefox 43」では未署名のアドオンが利用不可能に
“about:config”でオプションを無効化すれば、次期バージョンまでは継続利用が可能

Firefox 44 ではこの方法は使えなくなるそうです。
なのでいまから約6週間しか有効ではありません。

(2)
Firefox 38 延長サポート版 (ESR) に乗り換える。

Firefox ESR 38 という、仕様としてはバージョン38のまま、セキュリティ修正だけは2016年5月まで行われる特別な Firefox があります。
下記ページの下の方に日本語 Windows 版のダウンロードリンクがあります。
Firefox/Thunderbird 法人向け延長サポート版

この ESR 38 で WebVisum のサイトからアドオン ( WebVisum 0.9.1 ) をダウンロードしてインストールできることは確認しました。
(未認証のアドオンは自己責任で使ってください、というメッセージは出ます)

この方法も2016年5月までしか有効でなく、次にメジャーバージョンアップされる ESR ではいまの WebVisum は使えないはずです。

(3)
Firefox のバージョンを戻す、バージョンアップを止める。

おそらく皆様最初に思いつくことと思いますが、セキュリティ上の不具合があると分かっていて使い続けることになるため、良くない方法です。

けっきょくは WebVisum というサービスが本当に必要なのか、もし必要なのだとしたら、どうやって WebVisum の開発者や運営者を支援するのか、といったことが問われていると思います。

まあ NVDA もそうなんですけどね。。

CAPTCHA のために WebVisum が使われ続けることは、スクリーンリーダー利用者に対してアクセシブルな操作手段を提供しないサービス運営者を容認することに繋がっているとも考えられます。

以前は日本で広く普及しているスクリーンリーダーが Firefox に対応していなかったため、画像認証をクリアしたい、Firefox を使いたい、じゃあ NVDA を覚えよう、という順番で NVDA に注目された時期もありました。

しかし私は NVDA 開発者たちの思想を尊重して、WebVisum にしがみつかないことも、模索したい、してもらいたい気持ちになっています。

以上、議論の材料になれば幸いです。

追記(2016年8月22日):

WebVisum のサイトに掲載されているバージョンは 0.9.1 のままですが、Mozilla のサイトでは2016年7月18日にリリースされた WebVisum 0.9.5 が紹介されており、認証済みのアドオンとして利用できるようになりました。

ふつう=ユニバーサルでアクセシブル

この記事は ふつうの広島 Advent Calendar 2015 の8日目の記事です。
昨日はkamera25さんの記事でした。

冒頭から脱線しますが「普通の人にはない技術の持ち主」といえば「職人」ですね。
今日から「職人」がテーマのイベントが広島で開催されますよ。

広島職人博覧会
12月8日(火曜)から14日(月曜)まで
旧日本銀行広島支店(広島市中区袋町)

ふつうとはなんだろう

普通じゃない人にとって「普通に生きろ」という言葉は「苦痛」の一歩手前だったりするかも知れません。

「普通の人」=「健常者」「定型発達の人」でしょうか?
「普通の人」=「リモートワークじゃない人」でしょうか?

もっといろんな「普通」があっていいような気がするので、グーグル先生に訊いてみました。

普=「あまねく」「広く」

通=「通用する」

「あまねく」は「ユニバーサル」、「通用」は「アクセス」じゃないですか。

「ふつう」=「ユニバーサル」で「アクセシブル」ということですね!!

イベントの「ふつう」

「ふつうの広島」=「どんな人でも学んだり働いたり活動したりできる広島」にしましょう。

そういうつもりで2015年に私が取り組んだのが Python のイベント、PyCon mini Hiroshima 2015 でした。

開催直前の告知と終了後の報告は PyCon JP のブログに書いたので、下記をどうぞ。

PyCon mini Hiroshima 2015 を開催します!

PyCon mini Hiroshima 2015 を開催しました!

報告の中でも書いたことですが、カジュアルな勉強会は行動力のある人たちに任せて、私は「アクセシビリティを切り口に質を保障できるイベント」を、今後も続けていくためにお手伝いできたらいいなあと思っています。

ソフトウェアの「ふつう」

こないだ Web アクセシビリティのアドベントカレンダーに寄稿した NVDA 日本語版の現状の記事 ですが、途中から支離滅裂で勢いだけの駄文になってしまったので、もうすこし具体的に「アクセシビリティから考える本質とか品質とか」について書いてみます。

NVDA の UI ウィジェットに wxPython が使われていることは PyCon mini でお話しましたが、おそらく NVDA の開発者たちはこのツールキット選びをかなり慎重に行ったはずです。

wxPython のさらに土台になっている wxWidgets のレベルで、すでに Microsoft のアクセシビリティ API に対応する作り込みが行われていることが、ちゃんとドキュメントになっています

マルチプラットフォーム開発のための UI ツールキットはいろいろありますが、それぞれのプラットフォームのネイティブなアクセシビリティ API に対応した実装が施されているものはなかなかありません。
画面を Windows っぽく描画したり Mac っぽく描画したりすることだけできても、それが「ボタン」なのか「テキストフィールド」なのか、といった情報を OS のアクセシビリティ API に正しく渡すことができないフレームワークは山ほどあるのです。。

モバイル開発についてはどうでしょうか。
マルチプラットフォームといえば HTML で UI を作る「いわゆる PhoneGap」アプリを真っ先に思いつきます。

あまりよいユーザー体験を実現できない、ということで、ここ数年は敬遠されてきたような印象ですが、最近あらためて調べてみたら、Apache Cordova と Angular.js という組み合わせの新しいツールがいくつか登場していました。

ここでは Ionic Framework について最近私が調べたことをちょっと紹介しておきます。

この Ionic フレームワークは単なるライブラリではなくコマンドラインインタフェースのツールが用意されています。
ionic start コマンドで生成されるひな形の「タブ UI」アプリを Xcode でビルドして iPad にデプロイしてみたら、かなり VoiceOver でちゃんと使える、ということに気づきました。
フォーカスの移動順序にやや不自然なところはあったもののの、多くの要素が理解可能、アクセス可能でした。

Web技術はちゃんと「ユニバーサルにアクセシブル」に向かって進歩してるんですね。。

残念ながら完全に VoiceOver に無視されてしまったのは ion-toggle でした。

調べてみたらこのトグルスイッチの記述方法が他にも見つかったので、いわゆる WAI-ARIA の勉強がてら書き直してみたら、VoiceOver でちゃんと操作できて状態を読み上げられるトグルスイッチになりました。

修正前:

 <ion-view view-title="Account">
   <ion-content>
     <ion-list>
-    <ion-toggle ng-model="settings.enableFriends">
-        Enable Friends
-    </ion-toggle>
     </ion-list>
   </ion-content>
 </ion-view>

 

修正後:

 <ion-view view-title="Account">
   <ion-content>
     <ion-list>
+    <li class="item item-toggle">
+      <span role="label" id="enableFriendsLabel">Enable Friends</span>
+      <label class="toggle">
+        <input type="checkbox" ng-model="settings.enableFriends" />
+        <div class="track">
+          <div tabindex="0" class="handle" aria-labelledby="enableFriendsLabel" role="checkbox" aria-checked="{{ settings.enableFriends }}"></div>
+        </div>
+      </label>
+    </li>
    </ion-list>
   </ion-content>
 </ion-view>

 

role とか aria-checked とかこうやって使うんですね。勉強になりました。

これ Web 標準を使ってアクセシビリティを確保したので、たぶんプラットフォームごとの実装さえちゃんとしていれば「普(ユニバーサル)」に「通(アクセシブル)」なモバイルアプリになるはずですね。。

Ionic のテンプレートは Visual Studio 2015 にも入ってます。
Universal Windows Platform でもいけそうです。

アクセシビリティを「品質」と捉えると、技術を見極めたり、新しいことを勉強したりできますね。

「ふつうの広島」を目指して、開発者向けのアクセシビリティ勉強会をやったらいいですね、と提案しつつ、この記事を締めくくりたいと思います。

以下、参考書:

コーディング Web アクセシビリティ

わかりやすい「WAI-ARIA 1.0」仕様解説書 Kindle版

スクリーンリーダー NVDA 日本語版の現状

この記事は、Web Accessibility Advent Calendar 2015、4日目の記事です。

Web Accessibility Advent Calendar に参加するのは初めてなので、自己紹介をします。

広島出身、東京と京都を経て、現在また広島在住。
2012年4月から NVDA 日本語チーム の代表としてオープンソースの Windows 用スクリーンリーダー NVDA の翻訳と日本語版開発を担当しております。
今年の夏 AccSell ポッドキャスト 第75回に出演して喋ったので、よろしければ聞いてみてください。
非営利法人 ATDO(支援技術開発機構)主任研究員として電子書籍のアクセシビリティ(EPUBやDAISY)に従事することもあります。
Web アクセシビリティに関することでは、今年から WAIC WG2(ウェブアクセシビリティ基盤委員会 実装ワーキンググループ)に参加しています。
NVDA の開発に Python が使われているというつながりで、広島で Python のイベント PyCon mini Hiroshima の実行委員長をやりました。
その他の仕事としては、某ステルスモードのスタートアップでソフトウェア開発に従事しています。

この記事では今年ポッドキャストやイベントで喋り足りなかった NVDA の実情をまとめてみたいと思います。

まず、ユーザー数や市場占有率について。

日本でよく参照されている「視覚障害者の携帯電話・スマートフォン・タブレット・ パソコン利用状況調査 2013」(新潟大学)によると、スクリーンリーダー利用者全体における NVDA 利用者の割合は6パーセントとされています。
このことから「NVDA でしかちゃんと動かないWeb標準を実装しても、大半の視覚障害ユーザーには届かない」と判断されがちです。

私は、話はそれほど単純ではないだろうと考えています。
理由のひとつは、この調査が実施された2013年秋から現在までに、NVDA 日本語版のユーザーはおそらく2倍以上に増えているであろうこと。
もうひとつは、同じくこの2年のあいだに「視覚障害者の Windows 離れ」が進んだと思われること、です。

まずは NVDA 日本語版の普及状況から。
NVDA には「更新の自動チェック」機能があり、24時間ごとにサーバーと通信をしています。
サーバー側で「自動チェック」のアクセス数を数えることで、1日ごとのユーザー数を把握しています。
ちなみに NVDA 本家版のユーザー数調査結果によると、1日あたり平均23775人が一番新しい数字になっています。
(1週間のアクセス数を1日平均に直しているのは、曜日によってユーザー数が異なるからでしょう。詳しくは後述)

NVDA 日本語版は2013年12月15日にリリースした 2013.3jp から、更新チェックを独自に運用していて、NVDA 日本語チームのサーバーでアクセスを数えています。
2014年1月5日ごろの1日あたりの平均ユーザー数は64人ですが、これは 2013.3jp よりも古いバージョンを把握できていないので、すこし控えめな数字になっているはずです。
その後、2014年3月20日に 2014.1jp を、6月2日に 2014.2jp をリリースしました。
大半のユーザーが 2013.3jp 以降を使っていると考えられる2014年5月上旬で、NVDA 日本語版の1日平均ユーザー数は176人でした。
そして2015年12月上旬、現在の1日平均ユーザー数は424人になっています。

NVDA 日本語版の1日平均ユーザ数。2014年5月から2015年12月最初まで。バージョンごとに色分けされている。最初は176人、最新は416人。

単純に伸び率を掛けると、6パーセントだったシェアは少なくとも15パーセントにはなっているでしょう。

一方で、パソコンを利用する視覚障害者、つまりこのシェア計算の母数は、この2年でどうなっているでしょうか。

はっきりとは分かりませんが、私は「期待したほど NVDA 日本語版のユーザー数が増えていない」ことと、視覚障害者コミュニティの「空気の変化」から判断して、「日常的なコミュニケーションや情報アクセスは iPhone の VoiceOver でやってしまう」というライフスタイルが急速に広まりつつあると感じています。

ひとつの根拠は、NVDA 日本語版のユーザー数が2014年年末から2015年年始にかけての1週間に大きく落ち込んだ、というデータです。
また、今回この記事を書くために、この3週間くらいの曜日ごとのユーザー数を調べてみたのですが、やはり土曜日と日曜日のユーザー数が少ない、という結果になりました。

曜日ごとの NVDA 日本語版ユーザ数の比較。日曜日364人、月曜から金曜の426人、土曜372人

視点を変えると、日本における NVDA は「日常生活を支援する道具」の座をスマートフォンに明け渡しつつあるかわりに、平日に職場で使われる「視覚障害者の就労支援ツール」になりつつある、という可能性を感じています。

就労における NVDA というテーマでは、今年9月のイベントでも IT 技術者として働いている NVDA ユーザーによる発表がありました。
また技術者ではない人からも、マッサージの仕事の予定管理にイントラネットが使われていて、そのWebサイトにアクセスするときに NVDA を使う、といった話を聞いたことがあります。
日本盲人職能開発センター(東京都新宿区)ではNVDAの講習会が定期的に開催されているようです。
(私は2014年の秋にこの施設で最初のNVDA講習会をお手伝いしました)

何度か書いたり喋ったりしたことですが、NVDA は「スクリーンリーダーの本来果たすべき役割分担」に忠実な、初心者には取っつきにくい、不親切なスクリーンリーダーです。
しかしそれはベンダーや開発者に「Web標準への準拠」「アクセシビリティAPIへの準拠」を促すための NVDA の戦略によるものです。
また一方で、たった2人のコア開発者が膨大な開発を効率よく行うための、プロジェクト生き残りの手段であるとも言えます。

NVDA の強みを手短に語ってほしい、NVDA でなければできない作業をアピールしてほしい、と言われるたびに複雑な気持ちになります。

正しく迅速に「標準」に準拠するスクリーンリーダーよりも、「特定のコンテンツやアプリケーションに特化したスクリーンリーダー」のほうが、どうしても「すごいソフトウェア」「お金を払うに値する製品」に見えてしまうのです。

開発中のアプリやコンテンツが NVDA でちゃんと動くようにするにはどうしたらいいか、という質問も、似たような状況です。
「特定のスクリーンリーダーに特化したコンテンツやアプリケーション」の開発を促したくない、ということも NVDA のポリシーだからです。

NVDA 本家の開発は最近、GitHub に移行しました。
この GitHub Issues では WAI-ARIA をどう解釈して NVDA でどう実装しているのか、といったやりとりも 頻繁に 交わされています。

NVDA に関わる前から「アクセシビリティ」にこだわっていた私にとって、アクセシビリティとは「物事の本質」であり「コンテンツの品質」であり「イノベーションの源泉」です。
日本では Web アクセシビリティのコミュニティにとっても、スクリーンユーザーのコミュニティにとっても NVDA はまだまだメジャーな存在ではありません。
Web アクセシビリティは「情報産業というエコシステムの傍流」かも知れませんが、しかし「技術ロードマップのど真ん中」だと信じています。

開発者とユーザーがお互いに「Web標準を考慮して頑張っても、相手が使いこなせないから無駄」と思うのではなく、双方が「互いに歩み寄れる妥協点」を見つけてほしいと思っています。
日本のユーザーに NVDA をリアルタイムに届けることで、まもなく始まるであろう「合理的配慮」をめぐる当事者たちと事業者たちの「戦い」を支えたいと考えています。

告知:
2016年1月9日(土曜)に大阪で開催される LibreOffice mini Conference 2016 Japan に参加します。
それから1月16日(土曜)に東京で(久しぶりの) NVDA ミートアップを開催します。
NVDA について質問したい人、一緒に NVDA コミュニティを盛り上げたい人のご参加をお待ちしております。