PDC 2008

Windows Sensor and Location プラットフォームの紹介

更新日: 2009 年 4 月 28 日


ダウンロード

PDC08_Introducing_Sensors_JPN.docx (Word 形式、279 KB)


目次:

  1. はじめに
  2. センサー デバイスの概要
  3. プライバシーとセキュリティ
  1. アーキテクチャ
    1. Sensor API
    2. Location API
    3. ユーザー コントロール パネル
  2. 詳細情報



Jim Travis
Microsoft Corporation
2008 年 10 月

対象:

Windows® 7
Windows Sensor and Location プラットフォーム

要約:

このホワイト ペーパーでは、マイクロソフトの新しい開発プラットフォームの概要を説明します。このプラットフォームを使用すると、Global Positioning System (GPS) デバイスなどの位置センサーを含む Windows 7 オペレーティング システムのセンサーを簡単に使用できるようになります。

法的通知:

このドキュメントは暫定版であり、このソフトウェアの最終的な製品版の発売時に実質的に変更されることがあります。
このドキュメントに記載されている情報は、このドキュメントの発行時点におけるマイクロソフトの見解を反映したものです。変化する市場状況に対応する必要があるため、このドキュメントは、記載された内容の実現に関するマイクロソフトの確約とはみなされないものとします。また、発行以降に発表される情報の正確性に関して、マイクロソフトはいかなる保証もいたしません。
このホワイト ペーパーに記載された内容は情報の提供のみを目的としており、明示、黙示または法律の規定にかかわらず、これらの情報についてマイクロソフトはいかなる責任も負わないものとします。
お客様ご自身の責任において、適用されるすべての著作権関連法規に従ったご使用を願います。このドキュメントのいかなる部分も、米国 Microsoft Corporation の書面による許諾を受けることなく、その目的を問わず、どのような形態であっても、複製または譲渡することは禁じられています。ここでいう形態とは、複写や記録など、電子的な、または物理的なすべての手段を含みます。ただしこれは、著作権法上のお客様の権利を制限するものではありません。
マイクロソフトは、このドキュメントに記載されている内容に関し、特許、特許申請、商標、著作権、またはその他の無体財産権を有する場合があります。別途マイクロソフトのライセンス契約上に明示の規定のない限り、このドキュメントはこれらの特許、商標、著作権、またはその他の無体財産権をお客様に許諾するものではありません。
© 2008 Microsoft Corporation. All rights reserved.
Microsoft、MS-DOS、Windows、Windows NT、Windows Server、Windows Vista、Active Directory、ActiveSync、ActiveX、Direct3D、DirectDraw、DirectInput、DirectMusic、DirectPlay、DirectShow、DirectSound、DirectX、Expression、FrontPage、HighMAT、Internet Explorer、JScript、Microsoft Press、MSN、Outlook、PowerPoint、SideShow、Silverlight、Visual Basic、Visual C++、Visual InterDev、Visual J++、Visual Studio、WebTV、Windows Media、Win32、Win32s、および Zune は米国 Microsoft Corporation の米国またはその他の国における登録商標または商標です。
記載されている会社名、製品名には、各社の商標のものもあります。


1. はじめに

私たちは周囲の環境についての情報を知るために、自分の感覚に頼っています。作業を自動化する機械を作成する際には、センサーのメカニズムを追加して、状況の変化に機械が適切に反応できるようにします。

たとえば、一般的に、自動車のエンジンにはさまざまなセンサーが使用されています。これらのセンサーは、オンボード コンピューターによって監視され、このコンピューターではエンジンのタイミングなどの設定を常時調整してパワーと効率を最大化します。テレビでは、環境光センサーを使用して、部屋の状況の変化に合わせて画像の明るさを調整する場合があります。呼び鈴のボタンのように単純な機械でさえ、ドアの前に人がいることを検出する初歩的なセンサーとして機能します。

完全に機械的な呼び鈴もその目的を果たしますが、複雑なセンサーから提供された情報は、ソフトウェアと組み合わせると、さらに強力になります。最近のセンサーでは大量のデータをすばやく多様な形式で提供できるので、センサー データを解釈するための自然なメカニズムをソフトウェアで使用できます。

