見出し画像

iDeiceの入出力系を検証するプラットフォームとしての『たっち&びーぷ』

この記事は2018年2月に執筆した記事の復刻版です。
一部、内容が古い部分があります。

iOSアプリ『たっち&びーぷ』を題材に執筆していますが、ここの内容のほとんどはより高機能な『ぼいすぶっく』に引き継がれています。
2023年現在、『たっち&びーぷ』は最低限のメンテナンスのみ継続しています。

たっち&びーぷでは、「アクセシビリティの設定」画面で、操作方法(入力方法)とフィードバック方法(出力方法)を選択することができます。

たっち&びーぷという名前の通り、タッチ操作(入力)でビープ音の再生(出力)がアプリの基本です。
こちら、VOCAアプリとしてリリースしました。

しかし実は、開発を始めたきっかけは、VOCAとは少し違ったものでした。

支援機器としても定着したiDevice。これは見方を変えれば、各種センサーをはじめとした電子部品の塊です。
iDeviceが、特にハードウェアとして、どのような能力を持っているのかを確かめたい。

ここにモチベーションがありました。

使用するセンサーを切り替えたり、感度を調整したり・・・というのがソフトウェア(アプリ)でやっていること。
実際にアプリに組み込んでみて、コーディングにかかる手間や、ユーザーからみた操作感を確かめてみたかったのです。

この記事では、自分用の備忘録も兼ねて、たっち&びーぷを通して見た、iOS周りの技術群についてまとめてみます。


<入力系>

タッチ操作

センサー名
静電容量センサー

Framework
UIResponder

イベント処理
画面に指を触れたとき(touchesBegan)
画面から指を離したとき(touchesEnded)
画面上で指を動かしたとき(touchesMoved)

こだわりポイント
なんと言っても、画面上で指を動かしたとき、の実装です。

iDeviceの静電容量センサーは非常に優秀です。Arduinoの電子工作で静電容量センサーを自作したこともありますが、感度の良さや安定感は比べものになりません。
iDeviceの静電容量センサーはどれだけ微細な動きを感知できるか、というのが検証のポイントでした。
感度を上げると、指で画面に圧を加えただけでも変化を感知します。
感圧センサーではないので実際は「圧」に反応しているわけではないのですが、画面を押し込んだ際の微妙な静電容量の変化も感じ取ることができるようです。

ティルト(モーション)操作

センサー名
モーションセンサー(加速度センサー、ジャイロセンサー)

Framework
CoreMotion

イベント処理
端末の姿勢角に応じた処理

こだわりポイント
モーション操作に近いものとして比較的普及しているのは、シェイクジェスチャーかと思います。
有名なところでは、LINEの「ふるふる」でしょうか。
他にも、テキスト入力しているときに端末を揺らすと、取り消し操作が可能です。

このシェイクジェスチャー(FrameworkはUIResponder)は実装するのがとても簡単です。
ですが、細かい調整は一切できません。

たっち&びーぷでは、ユーザーに合わせた動きを取り込めるようにしました。
姿勢角の生データ(※注)を、オリジナルのアルゴリズムで処理しています。
モーションコントロールはゲームでの活用が多い気がします。
ゲームの中の決まった動きをユーザーに求めます。
しかし、ユーザーに合わせた動きをアプリに覚えさせる・・・というのは他に無い機能だと思います。

※注
CoreMotionで得られるデータは、Appleが扱いやすく加工した形で提供してくれているようです。正確には生データとは言えないかもしれません。

もしもし操作

センサー名
マイクロフォン(音センサー)

Framework
CoreAudio

イベント処理
マイク入力のボリュームに応じた処理

こだわりポイント
こちらはあまりこだわれていません。
たっち&びーぷでは単に音のボリュームだけを処理しています。

iOSのオーディオ周りは非常に多くの機能が用意されています。
ノイズを考慮した処理を加えれば、精度を向上できるかもしれません。
iOSの能力としては、それも可能なはずです。
音声認識を加味した処理すら、日曜プログラマーでも全くの不可能ではありません。

ただ、たっち&びーぷではそこまでできていません。

スイッチ操作

センサー名
キー入力(センサーではありません)

Framework
UIKeyCommand

イベント処理
キーボード入力に対する処理

