指から文字がどんどん出てくる:1日目

ちょっと具体化してみます。

デバイスの形態

さて、とりあえず外せない条件を並べてみます。

  1. 指輪型デバイス
  2. 指先で触ることで文字列をやりとりする

そして触る先ですが、見せかけは指先を通じて文字列が移動しているが実際はwifiを使っているとか、そういうのは避けて、できるだけ操作の感覚と実装を近づけたい、という目標があります。

前回のエントリではアドレスの入力を例に挙げましたが、往々にしてそういう場面ではネットワークは使えなかったりもします。だから、文字入力はキーボードと同じレイヤー、つまりUSB HIDとして動作するのが好ましい。

そして、そもそも文字列がどこから来るかについてですが、とりあえずクリップボードか何かと同期するのがいいんじゃないかな?と思います。つまり、

  1. USBキーボードのフリをして、指輪から受け取った文字列を伝えるデバイス
  2. どこかのクリップボードの内容を表示し、触るとその文字列を指輪に伝えるデバイス

のふたつです。1と2はひとつの装置としてまとめることができますし、とりあえずUSBで繋げる板状のデバイスという事にしておきましょう。

操作モデル

さて、このあたりで気になるのが「触れる」という一種類の動作にどういう意味を与えるのか、ということです。いろいろ考えた結果、「スロット」という概念を導入することにしました。

  • スロットは常にひとつの文字列を保存する
    • 文字列は空でも良い
  • スロットはある一定の空間を占有する
  • 指輪はひとつのスロットを持ち、装着した指がそのスロットの占有する空間となる
  • 板状デバイスは一般に複数のスロットを持ち、数cmほどのマークで示された領域を占有する
  • ふたつのスロットが占有する空間が接触することで、互いの文字列を交換する

わりとわかりやすいモデルだと思います。各スロットは自分の持っている文字列を何らかの方法で示してもいいし、示さなくてもいい。が、少なくとも電力の豊富なUSB接続側のデバイスについては表示してほしいところです。本当は指輪の方もこんなかんじになって欲しいのですが、これは難しそうですし。

通信

指の中だけを通る信号を使った通信路というのが理想的なのですが、これは次の二つに分解することもできます。

  1. ある程度局所的な通信路
  2. ふたつのスロット間での共有情報

このふたつのバランスによって、いろいろな方法を分類できます。1が広い時空間を占めるほど、2で必要な情報が増えます。

例えば、ひっそりwifiを使って〜、というのは1として数十mの空間内の電波、2としてネットワークのパスワード+アカウントidのように分解できます。これはかなり2に依存する方法です。

逆に、何らかの方法で通信路を完全に一本の指で閉じることができれば、2は全く不要です。

そして、1がそれほど局所的でなく2の情報も不完全である場合、それは干渉や情報漏洩というモデルの綻びとして表れます。

通信の実装

まず理想的な1だけ使う方法を考えてみます。これには、指の振動を用いる、電界通信、近赤外窓を用いた光通信、などが考えられます。・・・どれも原理的には無理ではないような感じはします。が、そんなに簡単ではありませんでした。

これにはやはり指輪で使える電力の少なさがあります。

電界通信

ここ数年でわりとデモが出てきてますが(RedTactonとか)どう考えても実装が難しそうなので、ちょっと手抜きすることを考えました。つまり、よく静電容量式のタッチパネルがありますが、あんな感じで地面を介したカップリングが作れないかな、と。が、どうも指輪では面積が小さすぎるのか、信号がはっきりしないですし、そもそも計測がすごく難しい。何を測っているのかわからない、ということで没です。

振動通信

空気と人体の音響インピーダンスは4000倍ぐらい違うので、うまく整合してやれば閉じ込められるんじゃないか?と思い、成形の容易な圧電フィルムを使って見ましたが、もちろんキャパシタとしても動作するわけで、さっきと同じ理由で測定が困難。ということで没です。

近赤外窓を用いた光通信

実は人体は一部の赤外線をわりとよく透過し、さらに拡散もするので、それで数cmぐらいならぼやーっと伝わるんじゃないか、と思いかなり明るい赤外線LEDと前に作った赤外線カメラで拡散の様子を見てみたのですが、透過する分が煌煌としている一方、指先には光が見えず、こりゃだめだな〜という感じでした。

通信の実装(仕切り直し)

ちょっと妥協して、1を完全に局所化するのは諦めました。数十cmぐらい漏れるのはいいかな〜と。

1として

  1. 磁気結合(できれば共振)による通信
  2. 空気中光通信

2として

  1. タッチパネルによる接触時刻の検出 + 振動による接触検出
  2. 脈拍のタイミング情報共有

この辺はわりと良さそうだな〜という感じです。2はどちらも難しそうですが、別に完全でなくても干渉が起きる可能性があるだけで動くことは動きます。だから、とりあえずこの方針でいくことにします。