現在、ソフトウェア開発者はセンサーを使用するプログラムを作成できますが、標準化が行われていないので、センサーのプログラミングは困難な作業です。センサー ベースのプログラムは、完成すると、通常は特定の種類のハードウェアへの恒久的な依存関係が存在します。縦割りのソリューションを 1 つかそれ以上使用してソフトウェア ベースのシステムを展開できるようにすると、センサーとコンピューター ハードウェアの統合が制限されてきました。Windows ベースのコンピューターも、例外ではありません。

Windows® 7 ではセンサーがネイティブにサポートされ、GPS デバイスなどの位置センサーを含めたセンサーと連携する新しい開発プラットフォームに拡張されています。Windows Sensor and Location プラットフォームでは、デバイス製造元がセンサー デバイスをソフトウェア開発者や消費者に公開する標準的な方法を提供します。また、開発者は、センサーとセンサー データを操作するための標準化されたアプリケーション プログラミング インターフェイス (API) を使用できます。

このドキュメントでは、Windows Sensor and Location プラットフォームの概要を紹介し、そのさまざまな部分を説明します。また、センサーを操作するための包括的なシステムを提供するために各部分が連携するしくみについても説明します。

ページのトップへ


2. センサー デバイスの概要

センサーは、さまざまな構成で提供されており、考え方によっては、物理的現象に関するデータを提供するあらゆるものをセンサーと呼ぶことができます。通常、センサーはハードウェア コンポーネントと考えられていますが、ソフトウェアやファームウェアのセンサー機能をエミュレーションすることによって、論理センサーからも情報を取得できます。また、1 台のハードウェア デバイスに複数のセンサーが付属していることもあります。次の表に、さまざまな種類のセンサーとその用途を示します。

センサーの種類 センサーの配置 一般的な用途
GPS コンピューターに組み込まれるか、
コンピューターに接続されます。
位置、および方位
加速度計 コンピューターに組み込まれるか、
人に取り付けられます。
動作、方位、および位置
近接 コンピューターに組み込まれるか、
付近に配置されます。
存在、および空間認識
コンピューターに組み込まれるか、
付近、またはリモートに配置されます。
部屋の照明や屋内の日光など、環境光の状態
RFID コンピューターに組み込まれるか、
人に取り付けられます。
物理項目の ID、自動ログオン、および人物の位置
コンパス 人に取り付けられます。 方位
カメラ コンピューターに組み込まれるか、
人に取り付けられるか、リモートに配置されます。
録画、物体識別、および顔認識
マイク コンピューターに組み込まれるか、
人に取り付けられるか、リモートに配置されます。
周囲の音
温度 コンピューターに組み込まれるか、
リモートに配置されます。
屋内/屋外の環境温度および調理温度
湿度 リモートに配置されます。 水漏れの検出、および芝生用スプリンクラーの操作
動作検出器 コンピューターに組み込まれるか、
リモートに配置されます。
セキュリティ システム、およびコンピューター付近の動作の検出
交通 リモートに配置され、通常は公開されています。 移動時間の予測
気象計 リモートで配置され、場合によっては公開されます。 気象条件、および天気予報

Windows Sensor and Location プラットフォームでは、センサーを関連しているセンサー デバイスの幅広いクラスを表すカテゴリ、および特定の種類のセンサーを表す種類に編成しています。たとえば、プレイヤーの手の位置と動きを検出するビデオ ゲーム コントローラー (ボーリング ビデオ ゲーム用など) のセンサーのカテゴリは方位センサーですが、種類は 3D 加速度計です。コード上では、Windows® 7 によってグローバル一意識別子 (GUID) を使用してカテゴリや種類が表され、その多くは定義済みです。デバイスの製造元は、新しい GUID を定義して公開することで、新しいカテゴリや種類を作成できます。

位置デバイスには、とりわけ興味深いカテゴリが 1 つ含まれています。現在では、ほとんどの人が GPS センサーについてよく知っているでしょう。Windows 7 では、GPS はセンサーの一種で、"位置" カテゴリに含まれます。"位置" カテゴリには他の種類のセンサーも含まれており、ソフトウェア ベースのセンサーもあります。たとえば、インターネット アドレスに基づいて位置情報を提供するセンサー、付近の携帯電話基地局に基づいて位置を特定するセンサー、接続中のワイヤレス ネットワーク ハブの情報を読み取ってデータベースでハブの位置を参照するセンサーなどがあります。