こだわりポイント
一般にはアプリ内でキーボードショートカットを実装する機能を応用しています。
一度実装方法をおさえてしまえばなんてことはないのですが、最初はどうコードを書けば良いのか、かなり情報を探したものです。

あっきーの教材工房製アプリとしてはもうデフォルトに近い機能。
一時期は他のアプリと足並みを揃える形で"1","3","space","enter"の4つのキーに対応させていましたが、現在では英・数全てのキーと"enter","space"に対応しています。特にパフォーマンスに影響がなさそうなので、増やしました。

最大の難点は、キーを離したタイミングを得られないこと。
これが得られれば、もっと柔軟なスイッチ入力アセスメント用アプリを作れるのですが・・・。
iOSでは技術的に難しそうなのです。


<出力系>

音声フィードバック

Framework
CoreAudio

こだわりポイント
iOSで録音操作を実現するには、何通りかの方法があります。
簡単な方法もありますが、これで録音すると教室で使うには音量が小さい、という実用上の大きな欠点がありました。

たっち&びーぷでは、オーディオ処理(CoreAudio)について研究を重ね、この問題をクリアするためのオプションをつけることができました。
単純に音を大きくするとノイズも拡大されてしまいます。
音量の問題と併せて、ノイズを減らす処理についても研究し、実装しました。

明るさフィードバック

Framework
UIScreen

こだわりポイント
機能を実装することは簡単です。
一般的にも、ポイントカードになるアプリで、バーコード画面を表示すると一時的に画面が明るくなる、というものを近年見かけるようになりました。

ただ、フィードバックとして明るさを切り替えるアプリはあまり無いように思います。

色の変化よりも、明るさの変化の方が刺激として大きく、変化に気付きやすいようです。
必須とは思いませんが、選択肢としてはあって損のない機能ではないでしょうか。

MaBeeeフィードバック

Framework
MaBeee SDK

こだわりポイント
MaBeeeそのものは使わせて頂いているだけなので「こだわり」と書くのはおこがましい感じですね。
たっち&びーぷのような、多様なセンサーをちょびっとずつ使うアプリはあまりないように思いますが、一つ、とても似てると感じたのがノバルスさんの公式アプリ、『MaBeeeコントロール』です。
ただ、アプリの構成としては、『たっち&びーぷ』は特別支援教育の現場にいる人間が作っている分、一回の短い入力操作でしばらく出力できるようにするなど、支援技術としての応用が利きやすくなっています。



まとめ

iDeviceには他にもまだまだ多くの機能、多くのセンサーが搭載されています。

近接センサー、感圧センサー(3D Touch)、深度センサー(Face ID/True Depth)など。

カメラもセンサーですね。
表情を認識するFrameworkも公開されているので、笑顔検出、まばたき検出もできるようです。
理屈としては、笑顔スイッチ、まばたきスイッチもできるということ。
しかし、精度は・・・?反応速度は・・・?
そこは、やはり試さないと分かりません。

出力についても、他の選択肢があります。

ガラケー時代からおなじみの振動フィードバック、バイブレーション。
同じ振動でも、技術は完全に新世代、Apple Watchなどでおなじみの触覚フィードバック、タプティックエンジン。

バイブレーションはたっち&びーぷで試しましたが、思ったほど面白くなく、公開アプリには実装しませんでした。

やはり、触覚フィードバックとしてはタプティックエンジンを使いたい。
iPod TouchやiPadなど、廉価版の端末にも搭載されるようになれば・・・と淡い期待を持ち続けています。

いろいろと関心はありますが、高機能で先進的な技術は高価なiPhoneにしか積まれない、という現実もあります。

しかし、そこで MaBeeeを使うという選択肢も出てきたわけです。

市販の振動枕にMaBeeeを使えば、少し違いますが触覚フィードバックが可能です。
扇風機を使えば風でのフィードバックもできます。

BluetoothやWi-Fiを通して他の物と繋がってしまえば、入力、出力の可能性は一気に開けます。
そう考えると、IoTって凄いですね。


以上、iDeviceの入出力装置について、だらだらと書いてきました。
だから何?の世界ですね。
テクノロジー・ウォッチングということで。

ここまでお付き合い、ありがとうございました。

教育・福祉分野のアプリケーション開発をしています💻