pinteraction フィジカルコンピューティングにおけるピンの抜き挿しによるインタラクション

概要

素子の抜き挿しは回路作成には必ず行う行為であり,センシングすれば様々なインタラクションが可能になるだろう.

そこで素子の抜き挿しをユーザ支援に有効活用する手法を提案する.

今回は,回路・プログラムを作成開始,修正,そしてパラメータの決定という3つのステップに対し,抜き挿しによってユーザ支援を行った.

frameborder="0" allowfullscreen>

抜き差しという行為

人の行動には何らかの理由があるが,それは物を抜き挿しする行為でも同じことがいえる.例えば,人がコンセントに挿すのはその時その機器を使いたいからである.イヤホンをパソコンに挿すのはその時音楽を聞きたいからである.

同じようなことがマイコンのピンに対してもいえる.例えば,ユーザがマイコンの10番ピンに対してLEDを挿せば,そのユーザはおそらく10番ピンを使用したいのだろう.今のプログラミングではその後で「10番ピンを使う」という宣言をする必要がある.しかしユーザにとっては10番ピンに素子を挿した時点で「10番ピンを使う」と宣言したにも等しく,これは二度手間となってしまう.

本稿では,抜き挿しをセンシングすることでそこから人間のやりたいことを推測するという,シンプルだが強力なアイデアによって解決を行う.

今回,ユーザの「ピンに挿す」という行為を「通電させる」という行動の理由だと捉える.そして「ピンから抜く」という行為を「通電しない」という行動の理由だと捉える.これにより抜き挿しをオン・オフに対応付けることが可能になり,例示プログラミングのような提示が可能になる.

この抜き差しという行為をうまく使っている物もある.例えば,イヤホンがプラグから抜かれる理由はいくつか考えられる.音楽を聞くのをやめたのかもしれないし,誤って抜けてしまったのかもしれない.イヤホンでなくスピーカに切り替えたいのかもしれない.それらに対応するため,ある機器では音楽再生中にイヤホンが抜かれたら一時停止する処理をしている. この,ユーザの行動に対して尤もらしい挙動をすることが本稿の目的である.

システム

システム

システムはピンの抜き挿しを識別するためのインタフェースと,マイコンの挙動をブロックによってプログラミングするビジュアルプログラミング言語からなっている.プログラミングにはテキストベースのプログラミング言語ではなく,ビジュアルプログラミング言語を使用する.これは,ピンに対してインタラクションした際の反映結果が,プログラムが視覚化されていることよりわかりやすいためである.

ビジュアルプログラミング環境のブロックには,入力と出力のコネクタがあり,入力(赤)は左端から,出力(青)は右端に統一されている.出力コネクタを他のブロックの入力コネクタにドラッグすることで,接続を行うことができる.現在使用できるのはボタンブロックと論理演算ブロック,そしてArduino ピンブロックである.ボタンブロックと論理演算ブロックは,画面左端のメニューからドラッグして好きな位置に配置可能である.ボタンブロックにはオン(5V)とオフ(0V)をクリックで切り替えることができる.論理演算ブロックは入力コネクタが2つ付いており,それらの論理演算の結果を出力コネクタに流す.例えばNOTオブジェクトは入力がオン(5V)の時にオフ(0V)を出力し,入力がオフ(0V)の時にオン(5V)を出力する.

回路制作支援

電子工作は基本的にはトライアンドエラーの繰り返しである.まず回路・プログラムを作成する.そしてミスがあるなら回路・プログラムを修正する.また,電子工作において難しいとされているのが詳細なパラメータの決定である[1].それぞれについて支援するため,以下の3つの機能を実装した.

ピンへの挿入によるブロック自動作成

これは,回路・プログラムを最初に作成する際の支援機能である.Arduinoのピンに対応するピンブロックは,抜き挿しインタフェースを操作することにより,プログラミング画面に自動的に配置される.例えば,抜き挿しインタフェースの1番右の穴に素子を挿入すると,1番右の穴に対応するブロックを自動的に生成する.これによってピン番号の概念を使用せずにピンの指定を行える.

ピンの抜き挿しによるブロック間対応関係の修正

これは,回路・プログラムを修正する際の支援機能である.ユーザはピンの抜き挿しを通して入力と出力の関係をシステムに教えこむことが可能である.例えば,ピンへの入力がオンの時に素子を抜き,ピンへの入力がオフの時にLEDを挿す,という行為を繰り返す.するとシステムはユーザが「オン(5V)の時はLEDを消して(0V),オフ(0V)の時はLEDを点けたい(5V)」のだと解釈して,自動で信号を反転させるNOTオブジェクトを挿入する.つまり既に入力に接続されているピンに対して抜き挿し例示をすると,入力信号との関係を検出し直し,システムが自動で論理演算ブロックを挟む.

ピンの抜き挿しによるオン・オフ周期の提示

これは,回路・プログラムのパラメータを設定する際の支援機能である.ユーザはピンの抜き挿しを周期的に繰り返すことで全く同じ周期をシステムに覚えさせることができる.例えば,ピンにLEDの抜き挿しを繰り返すことで,ユーザの抜き挿しのリズムをシステムが真似てLEDを点滅させる.厳密にはこれは例示機能ではないが,ここでは「抜き挿しによる例示」という表現を使う.この機能はビジュアルプログラミング言語上の右上のボタン(Recordボタン)で機能の有効・無効を切り替えることが可能である.

製作例

frameborder="0" allowfullscreen>

ABPro2015での発表

frameborder="0" allowfullscreen>

研究に出来なかった理由

単に抜き挿しだけでは新規性が得られなかった,他のインタラクションでは有用性が得られなさそうだった,という理由がまずひとつ.

そして「なぜモジュール化されたものではなく素子単体を使うのか」に答えられなかったからです.電子回路自動認識ってやっぱむずくて電気流して得られる情報だけでは素子の特定とか難しい.かと言って素子にマーカー貼るのはめんどくさく,それだったらモジュール化したもので良いのでは,となる.「素子だけで行いたい」ってニーズがどの層にあるかってむずいよなあ,となって思考停止しました.(素子が挿されているかどうかを認識することは行われていたり[2])

参考文献

  1. Hartmann, B., Abdulla, L. et al. Authoring sensor-based interactions by demonstration with direct manipulation and pattern recognition. In Proc. of CHI '07, pp.145-154, 2007.
  2. Drew, D., Newcomb, L. J. et al. The Toastboard: Ubiquitous Instrumentation and Automated Checking of Breadboarded Circuits. In Proc. of UIST '16, 2016.