ページのトップへ


3. プライバシーとセキュリティ

Windows Sensor and Location プラットフォームを使用すると、必要に応じて、次のような方法でセンサー データのプライバシーを保護できます。

  • センサーは既定で無効になります。プラットフォームの設計では、センサーでは個人情報が提供されることがあると想定しているので、コントロール パネルの [位置センサーとその他のセンサー] でユーザーがセンサー データへのアクセスに明示的に同意しない限り、すべてのセンサーは無効になっています。
  • Windows では、情報の公開を通知するメッセージをユーザーに表示します。このメッセージは、センサーを使用すると個人情報のプライバシーにどのような影響があるか、ユーザーが理解するのに役立ちます。
  • センサーを有効にするには、管理者権限が必要です。
  • 有効になっている場合、センサー デバイスは、ASPNET や SYSTEM などの対話形式を取らないユーザーやサービスを含め、特定のユーザー アカウント (またはすべてのユーザー アカウント) で実行されているすべてのプログラムに対して機能します。Sensor and Location プラットフォームでは、あるプロセスに公開されたデータが別のプロセスによるアクセスから保護されていることを確認できないので、ユーザーは、特定のセンサー デバイス (特定のユーザー アカウント用、またはコンピューター上のすべてのアカウント用) にアクセスするには、アクセス許可をすべてのプログラムに付与する必要があります。
  • センサーを使用するプログラムでは、メソッドを呼び出して、ユーザーに必要なセンサー デバイスを有効にするよう求めるシステム ダイアログ ボックスを表示することができます。この機能を使用すると、開発者やユーザーは、プログラムで必要なときに、簡単にセンサーが作動するようにし、同時にセンサー データの公開に対するユーザーによるコントロールを維持できます。
  • センサー ドライバーでは、すべての I/O 要求を処理し、ユーザーの許可があるプログラムだけがセンサー データにアクセスできるようにする特殊なオブジェクトを使用しています。

ページのトップへ


4. アーキテクチャ

Windows Sensor and Location プラットフォームは、次のコンポーネントで構成されています。

  • デバイス ドライバー インターフェイス (DDI)。Windows® 7 には、センサー デバイスがコンピューターに接続してデータを他のサブシステムに提供するための標準的なメカニズムが用意されています。
  • Windows Sensor API。接続されたセンサーやセンサー データを操作する一連のメソッド、プロパティ、およびイベントを提供します。
  • Windows Location API。Windows Sensor API を基盤とし、位置情報を操作するためのプログラミング オブジェクト (スクリプト オブジェクトなど) を提供します。
  • コントロール パネルの位置センサーとその他のセンサー ユーティリティ。位置センサーなどのセンサーの設定をユーザーが制御できます。
  • Privacy control (プライバシー制御)。アプリケーションで使用できるセンサーをユーザーが管理できます。
  • 次の図は、このようなコンポーネントの関係を示しています。
    図 1. Windows Sensor and Location プラットフォームのアーキテクチャ
    図 1. 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 オブジェクトは、センサー デバイス ドライバーの必須コンポーネントです。このクラス拡張では、プログラマが大量の定型コードを記述しなくてもセンサー ドライバーを実装できるような、インターフェイスの簡単なセットが提供されます。このクラス拡張を使用すると、次のように、プログラマはさらにいくつかのメリットを得ることができます。

  • Windows Sensor and Location プラットフォームのその他のコンポーネント (Sensor API、Location API、コントロール パネルなど) で、接続されたセンサーを検出して列挙できます。
  • ユーザーのプライバシーが適切に保護されるようになります。このクラス拡張では、個人情報を扱うセンサーに対して、適切なアクセス制御の制限を適用できます。
  • データをドライバーから取得し、API レイヤーを介してイベント通知を発生させるための標準的なメカニズムが提供されます。

センサー、センサー ドライバー、およびセンサー ドライバーのクラス拡張の関係を、次の図に示します。

図 2. Sensor Class Extension を使用したセンサー ドライバー
図 2. Sensor Class Extension を使用したセンサー ドライバー

 

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 API

Windows 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 API

Windows 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 (英語のみ)

ページのトップへ