こちらで触れたように Multitouch 周りは Windows7 ベータの時と仕様が若干
変わっています。なかなか試せず時間がたってしまいました。
ベータの WM_TOUCH

Multitouch API には 2系統あります。WM_TOUCH と WM_GESTURE です。
WM_TOUCH は複数の点の座標をそのまま送ってくるメッセージ、WM_GESTURE は
ある程度の動作を判断したあとに送られてきます。
両者は共存できないので、あらかじめどちらを使うか切り替えておくことになります。

ベータの時は WM_TOUCHDOWN, WM_TOUCHUP, WM_TOUCHMOVE と 3種類
メッセージがありました。RC 以降は WM_TOUCH 一つにまとめられています。
WM_TOUCH 系は複数のタッチ点の座標を一度に送信してくるため、それぞれ個別に
DOWN/UP する可能性があります。受け取った構造体の TOUCHINPUT には個別に
UP/DOWN/MOVE フラグが立っているので情報としては十分です。
複数の点をまとめて WM_TOUCHDOWN/TOUCHUP/TOUCHMOVE とひとくくりに
なっていたのは GESTURE のような操作を想定していたからかもしれません。

少々不思議なのは個別の UP/DOWN/MOVE は本当に区別できるのかということ。
座標はその瞬間サンプリングされたタッチ点なので厳密には個々のポイントを区別
することができず、連続性を持った値になるとは限りません。
例えば移動中のマルチタッチ点が増えたとして、どの点が新規にタッチされたものか
区別しなければならないということです。
サンプリングレートが十分速くて移動が限られている UI 操作ならそれほど問題
ないのかもしれません。
WM_TOUCH のイベントでは Windows 側で同一点の処理が行われており、
TOUCHINPUT の dwID に識別番号が入っています。
dwID が同じものを見ていくと DOWN ~ MOVE ~ UP の流れを見ることが
できるわけです。

lparam がハンドルなので、GetTouchInputInfo() で詳細を受け取ります。
これもベータ時の HANDLE から HTOUCHINPUT に変更されているようです。

void WM_Touch( UINT mes, WPARAM wparam, LPARAM lparam )
{
    int inputs= LOWORD( wparam );
    TOUCHINPUT  tbuf[ 32 ]; // inputs
    HTOUCHINPUT	hinput= reinterpret_cast( lparam );
    if( GetTouchInputInfo( hinput, inputs, tbuf, sizeof(TOUCHINPUT) ) ){
        TOUCHINPUT*  tp= tbuf;
        for( int i= 0 ; i< inputs && i < 32 ; i++, tp++ ){
            ~
	    tp->dwID // 識別
	    tp->x, tp->y // 座標
	    tp->dwFlags // UP/DOWN/MOVE
	}
    }
    CloseTouchInputHandle( hinput );
}

実際の 2点タッチだとこんな感じです。

0:(34054,41033) ID=3 flag=3a mask=4 ex=0 cx=4881 cy=5874 DOWN INRANGE PRIMARY NOCOALESCE 

0:(34054,41033) ID=3 flag=39 mask=4 ex=0 cx=4881 cy=5874 MVOE INRANGE PRIMARY NOCOALESCE 
1:(46230,31629) ID=4 flag=2a mask=4 ex=0 cx=5162 cy=5057 DOWN INRANGE NOCOALESCE 

0:(34007,40957) ID=3 flag=19 mask=4 ex=0 cx=5179 cy=5057 MVOE INRANGE PRIMARY 
1:(46224,31614) ID=4 flag=09 mask=4 ex=0 cx=4974 cy=5874 MVOE INRANGE 

0:(33966,40880) ID=3 flag=39 mask=4 ex=0 cx=5121 cy=5061 MVOE INRANGE PRIMARY NOCOALESCE 
1:(46212,31600) ID=4 flag=29 mask=4 ex=0 cx=4951 cy=5877 MVOE INRANGE NOCOALESCE 

0:(33796,40627) ID=3 flag=39 mask=4 ex=0 cx=5121 cy=5061 MVOE INRANGE PRIMARY NOCOALESCE 
1:(46330,31582) ID=4 flag=29 mask=4 ex=0 cx=4951 cy=5877 MVOE INRANGE NOCOALESCE 

0:(33632,40378) ID=3 flag=39 mask=4 ex=0 cx=4916 cy=5068 MVOE INRANGE PRIMARY NOCOALESCE 
1:(46447,31563) ID=4 flag=29 mask=4 ex=0 cx=4904 cy=5870 MVOE INRANGE NOCOALESCE 

