■山田祥平のWindows 7 ユーザーズ・ワークベンチ■
Windows XP以降、できることは何も増えていないといわれることも少なくないWindowsだが、少なくともWindows 7には、興味深いファンクションがいくつも追加実装されている。その1つがセンサーAPIだ。今回は、センサーAPIの挙動について見ていくことにしよう。
●APIを使ってセンサーを参照するかつて、PCに外部周辺機器を接続するためのもっともポピュラーな方法はRS-232Cだった。いわゆるシリアルポート(COMポート)だが、今では、シリアルポートを持つPCを見つけることの方が難しい状況だ。
現在、周辺機器を接続するには、USBが使われることが多いが、物理的にはUSB端子に接続しても、論理的にはシリアルポートというケースはよく見かける。また、Bluetoothを使った通信でも、シリアルポート通信でデータをやりとりするケースがたくさんある。
シリアルポートの通信で不便なのは、1つのアプリケーションがポートを占有してしまい、他のアプリケーションから利用できなくなってしまうことだ。せっかくのマルチタスクなのにこれでは困る。
そこで、センサーAPIでは、基本的にシリアルポートを使わず、WindowsのAPIを使ってセンサーからデータを受け取る。アプリケーションは、デバイスドライバがどのような方法でセンサーからデータを受け取っているのかを知る必要はなく、APIをコールするだけで、必要なデータが得られる仕組みになっている。
その一例として、GPSを見ていこう。マイクロソフトは米国内で「Streets and Trips」という地図ソフトをリリースしているのだが、複数の製品エディションが用意され、その1つにGPSレシーバを添付しているものがある。GPSにはマイクロソフトのロゴがあるが、実際にはNavationという製品で、u-bloxというベンダーのGPSチップが搭載されている。そして、このu-bloxが、Windows 7のセンサーAPIを使ってGPSとデータをやりとりするためのデバイスドライバを公開しているのだ。
Streets and Trips付属のGPSユニット。USB端子に直に刺すタイプのものだ | u-bloxが配布するユーザーガイドではブロック図を使い、Windows 7のセンサーAPIが、どのように使われているかが説明されている |
ちなみに、この地図ソフトは、トライアル版をダウンロードして利用することができるが、60日間もの長期間有効だ。インターネットに接続しているならGoogle Mapを使えるが、オフラインの場合に便利なソフトなので、アメリカにでかけるときは、ぜひ試してみてほしい。
●仮想シリアルポートでレガシーアプリケーションもサポートu-bloxのサイトからドライバを入手し、Windows 7環境にインストールしてみる。サイトにはユーザーガイドも用意され、どのようにしてアプリケーションとGPSが通信するのかが詳しく書かれている。添付の図を見ると、ロケーションAPIがセンサーAPIを呼び、それがデバイスドライバと通信して実際のデバイスとデータをやりとりするようになっているようだ。また、この図を見ると、レガシーなアプリケーションは、仮想シリアルポート経由でデバイスドライバにアクセスしていることもわかる。
インストールの過程では、選択によって、USBセンサードライバと、仮想シリアルポートドライバの両方が組み込まれるようになっている。
シリアルポート経由でGPSとデータをやりとりするためには、デバイスマネージャを使って仮想シリアルポートを追加する必要がある。これは、デバイスマネージャの操作メニューにある「レガシーハードウェアの追加」を使い、マニュアルで追加することになる。
デバイスマネージャで確認すると「センサー」と「ポート(COMとLPT)」にu-boxのGPSが登録されていることがわかる | デバイスマネージャからレガシーハードウェアとして、シリアルポートを追加し、仮想シリアルポートを組み込めばシリアルポート経由でGPSを参照できる |
その結果、デバイスマネージャで確認すると、仮想シリアルポートが出現し、さらにセンサーとしてGPSが組み込まれていることを確認できる。2つのデバイスがあるように見えるが、実際にはデバイスは1つだけだ。そして最後に、Windows 7でこのセンサーデバイスを有効にする必要がある。こちらは、コントロールパネルの「位置センサーとその他のセンサー」で設定する。
コントロールパネルでセンサーを有効に設定しなければ、センサーAPIを使うことはできない |
これで、Windows 7の新しいセンサーAPIを使ってのデータのやりとりと、そんなことは何も知らないレガシーなアプリケーション、たとえば「Streets and Trips」のような地図ソフトのどちらからでもGPSが利用できるようになる。
おもしろいのは、複数の仮想シリアルポートを組み込むことができる点だ。つまり、GPSは1つしかないのに、まるで聖徳太子のように、複数のレガシーアプリケーションから異なるシリアルポートを開いてデータをやりとりすることができるのだ。
現在、もっとも簡単にセンサーAPIを試せるアプリケーションとして、Windows 7の標準ガジェットとして添付されている「天気」がある。その設定画面で「位置を自動的に検出する」を選択すると、GPSから得た位置情報を元に、そのロケーションの天気予報が表示されるようになる。
●期待したい各種センサー内蔵PC
このように、デバイスドライバを用意すれば、GPSデバイスをWindows 7のセンサーAPIで利用できるほか、レガシーなアプリケーションのために、同時に仮想シリアルポートからも利用できるようになることがわかった。
ガジェットの「天気」では、設定画面で、位置を自動的に検出するように設定できる。ここの画面は室内でキャプチャしたため、GPSが位置を検出できていないために、グレーアウトしている |
1つのセンサーを複数のアプリケーションが共有できることがわかっていれば、天気予報以外にも、周辺の飲食店情報を探すアプリ、渋滞情報を表示するアプリといった単機能アプリをいくつも用意して、それぞれを稼働させることができる。また、明るさや騒音といった情報を検知するセンサーを用意すれば、PCが置かれている状況に応じて、画面のコントラストやバックライトの明るさを調整したり、ボリュームをコントロールするようなこともできるだろう。いろいろなアプリケーションで1つのセンサーを共有できるのだからわかりやすいし、やっかいな通信に関するプログラムを書く必要もない。
現時点では、こうしたセンサーを内蔵したPCを探すのは難しいが、センサーAPIが認知されるようになれば、各種センサーを内蔵することで新たなソリューションを提供し、他ベンダーとの差別化を企てるようなPCベンダーも現れるに違いない。特に、さまざまな環境で使われるモバイルPCでは有効な活用ができそうだ。
なお、同じセンサーでも、ログオンに使う指紋センサーなどは、これらのセンサーAPIではなく、認証用のデバイスとしてコントロールパネル内では「生体認証センサー」として区別される。