NVDAワークショップ・意見交換会が終了

多くのかたにお集まりいただいて、オープンソースのスクリーンリーダー NVDA の日本でのワークショップ意見交換会が終わりました。
PyCon JP 2012の関係者の皆様にもお世話になり、また話題にしていただけたことを嬉しく思います。
また募金、運営、告知などで本当に多くのかたにお世話になりました。

写真は9月17日「意見交換会」の参加者の集合写真です。

5日間の Michael Curran さんの滞在にずっとご一緒して、予定していたことも、予定しなかったことも、いろいろお話できました。
公開のイベントであったワークショップと意見交換会については、すでに YouTube Live でも録画を公開していますが、別の録画や録音もありますので、整理してご報告したいと思います。

世界の約40の言語に対応しているNVDAですが、各国の翻訳担当者と顔を合わせることはほとんどなく、インターネットを通じて共同作業が行われています。
しかし、いろいろな国に行って文化を理解することは大事だね、と Michael Curran さんは思ったようです。
そして CSUN のような世界レベルの国際会議をのぞいて、NVDA の関係者が大勢集まってイベントをすることなんて、世界でも滅多になかったことのようです。

NVDA日本語チームのSkype会議はまた来週から月曜日の夜に行います。
今後ともよろしくお願いします。

NVDA開発者と進める意見交換会(9月17日)

すでにお知らせしているNVDAワークショップ(9月16日)に続いて、翌日にNVDA開発者と進める意見交換会を開催します。

意見交換会では、スクリーンリーダーで日本語を扱うための機能について意見交換を行い、海外からお見えになったNVDAの開発者にその場でお伝えします。
日本語での発言や質問はボランティアとスタッフが英語への翻訳を行なう予定です。

この意見交換会だけに参加されるかたは、チケットの購入は不要です。
会場は産業技術大学院大学(東京都品川区)、時間は14時00分から17時00分です。

ワークショップ概要のページもご参照ください。

2日間を通してイベントの情報を事前にお知らせするためのメーリングリストも開設しました。

お問い合わせは nvdajp@nvda.jp (担当:西本)にお願いします。

NVDA日本語チームのサイト開設

NVDA日本語チームは team.nvda.jp のサイトを開設しました。

これはNVDA日本語チーム 運営規約を決めたときに、寄付や支援をしてくださるかたへの情報提供を行うために、会計を担当してくださる高地 範弘さんのご提案によるものです。
新しいサイトでご案内していますが、先日、NVDA日本語チーム名義の銀行口座を開設しました。
ありがたいことですが、日本でのワークショップ開催を支援するために、募金の問い合わせや、振り込みのご報告をいただいています。

NVDA日本語版の開発を代表する私の立場から、できるだけ誤解のないように、NVDA を支援する枠組みを説明したいと思います。

ユーザーの立場からNVDAを支える方法のひとつは、NV Accessへの募金です。
ユーザーの定期的な募金は NVDA の継続的な改良を支えます。私も少額ですが PayPal で毎月募金をしています。

しかし、一般的に、オープンソースソフトウェアにおいて、フルタイムの開発者がユーザーからの募金で支えられる、という事例は、ほとんど前例のない、難しいものだと思います。

NVDA の開発母体である非営利団体 NV Access は、企業や団体と契約をして、特別なコストがかかる改良や拡張の要望に応えています。

最近のトピックとしては、印刷物や電子書籍のフォーマット PDF に関する標準化団体 PDF Association が NVDA への支援を発表しました。

標準化活動においては、標準規格と、その規格を満たす実装の両方が重要です。NVDA は過去にも Windows のアクセシビリティAPIへの対応や、Web コンテンツのアクセシビリティ規格への対応などを行い、標準化活動を支えながら、資金提供を受けてきました。

中国語の入力メソッド対応も、開発に必要なコストを NV Access が提示し、台湾と香港の団体が資金提供を行っています。
開発そのものはオープンに進められているので、日本語チームは日本語環境での動作を確認したり、情報を提供したりしています。
しかし「日本語で使うにはこの実装は不都合だが、中国語では問題ない」という状況になったときに、日本語チームの仕事が残ります。
解決方法の一つは、日本語対応の開発を NV Access に委託することです。

NVDA日本語版はいままで NV Access からの「公開された情報」に基づいて、独自に日本語対応の拡張をしてきました。
NVDA日本語チームの技術力や開発力は十分ではありません。
例えば入力メソッド対応については、中国語対応の実装が完成したら、その実装を日本語のために手直しすることで、互換性や安定性は向上すると思います。

