Compartilhar via


「Windows 7 タッチ機能とマルチタッチ機能のエキスパートになるために(SoCalDevGal wants you to be an expert in Windows 7 Touch and Multi Touch capabilities)」 の翻訳記事

マイクロソフトの田中達彦です。
米国のMSDNブログに掲載されていた、Windowsタッチ関連の記事の翻訳です。
今回は、「SoCalDevGal wants you to be an expert in Windows 7 Touch and Multi Touch capabilities」という記事の日本語訳を紹介します。
オリジナルの記事はこちらです。
https://blogs.msdn.com/b/socaldevgal/archive/2009/06/07/socaldevgal-wants-you-to-be-an-expert-in-windows-7-touch-and-multi-touch-capabilities.aspx

====================================
Windows 7 タッチ機能とマルチタッチ機能のエキスパートになるために

私は好奇心に導かれて新しい道を進むことがよくあります。一般的な開発と同様に、業務事例の提示、問題点の洗い出し、主要なユースケースの記述、デザイナーの "採用" を終えた後は、Visual Studio を開いて、初めてのマルチタッチ Windows 7 アプリケーションのコーディングをすぐにでも始められます。そう思いませんか。いいえ、それは間違っています。ようやく見つけた、または製品チームから入手したサンプルコードを読みながら、私はちょっとした問題に気付きました。そして、それが実は大きな問題であることを知りました。単にタッチ ジェスチャを作成するだけのことだろう、と思いますか。1 回の左クリック、1 回の右クリック、左ダブル クリックというような単純なマウス クリックの世界から出てみると、ジェスチャは直観的かつ自然な方法で "解釈" する必要があります。言語や解釈の問題に対して経験と一般的興味を持つ私は今、この理解を深めることにすっかり心を奪われています。

Windows 7 をサポートするさまざまな種類のハードウェアに関する詳細と、Windows 7 のネイティブな機能、コーディングの際に選べるオプションについても、さらに調査しました。実際にコードを記述する前に、学んだ知識を皆さんと共有することは有益だと思います。まず、ハードウェアに関してです。

1. 静電容量式タッチ – HP TouchSmart tx2、Dell Latitude XT などは、デバイスの画面全体が電界で覆われており、指のタッチにより電界が変化することで機能します (タッチするのは、指か、あまり一般的ではありませんが専用スタイラスでなければなりません)。1 本指のタッチ、2 本指のタッチ、またはマルチタッチがサポートされます。タッチスクリーンは、デバイスに組み込むか、オーバーレイ (N-Trig) を使用することが可能です。ハードウェアを最大限に活用するためには、場合により、ドライバーを追加でインストールする必要があることに注意してください。これは、最も高コストなマルチタッチオプションです。

2. 赤外線走査方式タッチ – Microsoft Surface、HP TouchSmart などでは、光源 (通常はデバイスの角またはフレームに組み込まれています) の赤外線フィールドによって機能します。何らかの物体によってフィールドが遮断されると、デバイスの表面またはわずかに離れた位置で "タッチ" がキャプチャされます。NextWindow は、オーバーレイと統合システムの両方を提供しています。赤外線走査方式は、面積あたりにすると比較的低コストなため、大型壁面ディスプレイなどで使用されています。

ご興味があれば、Wikipedia の「Touchscreen (英語)」のトピックに詳しい説明があります。

次に、ソフトウェアに関してです。Microsoft Surface における処理を見てみると、重要なことが学べます。もちろん、ここでテーブル型 Surface のプログラミングについて説明しようというのではありません。しかし、このチームはあらゆる自然なジェスチャについて数年にわたる実践的知識を持っており、それを利用しない手はありません。そのため、先週の geekSpeak ショーでは、InterKnowlogy の開発者である Brad Cunningham 氏をお招きしました。このショーでは、"クリックからタッチへと向かう" アプリケーション開発の移行の全容について説明があり、実に多くのことを学びました。Cunningham 氏はプレゼンテーションで、サポートされるジェスチャについてエンドユーザーが理解するのに役立つ、重要な提案をしました。同社が新しく作成したアプリケーションでは、ゲームをプレイする際のジェスチャの使用方法をユーザーが理解できるように、冒頭にシミュレーションを含めるとのことです。また、GUI から NUI (new user interface: 新しいユーザー インターフェイス[訳注:最近はナチュラル インターフェイスのほうがよく使われます]) へのパラダイムシフトについても話しました。同氏は、参考書籍として『Designing Gestural Interfaces』(Dan Saffer 著) を勧めています。

 

このディスカッションを続けながら、私は Windows 7 (および搭載済みのいくつかのアプリケーション) に組み込まれているジェスチャ サポートのレベルを一覧にしようと試みています。引き続き、コーディング可能なジェスチャの種類を挙げていきます。また、一部のジェスチャはマウス操作に置き換えて説明します。指はマウスポインターほど精密でないとの Cunningham 氏の指摘は的を射たものであり、ドラッグ アンド ドロップのようにマウスでは比較的簡単な操作も、タッチのみに対応したデバイスでは、ユーザビリティの観点からは、うまく置き換えられません。次の表は、マウスクリックをタッチ ジェスチャに置き換えるための手始めとなるリストです (ほとんどは Cunningham 氏が提供したもので、残りは私が他のドキュメントから得たものです)。このリストに追加したいものがあれば、ぜひフィードバックしてお知らせください。

タッチ ジェスチャ

マウス操作

1 本指のタップ

マウス ボタン解放、マウス ボタン クリック (左クリック)

1 本指のダブルタップ

左ダブルクリック

1 本指のフリック

クリックしてトス

1 本指で投げ、タップして停止

クリックとトスでスクロールさせ、クリックして停止

