SlideShare une entreprise Scribd logo
1  sur  12
スクリーンリーダー NVDA の
開発と Python 3 移行
西本 卓也
@nishimotz / @24motz
NVDA日本語チーム / 株式会社シュアルタ
1
NVDA: Non-Visual Desktop Access
• オープンソースの Windows 対応スクリーンリーダー
• オーストラリアの NPO と世界のコミュニティ
• 3ヶ月ごとにリリース、新しい技術や環境への対応
• アドオン(プラグイン)による拡張性
• Python (2.7 → 3.7) & C++ で実装されている
• NVDA日本語チーム : www.nvda.jp
• 日本語版 (fork) の配布(日本語音声、日本語点訳など追加)
• 本家版の開発と翻訳
• FocusHighlight アドオン
• イベント開催
2
3
■ 1文字ナビゲーション
(Shift+で逆方向)
H : 見出し(1~6も可)
L : リスト
I : リスト項目
T : テーブル
K : リンク
N : リンクのないテキスト
F : フォームフィールド
U : 未訪問リンク
V : 訪問済みリンク
E : エディットフィールド
B : ボタン
X : チェックボックス
C : コンボボックス
R : ラジオボタン
M : フレーム
G : 画像
D : ランドマーク
O : 埋め込みオブジェクト
■ NVDA+F7 : 要素リスト
(閲覧・実行・検索)
リンク / 見出し
フォームフィールド
ボタン / ランドマーク
(Webブラウザの場合)
■ FocusHighlight アドオン
▼ フォーカスとナビゲーターオブジェクトが分離
ナビゲーターオブジェクト : 緑の細い一点鎖点
フォーカスモード : 青の太い点線
フォーカス : 赤の太い実線
フォーカス : 赤の細い実線
フォーカスモード
コンテンツ
ブラウザ
コンテンツ
ブラウザ
キ ー 入 力
NVDA
ブラウズモード
NVDA日本語チーム
www.nvda.jp
NVDA
Cheat Sheet
自動切替または
NVDA+スペース
NVDAがブラウザを制御
▼ 矢印キーでブラウズ
(NVDA+V : 画面レイアウト)
▼ 見出しジャンプ ▼ 要素リスト
Tab / スペース / Enter などはフォーカスモードと同じ
Internet Explorer / Edge
Firefox / Chrome
Word / Excel / Outlook
Acrobat Reader / Kindle for PC
NVDA+N : NVDAメニュー
NVDA+Q : NVDAの終了
NVDA+1 : 入力ヘルプ
NVDA+Enter : 既定アクション実行
■ Windows 操作(フォーカス)
矢印キー : 移動(Shift+で範囲選択)
Tab / Shift+Tab : フォーカス移動
F6 / Shift+F6 : ペイン移動
Enter : 項目選択や実行など
スペース : ボタンを押すなど
Shift+F10 : メニューキー
Alt+ : コンボボックス展開
■ 書式とドキュメント情報 (NVDA設定で不要な報告をチェックなしに)
▼ フォント
フォント名
フォントサイズ
フォント属性
強調
スタイル
色
▼ ドキュメント情報
コメント
校閲者による更新
スペルミス
▼ 要素
見出し
リンク
リスト
引用
カンマ / Shift+カンマ
コンテナ要素の直後・先頭に移動
■ NVDA制御キー
(2回押すと元のキーの機能)
Insertキー
CapsLock(英語キーボード)
NVDA+テンキー(デスクトップ配列)
次のレビューモード 親の要素
前の要素 現在の要素 次の要素
前のレビューモード 子の要素
前の行 現在の行 次の行
前の単語 現在の単語 次の単語
前の文字 現在の文字 次の文字
テンキー(デスクトップ配列)
NVDA+Tab : フォーカス
NVDA+T : タイトル
NVDA+D : 詳細説明
NVDA+F : 書式とドキュメント情報
 Shift+ピリオド 
Ctrl+ Ctrl+ピリオド Ctrl+
 ピリオド 