0:(33082,39298) ID=3 flag=39 mask=4 ex=0 cx=4916 cy=5068 MVOE INRANGE PRIMARY NOCOALESCE 
1:(46757,31680) ID=4 flag=29 mask=4 ex=0 cx=4904 cy=5870 MVOE INRANGE NOCOALESCE 

0:(32531,38217) ID=3 flag=19 mask=4 ex=0 cx=3779 cy=5108 MVOE INRANGE PRIMARY 
1:(47074,31801) ID=4 flag=09 mask=4 ex=0 cx=4464 cy=5870 MVOE INRANGE 

0:(32531,38217) ID=3 flag=34 mask=4 ex=0 cx=3779 cy=5108 UP PRIMARY NOCOALESCE 
1:(47074,31801) ID=4 flag=29 mask=4 ex=0 cx=4464 cy=5870 MVOE INRANGE NOCOALESCE 

0:(47074,31801) ID=4 flag=24 mask=4 ex=0 cx=4464 cy=5870 UP NOCOALESCE 

座標値をピクセルに変換するには TOUCH_COORD_TO_PIXEL()。

HP TouchSmart IQ800 を使っていますが、たまに multi touch が無効になっている
ことがあります。何らかの更新のタイミングで、別のドライバに上書きされて
しまっているようです。ドライバを入れ直すと再び使えるようになります。

nextwindow Windows 7 Touch Screen Driver


関連エントリ
Windows SDK for Windows7 RC と Multitouch / Direct3D 11
Windows7 Multitouch API その(2) WM_GESTURE 系
Windows7 Multitouch API


キーボードに結構こだわっている人はいます。
プログラマだと少々高くても良いものを探したり、好みのものを選んで使ってる
方も多いことと思います。
全く同じように、緻密ながら素早い動作が必要になるデザイナーの作業でも
マウスの性能差は作業効率に大きく影響があるのだそうでです。

知り合いのデザイナーにきいたところ、仕事がらマウス選びにはいつも
苦労しているのだそうです。

マウスの場合、性能の良い高級タイプはゲーマー向けとして売られているものが
ほとんどです。
センサーの性能や確実性、反応速度などはやはりこれらゲーマー向けマウスが
一番だとのこと。

ただどうしてもサイズが大きいものが多くて、手になじまないのが悩みだと
訴えていました。
ゲームプレイ時と作業時では、実際にマウスを動かす稼働範囲やマウス自体の
持ち方が違っているのかもしれません。
例えば手首を固定して指先でマウスを持つような持ち方の場合、
マウスが大きすぎると手のひらが密着してあまり動かせられなくなります。

持ち方だけでなく、純粋に手の大きさが違う場合もあります。
マウスのサイズにはもっとバリエーションが多くても良いのではないでしょうか。

日本のブランドである DHARMAPOINT のゲーマーマウスは、比較的小振りで
よく使っているそうです。

なんだかんだでいろいろ試しているうちに、DHARAMAPOINT ブランドの製品は
マウス全世代、マウスパッド数タイプ、交換ソール、キーボードなど
ヘッドセット以外は全部買いそろえてしまったらしい。

DHARMAPOINT

ゲーマーマウス並の高性能で、さらに作業用で持ち方にあわせて
大きさを各種選べるような、そんなマウスは無いでしょうか。
毎日ほとんどの時間をマウスとともに費やしているわけです。
ストレスを抱えながら作業するよりは少々高くても良いマウスを選びます。


モニターレポートで少々当てが外れたのは、2回目くらいまでには SDK など
何らかの開発情報が出てるだろうと予想していたからです。

最初の使用感などから徐々に詳細に踏み込んだり、実際に応用を試したりと
そんな流れを想定していました。まだ動きがないので、もしかしたら Windows7
のリリース待ちかもしれません。
開発関連の情報があれば、この興味深いデバイスで何が出来て何が出来ないのか
明らかになってくると思います。


●アプリの追加

売りである光センサー液晶パッドには最初からいくつかのアプリケーションが
組み込まれています。手書き文字対応辞書やゲーム、電卓や手描きツールまで
一通りそろっています。

ここにはさらに専用のアプリを追加することができます。

まだ SDK などの配布が行われておらず、対応ソフトを自由に作れる状態では
ないのですがメーカーのサイトで新しいソフトが公開されていました。

PC・モバイル ユーザーズ倶楽部

上記サイトの「ダウンロードサービス」に「タッチソフトダウンロード」という
アイコンがあります。

 PC-NJ70/NJ80用 タッチソフト
   ゲームソフト「イルミスキャン」

