Upload
takuya-nishimoto
View
1.144
Download
1
Embed Size (px)
Citation preview
協賛日本 PostgreSQL ユーザ会
後援一般社団法人 PyCon JP
協力オライリー・ジャパン
技術評論社
ご案内
• インターネット配信• ハッシュタグ #pyconhiro• ステッカー• 飲食禁止• 講演者• LT 希望者• 懇親会参加者
PyCon とは
3
• Python Conference–世界 30 カ国で開催– PyCon US は 2000 人以上参加
• PyCon JP–mini, 2011, 2012, 2014, 2015 と開催– 2013 は PyCon Asia Pacific
• 地域 PyCon– PyCon mini Sapporo 2015 年 9 月
2011 年東京 PyCon mini 開催
• NVDA 日本語化プロジェクトとして講演
4
併設イベント in PyCon JP 2012
5
PyCon mini Hiroshima の理想
• 誰でも参加して楽しんでもらえる• 合理的配慮• NVDA ユーザ会広島–音声認識を使うテキストと点字の配信–位置情報を使う移動支援
• NVDA の実演– SlideShare サイト
6
アクセシビリティを支える Python
2015-11-22PyCon mini Hiroshima 2015
Takuya Nishimoto@24motz
スクリーンリーダー NVDA• NonVisual Desktop Access–無料、オープンソース (GPL v2)–本家 = NV Access オーストラリア–全盲の技術者2人が 2006 年から開発
• Python–主要部分の実装–アドオン
• 3 ヶ月ごとのリリース
NVDA 日本語版
• 日本語音声合成エンジン– Open JTalk ( C 言語)を DLL 化– export されている関数を ctypes でラップ
• 日本語点訳エンジン–MeCab を ctypes でラップ–形態素からの変換規則
• 点字ディスプレイドライバ–ベンダーの DLL を ctypes でラップ
May
-14
Jun-
14
Jul-1
4
Aug-
14
Sep-
14
Oct
-14
Nov-
14
Dec-
14
Jan-
15
Feb-
15M
ar-1
5
Apr-1
5
May
-15
Jun-
15
Jul-1
5
Aug-
15
Sep-
15
Oct
-150
50
100
150
200
250
300
350
400
450
2014.1jp 2014.2jp 2014.3jp 2014.4jp 2015.1jp 2015.2jp 2015.3jp 2015.4jp
Python のバグを踏む
• ログオン名が特定の文字を含むときにNVDA インストーラーが起動しない
• 報告者の名前のアカウントで再現• 架空の名前「川山」で再現–川 0x5ddd–山 0x5c71
• C:\DOCUME~1\ 川山 \LOCALS~1\Temp\nsd7.tmp\…
2012-10-18 from Mick• Actually, Jamie and I have spent the afternoon
investigating this further, and we have found the exact issue and come up with a solution. I shall commit the fix tomorrow.
• in short, there is a rather bad bug in Python's tempfile.gettempdir when dealing with multi-byte filenames.
• I was able to reproduce your issue exactly.
Python 2.7.10 (default, May 23 2015, 09:40:32) [MSC v.1500 32 bit (Intel)] on win32Type "help", "copyright", "credits" or "license" for more information.
>>> from os.path import normcase
>>> p = ur'C:\DOCUME~1\川山 '>>> print pC:\DOCUME~1\川山>>> print normcase(p.encode('cp932')).decode('cp932')c:\docume~1\川屍
>>> print ["0x%02x %s" % (ord(c), c) for c in u'山 '.encode('cp932')]['0x8e \x8e', '0x52 R']
>>> print ["0x%02x %s" % (ord(c), c) for c in normcase(u'山 '.encode('cp932'))]['0x8e \x8e', '0x72 r']
mbcs が normcase されてた
• PythonIssue:14255–あるはずの %home% が見つからない–当時すでに報告されているバグだった
• NVDA– tempfile.gettempdir にモンキーパッチ–本家 NVDA issue 2729
• Python 2.7.6 で直ったという話
wxPython• GUI ツールキット• NVDA のコアは wx のイベントループ• wxWidgets はアクセシブル–Windows MSAA などをラップしている–フレームワーク選びは重要
• NVDA コミュニティに sighted がいない–画面を見る人だけの不具合が頻発
これから
• 日本語版と本家版の統合• グローバル、日本語チーム、広島地域• www.nvda.jp–クラッシュレポートでも歓迎–Web に関しては本家にコミットしたい–Web 標準のサポート• IE, Firefox, Chrome, Edge• Gmail や Google Docs が使える
アクセシビリティ
• 技術ロードマップの真ん中–標準化–マシンリーダブル、自動化
• エコシステムの端っこ–非営利–ボランティア
• 手軽に参加、勉強になる、活躍できる