NVDA+(ラップトップ配列)
←
NVDA+(ラップトップ配列)
PageUp Shift+
Shift+ Shift+O Shift+
PageDown Shift+
←
NVDA+M : マウスカーソル
NVDA+U : プログレス
NVDA+P : 記号
Esc
▼ nvdajp
無変換キー
変換キー(オプション)
Esc(オプション)
■ オブジェクトナビゲーション
ブラウザとコンテンツを操作
▼ ページと間隔
ページ番号
行番号
行インデント
段落インデント
行間
配置
■ レビューカーソル
■ テーブル内の移動
Ctrl+Alt+矢印キー
▼ テーブル情報
テーブル
行と列の見出し
セル番地
セルの罫線
Ctrl+Alt+N : NVDA起動
ランドマーク
フレーム
クリック可能
■ 声や音を止める
▼ 設定 > 音声 > エンジンなし
▼ ツール > スピーチビューアー
▼ 読み上げ Ctrl : 停止 / Shift : 一時停止
■ 報告
デスクトップ配列 NVDA+ : 行の報告
ラップトップ配列 NVDA+L : 行の報告
■ キャレット NVDA+ : 下に進む
NVDA+A : 下に進む
NVDA+B : 現在のウィンドウに含まれるオブジェクトの読み上げ
ガシャ
ポン
4
NVDA日本語版のユーザ数
日本の視覚障害者にとってのNVDA
• 家庭でも職場でも無料
• 助成金でスクリーンリーダーを買うと仕事に使えない
• サブのスクリーンリーダーとして
• メインのスクリーンリーダーに足りない機能・性能を補う
• USBメモリに入れて持ち運べる
• スマートフォンがメイン、PCがサブになっていく
• 頻繁にバージョンアップする OS やアプリを追いかける
• バージョンアップにお金がかからない
• バージョンアップに時間がかからない
• ナレーター (Windows 標準スクリーンリーダー) も急成長中
5
技術者がNVDAで検証する意義
• 開発者も利用者も無料
• チェックツールでなく実際の支援技術で試せる
• サードパーティのライブラリやフレームワーク
• 動的なコンテンツ
• 他のスクリーンリーダーに対応させる準備になる
• 標準化を推進
• 企業での実践例が続々
• Japan Accessibility Conference Vol.2(2019年7月)
6
サイトワールド2019「NVDA 相談会」
11月1日(金曜) 13:30~16:00
すみだ産業会館サンライズホール(錦糸町)
視覚に障害がある人でも使えるように取り組んでおられるクラウドサービスとして
kintone、クラウドサイン、Chatwork、freee
の皆様をお招きします。新しい楽しみ方や働き方に役立つクラウドサービスを、
最新のWindowsと無料のスクリーンリーダーNVDAで
活用していただくために、NVDA日本語チームは
サービス事業者とユーザーが集まる意見交換の場を作ります。
7
2019年のNVDA開発
• 通常なら2月末、5月末、8月末、11月末がリリース目標
• 今年はリリースに多く時間をかけている
• 2019.1
• アドオン開発者に対応を促す仕様の導入
• 開発者スクラッチパッド(高度な機能)
• 2019.3 で非互換の変更
• 音声エンジンの新しい仕様への移行
• 通称 Speech Refactor
• Python 2.7 から 3.7 への移行
8
Python 3 移行
• 2015年(NVDA 2015.1)
• GUI フレームワーク wxPython を 2 から 3 に更新
• 2017年7月
• wxPython 4 alpha が Python 3 に対応、だがなかなか安定せず
• 2018年秋
• NVDA 2018.3 で wxPython 4.0.3 にやっと移行
• Python 3 対応 Pull Request 作成と(一部)six 導入が進む
• 2019年5月
• py2exe が Python 3.7 で動作、2019.3 に向けたビルド開始
• 2019年8月
• 2019.2 リリース(Python 2 系の最終版)
9
ドキュメント作成ツール
• txt2tags: 大昔に開発が止まっている
• 他のシステムに移行が困難
• 意外に複雑なワークフロー
• 翻訳ボランティアの教育コスト
• nishimotz が Python 3 対応やってみた
• 最初は Python-Modernize で
• 昔の記法を直す: map, long, string.join など
• Python 2/3 で実行結果が一致するように
• 2019年4月: 正式に採用された
• コードレビューで Python 2 対応を削除
10
Windows 日本語環境
• MBCS CP932 (Shift-JIS)
• Python のバグを踏んだことも
• Python Issue 14255 tempfile.gettempdir
• MBCS が誤って normcase されていた
• Python 2 だと Windows API が MBCS を返す
• ユーザー名で日本語を使うと簡単に起きる
• UTF-16 に decode する必要がある
• Python 3 はすべて Unicode になった
• 残った問題は本家版でつぶしてもらう
• 例えば open で encoding='utf-8' をつけてない、など
11
NVDA日本語版の Python 3.7 対応
• 日本語音声や日本語点字への対応など
• 本家版のアドオンとして本家版で検証
• モジュールを AppVeyor で複数環境ビルド
• リファクタリングの影響
• パッチを作り直した
• 2019.3jp
• すでにアルファ版を公開中
• 本家 2019.3 と同時に正式リリースできる見込み
• 今後も本家版と日本語版の差を減らしていきたい
12