日本のスクリーンリーダー利用者が必要としているのに NVDA に実装されていない(される見込みがない)機能はたくさんあります。
日本における開発体制をもっと充実させるべきなのか、日本がグローバルな開発をもっと支援するべきなのか、もっと「大きなこと」を考えるべきなのか。
日本の NVDA ユーザーや関係者のみなさまに、このようなことを検討していただくために「日本でユーザーと開発者の交流の機会を作ろう」と思いました。
これが日本で NVDA ワークショップを企画した目的です。

当面は資金援助の呼びかけは、ワークショップ開催だけの目的であることをご理解いただければ幸いです。
会計や監査をふくめて実行委員の体制が整い、多くのかたにご協力いただけることをありがたく思っています。

ワークショップについては、準備や当日のスタッフを募集しております。
また、参加において特別な配慮のご要望があれば、お早めにお知らせください。
ご不明なことがあれば 西本 nishimotz@gmail.com 宛にご連絡いただければ幸いです。

追記(1):PyCon JP チケット購入が PayPal でできない件について という記事が公開されています。
追記(2):NVDA Workshop in Japan 障がいをお持ちの方の誘導者の方の入場は無料になりました。

9月16日 NVDA Workshop in Japan のお知らせ

9月15日(土曜)から17日(月曜・祝日)にかけて行われる Python 開発者のイベント PyCon JP 2012 の併催イベントとして、NVDA 日本語チームNVDA Workshop in Japan を開催します。
会場は東京都品川区の産業技術大学院大学です。
9月16日(日曜)には、オーストラリアから NVDA の開発者を、また台湾から NVDA の東アジア言語対応の担当者をお招きして講演を行います。このプログラムに参加されるかたはPyCon JP への参加登録が必要です。登録受け付けはすでに始まっていますのでお早めにご検討ください。

ワークショップの概要は以下のとおりです。

NVDA (Non Visual Desktop Access) はオープンソースのスクリーンリーダー(視覚に障害がある人が音声や点字でコンピューターを操作するための支援ツール)で、Python 言語で開発されています。
日本におけるNVDAのコミュニティは2010年頃から、日本の Python 開発者コミュニティの皆様の協力を得て、NVDAを日本語で使うために必要な機能(音声合成、かな漢字変換、点字出力)の開発を行ってきました。

NVDA の開発母体である非営利組織 NV Access Inc. は、東アジア言語拡張のプロジェクトを2012年5月にスタートしました。これは台湾と香港の団体の資金提供でスタートし、インプットメソッド(IME)対応の正式な開発が始まりました。このプロジェクトには NVDA 日本語チームのメンバーも参加しています。
中国語、韓国語、日本語などのマルチバイト文字を処理する支援技術は、実装が複雑であるうえに、それぞれの言語に根付いた文化の影響を強く受けています。例えば、日本のスクリーンリーダー利用者が長年にわたってなじんだ日本語のかな漢字変換の読み上げ方法は、中国語の漢字を選択する台湾のスクリーンリーダー利用者のインターフェースとは同一ではありません。さらに、日本の点字システムは世界から見ると非常に独特で、世界のほとんどの言語で利用されている点訳ライブラリが日本語では利用できません。
東アジア言語の支援技術に関わる技術者やユーザーが、このような状況を相互に理解しあう機会は、なるべく多いほうがよいと考えます。

もう一つの重要な課題は、寄付や募金に依存している NVDA プロジェクトを今後どのように支えていくかということです。
NVDA 日本語チームは日本における非営利の開発者グループとして、正式に発足したばかりの団体ですが、この NVDA 東アジア言語拡張プロジェクトに開発メンバーとして関わるだけでなく、資金援助もしたいと考えています。
そのために、日本でも、視覚に障害のあるかたの当事者団体や支援団体の皆様に、NVDA の開発がどのように行われているのか、NVDA がいま世界でどのように普及しつつあるのか、もっと知っていただきたいと考えています。

NVDA 日本語チームはこのような問題意識から、NVDAの主要な開発者のおひとりであるオーストラリア NV Access Limited の Michael Curran 氏を日本にお招きすることにしました。
さらに、台湾で NVDA の普及活動や開発のリーダーシップを取っておられる Taiwan Digital Talking Books Association の Jerry Wang (王建立) 博士をお招きします。

さらに今回 DAISY コンソーシアム 前代表の 河村 宏 氏にもご参加いただき、インクルーシブな社会発展のためにオープンソース技術、オープンスタンダード技術がどのように貢献できるかを、DAISY プロジェクトの経験からお話いただくことにしました。アクセシブルな電子書籍の標準技術である DAISY の理念は、「視覚に障害がある人が追加のコストを負担せずにコンピューターが使えるようにしたい」という NVDA の理念と重なるものと考えています。

