では、どのような方法でデータベース表から図 1 および図 2 の検索画面と表示画面を取得すればよいのでしょうか。データ・ソースと Google Map
API との組み合わせは、「マッシュアップ (mashup)」(Wikipedia.org) または Web アプリケーション・ハイブリッドと呼ばれています。図
3 にサーバー・アーキテクチャーを示します。
この概念で実に興味深いのは、さまざまなデータ・ソースがブラウザーで統合されている点です。クライアントのブラウザー上で結合されるデータ量がどの程度制限されるかによって、このアプローチが成功するかどうかが決まります。クライアント側であまりにも大量のデータを取得しようとした途端、ユーザーはネットワークの制限とクライアント・プロセッサーの速度にストレスを感じることになるでしょう。
図 3: 注釈付きマッピング・アーキテクチャー

このアーキテクチャーは非常に単純です。ブラウザーで発生した要求が Apache Web サーバーに送信されます。要求された PHP ページには HTML
および JavaScript が含まれています。JavaScript は Google Map サーバーを呼び出し、結合されたページ (図 1 に表示) が表示されます。郵便番号が検索フィールドに入力されると、要求が
Web サーバーに渡されます。この Web サーバーでは、PHP ODBC 接続を使用してバックエンドの Informix データベースに接続しています。
この記事のコード・サンプルでは、Informix の使用方法を示します。DB2 を構成して PHP を扱う方法については、「DB2
and open source: Web polling with DB2, PHP, and Linux(英語)」(developerWorks、2004
年 8 月) を参照してください。
ページのために要求されたデータは、データベースから取得されます。押しピンのカラー・スキームにより、色の範囲に基づいて人口密度が示されます。人口の範囲は、分布ごとに発生数が同じになるように選択されています。
アーキテクチャーの仕組みの詳細については、この記事のコードの説明とコード内のコメントを参照してください。
Ajax/JavaScript および Google API
Google API、JavaScript、および Ajax が、アプリケーションの大部分を構成しています。Google Maps API では、1 つの
Web サイトの 1 つのディレクトリーに対して専用のキーが必要です。キーを取得するには、www.google.com/apis/maps にアクセスして、「Sign
up for a Google Maps API key (Google Maps API キーにサインアップする)」をクリックします。API には、Ajax
HttpRequest クラスおよびイベント処理機能コントロールなど、多くの役立つ機能が備わっています。Google では API に関する充実したドキュメンテーションを提供しており、これは、
www.google.com/apis/maps/documentation/ で入手できます。ただし、Ajax は JavaScript と XML を組み合わせた頭字語に過ぎません。以下のように、Ajax
を呼び出して PHP によって返される HTML を解析すると、ユーザーのブラウザーをリフレッシュする必要がなくなります。
JavaScript と Google API はすべてのブラウザーでサポートされているわけではありませんが、Mozilla Firefox および
Internet Explorer 6 などの多くのブラウザーでサポートされています。また、比較的古いブラウザーでは、使用されている CSS の一部がサポートされていないことがあります。
Apache、PHP、および ODBC
中間層サーバーでは、Web ページ、ランタイム環境、およびデータベース・アクセスを提供します。なかでも有名なのは Apache サーバーで、最近の統計によると、インターネット・サイトのほぼ
70 %で 使用されています。Apache では、アドイン・モジュールがサポートされており、ここで使用するサーバーは、mod_php を使用して PHP のランタイム環境を提供しています。コマンド行から
php コマンドを使用して php スクリプトの簡単なテストを実行できます。php コードを実行して要求側のブラウザーに送信する必要があるときに、Apache
と mod_php が使用されます。
ODBC データベース・アクセスはパフォーマンスの問題を抱えていました。ODBC の初期のリリースは処理が遅かったのです。実装が大幅に改善されてからは、優れたパフォーマンスを提供するようになりました。ODBC
を使用することによりシステム間での移植がきわめて容易になります。また、DB2 や Informix へのネイティブなアクセスを実現する、データベース・クライアント
API 専用のライブラリーを備えています。
Informix/DB2
IBM Web サイトには、以下の製品ファミリーがあります。
- DB2 ファミリー: 堅牢なオンデマンド・ビジネス・アプリケーションを構築するため、柔軟で費用対効果の高いデータベース・プラットフォームを提供するデータベース管理システム。
- Informix ファミリー: トランザクションが集中する環境において優れたアプリケーション・パフォーマンスを提供します。
(著者は長年 Informix を扱ってきたので、Informix がデータウェアハウス・システムや意思決定支援システムでも素晴らしい働きをすることを身をもって知っています)。
記事「DB2
and open source: Web polling with DB2, PHP, and Linux(英語)」には DB2 の例を多く載せているので、ここでは、Informix
の例を示します。この例を DB2 で動作させるのが困難な場合は、著者の他の記事を参照してください (「参考文献」を参照)。
このコードは、次の 3 つのページで構成されています。
- メイン ページ (地図があり、HTML または JavaScript でコーディングされている)
- 郵便番号の経度と緯度を XML として返す PHP スクリプト
- 地図の境界内の郵便番号に関するデータを XML として返すもう 1 つの PHP スクリプト
では、ユーザーは目にすることのない 2 つのコンポーネントである PHP スクリプトを見てみましょう。これらは、JavaScript によって呼び出され、データベースとやり取りし、XML
を返します。
リスト 3: 特定の郵便番号の経度/緯度を取得する PHP コード
|