Contenu connexe

Similaire à 190916 nishimoto-nvda-pyconjp

クライアント部会成果報告2011/日本OSS推進フォーラム
クライアント部会成果報告2011/日本OSS推進フォーラムクライアント部会成果報告2011/日本OSS推進フォーラム
クライアント部会成果報告2011/日本OSS推進フォーラムnamioto
 
The current problems and future of the desktop Linux printing
The current problems and future of the desktop Linux printingThe current problems and future of the desktop Linux printing
The current problems and future of the desktop Linux printingNaruhiko Ogasawara
 
Web制作者のためのNVDA入門
Web制作者のためのNVDA入門 Web制作者のためのNVDA入門
Web制作者のためのNVDA入門 Takuya Nishimoto
 
NVDAワールド2015東京
NVDAワールド2015東京NVDAワールド2015東京
NVDAワールド2015東京Takuya Nishimoto
 
スクリーンリーダーNVDA日本語版の現状と課題
スクリーンリーダーNVDA日本語版の現状と課題スクリーンリーダーNVDA日本語版の現状と課題
スクリーンリーダーNVDA日本語版の現状と課題Takuya Nishimoto
 
ウェブディレクターのための Web A11Y 勉強会 #02
ウェブディレクターのための Web A11Y 勉強会 #02ウェブディレクターのための Web A11Y 勉強会 #02
ウェブディレクターのための Web A11Y 勉強会 #02Kazuhiko Tsuchiya
 
[Node-RED] ファンクションノードのデバッグどうしてる?
[Node-RED] ファンクションノードのデバッグどうしてる?[Node-RED] ファンクションノードのデバッグどうしてる?
[Node-RED] ファンクションノードのデバッグどうしてる?Makoto SAKAI
 
世界のNVDAコミュニティとNVDA日本語版の最新情報
世界のNVDAコミュニティとNVDA日本語版の最新情報世界のNVDAコミュニティとNVDA日本語版の最新情報
世界のNVDAコミュニティとNVDA日本語版の最新情報Takuya Nishimoto
 
NVDAの基本からもう一度
NVDAの基本からもう一度NVDAの基本からもう一度
NVDAの基本からもう一度Takuya Nishimoto
 
2015年のNVDAとWindows環境
2015年のNVDAとWindows環境 2015年のNVDAとWindows環境
2015年のNVDAとWindows環境 Takuya Nishimoto
 
171111 nishimoto-nvdajp-v2
171111 nishimoto-nvdajp-v2171111 nishimoto-nvdajp-v2
171111 nishimoto-nvdajp-v2Takuya Nishimoto
 
Node-REDのプログラミングモデル
Node-REDのプログラミングモデルNode-REDのプログラミングモデル
Node-REDのプログラミングモデルAtsushi Kojo
 
191101 nvda-sightworld-nishimoto
191101 nvda-sightworld-nishimoto191101 nvda-sightworld-nishimoto
191101 nvda-sightworld-nishimotoTakuya Nishimoto
 
Simutrans札幌オフプレゼンテーション
Simutrans札幌オフプレゼンテーションSimutrans札幌オフプレゼンテーション
Simutrans札幌オフプレゼンテーションmyagami
 
わんくま名古屋#36 (20150725) Windows 10 ユニバーサル Windows アプリ開発入門
わんくま名古屋#36 (20150725) Windows 10 ユニバーサル Windows アプリ開発入門わんくま名古屋#36 (20150725) Windows 10 ユニバーサル Windows アプリ開発入門
わんくま名古屋#36 (20150725) Windows 10 ユニバーサル Windows アプリ開発入門Yasuhiko Yamamoto
 