9月16日の講演は15時15分から18時30分の予定です。PyCon JP 2012 プログラムをご参照ください。

9月17日の予定は調整中です。現時点では PyCon JP 2012 のスプリント(開発者が参加する自由な形式の活動の場)に NVDA コミュニティとして参加する計画です。スプリントだけに参加されるかたは、PyCon JP の参加登録は必要ありません。

この企画は NVDA 日本語チームのボランティアによって進められています。ゲストの渡航費用や運営経費の一部は、寄付や募金によって賄う予定です。
翻訳、記録、移動支援など、いろいろなスタッフが必要になると予想しています。
イベントへの参加や支援について、お気軽にお問い合わせください。
問い合わせ先:メールアドレス nvdajp@nvda.jp
ワークショップの公式サイト http://workshop.nvda.jp

台北訪問とNVDA日本語チームの報告

6月8日から11日まで台湾の台北に行ってきました。初日に台湾の NVDA(オープンソースのスクリーンリーダー)開発グループと話し合いをしました。
2日目と3日目にはプログラミング言語 Python の台湾における大きなイベント PyCon TW に参加しました。
この旅行については詳しいレポートを書いているところです。


“台北訪問とNVDA日本語チームの報告” の続きを読む

NVDA 日本語版 2012.1j 公開

オープンソースのWindows用スクリーンリーダーであるNVDAを日本のユーザーのために改良する nvdajp プロジェクトは2012年4月20日に最新の日本語版 2012.1j をリリースしました。インストーラー版とポータブル版の2種類の実行ファイルを公開しています。ライセンスは GPL v2 です。

NVDA日本語版のスクリーンショット

NVDAユーザ会広島が運用する nvda.jp も今回のリリースに合わせて更新を行いました。http://i.nvda.jp にて、NVDA 2012.1j インストーラー版をダウンロードできます。
“NVDA 日本語版 2012.1j 公開” の続きを読む

PyCon JP 2011 参加

東京で開催された Python のイベント PyCon JP 2011 に参加して、ライトニングトークの機会もいただきました。

すでに諸々まとめのページができています。

私は1月の PyCon mini JP でオープンソースのスクリーンリーダー NVDA のお話をしました。その後、私は大学を退職して広島に転居し、「オラビー・ジャパン」(個人事業者)としての活動を始めました。(というお話をしたら、何人かの方に Facebook の「いいね!」ボタンを押していただけました。)
また、NVDA の日本語化に関わるプログラマー2人が広島に集まったことをきっかけに、「NVDA ユーザ会広島」の活動を開始しました。
今回は NVDA ユーザ会広島の代表としてLTに申し込みをしましたが、10月1日に開催されるオープンソースカンファレンス広島では、セミナーとブース出展を予定しています。

PyCon JP の当日、りんかい線「品川シーサイド駅」から歩いて会場の入口で最初に目にしたものは大きな階段でした。そして私が登ろうとしたときに、後ろから大きなスーツケースを持った人がやってきて、会場担当の方にエレベーターがないかと質問をしておられました。
“PyCon JP 2011 参加” の続きを読む

NVDA #pyconjp スライド

PyCon mini JPNVDA 日本語化プロジェクトの話をしました。運営に関わられた皆様、発表の機会を与えてくださった皆様、プロジェクトを支えてくださる皆様に感謝します。そして今回もまた @hoozukiyama さんにスライド作成から発表まで、何度も助けていただきました。

自分の発表の間はタイムラインを見ていませんでしたが、Togetterなどを見た限りでは、スクリーンリーダを支える技術、アクセシビリティと関わりのある技術について知っていただけたようです。
Ustream配信の録画がありました。2:15あたりから私の話です。

スライドは下記です。「おまえ誰よ?」を作りそびれたのが残念です(笑)

なお、テキストだけのスライドなので、中身を下記に転載します。
こういうことをすると Sphinx でプレゼンテーションとかやってみたくなりますね。。
自己紹介で喋った昔の話は、いずれ改めてブログ記事にしたいと思います。

“NVDA #pyconjp スライド” の続きを読む

NVDAjp 2010.2に向けて

NVDAjp 2010.2に向けて開発メンバーは作業を進めています。
ここでは私の作業状況を簡単にお知らせします。
2010.2 ベースの JTalk の話速を速くする実装の目処は立っており、 bazaar のレポジトリ
lp:~nishimotz/nvdajp/with_jtalk
rev.3531 として launchpad.net に置いてあります。

