目が見えなくてもプログラミングできるよ

  • 520
    いいね
  • 0
    コメント
この記事は最終更新日から1年以上が経過しています。

はじめに

こんにちは!@moutendです私は視覚障害があるので、普段は画面を見ずにMacのVoiceOverというスクリーンリーダーの音声のフィードバックを頼りにプログラミングをしています。ところで最近@ssotoyaさんの記事にて音声を頼りにプログラミングする様子が公開されました。スクリーンリーダーの音声を聞いたことがありますか? - ラック公式ブログ - 株式会社ラック@ssotoyaさんは全盲のため全く目が見えないのですが、超高速でコーディングをされています。控えめに言って最高にロックです。私も負けていられません。ということで、この記事に触発されて、私も画面を全く見ずに音声のフィードバックのみを頼りにプログラミングしている様子をキャプチャしましたので公開してみます。具体的には、QuickTimeのスクリーンキャプチャ機能を使って画面を撮影しつつ、音声はsoundflowerという仮想サウンドデバイスのmulti-output-deviceを追加して、録音を行いました。それでは御覧ください。

追記

リンクや誤字修正の編集リクエストありがとうございます :)

音声だけを頼りにプログラミングしてみた

音声だけを頼りにプログラミングしてみた - YouTube

https://www.youtube.com/watch?v=sAi_Yf4GOS4

環境はMac OSX 10.11.3 / ruby 2.2.4です。今回はSlackのAPIを利用して、チャットの履歴を表示するslack-lessという単純なCLIツールをRubyで作ってみました。また、作成したものは https://github.com/moutend/blind-coding-example に公開してあります。ちなみに 映像にはAPIのトークンが写っているはずですが、撮影が終わった直後に破棄したので問題ありません。もし、なにか写っていてはいけないものを発見された方はtwitterなどで私に連絡していただけると幸いです。

補足

私は冒頭でスクリーンリーダーを利用してプログラミングをしている、と説明しましたが、実際にスクリーンリーダーを使ったのはGUIのアプリを操作する必要があった場面、今回はSafariでSlackの設定ページを開いてトークンを発行するという操作をした所だけです。では、どのようにプログラミングをしているのかというとvimでテキストの編集を行い、sayコマンドで音声読み上げを行っています。sayコマンドはMacに内蔵された音声合成エンジンを扱うためのコマンドです。スクリーンリーダーのVoiceOverも同じ音声合成エンジンを利用していますが、sayはそのエンジンを扱うためのコマンドラインインターフェースという位置づけです。Macを使っている方は、ターミナルを開いて以下のコマンドを試しに入力してみてください。引数として渡されたテキスト、もしくは標準入力から読み込んだテキストを読み上げます。

% say こんにちは
# または
% echo Hello | say

いかがでしょうか。このコマンドを利用して、編集中の行を読み上げる関数を.vimrcに追加しています。さらに、その関数を呼び出すキーマップを作成して、読み上げを行っているというわけです。.vimrchttps://github.com/moutend/dotfiles においてありますので、よろしければ御覧ください。

課題

スクリーンリーダーの音声を聞いたことがありますか? - ラック公式ブログ - 株式会社ラックの後半でもすでに指摘されているのですが、自分の感知しないところで勝手にコードが書き換わるため残念ながらコードの自動補完機能が全く使えないというのが課題です。ただし、補完の種類によっては実現できそうなものもあります。たとえば、メソッド名を補完するときにタブキーで選択した候補を音声で読み上げるという機能です。vim pluginは自由に編集できるので、補完を行うpluginのコードを追跡して、補完を行うタイミングで音声読み上げを行うためのフックを追加できるはずですが、今のところ私の、技術不足で実現するに至っていません。また、仮にそれが実現できたとしても、補完の候補を1つ1つ読み上げる必要があるので、それが便利かというと微妙なところではあります。目が見えていればメソッド名一覧から候補を選択するのは一瞬でできますが、音声の場合は、すべて聞いて確かめる必要があります。利便性を追求するのであれば、GUIならぬAUIを考えなければいけないかもしれません。

また、これは個人的な課題ですが、もうひとつの課題としては、vim以外のエディタが使えない、というものがあります。先程からvimを連呼していますが、なぜ私がvimを使っているのかというと、モードの概念があるからです。愛着はありますが、vim以外をみとめないとか、そういう原理主義的な思想は持ちあわせていません。もし目が見えていたらXcodeやVisualStudio、InteliJなどのIDEを使います。vimの場合、コードを書き終えたらインサートモードからノーマルモードへ抜けて、書いたコードを読み上げる、という流れが実現できるわけです。目を閉じてコードを書いていただければ実感できると思うのですが、コードを書いている最中は音声読み上げをしないほうが内容に集中できます。そして、書き終えたタイミングでtypoがないか調べるために音声読み上げをします。wbなどでカーソル移動は高速にできますし、typoの位置までカーソルを移動させるのも簡単です。いわば、ノーマルモードが音声読み上げモードになっているわけです。

おわりに

もし、この記事を読まれている方で画面を見ずに、コーディングをされている方がいましたら、ぜひその情報を発信してみませんか?また、知り合いに目の見えないエンジニアがいるという方は、情報を発信するように働きかけていただけないでしょうか。

これは私の個人的な意見ですが、視覚障害のためにエンジニアとしての能力が阻害されることがあってはならないと考えています。また、視覚障害があってもコーディングしている人という存在を当たり前のものにしたいと私は考えています。

参考

How can you program if you're blind_ - Stack Overflow