LibreOffice, the free office productive suite and it's status of accessibilit...
LibreOffice, the free office productive suite and it's status of accessibilit...LibreOffice, the free office productive suite and it's status of accessibilit...
LibreOffice, the free office productive suite and it's status of accessibilit...Naruhiko Ogasawara
 
2006-04-22 CLR/H #14 .NET and open source
2006-04-22 CLR/H #14 .NET and open source2006-04-22 CLR/H #14 .NET and open source
2006-04-22 CLR/H #14 .NET and open sourceYoshiyuki Nakamura
 

Similaire à 190916 nishimoto-nvda-pyconjp (20)

181226 txt2tags
181226 txt2tags181226 txt2tags
181226 txt2tags
 
クライアント部会成果報告2011/日本OSS推進フォーラム
クライアント部会成果報告2011/日本OSS推進フォーラムクライアント部会成果報告2011/日本OSS推進フォーラム
クライアント部会成果報告2011/日本OSS推進フォーラム
 
The current problems and future of the desktop Linux printing
The current problems and future of the desktop Linux printingThe current problems and future of the desktop Linux printing
The current problems and future of the desktop Linux printing
 
Web制作者のためのNVDA入門
Web制作者のためのNVDA入門 Web制作者のためのNVDA入門
Web制作者のためのNVDA入門
 
NVDAワールド2015東京
NVDAワールド2015東京NVDAワールド2015東京
NVDAワールド2015東京
 
171031 nishimoto-nvdajp
171031 nishimoto-nvdajp171031 nishimoto-nvdajp
171031 nishimoto-nvdajp
 
スクリーンリーダーNVDA日本語版の現状と課題
スクリーンリーダーNVDA日本語版の現状と課題スクリーンリーダーNVDA日本語版の現状と課題
スクリーンリーダーNVDA日本語版の現状と課題
 
ウェブディレクターのための Web A11Y 勉強会 #02
ウェブディレクターのための Web A11Y 勉強会 #02ウェブディレクターのための Web A11Y 勉強会 #02
ウェブディレクターのための Web A11Y 勉強会 #02
 
[Node-RED] ファンクションノードのデバッグどうしてる?
[Node-RED] ファンクションノードのデバッグどうしてる?[Node-RED] ファンクションノードのデバッグどうしてる?
[Node-RED] ファンクションノードのデバッグどうしてる?
 
世界のNVDAコミュニティとNVDA日本語版の最新情報
世界のNVDAコミュニティとNVDA日本語版の最新情報世界のNVDAコミュニティとNVDA日本語版の最新情報
世界のNVDAコミュニティとNVDA日本語版の最新情報
 
NVDAの基本からもう一度
NVDAの基本からもう一度NVDAの基本からもう一度
NVDAの基本からもう一度
 
2015年のNVDAとWindows環境
2015年のNVDAとWindows環境 2015年のNVDAとWindows環境
2015年のNVDAとWindows環境
 
171111 nishimoto-nvdajp-v2
171111 nishimoto-nvdajp-v2171111 nishimoto-nvdajp-v2
171111 nishimoto-nvdajp-v2
 
Node-REDのプログラミングモデル
Node-REDのプログラミングモデルNode-REDのプログラミングモデル
Node-REDのプログラミングモデル
 
191101 nvda-sightworld-nishimoto
191101 nvda-sightworld-nishimoto191101 nvda-sightworld-nishimoto
191101 nvda-sightworld-nishimoto
 
190516 nishimoto
190516 nishimoto190516 nishimoto
190516 nishimoto
 
Simutrans札幌オフプレゼンテーション
Simutrans札幌オフプレゼンテーションSimutrans札幌オフプレゼンテーション
Simutrans札幌オフプレゼンテーション
 
わんくま名古屋#36 (20150725) Windows 10 ユニバーサル Windows アプリ開発入門
わんくま名古屋#36 (20150725) Windows 10 ユニバーサル Windows アプリ開発入門わんくま名古屋#36 (20150725) Windows 10 ユニバーサル Windows アプリ開発入門
わんくま名古屋#36 (20150725) Windows 10 ユニバーサル Windows アプリ開発入門
 