ただし、このレポジトリには zjtalk.py と jtalk.py の2つのエンジンがあり、(内部の実装はどちらも _jtalk.py です)zjtalk のほうは音声設定で話速のスライダーが出てきます。

jtalk.py のほうは話速設定がうまくできません。話速設定のために supportedSettings をいじると espeak が起動時エラーで落ちます。
なぜ espeak に影響が及ぶのかいまだに不明なのですが、zjtalk.py にリネームしたら解決したので、クラスを読み込んで初期化する順序に依存する問題と思われます。この現象は silence.py で試しても同じでした。

それから NVDAjp そのものではないのですが、10月の開発ミーティングの後の交流会の議論を踏まえて
「読み上げの改良のための情報を集めるサイト」
を試作しました。
Python でなく Ruby on Rails で作ってますが(笑)
こちらについても時間ができたら改良に取り組みたいので、御意見を伺えれば幸いです。

追記(11月15日)
10月30日に 2010.2j がリリースされています。
話速設定については将来のバージョンで追加される予定です。

NVDAのための音声エンジン

NVDA日本語版は先日「ベータ版」という形で新たに公開されました。
http://accessibility.mitsue.co.jp/archives/000256.html

ベータ版に間に合わなかった音声エンジンの方を私が頑張ってるところです。。
8月末までにNVDAのための音声合成をやると宣言したのですが、とうとう今日で8月も終わりです。

New BSD ライセンスで公開されているエンジン Open-JTalk を Python から ctypes 経由で叩けるようにする作業を進めてきました。
さきほどやっと speak や stop などの基本コマンドが動くようになりました。

いまのところ成果は github の私のレポジトリにあります:
http://github.com/nishimotz/libopenjtalk
この中の lib というサブディレクトリが DLL 関連です。

cygwin gcc-3 の minGW 互換モードで DLL を作っています。
Python は cygwin 版 2.5 と Win32 版 2.6 の両方でチェックしています。
(ただし後述の nvwave.py の制約で cygwin 版 2.5 には非対応になりました)

ただし、技術的な制約で、open-JTalk に組み込まれている mecab (形態素解析エンジン)を使わず、単独で配布されている Win32 版の mecab DLL を組み合わせて使っています。(そのほうがライセンスも管理しやすいはず)

今後の拡張性や保守性を考慮して、オリジナルのエンジンが main 関数でやっている処理を python でほぼ実装しなおしました。
もともと Open-JTalk は HTS_Engine_API の中でオーディオ出力を行っていたようです。しかしスクリーンリーダのためには(音声対話システムであっても)「再生中の音声を自由に止める機能」が必要であるため、HTS_Engine_API 側のオーディオデバイス処理は(configureのオプションで)無効化しました。

ctypes でポインタやダブルポインタを渡す処理を苦労して書きましたが、Python 側にバッファのメモリ管理をやらせるとハマりやすい、ということが分かったので、DLL 側で malloc のラッパー関数を作ってごまかしつつあります。あとでメモリリーク対策が必要になりそうですが。。

NVDA が espeak の中でどのようにオーディオを叩いているかも調べました。(ctypesの参考になりました。。)
http://ja.nishimotz.com/espeak

Windows マルチメディア API で音声出力する部分が nvwave.py という Python のコードでコールバック処理もふくめて実現されています。
驚きでした。
この NVDA 的なやり方を見習って jtalk.py の実装を行いました。ただし DLL から音声波形をコールバックで受け取るのではなく、生成された波形をまとめて nvwave の player に渡しています。
この _espeak.py の実装では、メインスレッドとバックグラウンドスレッドでコマンドキューを共有し、バックグラウンドのスレッドがキューの再生を行っています。さらに stop 命令を受け取ると、キューの中で「時間がかかる処理」だけを削除し、モードの切り替えなどの処理はキャンセルしないで順次実行する、ということになっています。
このような処理は私が「ウチコミくん」で最初に Visual Basic Ver.6 で実装し、そして Galatea Dialog Studio でも実装したものです。
懐かしいような嬉しいような気もします。
そして Python という言語の奥の深さを感じます。

残った仕事は synthDrivers を継承して NVDA 用のドライバークラスを書くことです。
スクリーンリーダーに統合して、安定して動けばいいのですが。。

今回つくった音声合成エンジンでは、かなり多くの部分を Python で実装してあるので、例えば文字列の前処理くらいなら簡単にカスタマイズできそうです。

明日の夜は久しぶりに NVDA 日本語化プロジェクトの開発ミーティングです。