本プロジェクトで実装したミドルウェアのハードウェア構成、ソフトウェア構成について述べる.
ハードウェア構成
本ミドルウェアはユーザ端末、サーバPC及び位置情報センサの3要素によって構成される.
○ ユーザ端末
ユーザが携帯する端末である.ユーザが一人につき一台携帯していると想定する.
○ サーバPC
環境に設置されたPC、あるいはWSである.スペースモデルの管理ドメインにつき一台設置する.
○ 位置情報センサ
環境に設置され、ユーザの位置情報を取得するセンサである.十分な粒度の位置情報取得に必要な台数を設置する.
ソフトウェア構成
本ミドルウェアのソフトウェア構成について述べる.まず、本ミドルウェアの主なパッケージ構成とその役割について述べ、次にAPIについて述べる.
ソフトウェア構成図を以下に示す.
○ユーザプロファイル管理モジュール
[パッケージ名:jp.ac.keio.sfc.ht.heisyu.pegasus]
ユーザ端末上で動作する.
ユーザプロファイルを管理する。サービスルールに基づいて、必要とされるユーザプロファイルを取得する。ユーザルールエディタで編集されたユーザルールを適用し、ユーザプロファイルの提供粒度を変更する。提供粒度の変更されたユーザプロファイルを、クライアントモジュールの要求に応じて提供する。
○クライアントモジュール
[パッケージ名:jp.ac.keio.sfc.ht.spl.client]
ユーザ端末上で動作する.
アプリケーションに対し、スペースモデル利用のためのAPIを提供するモジュールである.
ユーザプロファイル管理モジュールからユーザプロファイル情報を取得し、スペースモデル管理モジュールに送る.その後、スペースモデルをスペースモデル管理モジュールから取得し、アプリケーションに提供する.
○スペースモデル管理機構
[パッケージ名:jp.ac.keio.sfc.ht.spl.server]
サーバPC上で動作する.
クライアントモジュールからユーザプロファイル、クライアント位置管理モジュールからクライアントの位置情報を取得し、スペースモデルを更新、管理する.クライアントモジュールの要求に対し、スペースモデルを返す.また、本モジュールで利用するロケーションモデルはロケーションモデルエディタを用いて作成する.
○クライアント位置管理モジュール
[パッケージ名:jp.ac.keio.sfc.ht.spl.clientlocation]
サーバPC上で動作する.
位置情報センサからユーザの位置情報を取得し、ユーザの位置情報を管理する.ユーザの移動情報をスペースモデル管理部に通知する.
○ユーザルールエディタ
[パッケージ名:jp.ac.keio.sfc.ht.heisyu.Pegasus.userruleeditor]
アプリケーションユーザがユーザルールを編集するためのツールである.ユーザルールを容易に編集するためのGUIを実装した.
○ロケーションモデルエディタ
[パッケージ名:jp.ac.keio.sfc.ht.spl.locationmodeleditor]
スペースモデル管理者がロケーションモデルを編集するためのツールである.ロケーションモデルを容易に編集するためのGUIを実装した.
○スペースモデルビューア
[パッケージ名:jp.ac.keio.sfc.ht.spl.spacemodelviewer]
スペースモデル管理者が実際のスペースモデルを閲覧するためのツールである.スペースモデルを容易に閲覧するためのGUIを実装した.
GUIの画面ダンプを以下に示す.
スペースモデルビューワ
○その他(主要パッケージ)
[パッケージ名:jp.ac.keio.sfc.ht.spl.spacemodel]
スペースモデルのデータクラス、スペースモデルの更新やファイルへの保存などを行うマネージャクラスが含まれている.また、サブパッケージに、spacemodel.locationmodelパッケージ、spacemodel.spacepropertyパッケージがある.spacemodel.locationmodelパッケージには、ロケーションモデルのデータクラス、マネージャクラスが、spacemodel.spacepropertyパッケージには、スペースプロパティのデータクラス、マネージャクラスがそれぞれ含まれる.
[パッケージ名:jp.ac.keio.sfc.ht.tomo.rfdetector]
本プロジェクトの実装に用いた位置情報センサ、spider reader用のモジュールである.このモジュールがspider readerに接続されたPC上で動作し、ユーザの位置情報をLAN経由でクライアント位置管理モジュールに送る.
提供API
本ミドルウェアがアプリケーション開発者に対して提供する主なAPIについて記述する.
○クラス:SplClient
・パッケージ:jp.ac.keio.sfc.ht.spl.client
・コンストラクタ:
SplClient(String client_id, java.net.InetAddress spl_server_addr)
指定されたクライアント識別子、サーバアドレスでSplClientオブジェクトを生成します.
・メソッド:
SpaceModel getSpaceModel()
ユーザプロファイルをサーバに送信し、スペースモデルを取得します.
void sendProfile()
ユーザプロファイルをサーバに送信します.
○インタフェース:SpaceModelListener
・パッケージ:jp.ac.keio.sfc.ht.spl.spacemodel
・メソッド:
void modelChanged(SpaceModel space_model)
スペースモデルリスナがSpaceModelManagerに登録されていれば、スペースモデルが更新された時に呼び出される.
○クラス:SpaceModelManager
・パッケージ:jp.ac.keio.sfc.ht.spl.spacemodel
・コンストラクタ:
SpaceModelManager()
SpaceModeoManagerオブジェクトを生成します.
・メソッド:
void addSpaceModelListener(SpaceModelListener sm_lis)
スペースモデルリスナを登録します.
void deleteSpaceModelListener(SpaceModelListener sm_lis)
スペースモデルリスナを削除します.
SpaceModel getSpaceModel()
最新のスペースモデルを取得します.
void locadSpaceModel(String l_model_file_path, String s_property_file_path)
ファイルパスを指定し、スペースモデルをファイルから読み込みます.
void saveSpaceModel(String l_model_file_path, String s_property_file_path)
ファイルパスを指定し、スペースモデルをファイルに保存します.
○クラス:SpaceModel
・パッケージ:jp.ac.keio.sfc.ht.spl.spacemodel
・メソッド:
LocationModel getLocationModel()
ロケーションモデルを取得する.
Vector getLocationModelSpace()
LocationModelSpaceオブジェクトのVectorを取得する.
int sizeLocationModelSpace()
存在する空間の数を取得する.
java.util.Vector getLocationModelPaht()
空間間に存在する経路のVectorを取得する.
int sizeLocationModelPath()
存在する経路の数を取得する.
LocationModelPath getLocationModelPath(String from_space_id,String to_space_id
)
二つの空間を指定し、LocationModelPathオブジェクトを取得する.
double getDistance(String from_space_id,
String to_space_id)
二つの空間を指定し、空間間の距離を取得する.
SpaceProperty getSpaceProperty()
SpacePropertyオブジェクトを取得する.
Vector getSpacePropertyProfile(String space_id)
空間の識別子を指定し、その空間にいるユーザのプロファイルのVector取得する.
int sizeSpacePropertyProfile()
SpacePropertyProfileの数を取得する.
int getFemaleNum(String space_id)
空間の識別子を指定し、その空間にいる女性の数を取得する.
int getMaleNum(String space_id)
空間の識別子を指定し、その空間にいる男性の数を取得する.