早速試してみました。


●ゲーム内容

インストール手順は一般的な Windows ソフトと同じです。
ダウンロードした IllumiScanInstaller.exe を実行します。

完了するとタッチパッド部のホームメニュー「エンターテインメント」の中に
アイコンが追加されており、イルミスキャンを遊べるようになっています。

Windows7 RC に入れましたが問題なく組み込み&実行できました。

ゲーム内容は、表示された丸いマーカーを指で隠していくというもの。
一度に複数のマーカーが現れるので、そのすべてを指で覆います。
マルチタッチでないとできない操作だし、いくつでも検出可能な光センサーだから
こそ実現できる内容といえます。

ゲーム内容の方は反応がいまいちなのか自分の操作が下手なのか、音で反応は
するけどうまく進めなくて時間切れです。遊び方のヘルプを何度も見返したものの
どうもうまく遊べませんでした。


でもこのアプリ、真に見るべきところはそこではないようです。
ゲーム中は余裕がなくて気がつかないのですが、上のメイン画面の方に
タッチパッドに触れている指の影がうっすらと映っています。

mebius pc-nj70a
↑三本指

mebius pc-nj70a
↑タッチペンを置いてみたところ

おそらくタッチパッド部分で取り込んでいる映像だと思われます。
タッチペンなど、きちんと形が取れているのがおもしろいところです。

今までのアプリでは、一般的なタッチパッドとしての使い方からあまり大きく
外れたものではありませんでした。
イルミスキャンでは本当に画像として実データを見ることが出来るので、
初めて光センサーらしさを実感できた気がします。


●インストールまで

イルミスキャンでゲームより手間取ったのはダウンロードまでの道のりです。
無料ダウンロードだけどユーザーズ倶楽部への会員登録が必要です。

ユーザー登録には名前住所など個人プロフィールが必要になるので書き込みます。
その途中で所有している SHARP 製品の登録番号を入れます。
製品をユーザー登録すると得られる番号らしく、仕方なく先にこちらも登録。

するとまた同じように名前住所などを書き込む欄があって製造番号も入れます。
これで登録番号が得られたので、あらためて ユーザーズ倶楽部の ID を取得します。

ちょっと試したいだけなのに 2度手間のような登録作業や、何度も書かされる
個人情報など、義務感がなかったら途中であきらめていたかもしれません。
本体を所有していれば勝手につながってダウンロードできるなど、何らかの
工夫が欲しいと感じました。
もっと簡単になればダウンロード数も増えるのではないでしょうか。


●タッチアプリ

比較的気に入っているのは手書き文字認識です。
ペン操作は指より操作しやすく候補も即座に出てきて気持ちよく使えます。

逆にいつも残念に思うのはメビウスの全画面乗っ取ってしまうアプリケーションです。
ゲームもタッチパッド部だけで遊べるものが多いのに、関係ないはずの上の
ウィンドウズ画面も奪われます。

マウスモードとタッチメニューはいつでもワンボタンで切り替えできます。
電卓等は他の作業中でもいつでも呼び出せるのが良いところ。
ゲームも同じように呼び出せたら便利だと思うのです。

たとえばブラウザを開いた状態で、ファイルのダウンロード中だけちょっとだけ
パズルを進めておきたい、と思ってもできない。
ゲーム中マウスモードには切り替えられても、上のフルスクリーン画面が残るので
結局アプリを終了しなければならないからです。

PC に統合された光センサー液晶パッドは、1つのことに専念するような使い方より
気軽に呼び出せる方があっていると思います。

イルミスキャンでは、タッチパッドに乗せた物体の形を判別できることがわかりました。
タッチパッドとして無理に使うより、光センサーにしかできないことを考えた方が
良さそうですね。


関連エントリ
メビウス PC-NJ70A (7) 一ヶ月後
メビウス PC-NJ70A (6) ユーザーインターフェース
メビウス PC-NJ70A (5) サブモニタ
メビウス PC-NJ70A (4) 使用感
メビウス PC-NJ70A (3) Windows7 RC を入れる
メビウス PC-NJ70A (2) 初期セットアップとメモリ増設
メビウス PC-NJ70A 液晶センサータッチパッド
メビウス PC-NJ70A 画面解像度とタッチ


モニター開始から一ヶ月。とはいえ SDK 等の動きもないので、特に何も変わって
ないというのが正直なところです。
HDD なのでアプリケーションのインストールで困ることもなく、容量も書き込み
速度も気にせずに使っています。


