|

本プロジェクトでは,
センサデータを抽象化し,アプリケーション開発者の負担を軽減するミドルウェアを,センサリッチ携帯端末Muffinを用いて開発した.ミドルウェアは,
ユーザの状況を表すコンテキストを取得するインタフェースを,(1) センサデータを抽象化する解析モジュール,(2)
コンテキストを管理するデータベース,(3)
イベント通知システムの3つのコンポーネントにより提供する.ミドルウェアはMuffinだけでなく,ウェアラブルデバイスCookieにも対応し,アー
キテクチャ非依存型の設計になっているのが特徴である.図2.9.1 Muffinと図2.9.2 Cookie これを腕時計やベルトに埋め込む
に,MuffinとCookieをそれぞれ示す.
図 2.9.1 Muffin
図 2.9.2 Cookie これを腕時計やベルトに埋め込む
開発成果の詳細は以下の通りである.
(1) 全体およびAPIの設計
ミドルウェアは大きく分けて3つのコンポーネントから構成される.(1) センサデータを解析しコンテキストを生成するWorker,(2)
コンテキストを貯蓄するDatabase,そして (3)
DatabaseとWorkerの通信を担い,アプリケーションにイベント通知を行なうDaemonである.図2.9.3
ミドルウェアのアーキテクチャにミドルウェアのアーキテクチャを示す.
図 2.9.3 ミドルウェアのアーキテクチャ
(2) 解析モジュール (Worker)の開発
各Workerは,センサ値や他のWorkerが生成したコンテキスト情報を用いてコンテキストを解析した結果をDaemonを介しデータベースに記録
する.
本プロジェクトではユーザの行動コンテキストに着目し,個人端末を通じてコンテキストを取得するWorkerを複数種実装した.これらのWorkerは
図2.9.4 実装したWorkerの階層関係
に示すような階層関係をなす.これは解析Workerを実装する複雑さを軽減するために,1つのWorkerが行なう解析や出力結果をできるだけ単純化
し,コンテキストの抽象化を段階的に行なった結果である.
段階的に抽象化を行なったWorkerの例は,図2.9.4に示した「ユーザがデバイスを見ているかどうか」を判定するSeeing
Workerである.Seeing Workerは,「ユーザがデバイスを持っているかどうか」を解析するHolding
Workerと,「デバイスの向き」を解析するTopside Workerの解析結果からコンテキストを判定する.Seeing
Worker内で「ユーザがデバイスを持っているかどうか」と「デバイスの向き」という2つの解析を行なうことも可能だが,本プロジェクトでは2つの
Workerに機能分割した.こうすることで各Workerの汎用性が高まり,実装の複雑さを軽減できる.
また,図2.9.4を見てもわかるように同じ情報を得るセンサも複数用いた.こうすることにより各種センサをTPOに応じて適材適所で活用できるからで
ある.たとえば,GPSを用いた解析Workerは精度と分解能は高いが,GPS衛星を受信できるときだけ有効である.Muffinのみを用いた解析で
は,ユーザがMuffinから手を離した瞬間から解析結果に対する信頼性が低くなる.このときはウェアラブルデバイスCookieからセンサ値を入力され
る解析Workerの重要性が増す.しかし,Cookieはユーザの雑多な動きを捉らえてしまうため,扱いが難しい.
図 2.9.4 実装した Worker の階層関係
(3) データベースの開発
データベースには組み込み用データベースSQLiteを用いた.SQLiteはC言語で記述されており,サイズが小さいのが特徴である.複数の
WorkerからのSQLiteへのアクセス衝突を回避するために,アクセスはすべてDaemon経由とした.
(4) イベント通知システム (Daemon) の開発
Daemonはデータベースへのアクセス制御を行なうと同時に,コンテキストに変化があった際にアプリケーションに通知する役割を担う.このためのプロ
セス間通信には名前付パイプを用いた.
(5) 評価アプリケーションの開発
IM (インスタントメッセンジャー)
における仲間の状態変更通知と,メディアプレイヤの操作にコンテキストを活かす2つのアプリケーションを作成した.後者についてここで紹介する.
既存のメディアプレイヤであるTotemを改良し,ミドルウェアから得られるコンテキストを利用して,メディアプレイヤ操作の補助を行なえるようにし
た.このアプリケーションはSeeingとWalkingというコンテキストを利用する.Seeingを利用することで,ユーザが端末を見ているときには
再生の状態に,そして,ユーザが端末から目を放すと一時停止の状態になる.また,Walkingを利用することで,ユーザが歩いている状態では,聞こえや
すくするために音量を大きくする.このアプリケーションの開発では,Workerの階層構造がコード量の節約に役立つことが実証された.
これに加えて,獲得したコンテキスト変化をウィジェットの操作にマッピングするGUIウィジェットを開発した.これにより,コンテキストの変化であたか
も自動的にボタンが押されたような振舞をメディアプレイヤにさせることができる.ここでもミドルウェアにしたことによるメリットが顕著である.つまりメ
ディアプレイヤのアプリケーションにとっては,実際にボタンが押されたのか,コンテキスト変化でボタンが押されたように見えたのか区別する必要がないから
である.図2.9.5 コンテキストに応じてボタンが「押される」メディアプレイヤ
に実装したメディアプレイヤの写真を示す.このメディアプレイヤは水平にすると一時停止するが,見ているような角度に立てると再生になる.また右に傾けれ
ば早送り,左に傾ければ巻き戻しになる.
このほかにも最終報告会では,Muffinと4個のCookie (Workerは全部で9個)
をフル装備した女性が椅子に座っていて「読んでいる」,「デバイスを見ている」,「寝ている」,「単に座っている」のコンテキストを判別するビデオデモが
披露された (図2.9.6 この女性は仕事をちゃんとしているか?).
図 2.9.5 コンテキストに応じてボタンが「押される」メディアプレイヤ
図 2.9.6 この女性は仕事をちゃんとしているか?

|