NVDAのこれから

Spread the love

このエントリーは Webじゃないアクセシビリティ Advent Calendar 2018 の12日目の記事になります。
NVDA日本語チーム の西本です。ふだんは広島県広島市にいます。オープンソースのスクリーンリーダー NVDA の日本語対応に関わりながら、NVDA 日本語版のリリースを続けています。ウェブアクセシビリティ基盤委員会 WAIC WG2 にも参加しています。
今年は自分の会社 シュアルタ を設立しました。
NVDA に関するコンサルティングや受託開発を、株式会社シュアルタでお受けするのでよろしくお願いします。
後述するように NVDA と Windows アクセシビリティを取り巻く環境は2019年にも大きく変化します。
視覚障害者の雇用などで NVDA を活用したい企業や団体などの法人に向けて、コンサルティング契約により NVDA の技術サポートを提供します。
現在は申込受付の準備中です。
詳細は info@shuaruta.com にお問い合わせください。

Windows と Edge のこれから

Webアクセシビリティ Advent Calendar 2018 の4日目として NVDAのブラウズモード という記事を書いて、「Microsoft が Chromium 技術で作ったデスクトップアプリ」の紹介をしたら、直後に Microsoft Edge が Chromium に移行するという発表がありました。
momdoさんの日本語訳
そこまで Chromium 大好きになってたのか。。
Windows 10 がリリースされた直後に NVDA は Microsoft Edge をちゃんとサポートできていない、という宣言をしたのが懐かしいですね。
最大の理由は Internet Explorer 11 がサポートしてきたアクセシビリティAPIを Edge が廃止して UI Automation という技術に移行してしまったから、なのですが、その後、長い間をかけて Microsoft と NV Access は Edge が NVDA でちゃんと動き、性能的にも問題がないようになった、というのが2017年の終わりごろでした。
Chromium になった Edge は、もはや Chrome や VS Code や Skype のようにきちんと NVDA で操作できるようになるのだろうな、と思ったら、今度は Microsoft が Chromium の UI Automation 移行を進める、という話になっています。ということは Edge と Chrome にちゃんと対応できたばかりの NVDA は、また新たな作業が必要になるかも。。
Windows スクリーンリーダーのワクワク・ドキドキ・ハラハラの日々はなかなか終わりそうにありません。

NVDAのこれから

Python 2 のサポートが2019年末に終了する、ということがわかっていたにも関わらず NVDA はいまだに Python 2.7 に依存しています。
あれやこれやのアップデートに対応する作業に NVDA が追われることがなければ、もっと前向きな作業ができたのではないか、と言われそうですが、私は「もともとスクリーンリーダーというのはそういう運命のもの」だと思っています。
つまり OS やアプリやコンテンツが「理想的に作られていない」ことで起きる不具合を「取り繕う」のが、スクリーンリーダーの(本質とまでは言わないけれど)「重要な価値」になってしまっています。
なので「スクリーンリーダーの未来は?」と聞かれると、「スクリーンリーダーがなくなる」は言い過ぎとしても「スクリーンリーダーが単純になるのが理想の未来」と私は答えます。
話を戻すと、NVDA は来年 2019.1 から 2019.4 までの4回のリリースを行うあいだに、互換性を切り捨てて大きく変わり、Python 3.7 あるいは Python 3.8 を積んでパワーアップした NVDA に生まれ変わります。
ですが、そのパワーアップは、ユーザーには「何の得にもならない」と思われる可能性が高いです。
Windows XP のサポートが終わったときにも、Firefox で WebVisum が動かなくなったときにも、ガラケーで Web サイトが閲覧できなくなったときにも、むかしの Visual Basic で書かれたアプリが動かなくなったときにも、同じような話がありました。
今度は NVDA にその試練が降りかかる番ですね。。
たぶん NVDA 2018.4 やその日本語版を、アップグレードしないで何年か使い続けたい、という要望が出るだろうなあと覚悟をしています。
まあ、そういう使い方をする PC を割り切って温存するのは「アリ」かも知れません。。
ユーザーが直接得をしない「新しい技術への移行」は、そうは言っても、標準化、ソフトウェア開発、セキュリティ、オープンソース、など多くの企業やコミュニティの活動が関わって作られた「大きな流れ」であり、逆らうことは「孤立」を意味します。
そして「孤立」は「コンピューターとインターネットを学びたい、楽しみたい、活用したい」というスクリーンリーダー利用者には「残念な」選択だと思います。
実はまだ NVDA コミュニティは NVDA を Python 3 に移行させるための技術的課題を完全にはクリアできていません。
私の手元で動いている Python 3.7.1 版 NVDA は、今日やっとフォーカスハイライトが動いたところですが、まだ重要な機能がボロボロと欠けている状態です。
大丈夫なのか、ほんとにやれるのかよ、と心配しています。
来年は NVDA 日本語版よりも、まず本家 NVDA コミュニティのチャレンジを支えたい、と思っています。

NVDA 日本語アルファ版の新しい仕様

