はじめに不自由をもつ人のためのマウス作りと題していますが、自由とは不自由とは何でしょう、できるとかできないは何でしょう。随意とか不随意とは何でしょう。今回はこれらについて考えてみましょう。スイッチ操作やコミュニケーションエイドに関係する集まりが各地で色々あります。そこに参加すると様々なお話を聞くことができます。(まれにとても少ないこともありますがそれはさておき)そこではうまくいかないとかできないとかの話がとても多いのは、ある意味では当然のことでしょう。参加者のみなさんはそこに困っているから参加しているのですから。残念ながらうまくいかない理由や原因や解決方法について話が進むことはあまりありません。(正しくはほとんどありません)うまくいかない事例紹介にも意味も価値もないわけではありませんが、こればかりが続くとなんとも変なこころもちになります。気を取り直してまた別の会に参加するとなぜか前の会と同じようなことになったりしてまた変なこころもちになります。この問題を多くの人々に知らせることにばかり力が入っているように思えてきます。環境なんとかや自然なんとかもそうですが、大勢集まってもできるものはできるし、できないものはできません。大切なのは原理を理解し原因を明らかにして、根拠のある対策を行うことだと思うのですがどうでしょうか。そこでスイッチ操作がうまくいかない場面について、その理由を考え対策することについて考えてみることにします。AutoHotkey前回はモーメンタリ動作とオルタネイト動作について説明しました。その際に使用したサンプルのコードをもう一度見てみよう。Rこのサンプルは、上矢印キーを押せばマウスカーソルが上方向に動き、再度上矢印キーを押せば停止するものです。して250ミリ秒間停止させています。実ははじめはこの行はありませんでした。試運転の結果この行を追加することにしました。このサンプルは、上矢印キーを押したとき3行目から動作が開始し、行に記された仕事を次々とこなしていきます。Loopで8-12行を繰り返します。9行目でマウスカーソルを動かしています。10行目で上矢印キーが押されたかどうかを判定しもし押されていたら、11行目でLoopから抜けてマウスの動きも止まります。はじめ6行目がない状態で試してみました。ところが上矢印キーを押してもマウスカーソルは動きません。何回やってもおなじです。プログラム自体は途中で止まっていません。そのうち一回やることにほんの少し動いていることに気がつきました。私が上矢印キーをポンと押す瞬間に2行、3行と進んで指が離れるまえに10行目で「押している」と判断し停止していたのです。その間に9行目で2dotだけ動いていたのです。5行目に注目ください。このトラブルの原因は、「押したあと指を離すのが遅い」ことでした。そこでまず十分神経を集中して可能な限り押し時間を短くするようにやってみました。うまくいくのは10回に1回くらいでそれもかなり疲れますので実用的ではありません。原因がはっきりしていますので対策も明確です。6行目と10行目の間の時間を長くすればいいのです。これにはSleepコマンドを使います。ミリ秒単位で停止を指定できます。100ミリ秒で試したところ随分改善しました。250ミリ秒にするとかなりのんびり押しても問題ありませんでした。このような操作でミリ秒単位の無駄時間が生じてもとくに問題はありません。入れることにしました。これで改善はできました。もつ人のスイッチ操作での苦労を私も体験することができました。『そうかこんなきもちなのか』。この分野に関心のある方々には一度体験されることをお勧めします。不自由のあるなしで、やれ指の動きが早いとか遅いとか言っても、コンピュータの速さと比べれば大した違いはありません。このように仕組みがわかって原因もはっきりすれば、効果的な対策を立てることも、手直しして使うことも可能になります。これは遅れ時間がほぼ均一なときに限ります。なかには時々スイッチをおしたまま数秒以上固まってしまう人もいます。このような場合はスイッチから手が離せるようになるまで動作を止めて待っているようにするのがいいでしょう。前回のサンプルに改良を加えています。つぎにこのループに入ります。ダウンロードしてください。ダブルクリックで動作を開始します。部分)のHのアイコンを右クリックしてEXITしてください。スイッチ操作が機敏に押したり離したりが難しい場合の対策はこのようにすればよろしいでしょう。手が震える場合このほかの不都合として、震えのためスイッチ操作の際に、オンオフオンオフ。繰り返してしまうことがあります。こちらはチャタリングと言います。これは健常者でも発生します。このためスイッチを設計する際は、バネ、接点、摩擦粘性など考慮してチャタリングを防止するようにします。これは普通の人の場合が対象です。不自由を持つ人の場合は震えの種類も大きさも幅広いですから、スイッチなどのものを作るよりも、ソフトで対応するのが手間もお金も節約できるだろうと思います。震えがある場合の基本的対応として、一定時間オンが続いたらオンと同じく一定時間オフが続いたらオフと判断しそれ以外は無視するのが基本です。使用する人の震えに合わせて調整するといいでしょう。今回は起動すると即プログラムが動き始めます。一秒間押し続けるとマウスカーソル動き始め、一秒間押し続けると止まります。全体が大きなループになっています。上矢印キーを押していると、Countが1増えます。離していると0になります。Countが10で(1秒経過)停止しているとき(A=0)速度(XとY)に値を入れ、Aを1に変更します。Countが10で(1秒経過)動いているとき(A=1)速度(XとY)にゼロを入れ、Aを0に変更します。そのときのXとYの値でマウスカーソルを動かします。100ミリ秒停止します。このループ10回で1秒になります。ダウンロードしてください。ダブルクリックで動作を開始します。部分)のHのアイコンを右クリックしてEXITしてください。まとめ今回はAutoHotkeyを使って不自由をもつ人がスイッチ操作で遭遇しがちな問題とその対策について考えてみました。AutoHotkeyはもともとWindowsでホットキー(ショートカットキーともいいます)を作るためのツールですが、使いようによっては不自由をもつ人がパソコンを操作する際の支援にもずいぶん役に立つようです。手作りスイッチと違い、作っては壊しの試行錯誤もやりやすいことがわかりました。このようなツールをもっと広い用途につかっていきたいと思います。AutoHotkeyには機器操作支援やコミュニケーション支援にあたる支援者の学習教材としての使い道もあるようです。手軽ですし無料ですし、事例もサンプルもたくさんあります。実行ファイルを作って配布しやすい特徴もあります。ライセンスですのでまあ気楽に自由に何でもできます。今回の試みでも、スイッチ操作で不自由をもつ人の困難は程度の違いはあるものの普通の人々も同様にもっていることがわかりました。普通の人たちへの対策は身の回りにあふれていますが、少数者への配慮は大量生産では省略されています。その部分を作って付け足せば問題の解決に近づくわけです。最後にこのようなソフトを自作する意味について考えて見ましょう。Windowsにはテンキーで操作するマウスが『簡単操作』にすでに存在します。それでも同じ目的で似たものを作るのはなぜでしょう。プログラムを作るには中の仕組みをひとつひとつ理解しなくてはなりません。反対に考えるとプログラムを作ると中の仕組みがわかってきます。作ったプログラムがうまく動くように改善できるのも中の仕組みがわかっているからです。うまくいかない人がうまくできるように改善するときも中の仕組みがわかっていないとうまく修正できません。それどころか中の仕組みがわからないとその人がどうしてうまくいかないかも容易に理解できないでしょう。このような理由から自分でプログラムを作ろうとしているのです。同じ理由でこのページではどう作ったのか中身をお見せしています。市販品を次々と試しているがどれもうまくいかないという人がいます。竹取物語ではどの縁談もうまくいきませんでしたがそれには原因がありました。原因を無視していたらどれだけやってもまとまる話もまとまらないのは無理もありませんね。←もくじはこちらです。