スクリーンリーダー NVDA の「東アジア言語」対応

オープンソースのスクリーンリーダー NVDA 日本語版の開発スナップショットをこまめに公開してきたが、いったん公開した jpdev120831 というバージョンの公開を、昨日中止した。その経緯をまとめておく。
NVDA は日本語のかな漢字変換に対応しておらず、私を含む日本のボランティアが独自に日本語入力の読み上げ機能を開発し、独自に「NVDA日本語版」をリリースしてきた。
NVDA の多くの機能は国際化されており、メッセージとドキュメントの翻訳者さえいれば、その国の言語で使うことができる。
日本語で使うために不足している要素のなかで「音声合成エンジン」「墨字を点字に翻訳する点訳エンジン」は、新しいエンジンを追加する以外に方法がない。ただ、これらは上手に作れば「国際化」の枠組みを壊さずに追加できる。例えば NVDA 日本語チームが独自に追加した音声合成エンジンは、「アドオン」という仕組みを使って、NVDA 本家版に追加できるようにしている。
日本語の文字入力(かな漢字変換)への対応は、ローマ字からカナ文字への変換、変換候補として表示される単語候補の選択、といった操作を、画面を見るかわりに、音声合成や点字ディスプレイで行えるようにする処理だ。
この処理に関する技術の一部は、「入力メソッド」あるいは「テキストサービス」として Windows のオペレーティングシステムで標準化されている。
そして、日本語、中国語、韓国語など東アジアの言語圏で、この標準仕様に基づいた文字入力システムが使われている。
文字入力システムへの対応は「日本語対応」ではなく「東アジア言語対応」として一般化できるのだ。
私たちボランティアは最初に公開した日本語入力対応のNVDAは、すぐにアプリケーションやシステムがクラッシュしてしまい、非常に評判が悪かったはずだ。
試行錯誤しながら不具合を解決し、内部仕様の異なるいろいろなアプリケーションや文字入力システムで、安定して「かな漢字変換の音声読み上げ」ができるようになるまで、私ともう一人のボランティアが広島で、ほぼ1年を費やして作業をした。
不完全な部分はたくさん残っていたが、使い物になる、という評価がだんだん得られるようになってきた。
2012年に入り、この成果は国際化しなくてはならないだろうと考えた。日本語以外の言語環境でも「NVDA日本語版」が動くように、メッセージやドキュメントの修正を行った。また、海外の開発者が理解しやすいようにソースコードの手直しを進めた。
香港でも NVDA を中国語入力システムに対応するために独自の開発が行われていた。
2012年の春、台湾・香港のチームと、オーストラリアの NVDA の開発者が契約を行い、「東アジア言語対応」の一環として、中国語への公式な対応が始まった。
同時に私は台湾チームの関係者から NVDA の日本語版を台湾で使いたいので情報交換をさせて欲しい、という申し出も受けた。
NVDAの東アジア言語対応については、具体的な予算が書かれた提案書を3月ごろに目にしていた。日本ではその提案書が具体的に検討されないまま時間が流れてしまった。台湾では視覚障害者の読書を支援する公的機関で、その検討が行われ、決断がなされた。
私は台湾の関係者と交流を始めていたが、「中国語対応の公式な開発」に関する情報は得られなかった。そこで、6月の上旬の知人の台湾訪問に同行し、直接話を聞かせていただくことにした。ついでに知人たちが参加する Python プログラミング言語の開発者会議にも出席した。
本当は「中国語と同時に日本語にも対応して欲しい」とお願いしなくてはならないのだが、「香港・台湾が進める開発委託の契約に日本も参加するか?」という質問への答えは用意できなかった。日本のNVDAコミュニティには大きなお金を集める組織がないのだ。
私は「日本でイベントをやりたいので、オーストラリアの開発者と台湾の関係者に集まっていただけないか」とお願いをした。確約はされなかったが、先方は前向きだった。
台湾には日本語を学習している人がたくさんいて、スクリーンリーダーを使って日本語を勉強したり日本語の読み書きをしたいという人もたくさんいるのだ。
「日本語が使える無料のスクリーンリーダー」は、すでに日本人だけのためのものではなくなっていた。
6月の終わりに NVDA 公式の「東アジア言語開発者のメーリングリスト」が開設され、ブランチのレポジトリの公開が始まった。レポジトリとはオープンソースプロジェクトでソースコードを公開するための仕組みで、ブランチとは派生版開発のための情報共有の手段である。
公開された「東アジア言語対応」の開発版スナップショットは非常に不安定だったが、7月から8月にかけて、開発は進んだ。日本語版の実装や、香港チームの実装から、多くの処理が取り入れられていたが、日本で開発した多くの処理は書き直されて、原型をとどめていなかった。
私は時間をさいて、NVDA 日本語版の独自の開発作業と並行して「東アジア言語対応版」のテストとバグ報告を行ってきた。
8月の中旬に台湾チームとSkype会議を行い、日本語環境での動作についてのいくつかの報告をしたところ、台湾チームとオーストラリアのSkype会議への参加を誘われた。
8月下旬、オーストラリア、台湾チームとの開発会議で行われていたのは、台湾チームによる「検収」作業だった。
やっと台湾チームの仕事の進め方がわかったのだが、「NVDAの中国語対応に必要な機能」のリストが作られており、それに基づいてバグ報告、修正依頼、作業完了の確認が進められていた。プロジェクトリーダーとテスト担当者の体制が整えられ「委託した機能が実現されたかどうか」がこまかくテストされていた。
私は日本語での動作に関するいくつかの不具合や、中国語と日本語の入力メソッドの違いについて報告するのが精一杯だった。
そして私が参加した2回目の話し合いで「今回依頼された開発がほぼ完了した」ということが確認され、この「東アジア言語拡張」は、NVDA 本家の開発版に統合された。
いままで NVDA 日本語版の開発は、本家の最新の開発版に日本語独自の追加処理を統合してリリースしてきた。この処理は複雑だが「バージョン管理システム」というツールを適切に使えば、作業としては困難ではない。
そして、本家が行った「中国語対応」を統合して、最低限の手直しをしたのが jpdev120831 だった。このバージョンには「日本で開発した入力メソッド対応」と「台湾チームとの契約で行われた中国語入力対応」が共存していた。副作用が大きいと思われる箇所は、どちらかを無効化することにした。そして、「日本語対応モード」のスイッチを切ると、「中国語対応モード」での日本語入力読み上げを評価できるようにした。
私は「日本独自の日本語入力対応」をはやく取り除いて「中国語対応対応モード」をきちんと日本語対応させたいと思っていた。そして、まずはユーザーの評価を聞いてみたいと思った。
リリースから数日して得られたのは悪い評価ばかりだった。たとえ「開発スナップショット」であっても、いちばん高機能・高品質のバージョンであることを期待してダウンロードするユーザーがいる。このバージョンが最新版という状況が続くと、NVDAからユーザーが離れてしまう、という懸念さえ指摘された。
私は反省して、リリースを撤回した。裏方の事情がどうであれ、日本のユーザーに常に最高のソフトウェアを提供する責任を負わなくてはならないのだ。。
一方で、中国語対応モードの実装についてソースコードのレベルで調べていた私は、現在の実装が、根本的に日本語入力システムを想定していない設計であることに気づいた。
私はそのことを含めて、日本語の入力システムに関する情報提供を、最初はオーストラリアと台湾の開発者に、それから NVDA の東アジア対応開発や国際化担当者のメーリングリストに対して行い始めた。
ローマ字かな変換、カタカナやひらがなの区別、全角と半角、そういった問題をどのように英語で伝えればよいのか、資料を取り寄せて、メールを書き始めた。
本当はそういうことを16日と17日のワークショップで行おうと思っていたので、これはワークショップの発表準備と言えなくもない。
「東アジア言語対応」を中国語対応で終わらせないために、日本語対応とは「何を作ることなのか」「どう動かなくてはいけないのか」を決めるのは日本のコミュニティなのだ。
そしてそれを誰がどんな体制でやるべきかを決めるのも、できれば日本のコミュニティであって欲しいと思っている。
NVDA ワークショップ・意見交換会(9月16日、17日、東京・品川)