スライド 1

高橋 忍
エバンジェリスト
Microsoft Corporation
マルチタッチがもたらすもの
マルチタッチ環境
マルチタッチAPIs
マルチタッチアプリケーション
マルチタッチに向けて
ハードウェア
マルチタッチ対応のハードウェア
はすでにいくつか市場で発売され
ている、今後対応デバイスは拡大
予定
ソフトウェア
Windows 7
Win32 API
.Net 4.0
コンシューマメッセージ
新たなPCの利用方法の提供
新しいユーザーエクスペリエンス
新しい価値の提供
マルチタッチ 技術を使った
アプリケーションでの利用例:
Web 上でのナビゲーションや
コンテンツ捜査
メールチェックやソート
写真閲覧
ボードタイプのゲームなど
音楽やビデオ観賞
ウィンドウのナビゲーションや
レイアウト捜査
オフィスアプリケーション
すべては消費者
ベースとなる4つの投資:
開発プラットフォーム:
ベースとなるタッチプラットフォーム
プラットフォームをベースとして公開
されるAPI群
UI の強化:
コアUI要素の多くが、タッチ操作に対
応した形で最適化される
ジェスチャー:
多くのアプリケーションで、ズームや
移動操作を実現できるようにマルチ
タッチ ジェスチャーが追加される
アプリケーション:
今後マルチタッチをベースとしたアプ
リケーションがリリースされる。
ただしWindows7とは別で出てくる
であること
フィンガータッチオペレーション
マウスと同じ動作(1次元の入力)
ドラッグ:スクロール、移動
であること
複数の同時ポインタ
マウスでできなかった新しい動作
パン:平行移動
ズーム:拡大縮小
ローテーション:回転
どのようなアプリケーションがタッチイン
ターフェースのメリットがあるのか?
コンテンツ操作
モバイル、メディア
エンターテインメント
効果的な投資のレベルを見極める
Good – サポートなし, UX を修正する程度
Better – ジェスチャーをサポート,
タッチな感じの UX
Best – タッチに最適さしたエクスペリエンス
Multi-touch
Windows
NET
4.0 / 7
Surface
Release
2.0 Release
Multi-Touch
Surface
Controls
Multi-Touch
Controls & API
Multi-Touch API
Multi-Touch API and Controls
Multi-Touch API
マルチタッチ対応パネル
Application
.NET4.0
ドライバ
Win32 API
OS : Windows7
タッチすると何がもらえるのか?
Mouseイベント?
No!
Touch イベント
複数のタッチデータがもらえる?
Yes!
複数のタッチデータを解析が必要
No! and Yes!
動きのパターンから3つのメッセージ
ジェスチャー
自分で解析することももちろん可能
Good
Better
Best
API
即対応可能!
• 移動/ズーム
• 右クリックで
ジェスチャー
• ジェスチャー
メッセージ
• 移動/ズーム/回転
/等々
• タッチ生データ
• 操作,慣性プロセッサ
Win32
• 標準のスクロール
バーでの操作
• WM_GESTURE
メッセージ
• WM_TOUCH
• COM ベースの
操作,慣性プロセッサ
WPF
• WPF 4.0
ScrollViewerでの
スクロール操作をサ
ポート
• Gesture イベント
• 慣性の設定
• Touch イベント
• 操作,慣性プロセッサ
• WM_GESTURE
メッセージ
• P/Invoke
• Microsoft.Ink.DLL対応
操作、慣性プロセッサ
• リアルタイム スタイラ
ス、インクコレクター
WinForms • 標準のスクロール
バーでの操作
Better: Good gesture support is key
アプリケーションは Window メッセージの形
でジェスチャーの情報とイベントを受け取る
利用例:よりリッチなイベントとして
スムース、高感度なスクロール&ズーム
合成されたジェスチャー
タッチ操作を合成したもの
メッセージバブル&キャプチャ
従来通りのハンドリングも可能
BOOL WINAPI GetGestureCommandInfo(
__in UINT uMsg,
__in WPARAM wParam,
__in LPARAM lParam,
__in LPARAM lExtraInfo,
__inout PGESTUREINFO pGestureInfo
);
typedef struct _GESTURECOMMANDINFO {
UINT cbSize;
DWORD dwFlags;
DWORD dwCommand;
DWORD dwArguments;
POINTS ptsLocation;
} GESTURECOMMANDINFO, *PGESTURECOMMANDINFO;
送信される情報:
dwCommand
dwArguments
ptsLocation
パン
移動距離
中心点
ズーム
移動距離
中心点
ろーテーと
絶対角(開始時)
回転角(更新時)
中心点
2点タップ
NA
中心点
右クリック
ジェスチャー
NA
最初のタッチ点
今後の Windows 7 Build で追加予定
Gesture API
WM_GESTURE メッセージ
GESTUREINFO 構造体
GetGestureInfo() メソッド etc
その他 GESTUREINFO 内に追加
gesture 設定情報関連 API
WM_GESTURENOTIFY メッセージ
GESTURECONFIG 構造体
Set/GetGestureConfig() メソッド
この後の Windows 7 Build に実装予定
シングルポイントパニング (SFP)
によってより簡単にパンニングを実現
アプリケーションでのSPIの設定方法:
SetGestureConfig() for GC_PAN
GC_PAN_WITH_SINGLE_FINGER_VERTICALLY、
GC_PAN_WITH_SINGLE_FINGER_HORIZONTALLY
のいずれか・もしくは両方を指定
SFP をデフォルトにしない場合
通常のスクロールバーを利用
SBM_GETSCROLLINFO
WM_GESTURE に対応させる
WM_TOUCH* 関連メッセージ
Best: WM_TOUCH タッチ操作に最適化した
エクスペリエンスを実現
WM_TOUCHDOWN
WM_TOUCHMOVE
WM_TOUCHUP
意味的にはマウスメッセージに類似
Win32 アプリケーションにタッチ情報を送信
利用例:
指ペイント、カスタムジェスチャ、
より高いレベルのUI操作を実現するために利用
等々
BOOL WINAPI RegisterTouchWindow(
__in HWND hwnd,
__in ULONG ulFlags);
BOOL WINAPI GetTouchInputInfo(
__in HANDLE hTouchInput,
// input event handle
__in UINT cInputs,
// number of elts in the array
__out_ecount(cInputs) PTOUCHINPUT pInputs,
// array of touch inputs
__in int cbSize);
// sizeof(TOUCHINPUT)
typedef struct tagTOUCHINPUT {
LONG x;
LONG y;
HANDLE hSource;
DWORD dwID;
DWORD dwFlags;
DWORD dwMask;
DWORD dwTime;
ULONG_PTR dwExtraInfo;
DWORD cxContact;
DWORD cyContact;
} TOUCHINPUT, *PTOUCHINPUT;
typedef TOUCHINPUT const * PCTOUCHINPUT;
BOOL WINAPI CloseTouchInputHandle(
__in HANDLE hTouchInput);
// input event handle
タッチに最適化されたUIのための基盤
マニピュレーションとは?:
2Dアフィン変換(変換, スケーリング, 回転)
対応するジェスチャのスーパーセット
複合マニピュレーションにも対応
要生データ: WM_TOUCH or RTS
Surface APIs に類似
インターフェース:
IManipulationProcessor
IManipulationEvents
基礎物理
マニピュレーションと連携して動作
インターフェース:
IInertiaProcessor
IManipulationEvents
マニピュレーションと
同じイベントインターフェース
WPFへの対応:
3.5 アップデートが Windows 7 発売と近い
時期にリリース予定
マルチタッチ, gesture APIs
4.0 リリース
Multi-touch 対応新コントロール
WinForms への対応
ネイティブWin32 APIs への Interrop
マネージド Manipulations/Inertia ラッパー
UIElement and UIElement3D の変更
Gesture イベント (tracking)
Touch system gesture イベント(single)
生のタッチイベント
タッチ/タッチデジタイザデバイス対応
マルチタッチ 対応コントロール:
ScrollViewer は パンニングに対応
マルチタッチに合わせて
ベースコントロールをアップデート
マルチキャプチャをサポート
新しいマルチタッチ対応コントロール
Surface SDK 2.0 と下位互換性
UIElement & UIElement3D
ジェスチャーイベントに対応
TouchGestureStarted
TouchGestureChanged
TouchGestureEnded
マルチキャプチャ対応のためルートにはならない
Gesture はマニピュレーションベース
TouchGestureStarted 時に慣性動作
完成動作 の TouchGestureChanged イベント
タッチシステム gestures
UIElement and UIElement3D
TouchDown, TouchMove, TouchUp
TouchEnter, TouchLeave
Preview
順序: Touch → Stylus → Mouse
マルチキャプチャ
CaptureTouchDevice(TouchDevice)
ReleaseTouchDeviceCapture(TouchDevice)
ReleaseAllTouchDeviceCaptures()
TouchDeviceCollection TouchDevicesCaptured { get; }
TouchDeviceCollection TouchDevicesCapturedWithin { get; }
IsAnyTouchDeviceCaptured();
IsAnyTouchDeviceCapturedWithin();
リアルタイム スタイラス(RTS)
タッチ生データ生成のベース
IRealTimeStylus3::MultiTouchEnabled()
InkCollector からのタッチデータの取得
ATOM m_atom = ::GlobalAddAtom(MICROSOFT_TABLETPENSERVICE_PROPERTY);
m_dwProperty = TABLET_ENABLE_MULTITOUCHDATA;
::SetProp(m_hwnd, (LPTSTR)m_atomPenService, (HANDLE)m_dwProperty);
General guidelines:
Big targets
Whitespace
Avoid hover
See UX guidelines
Be aware of
hardware:
Form factor
Avoid on-hover UI
Edges, jitter, etc
Gesture guidelines:
Use common
gestures
Gestures need to be
intuitive and natural
Moving away from
shortcut style
gestures to
manipulations and
direct manipulation
ISVs には好反応
すでに対応を開始しているISV:
AutoDesk
Avoco Secure
Corel
Cyberlink
Fuel Industries
Identity Mine
Sonic
まずは何から始めるか
対応させるアプリケーションの検討
最適な対応レベルを考える
投資対効果の検討
何か面白いものを作ってみよう!
何が必要か??
ハードウェア:
マルチタッチベータドライバ対応 PC:
HP TouchSmart 2
Dell Latitude XT
ソフトウェア:
Window 7 Beta build
Touch Platform SDK and samples
WPF Multi-touch
.NET 4.0 Preview Releases in 2009
.NET 3.5 update
© 2009 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries.
The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market
conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation.
MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.