高橋 忍 エバンジェリスト 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.
© Copyright 2024 ExpyDoc