NVDA: Pythonベースのスクリーンリーダーは、視覚障がいをお持ちのかたにコンピュータアクセスを提供しています。
ディレクター/ソフトウェア開発、NV Access Limited
スクリーンリーダーNVDAの共同リード開発者
NV Accessとは?
- マイケル·カラン、ジェームズ・テーらによって2007年に設立され、オーストラリアの非営利団体
- 世界中の視覚障がい者が見える人と同等にコンピュータアクセスができるように 無料のNVDAスクリーンリーディングソフトウェアを開発しています。
- www.nvaccess.org
私たちの理念
- 第一の使命:コンピュータアクセスへの障壁を減らすこと
- 既存のスクリーンリーディングソフトウェアは、数千ドルのコストがかかります。
- ユーザのアクセシビリティのために、追加費用が必要となるべきではないと私たちは信じています。
- 無料でオープンソースソフトウェアが最もこの目的に近い促進方法です。
私たちのビジネスモデル
- 資金を調達し、開発者を雇用し、管理/マネジメントを提供します。
- 補助金、契約金、寄付金によって資金提供されています。
- Mozillaなど、Adobe、Yahoo!やMicrosoftなどの団体から支援を受けています。
NVDAとは?
- 視覚以外でのデスクトップアクセス
- ほとんどをPython言語で書かれたMicrosoft Windows用の無料でオープンソースのスクリーンリーダーです。
- www.nvda-project.org
- 盲人/視覚障がいのユーザがWindowsオペレーティング・システムおよびサードパーティアプリケーションにアクセスすることを可能にします。
- 合成音声や点字出力によって、ユーザの "スクリーン内の情報読み取り" を提供します。
NVDAの特長
- ゼロコスト!
- 多言語対応: 30カ国語以上に翻訳
- ポータビリティは: USBドライブから全てを実行することができます。
- 自動更新システム(日本語版未提供)
- Windows XPからWindows 8までサポート(32ビット版および64ビット版)
アプリケーションサポート
- Web/ドキュメントブラウザ: Mozilla Firefox、Microsoft Internet Explorer、Adobe Reader
- メールクライアント:Mozilla Thunderbird、Microsoft Outlook、Outlook Express / Windows Mail、Windows Live Mail
- Officeスイート:IBMのLotus Symphony、Microsoft OfficeのWord / Excel
- Windowsのコマンドプロンプトやコンソールアプリケーションのサポート
- RIA(リッチインターフェースアプリケーション)フレームワーク: Adobe Flash、Adobe AIR
NVDAの機能
- キーボードフォーカスまたはシステムキャレットを移動すると、制御やコンテンツの読み上げ
- テキストの書式設定のお知らせ; 例えばフォント名/サイズ、スタイル、スペルミスなど
- マウスフォーカスされたテキストの読み上げ
- オブジェクトごとにナビゲーションし、読み上げ
NVDAはどのように使われているのか?
- 家庭のユーザーには、電子メール、ニュース、音楽、金融、ショッピング、ソーシャルネットワークなど
- 小学校から大学まで学生にも使われています。
- 特にIT分野で、自営業の人たちを含み職場でも使われています。
- 外出先での利用: 公共図書館のコンピュータやインターネットカフェ
- ソフトウェアやウェブサイトのアクセシビリティ·テスト: 例えばヤフー、マイクロソフト
利用者統計
- 40,000人以上のダウンロード(最新リリース)
- 現在、世界120カ国以上で、平均で4600人が、毎日NVDAを使用しています。
- WebAIMスクリーンリーダーユーザー調査#4 、によると、NVDAはWindowsスクリーンリーダーとして2番めに多く使われています。
コードとプロジェクトマネジメント
- Bazzar DCVSで管理(バザー分散型バージョン管理システム)
- GNU General Public License
- NV Accessによってリリースとコア開発の管理が行われています。
- 世界各国からのコードの貢献と翻訳(100人以上の貢献者/協力者)
- プロジェクトサービスはPython パッケージによって強化: Trac, WSGI, Psycopg2, Mailman, Genshi
Pythonはどのように使用されているのか? その1
- コア部分
- GUI(wxPythonを経由)
- 音声合成や点字ディスプレイドライバ
- キーボード入力、点字入力、タッチスクリーンのジェスチャ入力
Pythonはどのように使用されているのか? その2
- アプリケーション固有と制御固有のロジック(NVDAのオブジェクト、アプリケーション·モジュール、グローバルプラグイン、ツリー検査)
- ctypesのcomtypesとパッケージの両方を通じて、Win32およびアクセシビリティー固有のAPIのサポート
- configObjモジュールを介しての設定
- 外部アドオン
- ビルドプロセス(SConsとPy2exeを通じて)
Pythonが使われていない場所は?
- いくつかの場所でC++が使われています:
- DOMツリー全体を走査し大規模なドキュメント表記の構築
- ローレベルのWin32関数をフックして、GDIの表示情報の検出
- パフォーマンスを向上させるか、または画面の内容を取得時にセキュリティ制限をバイパスするために、他のプロセスにコードを挿入する場合
- 内部と外部の両方で、プロセス間通信のためのMS RPCクライアント/サーバのスタブ(代用)
Pythonがなぜ選んだのか?
- 非常に迅速かつ簡単にプロトタイプ/開発が可能
- モジュラー、オブジェクト指向、抽象的な設計が可能
- ctypesのとcomtypesパッケージを介して他のサードパーティ製のライブラリやAPIとのインターフェイスを持つことが可能
- スクリプトの実行時に外部コードをロードする機能がある
NVDAによって使用されるPython固有の機能
- 多重継承(NVDAオブジェクト、アップモジュールなど)
- ctypes: 構造、コールバック、複雑なC関数宣言を含む
- metaclasses: プロパティの生成、動的なベースクラス選択(NVDAオブジェクト)
- オーバーライド、キャッシュ可能なプロパティ(NVDAオブジェクト、アップモジュールなど)を利用できるカスタムディスクリプタ
- クラスミューテーション(アップモジュールとグローバルプラグインとして拡張)
開発およびバグトラッキング
- PythonベースのTracシステムでバグトラッキングと機能追加
- Pythonのロギングフレームワークを介して詳細なロギング
- 実行時に内部状態の検査を可能にする内蔵のPythonコンソール
- WinDBGのWindowsプロセスデバッガ
歴史 その1
- 視覚障がい者や私は、スクリーンリーダーのために数千ドルを支払いたくなかった。
- 無料無制限のスクリーンリーダーはLinuxの/ Mac用には存在したが、Windows用には存在しなかった。
- 2006年4月:私は、コードを書き始めました。
- 2006年7月:ジェームズ・テーが、プロジェクトに参加しました。
歴史 その2
- Mozillaが興味を持ってくれた。NVDAにFirefoxをサポートしてもらいたいと、CSUN会議に私は呼ばれました。
- NVDAをサポートするためにNV Accessという組織を設立しました。
- Mozillaの資金のおかげで、ジェームズは、プロジェクトにフルタイムで働き始めました。
- IEとUIA(ユニバーサル・インターフェース・オートメーション)をサポートするためのマイクロソフトからの資金調達があり、私自信をフルタイムで働き始めました。
- AdobeとMozillaは継続的に支援してくれています。
Pythonとの歴史 その1
- Python 2.4でNVDAの開発に着手
- ctypesはまだありませんでした。
- PyAA、PyTTS、PyWin32: 多くの外部拡張機能に依存していました。
- 迅速だかあまり綺麗ではない改良を続けました。
Pythonとの歴史 その2
- Python 2.5に移行
- 現在は、多くのサードパーティ製Python拡張機能の代わりにctypesを使用することができました。
- Pythonのマイナーバージョンに左右されなくなり、より速く、バグ修正、特定の状況におけるパフォーマンスの向上に繋がりました。
- win32com(PyWin32)はcomtypesに置き換えられました。
Pythonとの現在と将来
- 現在は、Python 2.7を使用しています。
- Python 3へ移行したいので、WXとPy2exeの対応を待っています。
- Python 3のUnicodeサポートが大幅に文字列処理を改善しれくれるはずです。