LibreOffice, the free office productive suite and it's status of accessibilit...
LibreOffice, the free office productive suite and it's status of accessibilit...LibreOffice, the free office productive suite and it's status of accessibilit...
LibreOffice, the free office productive suite and it's status of accessibilit...
 
2006-04-22 CLR/H #14 .NET and open source
2006-04-22 CLR/H #14 .NET and open source2006-04-22 CLR/H #14 .NET and open source
2006-04-22 CLR/H #14 .NET and open source
 

Plus de Takuya Nishimoto

221217 SwiftはPythonに似ている
221217 SwiftはPythonに似ている221217 SwiftはPythonに似ている
221217 SwiftはPythonに似ているTakuya Nishimoto
 
220427-pydata 統計・データ分析 特集
220427-pydata 統計・データ分析 特集220427-pydata 統計・データ分析 特集
220427-pydata 統計・データ分析 特集Takuya Nishimoto
 
220126 python-datalake-spark
220126 python-datalake-spark220126 python-datalake-spark
220126 python-datalake-sparkTakuya Nishimoto
 
211120 他人の書いたPythonスクリプトをステップ実行で理解する
211120 他人の書いたPythonスクリプトをステップ実行で理解する211120 他人の書いたPythonスクリプトをステップ実行で理解する
211120 他人の書いたPythonスクリプトをステップ実行で理解するTakuya Nishimoto
 
211020 すごい広島 with OSH 2021.10
211020 すごい広島 with OSH 2021.10211020 すごい広島 with OSH 2021.10
211020 すごい広島 with OSH 2021.10Takuya Nishimoto
 
210917 オープンセミナー@広島のこれまでとこれから
210917 オープンセミナー@広島のこれまでとこれから210917 オープンセミナー@広島のこれまでとこれから
210917 オープンセミナー@広島のこれまでとこれからTakuya Nishimoto
 
210911 これから始める電子工作とMicroPython
210911 これから始める電子工作とMicroPython210911 これから始める電子工作とMicroPython
210911 これから始める電子工作とMicroPythonTakuya Nishimoto
 
210526 Power Automate Desktop Python
210526 Power Automate Desktop Python210526 Power Automate Desktop Python
210526 Power Automate Desktop PythonTakuya Nishimoto
 
191208 python-kansai-nishimoto
191208 python-kansai-nishimoto191208 python-kansai-nishimoto
191208 python-kansai-nishimotoTakuya Nishimoto
 

Plus de Takuya Nishimoto (20)

221217 SwiftはPythonに似ている
221217 SwiftはPythonに似ている221217 SwiftはPythonに似ている
221217 SwiftはPythonに似ている
 
220427-pydata 統計・データ分析 特集
220427-pydata 統計・データ分析 特集220427-pydata 統計・データ分析 特集
220427-pydata 統計・データ分析 特集
 
220126 python-datalake-spark
220126 python-datalake-spark220126 python-datalake-spark
220126 python-datalake-spark
 
211120 他人の書いたPythonスクリプトをステップ実行で理解する
211120 他人の書いたPythonスクリプトをステップ実行で理解する211120 他人の書いたPythonスクリプトをステップ実行で理解する
211120 他人の書いたPythonスクリプトをステップ実行で理解する
 
211020 すごい広島 with OSH 2021.10
211020 すごい広島 with OSH 2021.10211020 すごい広島 with OSH 2021.10
211020 すごい広島 with OSH 2021.10
 
210917 オープンセミナー@広島のこれまでとこれから
210917 オープンセミナー@広島のこれまでとこれから210917 オープンセミナー@広島のこれまでとこれから
210917 オープンセミナー@広島のこれまでとこれから
 
210911 これから始める電子工作とMicroPython
210911 これから始める電子工作とMicroPython210911 これから始める電子工作とMicroPython
210911 これから始める電子工作とMicroPython
 
210728 mpy
210728 mpy210728 mpy
210728 mpy
 
210630 python
210630 python210630 python
210630 python
 
210526 Power Automate Desktop Python
210526 Power Automate Desktop Python210526 Power Automate Desktop Python
210526 Power Automate Desktop Python
 