2 本指で投げ、タップして停止

該当なし

1 本指でプレス アンド ホールドし、別の指でタップ

右クリック

スライド

クリックしてドラッグでスクロールさせる

2 本指でつまむようにして、縮小または特定の位置に収める

マウス ホイールの回転。ただし (写真などの) 特定の領域の選択はできない

2 本指で広げるようにして、拡大または取り出す

マウス ホイールの回転

1 本指でドラッグして、移動またはドロップ

クリックしてドラッグ

複数の指でドラッグして、移動またはドロップ

該当なし

このリストを見れば、タッチ対応アプリケーションのアーキテクチャに関する潜在的な複雑さが窺い知れます。ユーザーがマウスとタッチのどちらで対話操作するかによって UI に変更を加えるかどうかも、興味深い考慮事項の 1 つです。Windows 7 に実装済みの例としては、新しいジャンプ リストが挙げられます (こちらを参照)。マウス クリックでジャンプ リストを起動した場合、タッチで起動した場合と比べて、ジャンプ リストの項目の間隔が狭くなります。この背後には、指でジャンプリストの項目を選択できるようにするには、マウスで操作する場合よりも多くのスペースが必要であるという考えがあります。あまり詳しくない方に説明すると、ジャンプ リストというのは、タスクバーでアプリケーションを右クリックすると表示される、"次に行う操作" として最もよく選択されている項目をリストとして表示するものです。次の図は、Windows Media Player での例です。

[訳注:比較のために、マウス操作によって表示させたタスクリストを下に置きました]
タッチの場合
 

マウスの場合

タッチ対応アプリケーションを作成するときの別の考慮事項として、コア Windows 7 OS の設定を理解することが挙げられます。Windows 7 のコントロール パネルに [ペンとタッチ] という新しいアプレットがあり、タッチ向けのコア設定を行うことができます。[ダブルタップ] が既定ではマウスのダブルクリックと同じに設定され、[プレスアンド ホールド] はマウスの右クリックと同じに設定されていることに気付かれると思いますが、これらの既定の設定は OS レベルで調整可能です。

 

実際にタッチの動作を見ていただくのが良いかもしれません。短いビデオをいくつか用意しました。それぞれで、タッチ対応アプリケーションを実演しています。アプリケーションの中には、Windows 7 に含まれているものもあります (ペイント)。その他のサンプルは、Windows 7 SDK または Windows 7 タッチ パックから入手できます。最初は Lagoon スクリーン セーバーです。

[訳注:ビデオはオリジナルのブログからご覧ください]
https://blogs.msdn.com/b/socaldevgal/archive/2009/06/07/socaldevgal-wants-you-to-be-an-expert-in-windows-7-touch-and-multi-touch-capabilities.aspx

次のデモ ビデオでは、組み込みのタッチ機能が Windows 7 搭載のいくつかのアプリケーションでどのように機能するかをお見せします。例として、IE8、XPS ビューアー、およびペイントを使用しています。ここで、タッチ対応アプリケーションの "Good-Better-Best" の概念についても言及しています。この概念の詳細については、このブログの記事で後述します。

[訳注:ビデオはオリジナルのブログからご覧ください]
https://blogs.msdn.com/b/socaldevgal/archive/2009/06/07/socaldevgal-wants-you-to-be-an-expert-in-windows-7-touch-and-multi-touch-capabilities.aspx

最後のビデオでは、Windows 7 SDK のサンプルから、シングル ジェスチャまたはマルチタッチをサポートする、手書きでコーディングされたアプリケーションを紹介します。最後のセクションに、ソースコードの入手方法も記載しています。

[訳注:ビデオはオリジナルのブログからご覧ください]
https://blogs.msdn.com/b/socaldevgal/archive/2009/06/07/socaldevgal-wants-you-to-be-an-expert-in-windows-7-touch-and-multi-touch-capabilities.aspx

私と同じように興味を引かれた方のために (この長いブログ記事をここまでお読みいただいているのでそうに違いないと思いますが)、アーキテクチャの概念を説明しておきます。まず理解すべきなのが、タッチ対応アプリケーションにおける "Good-Better-Best" の概念です。もちろん、どのレベルを実装する場合でも、ハードウェアがそのレベルの機能をサポートしている必要があります。まずは次の表をご覧ください。

種類

サポート

組み込みアプリケーション

説明

Good

組み込み

IE8

1 本指、単純な選択、スクロール

Better

コーディング/WM_GESTURE

XPS ビューアー

単純なジェスチャ、ズーム、パン

Best

コーディング/WM_TOUCH

ペイント

マルチタッチ、慣性を伴うことも可能

注意が必要な点として、ここで言うコーディングは .NET Framework 4.0 を前提としています。これらのジェスチャの中には .NET Framework 3.5 を使用してキャプチャ可能なものもありますが、厳密にはまったく同じではありません。.NET Framework 4.0 の中でも、Beat 1 と Beta 2 では Windows 7 の WM_TOUCH の操作または生のジェスチャに関して違いがあります。たとえば、Beta 1 は操作のみをサポートしています (.NET 3.5 でもスタイラス イベントを処理することでサポート可能です) が、Beat 2 では生のジェスチャを扱うことができます。以前書いたように、既にいくつかのマネージラッパーが提供されています。また、Surface と .NET 4.0 のコード ベースの集約が進められています。詳細については、Window タッチ対応アプリケーションの基本に関する Channel9 ビデオ (こちら) をご覧ください。

タッチ対応アプリケーションのプログラミングという新しい世界については、考えることがまだまだたくさんあります。このブログ記事が、考えるきっかけになればと思います。私が着手した最初のアプリケーションに関する詳細は、数週間後に書く予定です。
====================================