Windows Sensor and Location プラットフォームの紹介更新日: 2009 年 4 月 28 日 ダウンロードPDC08_Introducing_Sensors_JPN.docx (Word 形式、279 KB) 目次:
Jim Travis 対象:Windows® 7 要約:このホワイト ペーパーでは、マイクロソフトの新しい開発プラットフォームの概要を説明します。このプラットフォームを使用すると、Global Positioning System (GPS) デバイスなどの位置センサーを含む Windows 7 オペレーティング システムのセンサーを簡単に使用できるようになります。 法的通知:このドキュメントは暫定版であり、このソフトウェアの最終的な製品版の発売時に実質的に変更されることがあります。 1. はじめに私たちは周囲の環境についての情報を知るために、自分の感覚に頼っています。作業を自動化する機械を作成する際には、センサーのメカニズムを追加して、状況の変化に機械が適切に反応できるようにします。 たとえば、一般的に、自動車のエンジンにはさまざまなセンサーが使用されています。これらのセンサーは、オンボード コンピューターによって監視され、このコンピューターではエンジンのタイミングなどの設定を常時調整してパワーと効率を最大化します。テレビでは、環境光センサーを使用して、部屋の状況の変化に合わせて画像の明るさを調整する場合があります。呼び鈴のボタンのように単純な機械でさえ、ドアの前に人がいることを検出する初歩的なセンサーとして機能します。 完全に機械的な呼び鈴もその目的を果たしますが、複雑なセンサーから提供された情報は、ソフトウェアと組み合わせると、さらに強力になります。最近のセンサーでは大量のデータをすばやく多様な形式で提供できるので、センサー データを解釈するための自然なメカニズムをソフトウェアで使用できます。 現在、ソフトウェア開発者はセンサーを使用するプログラムを作成できますが、標準化が行われていないので、センサーのプログラミングは困難な作業です。センサー ベースのプログラムは、完成すると、通常は特定の種類のハードウェアへの恒久的な依存関係が存在します。縦割りのソリューションを 1 つかそれ以上使用してソフトウェア ベースのシステムを展開できるようにすると、センサーとコンピューター ハードウェアの統合が制限されてきました。Windows ベースのコンピューターも、例外ではありません。 Windows® 7 ではセンサーがネイティブにサポートされ、GPS デバイスなどの位置センサーを含めたセンサーと連携する新しい開発プラットフォームに拡張されています。Windows Sensor and Location プラットフォームでは、デバイス製造元がセンサー デバイスをソフトウェア開発者や消費者に公開する標準的な方法を提供します。また、開発者は、センサーとセンサー データを操作するための標準化されたアプリケーション プログラミング インターフェイス (API) を使用できます。 このドキュメントでは、Windows Sensor and Location プラットフォームの概要を紹介し、そのさまざまな部分を説明します。また、センサーを操作するための包括的なシステムを提供するために各部分が連携するしくみについても説明します。 ページのトップへ 2. センサー デバイスの概要センサーは、さまざまな構成で提供されており、考え方によっては、物理的現象に関するデータを提供するあらゆるものをセンサーと呼ぶことができます。通常、センサーはハードウェア コンポーネントと考えられていますが、ソフトウェアやファームウェアのセンサー機能をエミュレーションすることによって、論理センサーからも情報を取得できます。また、1 台のハードウェア デバイスに複数のセンサーが付属していることもあります。次の表に、さまざまな種類のセンサーとその用途を示します。
Windows Sensor and Location プラットフォームでは、センサーを関連しているセンサー デバイスの幅広いクラスを表すカテゴリ、および特定の種類のセンサーを表す種類に編成しています。たとえば、プレイヤーの手の位置と動きを検出するビデオ ゲーム コントローラー (ボーリング ビデオ ゲーム用など) のセンサーのカテゴリは方位センサーですが、種類は 3D 加速度計です。コード上では、Windows® 7 によってグローバル一意識別子 (GUID) を使用してカテゴリや種類が表され、その多くは定義済みです。デバイスの製造元は、新しい GUID を定義して公開することで、新しいカテゴリや種類を作成できます。 位置デバイスには、とりわけ興味深いカテゴリが 1 つ含まれています。現在では、ほとんどの人が GPS センサーについてよく知っているでしょう。Windows 7 では、GPS はセンサーの一種で、"位置" カテゴリに含まれます。"位置" カテゴリには他の種類のセンサーも含まれており、ソフトウェア ベースのセンサーもあります。たとえば、インターネット アドレスに基づいて位置情報を提供するセンサー、付近の携帯電話基地局に基づいて位置を特定するセンサー、接続中のワイヤレス ネットワーク ハブの情報を読み取ってデータベースでハブの位置を参照するセンサーなどがあります。 ページのトップへ 3. プライバシーとセキュリティWindows Sensor and Location プラットフォームを使用すると、必要に応じて、次のような方法でセンサー データのプライバシーを保護できます。
ページのトップへ 4. アーキテクチャWindows Sensor and Location プラットフォームは、次のコンポーネントで構成されています。
ページのトップへ
デバイス ドライバー インターフェイスセンサー製造元は、センサーと Windows 7 を接続するデバイス ドライバーを作成できます。センサー デバイス ドライバーの実装には Windows ポータブル デバイス (WPD) ドライバー モデルが使用されており、WPD は Windows ユーザー モード ドライバー フレームワーク (UMDF) を基にしています。これらのテクノロジが確立されているので、経験豊富なデバイス ドライバーのプログラマは、センサー ドライバーの作成を慣れ親しみのある作業と感じるでしょう。Sensor DDI では、特定の UMDF と WPD のデータ型とインターフェイスを使用し、必要に応じて、センサー固有の WPD のコマンドとパラメーターも定義します。 Sensor Class Extensionセンサーを Windows 7 (特に Sensor and Location プラットフォーム) に公開するデバイス ドライバーを簡単に作成できるように、このオペレーティング システムにはドライバーのクラス拡張が付属しています。この COM オブジェクトは、センサー デバイス ドライバーの必須コンポーネントです。このクラス拡張では、プログラマが大量の定型コードを記述しなくてもセンサー ドライバーを実装できるような、インターフェイスの簡単なセットが提供されます。このクラス拡張を使用すると、次のように、プログラマはさらにいくつかのメリットを得ることができます。
センサー、センサー ドライバー、およびセンサー ドライバーのクラス拡張の関係を、次の図に示します。
Sensor Class Extension では、2 つの COM インターフェイスが公開されます。ISensorClassExtension インターフェイスでは、センサー プラットフォーム、つまりクライアント アプリケーションとの通信にセンサー ドライバーで使用するメソッドにアクセスできます。ISensorDriver インターフェイスでは、センサーでサポートされている機能に関する情報、および実際のセンサー データを取得するために Sensor Class Extension で使用されるコールバック メソッドが提供されます。また、Sensor Class Extension では、センサー ドライバーに通知を提供するコールバック メソッドがアクティブになります。 位置センサーのドライバー位置センサーのドライバーの作成には、センサーの他のカテゴリーの場合と同じドライバー モデルとクラス拡張を使用します。位置のドライバーでは、位置センサーを "位置" カテゴリに属していると識別します。次に、特定のセンサーの種類用の適切なデータ フィールドを公開して、ドライバーで提供される位置データ レポートの種類を識別します。 論理センサーのドライバー論理センサーのドライバーを作成できます。これらのドライバーは、他のセンサー ドライバーと同様に動作しますが、ハードウェアに依存しません。ILogicalSensorManager インターフェイスは Sensor API の一部ですが、論理センサーの接続を管理するメソッドを提供します。 センサーおよび位置に関する Windows Driver Kit の機能Windows 7 Driver Kit (Windows 7 ドライバー キット) には、ドライバー開発者がセンサーや位置のデバイス ドライバーを作成する際のガイドとなるサンプル コードやドキュメントが付属しています。 ページのトップへ a. Sensor APIWindows Sensor API を使用すると、C++ 開発者は、一連の COM インターフェイスを使用してセンサー ベースのプログラムを作成できます。Sensor API では、一般的なセンサーに関するプログラミング処理を実行するためのインターフェイスを定義しています。この処理には、センサーの管理、センサーのコレクションの操作、個々のセンサーの操作、データの操作などがあります。 ISensorManager には、カテゴリ、種類、または ID を使用してセンサーを取得するためのメソッドが用意されています。このインターフェイスでは、特定のセンサーを使用するためのアクセス許可を要求するシステム ダイアログ ボックスを表示するメソッド、およびセンサー イベントを登録するメソッドも提供されます。ISensorManagerEvents では、センサーが接続されると通知が行われます。 ISensorCollection では、センサーのコレクションを操作する方法が提供され、Add、Remove、GetCount、GetAt(index) など、一般的なコレクションの機能が提供されます。 ISensor は、特定のセンサーを表します。このインターフェイスでは、センサーのプロパティの設定と取得、状態に関する情報の取得、センサー データの取得、およびイベントの登録を行うメソッドが提供されます。ISensorEvents では、センサーの状態の変化、データの変化、センサーの切断、およびセンサーのカスタム イベントに関する通知が行われます。 ISensorDataReport はデータ レポートを表し、このレポートでは特定のセンサーのデータのスナップショットが提供されます。センサー ドライバーでは、データ レポートにタイムスタンプが設定されるので、データがタイミングの要件を満たしているかどうかをアプリケーションで判断できます。このインターフェイスを使用すると、開発者は PROPERTYKEY への参照を使用して一度に 1 つのデータ ポイントにアクセスすることも、WPD の IPortableDeviceKeyCollection インターフェイスへのポインターを使用して 1 回のメソッド呼び出しで複数のデータ値を取得することもできます。 センサーに関する Windows SDK の機能Windows 7 SDK には、ソフトウェア開発者がセンサーを Windows 7 のプログラムで使用するのに役立つ、ヘッダー ファイル、ドキュメント、サンプル、およびツールが付属しています。sensors.h という名前の 1 つのヘッダー ファイルで、一般的な定義済みのセンサーのイベント、プロパティ、カテゴリ、種類、データの種類が宣言されています。ツールには、接続されたハードウェア デバイスのエミュレーションを行う仮想センサー、およびセンサー データやその他のイベントを表示するセンサー監視プログラムが付属しています。 ページのトップへ b. Location APIWindows Sensor API を使用すると、C++ 開発者は、一連の COM インターフェイスを使用してセンサー ベースのプログラムを作成できます。Sensor API では、一般的なセンサーに関するプログラミング処理を実行するためのインターフェイスを定義しています。この処理には、センサーの管理、センサーのコレクションの操作、個々のセンサーの操作、データの操作などがあります。 ISensorManager には、カテゴリ、種類、または ID を使用してセンサーを取得するためのメソッドが用意されています。このインターフェイスでは、特定のセンサーを使用するためのアクセス許可を要求するシステム ダイアログ ボックスを表示するメソッド、およびセンサー イベントを登録するメソッドも提供されます。ISensorManagerEvents では、センサーが接続されると通知が行われます。 ISensorCollection では、センサーのコレクションを操作する方法が提供され、Add、Remove、GetCount、GetAt(index) など、一般的なコレクションの機能が提供されます。 ISensor は、特定のセンサーを表します。このインターフェイスでは、センサーのプロパティの設定と取得、状態に関する情報の取得、センサー データの取得、およびイベントの登録を行うメソッドが提供されます。ISensorEvents では、センサーの状態の変化、データの変化、センサーの切断、およびセンサーのカスタム イベントに関する通知が行われます。 ISensorDataReport はデータ レポートを表し、このレポートでは特定のセンサーのデータのスナップショットが提供されます。センサー ドライバーでは、データ レポートにタイムスタンプが設定されるので、データがタイミングの要件を満たしているかどうかをアプリケーションで判断できます。このインターフェイスを使用すると、開発者は PROPERTYKEY への参照を使用して一度に 1 つのデータ ポイントにアクセスすることも、WPD の IPortableDeviceKeyCollection インターフェイスへのポインターを使用して 1 回のメソッド呼び出しで複数のデータ値を取得することもできます。 位置センサーの選択Location API では、定義済みの一連のルールを使用して、使用できる最適な位置センサーを選択します。ユーザーのアクセス許可を要求すること以外、位置センサーを管理する必要はなく、使用できるデータを最大限に活用することに集中できます。 位置に関する Windows SDK の機能Windows 7 SDK には、Web 開発者やソフトウェア開発者が、位置情報を Windows 7 のプログラムで使用するのに役立つ、ヘッダー ファイル、ドキュメント (スクリプトのリファレンス ドキュメントなど)、サンプル、およびツールが付属しています。 c. ユーザー コントロール パネルWindows 7 には、システム全体またはユーザーごとに、センサーの状態 (有効/無効) を切り替える機能をユーザーが使用できるコントロール パネルが用意されています。一部のセンサーでは機密データが公開される可能性があるので、このインターフェイスでは、各センサーにアクセスできるプログラムをユーザーがコントロールできます。ユーザーは、センサーのプロパティを表示したり、ユーザー インターフェイスに表示されるセンサーの説明を変更したりすることもできます。 ページのトップへ 5. 詳細情報Windows Sensor and Location プラットフォームの詳細情報を入手するには、次の電子メール アドレス宛てに電子メールをお送りください。 sensext@microsoft.com (英語のみ) Windows® 7 の位置機能に関する詳細情報を入手するには、次の電子メール アドレス宛てに電子メールをお送りください。 locext@microsoft.com (英語のみ) |
ページのトップへ