210428 python
210428 python210428 python
210428 python
 
200918 hannari-python
200918 hannari-python200918 hannari-python
200918 hannari-python
 
200429 python
200429 python200429 python
200429 python
 
200325 flask
200325 flask200325 flask
200325 flask
 
200208 osh-nishimoto-v2
200208 osh-nishimoto-v2200208 osh-nishimoto-v2
200208 osh-nishimoto-v2
 
191208 python-kansai-nishimoto
191208 python-kansai-nishimoto191208 python-kansai-nishimoto
191208 python-kansai-nishimoto
 
191114 iotlt-nishimoto
191114 iotlt-nishimoto191114 iotlt-nishimoto
191114 iotlt-nishimoto
 
191030 anna-with-python
191030 anna-with-python191030 anna-with-python
191030 anna-with-python
 
190925 python-windows
190925 python-windows190925 python-windows
190925 python-windows
 
190731 chalice
190731 chalice190731 chalice
190731 chalice
 

Dernier

Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsWSO2
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Hiroshi Tomioka
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Gamesatsushi061452
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video UnderstandingToru Tamaki
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイスCRI Japan, Inc.
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...Toru Tamaki
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptxsn679259
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルCRI Japan, Inc.
 

Dernier (11)

Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 

190916 nishimoto-nvda-pyconjp

  • 1. スクリーンリーダー NVDA の 開発と Python 3 移行 西本 卓也 @nishimotz / @24motz NVDA日本語チーム / 株式会社シュアルタ 1
  • 2. NVDA: Non-Visual Desktop Access • オープンソースの Windows 対応スクリーンリーダー • オーストラリアの NPO と世界のコミュニティ • 3ヶ月ごとにリリース、新しい技術や環境への対応 • アドオン(プラグイン)による拡張性 • Python (2.7 → 3.7) & C++ で実装されている • NVDA日本語チーム : www.nvda.jp • 日本語版 (fork) の配布(日本語音声、日本語点訳など追加) • 本家版の開発と翻訳 • FocusHighlight アドオン • イベント開催 2
  • 3. 3 ■ 1文字ナビゲーション (Shift+で逆方向) H : 見出し(1~6も可) L : リスト I : リスト項目 T : テーブル K : リンク N : リンクのないテキスト F : フォームフィールド U : 未訪問リンク V : 訪問済みリンク E : エディットフィールド B : ボタン X : チェックボックス C : コンボボックス R : ラジオボタン M : フレーム G : 画像 D : ランドマーク O : 埋め込みオブジェクト ■ NVDA+F7 : 要素リスト (閲覧・実行・検索) リンク / 見出し フォームフィールド ボタン / ランドマーク (Webブラウザの場合) ■ FocusHighlight アドオン ▼ フォーカスとナビゲーターオブジェクトが分離 ナビゲーターオブジェクト : 緑の細い一点鎖点 フォーカスモード : 青の太い点線 フォーカス : 赤の太い実線 フォーカス : 赤の細い実線 フォーカスモード コンテンツ ブラウザ コンテンツ ブラウザ キ ー 入 力 NVDA ブラウズモード NVDA日本語チーム www.nvda.jp NVDA Cheat Sheet 自動切替または NVDA+スペース NVDAがブラウザを制御 ▼ 矢印キーでブラウズ (NVDA+V : 画面レイアウト) ▼ 見出しジャンプ ▼ 要素リスト Tab / スペース / Enter などはフォーカスモードと同じ Internet Explorer / Edge Firefox / Chrome Word / Excel / Outlook Acrobat Reader / Kindle for PC NVDA+N : NVDAメニュー NVDA+Q : NVDAの終了 NVDA+1 : 入力ヘルプ NVDA+Enter : 既定アクション実行 ■ Windows 操作(フォーカス) 矢印キー : 移動(Shift+で範囲選択) Tab / Shift+Tab : フォーカス移動 F6 / Shift+F6 : ペイン移動 Enter : 項目選択や実行など スペース : ボタンを押すなど Shift+F10 : メニューキー Alt+ : コンボボックス展開 ■ 書式とドキュメント情報 (NVDA設定で不要な報告をチェックなしに) ▼ フォント フォント名 フォントサイズ フォント属性 強調 スタイル 色 ▼ ドキュメント情報 コメント 校閲者による更新 スペルミス ▼ 要素 見出し リンク リスト 引用 カンマ / Shift+カンマ コンテナ要素の直後・先頭に移動 ■ NVDA制御キー (2回押すと元のキーの機能) Insertキー CapsLock(英語キーボード) NVDA+テンキー(デスクトップ配列) 次のレビューモード 親の要素 前の要素 現在の要素 次の要素 前のレビューモード 子の要素 前の行 現在の行 次の行 前の単語 現在の単語 次の単語 前の文字 現在の文字 次の文字 テンキー(デスクトップ配列) NVDA+Tab : フォーカス NVDA+T : タイトル NVDA+D : 詳細説明 NVDA+F : 書式とドキュメント情報  Shift+ピリオド  Ctrl+ Ctrl+ピリオド Ctrl+  ピリオド  NVDA+(ラップトップ配列) ← NVDA+(ラップトップ配列) PageUp Shift+ Shift+ Shift+O Shift+ PageDown Shift+ ← NVDA+M : マウスカーソル NVDA+U : プログレス NVDA+P : 記号 Esc ▼ nvdajp 無変換キー 変換キー(オプション) Esc(オプション) ■ オブジェクトナビゲーション ブラウザとコンテンツを操作 ▼ ページと間隔 ページ番号 行番号 行インデント 段落インデント 行間 配置 ■ レビューカーソル ■ テーブル内の移動 Ctrl+Alt+矢印キー ▼ テーブル情報 テーブル 行と列の見出し セル番地 セルの罫線 Ctrl+Alt+N : NVDA起動 ランドマーク フレーム クリック可能 ■ 声や音を止める ▼ 設定 > 音声 > エンジンなし ▼ ツール > スピーチビューアー ▼ 読み上げ Ctrl : 停止 / Shift : 一時停止 ■ 報告 デスクトップ配列 NVDA+ : 行の報告 ラップトップ配列 NVDA+L : 行の報告 ■ キャレット NVDA+ : 下に進む NVDA+A : 下に進む NVDA+B : 現在のウィンドウに含まれるオブジェクトの読み上げ ガシャ ポン
  • 5. 日本の視覚障害者にとってのNVDA • 家庭でも職場でも無料 • 助成金でスクリーンリーダーを買うと仕事に使えない • サブのスクリーンリーダーとして • メインのスクリーンリーダーに足りない機能・性能を補う • USBメモリに入れて持ち運べる • スマートフォンがメイン、PCがサブになっていく • 頻繁にバージョンアップする OS やアプリを追いかける • バージョンアップにお金がかからない • バージョンアップに時間がかからない • ナレーター (Windows 標準スクリーンリーダー) も急成長中 5
  • 6. 技術者がNVDAで検証する意義 • 開発者も利用者も無料 • チェックツールでなく実際の支援技術で試せる • サードパーティのライブラリやフレームワーク • 動的なコンテンツ • 他のスクリーンリーダーに対応させる準備になる • 標準化を推進 • 企業での実践例が続々 • Japan Accessibility Conference Vol.2(2019年7月) 6
  • 8. 2019年のNVDA開発 • 通常なら2月末、5月末、8月末、11月末がリリース目標 • 今年はリリースに多く時間をかけている • 2019.1 • アドオン開発者に対応を促す仕様の導入 • 開発者スクラッチパッド(高度な機能) • 2019.3 で非互換の変更 • 音声エンジンの新しい仕様への移行 • 通称 Speech Refactor • Python 2.7 から 3.7 への移行 8
  • 9. Python 3 移行 • 2015年(NVDA 2015.1) • GUI フレームワーク wxPython を 2 から 3 に更新 • 2017年7月 • wxPython 4 alpha が Python 3 に対応、だがなかなか安定せず • 2018年秋 • NVDA 2018.3 で wxPython 4.0.3 にやっと移行 • Python 3 対応 Pull Request 作成と(一部)six 導入が進む • 2019年5月 • py2exe が Python 3.7 で動作、2019.3 に向けたビルド開始 • 2019年8月 • 2019.2 リリース(Python 2 系の最終版) 9
  • 10. ドキュメント作成ツール • txt2tags: 大昔に開発が止まっている • 他のシステムに移行が困難 • 意外に複雑なワークフロー • 翻訳ボランティアの教育コスト • nishimotz が Python 3 対応やってみた • 最初は Python-Modernize で • 昔の記法を直す: map, long, string.join など • Python 2/3 で実行結果が一致するように • 2019年4月: 正式に採用された • コードレビューで Python 2 対応を削除 10
  • 11. Windows 日本語環境 • MBCS CP932 (Shift-JIS) • Python のバグを踏んだことも • Python Issue 14255 tempfile.gettempdir • MBCS が誤って normcase されていた • Python 2 だと Windows API が MBCS を返す • ユーザー名で日本語を使うと簡単に起きる • UTF-16 に decode する必要がある • Python 3 はすべて Unicode になった • 残った問題は本家版でつぶしてもらう • 例えば open で encoding='utf-8' をつけてない、など 11
  • 12. NVDA日本語版の Python 3.7 対応 • 日本語音声や日本語点字への対応など • 本家版のアドオンとして本家版で検証 • モジュールを AppVeyor で複数環境ビルド • リファクタリングの影響 • パッチを作り直した • 2019.3jp • すでにアルファ版を公開中 • 本家 2019.3 と同時に正式リリースできる見込み • 今後も本家版と日本語版の差を減らしていきたい 12

