GoogleEarth?を外部プログラムから制御する †知っての通りGoogleEarth?はGoogleから提供されている地球規模地図アプリケーションであり,KMLファイルというxml形式で記述されたデータをロードさせることで,地図上に様々な情報を表示することができる.表示方法は,例えば
などが挙げられる.このような機能を利用すると,旅行記や人口分布図などを作成することもできる.良く似たサービスにGoogleMap?があるが,
という点で異なると私は考えている.厳密に言うと地図データは外部Webサーバからダウンロードしているし,GoogleEarthAPI(COM-APIではない!)を使うことでブラウザ上で制御することもできるので,完全にオフラインなアプリケーションではないが,ここでは地図情報は事前に入手しており,オフラインで動作することを前提に話を進める. ここで,一般利用者であれば「GoogleEarth?楽しい」「GoogleEarth?便利」となるのであろうが,我々研究者は少し観点が異なる.すなわち,情報技術研究におけるインターフェースとして利用できないか,と考える.それはGoogleEarth?単体の機能で十分に達成できる場合もあるが,もう一歩踏み込んで「他のアプリケーションと連動させる」ことができればもっと様々な利用法が創出される. ....長くなったが要は,外部プログラムからGoogleEarth?を制御しようというわけである. COMという考え方 †GoogleEarth?はCOMに基づいて構成されている.COMとはComponentObjectModel?の略でMicrosoftが提唱している言語非依存なプログラム構成規約を指す.種々の言語を共通のプラットフォームで扱うための取り決めと考えてよい.GoogleEarth?はCOMに則って制御用APIを公開しているため,COMに準拠した形で外部から制御できるわけである.具体的には自作の外部プログラム側でCOMインターフェースを用意して,GoogleEath?に対してAPI呼び出しをかける仕組みである(図参照).さて,ここで気がついたかもしれないが,COMはMicrosoftが提唱しているので(当然)Windows依存な概念である.すなわちLinux(UNIX)のような他のOSではCOM経由で制御することはできない.Linux用GoogleEarth?も配布されているがWine上で動作しているのが実際であるから,結局はWindows依存なバイナリなのである.というわけで(不本意ながら)以降はWindowsを前提に話を進める. |