ここからはメーリングリストに投稿した内容です。
現在 NVDA 2018.4 のリリース候補版が出ていて、NVDA 日本語ベータ版 nvda_2018.4jp-beta-181210j はその変更が反映された、事実上の日本語リリース候補版になっています。
来週中に 2018.4jp の正式版もリリースできると思います。
本家は NVDA 2019.1 に向けた作業を進めており、日本語アルファ版では 2019.1 に向けた変更をテストしています。
最新の日本語アルファ版で、NVDA のアドオンについて大きな変更があるので、お知らせしておきます。
以下の説明を読んで、不都合と思う場合は、前もってリリース版やベータ版に移行することをお勧めします。
2019.1 以降の NVDA は、原則として、アドオン開発者によって互換性が確認されたアドオンだけをインストールできます。
アドオン開発者は、互換性を確認していることを知らせるために、アドオンを作り直して公開する必要があります。
先日リリースした focusHighlight 5.4 ではこの問題を修正しています。
NVDA 2019.1 系の日本語アルファ版をインストールするときに、従来のアドオンがインストールされていると、
「アドオンの互換性について了解しました」
というボタンが表示される場合があります。
ですが、そのボタンを押してインストールを実行するだけだと、互換性のないアドオンはすべて無効化されてしまいます。
インストールを実行する前に「アドオンの互換性の確認」というボタンからダイアログを開き、それぞれのアドオンについて「有効にする」のチェックボックスをチェックすれば、従来のアドオンを使い続けることができます。
この作業は、すべてのアドオンについて必要です。
(NVDA をインストールし直すたびに必要かどうかは再調査中です)
アドオンをたくさんインストールしている場合や、頻繁に NVDA 日本語アルファ版を更新している人には、かなり面倒ではないかと思います。
場合によってはベータ版や安定版に切り替えたほうがよい、というのはそういう理由です。
この数日、本家では、この仕組みのリリースで大きな混乱がありましたが、メーリングリストなどの議論を読んでいるかぎりでは、アドオンの互換性チェックを見直すつもりはなさそうです。
NVDA が依存している Python を2019年末までに 2 から 3 に切り替えて、そのほかの NVDA の内部の改良を進めるために、アドオン開発者に対応をしてもらう必要があり、その準備としてこの機能が必要だと考えられているためです。
NVDA 日本語版についても、こういう仕組みになったことを早く知っていただこうと考えています。
インストール時のアドオンの操作についてのメッセージは、日本語アルファ版では日本語に翻訳しました。
通常よりも早いタイミングで翻訳作業をしたので、不完全な部分があるかも知れません。
従来動いていたアドオンが「手動で有効化」すれば動くかどうかは、アドオンごとに状況が異なりますが、2019.1 で動いているとしても、アドオンそのものが更新されなければ、2019.4 や 2020.1 で動かない可能性が高いです。
新しい日本語アルファ版を試してもらい、どのアドオンで不都合なことが起きるかを調べながら、NVDA 日本語チームの取り組むべきことを検討したいと思います。

アドオン開発者のための補足

アドオン開発者のための公式の説明は developerGuide に書かれています。
https://github.com/nvaccess/nvda/blob/master/developerGuide.t2t
具体的には manifest ファイルに

minimumNVDAVersion = 2017.4
lastTestedNVDAVersion = 2018.3

のように記載します。
前者を「最小要件の NVDA バージョン」
後者を「動作確認済みの NVDA バージョン」
と日本語では表記しています。
未来のバージョン番号を 2019.2 のように書いてもエラーにはなりません。
(が、最新のアルファ版のバージョンにしておくべきという本家のMLでの議論あり)
2019.1 と書くと本家版 2019.1 とも互換性があり、NVDA 日本語版 2019.1jp とも互換性がある、と解釈される見込みです。
(日本語版でしか動かない、みたいなチェックは想定していません)
本家のコミュニティで公開されているアドオンのテンプレート
https://github.com/nvdaaddons/AddonTemplate
こちらには
updateChannel
という項目もありますが、これは本家の addonUpdater で使われる項目で、不要な場合は None にしておきます。
focusHighlight の buildVars.py も紹介しておきます。
https://github.com/nvdajp/focusHighlight/blob/master/buildVars.py

NVDAとアドオン開発者のための補足の補足

ユーザーには何の役にも立たないように見えるであろう「NVDA の Python 3 移行」ですが、NVDA の現在と未来の開発者が幸せになれる、というメリットが、めぐりめぐって NVDA のユーザーを幸せにする、という展望があります。
例えば、いままで NVDA が日本語環境でうまく動いていない不具合の多くは「Windows で日本語の文字コードが使われている場合だけで起きる問題」の見落としでした。
Python 3 への移行で、そのような不具合が起こりにくくなる、と私は期待しています。

おまけ:今年出演したポッドキャスト(再掲)

サイトワールド2018特集 第6回 NVDA日本語チーム(日本視覚障害者ICTネットワーク JBICT ポッドキャスト)
AccSell ポッドキャスト第140回: 「こういうもの俺自分で作らなくて良い時代になったんだ」
わしポ 9: Kinsai PyCon mini Hiroshima (nishimotz)