Notes de l'éditeur

  1. NVDA (NonVisual Desktop Access) は無料・オープンソースのスクリーンリーダー(音声や点字ディスプレイで利用するためのツール)です。実装の大部分に Python が使われているのが特徴です。 PyCon JP 2012 の併催イベントとして NVDA 日本語チームは NVDA Workshop in Japan を開催し、オーストラリア在住の NVDA 開発者を招きました。 NVDA 日本語チームは NVDA は日本語翻訳と、日本語関連機能を追加した派生バージョンをリリースしています。2012年の時点では実用的とは言えない品質だったNVDA日本語版は、リリースごとに改良を重ね、現在では日本の視覚障害者に広く利用されるようになりました。 NVDA は最新のアクセシビリティ標準への準拠を推進しており、ブラウザベースでリッチなUIを提供する Web アプリケーションの操作に対応します。また、そのような Web アプリケーションの開発者が無料で入手できる検証ツールとしても広く知られるようになりました。 NVDA日本語チームは2013年から視覚障害を持つユーザーや Web 製作者を対象にNVDAの情報を発信してきました。一方で、日本語版を独自に開発するだけではなく、可能な限り本家版の開発に直接コミットしていくことも目指してきました。 今回は、現在進められている Python 3 移行の状況もご紹介します。NVDAはソフトウェア技術に詳しくないエンドユーザーが使うプロダクトでありながら、多くの草の根開発者によって作られたアドオンパッケージが存在します。Python 3 への移行は、多くのユーザーの生活や仕事の環境を破壊してしまう懸念がありました。そこで、まずアドオンにAPIバージョンの概念を導入して、互換性のないアドオンを自動的に無効化し、NVDA そのもののバージョンアップが安全に行われる仕組みを導入しました。並行して NVDAそのもののリファクタリングが進められ Python3 ブランチに向けた多くのプルリクエストが作られました。 依存ライブラリやビルドに必要なツールには、すでに開発が終了していたものや、開発が停滞していたものが多数ありました。NVDA のコミュニティはまず開発が停滞していた GUI フレームワークwxPython の開発にコミットして Python3 移行への道筋を作りました。その他にもドキュメント変換ツール txt2tags や実行ファイル生成ツール py2exe などをPython 3.7 に対応させました。2019年6月にようやく自動ビルドサーバーで Python 3.7.3 ベースのNVDAのビルドが始まりました。 Windows の日本語環境では非 Unicode 環境の文字コードは現在もShift JIS です。一方で Python 2 版実装では非 Unicode の Win32 API が多用されていたため、NVDAには日本語環境でのみ起きた不具合が多くあり、長い時間をかけて調査や修正を行ってきました。これらの多くはPython 3 移行で解決するものの、日本語環境でのみ発生する新たな不具合もあり、 Python 3 版NVDA をリリースする 2019年末までに解決すべき課題です。NVDA日本語チームとしてのこれらの活動についても、発表日現在の状況を報告したいと思います。