視覚障害者とPython
PyCon JP 2025 座長 @nishimotz が個人として公開する日報の第6回です。
私は自己紹介で「Pythonで開発された視覚障害者支援技術 NVDA の日本語対応」と語ることが多いです。 座長の私にとって、これがPythonコミュニティ活動の起点です。
最近はこの活動のために、若いユーザーやエンジニアの人たちから学ぶことを心がけています。
こうした背景で交流しているエンジニアの皆さんに、広島で開催している勉強会「すごい広島 with Python」のゲストとして、リモートで喋ってもらう場を作りました。
2024年12月26日 すごい広島 with Python #93 忘年会
会場とオンラインで合計20人くらいが集まりました。
視覚障害を持つ3名のPythonista
ACT Laboratory (アクセシブル・ツールズ・ラボラトリー)は視覚障害者にも使いやすいツールを開発する団体です。 2020年のコロナ禍で学校などが閉鎖され、新たなチャレンジの場を求めて、活動が始まりました。 現在6名のメンバー(高校生1人、大学生1人、社会人4人)で構成され、これまでに、Windowsソフト12本、NVDAアドオン6本、Webツール1本など、多数のソフトウェアを公開しています。
今回ご登壇いただいたのは以下の3名です。
- Kさん: 弱視のエンジニア。普段はPHPでサーバーサイドの開発を行う傍ら、ACT Laboratory の代表として活動をされています。
- Nさん: 全盲のエンジニア。GoやRuby on Railsなどを用いたWebアプリケーション開発に携わっています。ゲームなどの個人開発者として、Pythonも利用しています。
- Fさん: 弱視のエンジニア。普段は学校図書館向けのクラウドシステム開発に携わっており、バックエンドでPythonを利用しています。
それぞれの開発環境 - 音声と点字
まずゲストの皆さんの開発環境について紹介がありました。
- スクリーンリーダーの活用: 画面の内容を音声で読み上げるソフトウェア「NVDA」や「JAWS」が必須のツール。Fさんは、主にNVDAを利用しています。
- 点字ディスプレイの重要性: Fさんは、点字ディスプレイNext Touch 40を愛用。コードのスペルチェックや括弧の対応確認など、視覚的に確認できない情報を点字で把握するために欠かせないツールです。
- エディタはVS Code: 使用しているエディタは3名ともVisual Studio Code。スクリーンリーダーに最適化され、読み上げやエラー通知などの効果音が強化されたモードを備えています。晴眼者のエンジニアと情報や環境を共有しながら開発できます。自由な配色設定の機能は視覚障害者だけでなく、複数の作業環境をわかりやすく区別する場合にも役立ちます。
Windowsデスクトップアプリ開発
ACT Laboratory が多く開発しているのは、Windowsのデスクトップアプリケーションです。Nさんからは、あえてPython 32bit版を選択している理由について説明がありました。
- 必要な情報にアクセス: デスクトップアプリケーションを開発する理由は、スクリーンリーダーとの相性が良く、必要な情報だけを効率的に取得できるため。Windows標準のキーバインディングが利用でき、一貫した操作性が確保できる。
- あえてPython 32bitを選ぶ: 視覚障害者が使いたい音声関連ライブラリは32bit版でしか提供されていないものが多く、それらとの連携のために32bit版Pythonが必要となる。
- wxPythonの活用: GUIライブラリとして wxPython を利用。Python が標準で備えている Tkinter はアクセシビリティに問題がある。
しかしWindows 32bit版に対応したPythonパッケージがだんだん提供されなくなっています。将来的には64bit版への移行も視野に入れているものの、解決すべき課題は多い。
NVDAアドオン開発 - Pythonによる自由なカスタマイズ
Kさんからは、オープンソースのスクリーンリーダー「NVDA」のアドオン開発について紹介がありました。
- Pythonによる拡張性: NVDAはPythonで記述されており、アドオンによって機能追加や既存機能の改修が自由に行えます。
- モンキーパッチの活用: Pythonの特性を活かし、既存の関数を置き換えたり、処理を追加したりする「モンキーパッチ」という手法が頻繁に用いられます。
- ユニークなアドオン事例: 高速音声合成アドオンや、英語をカタカナで読み上げるアドオン、専門用語の読み上げ修正アドオンなど、ユニークなアドオン事例が紹介されました。
- GPLv2ライセンスとセキュリティ: アドオン開発における課題として、NVDA本体がGPLv2ライセンスであること、そしてアドオンのセキュリティ対策の必要性が挙げられました。
モンキーパッチのコード例
original = speech.processText
def processText(locale, text, **kwargs):
text = original(locale, text, **kwargs)
return some_process(text)
speech.processText = processText
質疑応答とLT会
参加者の質問もたくさん出ました。32bitサポートの将来性や、Windows ARM版との互換性、Tkinter の実装など、活発な質疑応答が繰り広げられました。
また勉強会の後半ではLT会を行い、予定した時間を超えてしまいましたが、参加者の皆さんとの交流を深めることができました。
まとめ
今回のゲストトークで、視覚障害を持つエンジニアの方々に、様々な工夫や技術を駆使してPythonと深く関わっていることを伝えていただきました。
同時に、技術的な制約や課題も浮き彫りとなりました。オープンソースやコミュニティの力が大切です。
PyCon JP 2025 は、多様な人々が Python の知見を共有し、共に成長できる場となることを目指しています。
その実現に向けて、これからも広島のコミュニティを盛り上げつつ、主催メンバーの学びの場も作っていきたいです。
ACT Laboratory の皆さん、貴重なお話をありがとうございました!
Empowering Visually Impaired Engineers with Python: Insights from ACT Laboratory
This article highlights efforts to integrate and empower visually impaired engineers within the Python community, based on insights from a talk hosted during a study group in Hiroshima. The event showcased the inspiring work of ACT Laboratory, a group dedicated to developing accessible tools. Three Pythonistas with visual impairments, each with unique professional expertise, shared their experiences with assistive technologies and development environments, offering valuable perspectives on inclusivity in tech. Their tools of choice included screen readers like NVDA, braille displays for tactile feedback, and universally accessible IDEs such as Visual Studio Code, underscoring the synergy between accessibility and Python’s versatility.
The session explored ACT Laboratory’s development practices, focusing on Windows desktop applications and NVDA add-ons, which demonstrate Python’s capacity for customization and accessibility. A key discussion point was the deliberate use of Python’s 32-bit version to maintain compatibility with legacy audio libraries essential for visually impaired users. The presenters also shared the challenges of transitioning to 64-bit environments and maintaining accessibility in graphical interfaces, for which wxPython was preferred over other libraries. This emphasis on adaptability reflects the lab’s commitment to addressing evolving needs in accessibility technology.
Through Q&A, participants delved into topics such as license constraints, security in NVDA add-ons, and future-proofing accessibility tools. The event concluded with reflections on the collaborative potential of open-source communities and the ongoing role of Python in empowering diverse groups.
PyCon JP 2025 reaffirms its dedication to fostering an inclusive and innovative space where all participants can thrive, guided by the inspiration and contributions of groups like ACT Laboratory.