主な用途は 32bit OS での動作テストや、テキストメモ取り PC として。
基本的にはこれまで使ってきたノート PC と全く一緒です。
売りの光センサー液晶パッドはあまり活用できていないので、SDK が公開されるか
追加アプリが登場するまで眠らせておくかもしれません。
サイズも重さも決して悪いスペックではないのですが、今だと他にもっと小型軽量な
良い選択肢があるだけに悩ましいところです。


● Windows7 RC

Windows7 RC で使用しています。詳しいインストール手順はこちら。
メビウス PC-NJ70A (3) Windows7 RC を入れる

Windows7 RC で液晶パッドへのアプリの追加
メビウス PC-NJ70A (5) サブモニタ

Windows7 なのは主に動作テストのためと、標準の Home Basic ではリモートデスク
トップなどいくつか機能制限が生じるためです。


個人的に行っている設定

ネットブック系 PC は横長のワイド画面が多く、縦方向は狭くなっています。
WindowsVista までは、設定次第でタスクバーの上にアプリケーションウィンドウを
重ねることが出来ました。
Windows7 はできないので、タスクバーを画面の左端に配置しています。
アプリケーションで上下幅をめいっぱいまで使えるように。
タスクバーをわずかに横にのばすと、時刻だけでなく日付も表示できます。

pc-nj70a
pc-nj70a


●マウス

Bluetooth の外付けマウスを使用しています。

SONY VGP-BMS33

光センサー液晶パッドはマウスモードで表示を消す設定にしていますが、
何らかのタイミングで液晶パッドのバックライトが点灯してしまいます。

 SHARP 液晶パッド設定→マウスモード時に、液晶パッドの表示を消す

サスペンドから復帰したタイミングや、省電力設定でメインディスプレイの電源が
切れた場合、その復帰と同時に液晶パッドも点灯してしまうようです。
真ん中ボタンでいったんパッドのモードを切り替えるとバックライトが消えます。

持ち歩いてて一度、光センサー液晶パッドの反応が悪くほとんど操作出来なくなる
ことがありました。室内だったので、汗などによるパッド部の汚れが原因では
ないかと思います。外付けのマウスは必須となりました。


●アドオンジャケット

アドオンジャケットは天板の保護にもなるし、好きなメモとか挟んでおけるので
おもしろい仕組みです。欠点は 100g ほど重くなること。
持ち歩く用途を考えた場合どちらを優先するか悩みます。
結局軽量化を考えて取り外しました。


●通信

外では UQ WiMAX を使用しています。
こちらはモニターではなく購入品。
まだエリアが限られていますが、一度つながれば外でも高速な通信が可能です。
7月から正式サービスが始まることもあり、以前使えなかった場所でもつながるように
なってきました。


●インストールソフトウエアメモ

インストールしている主なソフト。
Google Chrome
ATOK2008
DirectX SDK March 2009
UD01SS Utility
Vim 7.2


関連エントリ
メビウス PC-NJ70A (6) ユーザーインターフェース
メビウス PC-NJ70A (5) サブモニタ
メビウス PC-NJ70A (4) 使用感
メビウス PC-NJ70A (3) Windows7 RC を入れる
メビウス PC-NJ70A (2) 初期セットアップとメモリ増設
メビウス PC-NJ70A 液晶センサータッチパッド
メビウス PC-NJ70A 画面解像度とタッチ
Windows7 beta で UQ WiMAX


タッチパッドとか操作性とか、多少使いづらかったとしてもそれはそれ。
「これでしかできないことがある」のは確かです。
光センサー液晶パッドはまだまだ初物。

今後ソフトウエアの改良によって他の PC と同じ操作性へ近づけていくことは可能でしょう。
でもメビウス PC-NJ70A と同じことが他のパソコンで出来るわけではありません。

これまで書いてきたように、それ以外を割り切ったのが一番の特徴です。
普段持ち歩いているとついついただの普通のパソコンとして見てしまいがち。
あらためて光センサー液晶パッドについて考えてみます。


使っていてあまりわくわくしないのはなぜでしょう。
多少欠点があっても、何かしら今後良くなりそうな可能性の片鱗が見えれば
たいした問題ではないはずです。

従来のパソコンにない新しい部分が、現状だと他のデバイスでも出来ることの
寄せ集めでしかなく、しかも劣っていることが原因かもしれません。

他に良いものがあることをユーザーは知ってますし、自分も常時 iPod touch を
持ち歩いています。
ようするに今の光センサー液晶パッドでは、マルチタッチを使った操作は全く快適では
ないということ。

ではどうすればよいか考えてみました。


●苦手なこと

