視力は、ほとんどのプログラマが当たり前のように感じる感覚の1つです。ほとんどのプログラマーはコンピュータモニターを見るのに何時間も費やすでしょう(特に彼らが ゾーンの中にいる時 )。しかし私は盲目的なプログラマー(現在Googleで働いているT.V. Ramanのような)がいることを私は知っています。
あなたが盲目の人だった(またはゆっくり盲目になった)場合、プログラミングを支援するために開発環境をどのように設定しますか。
(1つの回答につき1つの提案をお願いします。この質問の目的は、優れたアイデアをトップにすることです。さらに、スクリーンリーダーはその優れたアイデアを先に読むことができます。)
私は完全に盲目の大学生で、いくつかのプログラミングインターンシップを受けたので、私の答えはこれらに基づいています。私は自分のオペレーティングシステムとしてwindows xpを使い、 Jaws を使って合成音声で画面に表示されるものを読みます。 Javaプログラミングのために私はEclipseを使います、それはそれがアクセス可能な十分に特色にされたIDEだからです。
私の経験では、原則としてSWTをGUIツールキットとして使用するJavaプログラムは、Swingを使用するプログラムよりもアクセスしやすいので、私はNetBeansから遠ざかっています。どんな.NETプログラミングでも、私はインターンシップで使用していた標準バージョンであり、Jawやフォームデザイナなどをよりアクセシブルにするために開発されたスクリプトセットを使用して非常にアクセスしやすいので、visual studio 2005を使用します。
CおよびC++プログラミングの場合は、必要に応じて、コンパイラとしてgccを使用し、エディタとしてemacsまたはvimを使用してcygwinを使用します。私のインターンシップの多くはZ/OSのプログラミングを含んでいました。メインフレームのUSSサブシステムにアクセスするにはCygwinを介したrloginセッションを使用し、メインフレームのISPF部分にアクセスするには3270エミュレータとしてC3270を使用しました。
私は通常合成音声に頼っていますが、点字ディスプレイを持っていますか。私は通常スピーチのほうが速いのですが、句読点が重要で複雑になるような状況では点字ディスプレイを使います。この例としては、ネストされた括弧がたくさんある文や句読点が非常に重要なJCLがあります。
Emacspeakをcygwin http://emacspeak.sourceforge.net で遊んでいます。それはやや応答しないように見えますが、私はまだどの構成オプションも調べていません。
私は盲目で、Windows、Mac、Linux、そしてDOS上で、C/C++、Python、Java、C#そしてさまざまなより小さな言語から約13年間プログラミングを続けてきました。最初の質問は環境の設定に関するものでしたが、私は盲人がどのようにコンピュータを使用するのかを検討することが最も良い答えだと思います。
T. V. RamanやEmacspeak環境などの会話環境を他の回答で使用している人もいます。これまでのより一般的な解決策は、バックグラウンドでOSの動作を監視し、合成音声または物理的な点字ディスプレイ(通常は一度に20から80文字のどこかに表示)を介してユーザーに警告するスクリーンリーダーです。これは、視覚障害者がアクセス可能なアプリケーションを使用できることを意味します。
そのため、私は最近Visual Studio 2008を個人的に使用し、ほとんど変更を加えずに実行します。私はこれが気を散らすものであると感じているので、私がタイプしたときにエラーを表示するような特定の機能をオフにします。 Microsoftに入社する前は、開発はすべてメモ帳のような標準のテキストエディタで行われていました。
インデントをアナウンスするようにスクリーンリーダーを設定することは可能です。私は個人的にはこれを使用しません。VisualStudioがこれを処理し、C#が中括弧を使用するからです。しかし、これは空白の問題があるPythonのような言語では非常に重要です。最後に、Emacspeakは構文のさまざまな部分(キーワード、コメント、識別子など)を示すためにさまざまな音声/ピッチを使用します。
私は盲目で、ここ12年ほどプログラマになっています。現在はシニアアーキテクトで、Sapient Corporation(Webベースとシッククライアントベースの両方のエンタープライズソリューションを作成しているケンブリッジベースのコンサルティング会社)で働いています。私は何台かのスクリーンリーダーを使っていますが、ほとんどの場合、Windows用のJawsとNVDAを使います。
私の環境としては、主にマイクロソフトのプラットフォームとビジュアルスタジオに取り組んできました。私はMS Sqlエンタープライズスタジオやその他のDBアクセス、ネットワーク監視などのためのツールも使用しています。emacspeakを使って時間をかけようとしましたが、私の仕事は主にMSプラットフォームに基づいていたので、あまり時間はかかりませんでした。私はまた、Linux上でC++に取り組んで数年を費やしました - ほとんどすべてのコーディングのためにWindowsでメモ帳またはビジュアルスタジオを使用して、次にLinux環境でファイルを共有するためにsambaを使用しました。実験的なもののためにもborland Cを使いました。最近pythonを使って遊んでいます。他の人が上で指摘したように、それは入れ子のメカニズムとしてインデントを使って書かれているので盲目のユーザーにとっては特に不親切です。そうは言っても、最も人気のあるオープンソースのスクリーンリーダーであるNVDAは完全にpythonを使用して書かれており、そのプロジェクトのいくつかのコミット担当者はそれ自体盲目です。建築家として私がよく聞かれる特に興味深い質問は、私がダイアグラムをどう扱うかです - UMLやvisio、そして合理的なバラなど。Visioはおそらく最もアクセスしやすいダイアグラム作成ツールです。合理的なバラの図を読むためのjawsスクリプトを書くことができました。私はUML 2.0ダイアグラムにアクセスするためにドイツの大学によって開発されたT-dub(盲人のためのテクニカルダイアグラム理解)と呼ばれるツールを使いました。モデル駆動開発を行うためにマジックドローと呼ばれるJavaベースの醜いツールを使用し、androMDAプロジェクトのコミッターであり、UMLモデルから.NETコードジェネレータを開発するのを助けました。
一般的に、私は自分の強みに取り組むことができるチーム環境で最も成功していると思います。たとえば、ダイアグラムはデザインの伝達や文書化に非常に役立ちますが、実際のデザインプロセスには多くの思考とブレーンストーミングが含まれ、デザインが考え出されたときそれから絵。私はこれが純粋な相互依存であると考えながら、人々は上記を誤って独立性や能力の欠如であると誤解しています。 - デザインを文書化するために私が彼に頼っているのであれば、そうしてください。私が直面しているハードルのほとんどは、ツールベースのアクセス不能です。たとえば、すべてのOracle製品でアクセス性が年々低下していて(残念)、チーム環境では基本的にこれらのスクリーンリーダーやカスタムスクリプトに加えて、追加の防御層があります。
私は盲目の開発者であり、私はWindows、GNU Linux、MacOS Xの下で働いています。それぞれのプラットフォームは盲目のユーザーのために異なるワークフローを持っています。これは盲目の開発者が使用するスクリーンリーダーによって異なります。開発ツールは盲目の開発者にとって完全にアクセス可能なわけではありません。すべてのIDEでコードを入力してコンパイル関数を使用できますが、Interface Builder、XGladeなどの設計ツールを使用してインタフェースを設計する必要がある場合は、多くの問題があります。 Borland Delphiを使って開発していたときは、Buttonなどのコントロールを追加し、オブジェクトインスペクタウィンドウを使用してコントロールの各視覚属性を変更できました。多くのIDEはオブジェクトのインスペクタウィンドウを使用してビジュアルおよび非ビジュアル属性を変更しますが、新しいコントロールを追加する方法はパレットからキャンバスにコントロールをドラッグアンドドロップすることであるため、ブラインド開発者にとっての問題は新しいコントロールの追加です。 Visual Studio 200xでは別の方法を使用してこれを実行していますが、IDEのインターフェイスは新しいバージョンごとに変更されます。これは大きな問題です。非標準アプリケーション。盲目の開発者はスクリーンリーダーでVisual Studio 2008を使用できますが、このIDEの新しいバージョンが表示されたら、このバージョンのIDE用の新しいバージョンのスクリプトを待つ必要があります。 Interface Builder付きのXcodeには、タスクをドラッグアンドドロップする方法がまだありません。私は何度もAppleにそれを頼んだが、彼らは他のことで働いている。私はApp Storeで3つのアプリ(Accessible minesweeper、入手可能なfruitmachine、Programar a ciegas RSS)を公開しましたが、すべてのインターフェースをコードで設計する必要がありました。大変な作業ですが、各コントロールのすべての機能を管理できます。 Eclipseにはアクセス可能なコードエディタがありますが、デバッグコンソール、設計用のプラグイン、またはドキュメンテーションエリアなどの他の開発ツールが、盲目のユーザのための支援ツールに問題をもたらします。
ドキュメンテーションは盲目の開発者にとっても問題です。多くのサンプルやデモンストレーションでは説明を示すために画像を使用しています(写真のように環境設定を設定してください)。
私は問題が盲目ではないと思います。問題は、アクセシビリティが最終ソフトウェアに影響を与えると考えているが、開発ソフトウェアには影響を与えていないと、企業や開発グループが考えていることです。彼らは、盲目のユーザーはクライアントになるべきだと思いますが、盲目のユーザーは開発仲間にはなれません。
盲目協会は製品やサービスのアクセシビリティを求めますが、盲目の開発者を忘れていました。盲人は弁護士、ジャーナリスト、教師として働くことができますが、盲目の開発者は盲人にとっても奇妙な概念です。私の盲目の何人かの友人が私の仕事を理解できないので、何度も私は一人でいると感じます。
あなたは私のブログでこの記事、スペイン語でこの問題について私の意見を読むことができます http://www.programaraciegas.net/2010/11/05/la-accesibilidad-en-crisis -para-los-desarrolladores-ciegos / Webページに翻訳ツールがあります。すみません、私はそれを翻訳しませんでした。
Emacsには、盲目のユーザーがテキストファイルを操作できるようにするための多数の拡張機能があります。あなたはそのトピックについて専門家に相談しなければならないでしょうが、emacsにはテキスト読み上げ機能があります。そしておそらくもっと。
さらに、BLinuxがあります。
盲人のためのLinux非常に長い間行ってきました。私は10年以上、非常に成熟していると思います。
「盲目」はさまざまな条件であることを覚えておいてください - 本当に大きなモニターを見たり、拡大の助けを借りて合法的に盲目の人もいれば、まったく視力のない人もいます。私は大学の同級生が本を拡大するための特別な装置と、彼女がスクリーンの一部を拡大するのに使用できる特別なソフトウェアを持っていたのを覚えています。彼女の視力は悪化し、完全に去ることになっていたので、彼女は大学を卒業するために一生懸命働いていました。
プログラミングには、さまざまなニーズもあります。多くのコードを使いこなすのが得意な人もいれば、全体像とアーキテクチャをよく見るのが得意な人もいます。私は、画面のインターフェースに課せられた困難を考えると、盲目があなたの全体像をつかむ能力を高めるかもしれないと思います….
Hanselmanは最近、盲目の開発者と 本当に興味深いPodcastを開催しました 。
私は視覚障害者向けのBBSを運営する視覚障害者向けデトロイト社会で3年間働いており、多くの盲人ユーザーと協力してニーズをより良く満たす方法を学びました。当時利用可能であったソフトウェア製品。少なくとも、私は点字を同じ状況に巻き込まれた場合に対するヘッジとして読むことを学びました!
盲目のコンピューターユーザーとプログラマーの大半は、何らかのスクリーンリーダーを使用しています。 Jaws は特に人気があります。幸いなことに、最近のほとんどの主要なアプリケーションは、何らかの形で障害のあるアクセスを提供しています。おしゃべりを減らすために、環境を少し調整する必要がある場合があります。 Visual StudioでIntellisenseを無効にすることを検討してください。
点字ディスプレイ はあまり一般的ではなく、比較的高価であり、40または80列のテキストを表示でき、正確な配置/句読点が重要な場合に使用できます。スクリーンリーダーは句読点をガタガタ音を立てるように構成できますが、多くの人が気を散らしていると感じており、多くの場合、スクリーンリーダーを使用して自分の道を感じやすくなっています。ディスプレイを駆動するようにジョーを構成できるため、アクセシビリティアプリケーションを操作する必要がありません。
また、多くの法的に盲目のユーザーは、まだ多少の視力が残っています。高コントラストの背景と拡大機能を使用すると、これらのユーザーの多くに役立ちます。
WindowsでToggleKeysを使用すると、モーダルの「caps lock」、「num lock」、「scroll lock」などのキーのいずれかを誤ってタップしたときに聞こえます。
スクリーンリーダーを使用し、Haskellのレイアウトルールを使用せずに明示的にプログラミングし、代わりにかなり非慣用的であるがサポートされている{;}
を使用することを選択する少なくとも1人のHaskellプログラマーを知っています。彼は、Haskellのレイアウトルールに準拠した正確なインデントを理解するよりも、スクリーンリーダーに句読点を読み取らせます。同じメモで、私は、いくつかの盲目のプログラマーから、いつPythonを書かなければならないかについて不平を言うのを聞きました。
最終的に、あなたは自分の強みでプレーすることを学びます。
ソースを思い出すことはできませんが、可聴構文の「カラーリング」の形式について聞いたことがあるので、文字列の割り当てではなく、
fooはquoteに等しいこれは文字列quoteです
要素の分離をより明確にするために、弦の部分は異なるピッチまたは声で読まれるでしょう。
私は中国の北京の大学院生です。私はコンピュータサイエンスを専攻しており、仕事の多くはプログラミングです。私は視力が弱いので、フォントを画面上ではっきりと見るために拡大ツールを使う必要があります。私はWindows上でMicrosoftのmgnifyツールを使い、Linux上であればcompizのmagnifyプラグインを使います。私は通常、元のフォントサイズの3倍に拡大するようにツールを設定しました。私にとってはツールは大丈夫ですが、主な問題はスピードです。カーソルを見ているテキストに追従させるにはマウスを動かさなければなりません。編集時またはコーディング時のマウスの連続的な動きしかし、編集ソフトウェアやIDEがサポートしていない可能性があるため、必ずしもうまくいくとは限りません。 Linux上の拡大ツールは使いにくいです。 KDEに付属のKMagは私の目を不快にするひどいリフレッシュレートを持っています、私が今使っているcompizの拡大プラグはOKですが、オートフォーカスの機能はありません(フォーカスオートフォロー)。特にiPadの9.7インチスクリーンでは、iOSは私にとってはフルスクリーンの拡大で非常に完璧な解決策を提供する。オートフォーカスは必要ありません。コード化や他の編集作業にはほとんど使用しないからです。 Androidは、シェイクフィードバックのように、非常に小さなユーザー補助機能を提供していますが、これは私には役に立ちません。 iOSには全画面拡大のような高度な機能は言うまでもなく、Androidには優れた拡大ツールはありません。私はQtを勉強していました。Linux上でも、Android上でも便利な拡大ツールを作りたいです。しかし、進歩はほとんどありません。
まずは、Blinuxプロジェクトから始めましょう。
そのプロジェクトはEmacspeak(テキスト読み上げのある編集者)を取得する方法を説明していて、他にもたくさんのリソースがあります。
私は一人の視力の人と仕事をしていましたが、モニターを使うことを妨げました - 彼らはスクリーンリーダーソフトウェアでうまくいって、テキストベースのアプリケーションとシェルを使うことに多くの時間を費やしました。
ウィキペディアのスクリーンリーダーパッケージのリストは、もう1つの出発点です: http://en.wikipedia.org/wiki/List_of_screen_readers
私が大学院に通っていたとき、私たちは盲目の私たちの研究チームのメンバーを持っていました。彼は少し年上だった、おそらく40代半ばだった。彼は、モールス符号でスクリーンの内容を出力するために彼が彼の最初のコンピュータ(テキスト - スピーチが一般的になるよりずっと前にあった)をどのようにプログラムしたかについて私達に言いました。明白な鶏と卵の問題を克服するために、彼はそれが彼にそれを読み返すことができるように彼が十分うまく働いているまで毎回完全に最初から完全にコードを書き直さなければなりませんでした。
現在彼はtext-to-speechを使用していますが、デバッグループを最小限に抑えるために、実際にコードを書く前に非常に徹底的にコードを計画しています。
彼はまた、目が見えないにもかかわらず、他の賢明な発表者と同じくらいよくフォーマットされたPowerPointプレゼンテーションを提供するのが得意でした。
このブログ投稿には、Visual Studioチームが自社の製品をアクセシブルにする方法についての情報がいくつかあります。
Visual Studio Coreチームのアクセシビリティラボツアーアクティビティ
多くのプログラマはEmacspeakを使います。
ニュージーランドに戻って、私は 黄斑変性症 を患っている人を知っていました。彼は非常に才能のあるプログラマーであり、Wordの形状を認識することで作業できるのでDelphiを使い始めました。彼はWebサイトを持っていますが、黄斑変性についてはまったく言及していないようですので、私は彼に名前を付けません。
私は盲目です、そして数ヶ月から私はSODBEANS(TTSサポートを追加するSAPPYと名付けられたプラグインを持つバージョンのNetBeans)と共にVINUX(Ubuntuに基づくlinuxディストリビューション)を使用しています。この解決方法は非常にうまくいきますが、FireFoxで多くのページを起動するにはWin XPとNVDAを起動することをお勧めします。
多くの人が指摘しているように、emacspeakはそこにいる多くの古いハッカーのための永続的なソリューションクロスプラットフォームでした。 LinuxとMacをそのまま使用できるので、Windowsに依存しないプロジェクトを開発するための私の推奨する手段になりました。
視覚的なものとは対照的に、聴覚的なものを通して構文を実際に理解するという問題に関して、私は同じ競技場ではないにしても接近させるための様々な技術が存在することを発見した。
一例として、聴覚アイコンは、口頭での記述子のために適所に立つことができる。あなたは、行がどれだけインデントされているかについてトーンをつけることができます。トーンが長いほど、インデントは深くなります。トーンは音声合成と並行して再生できるため、情報は同じ時間枠で伝達され、基本的なものの通信をシリアル化することはありません。
点字は、正確かつ正確な行の構文をユーザーにデコードすることができます。これは、日常生活で点字を使う人にとってもっと便利なものです。最大の利点は表示内容へのランダムアクセスです。リフレッシュ可能ユニットは、通常、各文字セルの上にそのセルにカーソルを置くことができるルーターキーを持っています。矢印キーO(n) opとO(1)アクセスをいじる必要はありません。
聴覚の次元(ピッチ、レート、ボリューム、屈折、豊かさ、ストレスなど)は概念(キーワード、クラス、変数、エラーなど)を伝えることができます。たとえば、コメントは単調な変曲で読むことができます。
Emacsやその他のより少ない範囲のエディタ(Visual Studio)では、コーダはプログラムを同義的に熟読することができます(次のブロック、ブロックの折り畳み、下への移動、defへのジャンプ、解析ツリーの上への移動など)。これを行っているプロジェクト全体の構造の「全体像」をすぐに把握することができます。 Cedetのような拡張機能を使えば、VS/Eclipse/etcクロスプラットフォームの長所とテキストエディタを利用することができます。
おそらく今後も続くかもしれませんが、一言で言えば、私たちの何人かが業界、風変わり、または私たちの地下室でハッキングしている理由の根拠です。
サザンイリノイ大学エドワーズビル校とワシントン州立大学校の学生のグループが、視覚障害者のためのプログラミング言語に取り組んでいます。
harald van Breederode は、盲目の有名なオランダのOracle DBAのエキスパート、トレーナー、プレゼンターです。彼のブログには、視覚障害者のための役に立つヒントがいくつかあります。
世界では点字キーボードは何だろう?
点字作家のようなものがありますが、あなたは決してコンピューターの入力装置としてそれを使うことはないでしょう。
単に点字の記号が付いたキーボードについて話しているのであれば、これも非常に悪い考えです。あなたはタイピング中に到達するために到達するためにもっとたくさんのキーを持つことになるでしょう、そしてそれはまだ遅くなるでしょう。
タッチタイピングは視覚的なスキルではなく_ではなく、目の不自由な人と同様に視覚的なスキルでも可能です。
NVDAは勝つための良いオープンソースのスクリーンリーダーです。
私はこれがペアプログラミング原理を使った極端なプログラミングでうまくいくと思う。あなたが盲目の人々のためにソフトウェアを作っているならば、それを作るほうが文字通りビジネス要件と連絡を取る誰かより良いので、私はそれがまったく遠くに取り込まれているとは思わない。
コードを書くことに関しては、何らかのフィードバックがない限り、私は人が構文に苦労するかもしれないと思います。ただし、音声によるフィードバックもある程度役に立ちます。
盲目の人々を助けたり、部分的に盲目の人々を助けるための音声フィードバックやブレイリーキーボードを含むさまざまなツールがあります。 http://www.rnib.org.uk/Pages/Home.aspx は、これらの問題に関する助けとアドバイスのための良いサイトです。
私がSam Hartmanに会ったとき、彼は2000年以来有名なDebian開発者であり、そして盲目です。 this のインタビューで、彼はLinuxユーザーのアクセシビリティについて話しています。彼はDebianとgnome-orcaをスクリーンリーダーとして使っています。Gnomeと一緒に動作し、「Iceweasel/FirefoxとLibreofficeを話すのに比較的良い仕事をしています」.
特にプログラミングについて話すと、彼は言います:
[gnome-orca]はgnome-terminalを話すことができますが、ターミナルプログラムを話すのが得意ではありません。だから、私はEmacsパッケージを使ってEmacsを走らせている。その中で、私はEmacs端末エミュレータを実行し、そしてその中で、私はScreenを実行する傾向があります。さらに楽しいことに、私は内側の画面内でEmacsの追加のインスタンスを実行することがよくあります。
あなたがUSBポートに接続し、盲目の人がそれを聞く代わりにそれを読むことを可能にするあなたのコードの点字を示すためにそれ自身を変更する基本的に「ゴムのシート」であろう。