使っていると光センサー液晶パッドと比較的相性の良い操作、苦手な操作がわかってきます。

良い

 ・ペン操作
 ・ボタン

だめ

 ・ドラッグ系
 ・ジェスチャ入力
    二本指スクロール・拡大縮小・回転

手描きのペン入力は割と素直に使えます。
手書き文字入力も想像より快適でした。線を加える毎に即座に文字が絞り込まれていきます。
レスポンスも速く、自分が行った操作とフィードバックが直結しています。
でも純粋なタブレット PC と違い、キーボードがあるから使わなくても困らないのも事実。

電卓やピアノといったシンプルなボタンを活用するユーザーインターフェースも
不満が少なく相性が良いといえます。
感圧式と違って触った時点で反応するので、押した感触がわかりやすいようです。

逆にドラッグ操作でオブジェクトを動かすような操作は苦手です。
タッチ位置にオブジェクトがついてこないし、遅延が目立つし、見た目とずれが
あるため慣れるまで思うように操作出来ません。

ジェスチャ系も同様です。
たとえばズーム操作では、読み込みが間に合わなかったとしても画像を拡大表示して
ごまかし、見た目の反応速度を上げるテクニックが良く用いられます。
液晶パッドの場合はそれ以前の問題で、ただの拡大ですら更新エリアが大きいため
描画の負担となり現実的ではないのです。


●描画更新が遅いならただのボタンの方が良い

結局 描画の更新を減らす工夫が何より大切だといえそうです。

・できるだけボタンなどスタティックなユーザーインターフェースにする。
・ジェスチャ系は操作中ワイヤーフレームで表示してあとから更新する。

といったことを考え、ハードウエアの性能を考慮したユーザーインターフェースを
採用します。以下具体例。


・2本指のスクロール

初めてリスト一覧を見たとき、最初にスクロールバーを探してしまいました。
2本指のスクロールは いわれないと わからないし、描画が遅くて操作できているのか
出来ていないのか判断しづらくなっています。
なぜかスクロールバーも常時表示されていません。
そのせいでスライドしすぎて止まらなくなり、ますます戸惑うことに。

液晶パッドは画面が広いので、いっそ専用のスライド領域を設けてしまった方が
良いのではないでしょうか。見た目でわかりやすいし、スライドした量を描画すれば
操作出来ていると安心できます。


・ページ切り替えとボタン

広い面積のスクロールは苦手なので、直接ページを切り替えられるボタンがあった
方が迅速だしわかりやすいです。タブ切り替えのように。
フォトモードの秒数指定ボタンは最初ページ切り替えだと勘違いしました。


・ハードウエアボタン

触れただけで反応するタッチ面に対して、クリックボタンは少々力がいります。
ボタンの説明として「次ページ」「マウス操作へ」「前ページ」とわかりやすく表示
してありますが、むしろここの文字をタッチしたくなります。


・マッチ棒のパズル

マッチ棒をスライドで動かすのはたいへんです。
描画が遅くて思わぬところに落としてしまうことも。
しかも関係ない位置においてしまうと操作回数がカウントされて失敗扱いです。

ゲーム内容を考えると、動かしたいマッチ棒をタッチしてその後異動先をタッチ
するだけで十分だと思います。
ハードウエアスペックに応じた操作仕様にするだけで大幅に遊びやすくなるはずです。


・拡大縮小回転

個別にボタンを用意するか、タッチに合わせたワイヤーフレーム等の演出が
合っているように思います。

液晶パッド部の解像度はかなり高いです。
メインの液晶画面が 1024x600 ドットなのに対して 854x480 ドットもあります。
縦横ともにおよそ 20% 小さいだけ。
手書きイラストのキャプチャ選択も全体を 80% の縮小表示にして、ワイヤーで選択
範囲が表示されているだけで十分な気がします。


●まとめ

書き出してみたらあまりたいしたことではありませんでした。
操作ではなく描画の問題で、結論はハードウエアの能力を考慮したユーザー
インターフェースにするという一点のみです。

あとは画像取り込みとかスキャナ機能とか、何かしら光センサー液晶パッドでないと
出来ない使い方があると良いですね。


関連エントリ
メビウス PC-NJ70A (5) サブモニタ
メビウス PC-NJ70A (4) 使用感
メビウス PC-NJ70A (3) Windows7 RC を入れる
メビウス PC-NJ70A (2) 初期セットアップとメモリ増設
メビウス PC-NJ70A 液晶センサータッチパッド
メビウス PC-NJ70A 画面解像度とタッチ


<<前のページ(日付が新しい方向) | 次のページ(日付が古い方向)>>