2005年度森基金研究成果報告書

課題名:携帯機器向けアスペクト指向ソフトウェアの構築

政策・メディア研究科 豊田陽一

研究の概要

本研究は携帯機器向けに,実行効率の向上とアスペクトコードの動的織り込みの両立を実現するアスペクト指向プログラミングの機構を提案し,処理系の設計と実装を行う.本研究が提案する処理系では,アスペクトコードの動的織り込みはコンパイラのサポートによって実現される.そのため,アスペクトコード動的織り込みのための実行コストは抑えられ,携帯機器向けアプリケーションに必要な柔軟性を持つことが出来る.

研究成果

システム概要

本節では,コンパイル時にアスペクトの織り込み箇所を決定するアスペクト指向プログラミングシステムの概要について述べる.本システムは,動的なアスペクト織り込みの実行と実行コストの軽減のため,以下の方針によって設計された.

(1) pointcut 定義とadvice 定義の分離

本システムにおいてアスペクトの定義は専用言語を用いて行われ,その際アスペクト適用箇所を決定するpointcut 定義と,具体的に実行する処理を決定するadvice 定義は分離して記述する.これにより,アスペクト記述言語で書く必要があるのはpointcut 定義だけでよく,advice 定義は通常のJava 言語によって記述することが出来る.アスペクト記述言語で書かれたコードは全てコンパイル時に静的に処理するため,実行時に挿入,取り外し,選択が行われるadvice の定義についてはアスペクト記述言語から切り離すことが出来る.

(2) ソースコードレベルの変換

アスペクト記述言語によって定義されたpointcut は,アスペクト適用の対象となるベースプログラムに対してソースコード変換によって埋め込まれる.ベースプログラムはコードトランスレータによってアスペクト記述言語で定義されたpointcut で指示された箇所にアスペクトの挿入や取り外しが可能になるようなコード片を挿入される.コード変換時にコードトランスレータはadvice 定義のためのテンプレートクラスを生成する.

(3) Java クラスローダの利用

アスペクトの挿入,取り外し,選択はJava クラスローダを利用することで実現する.コードトランスレータによって変換されたベースプログラムはpointcut で指示された場所において,advice 定義のテンプレートクラスのメソッドを呼び出す.実際のadvice 定義はこのテンプレートクラスを継承したクラスを定義することによって行う.このようにして定義されたクラスは実行時にクラスローダによってロードされ,ベースプログラムが呼び出すテンプレートクラスと置き換わることで実行される.同じテンプレートクラスを継承したadvice 定義クラスを複数用意すれば,実行時にそれらのクラスをロードすることによって実行する処理を選択することができる.クラスローダの機構は標準のJava 実行環境が持っているものであるため,アスペクトの動的な挿入,取り外し,選択を行うために特別な実行環境を用意する必要がない.

本システムの概要図を以下に示す.

応用事例の開発

位置情報に応じた経路取得アプリケーション

携帯端末上で非常によく使われるアプリケーションの一つとしてWeb ブラウザが挙げられる.出掛けた先でのレストラン情報の検索や,天気予報,終電の時刻表など様々な状況において利用される.ここでは,出掛けた先から帰宅するための支援アプリケーションを作成する.例えば,現在地点から最寄りの駅まで遠いときは地図を表示し,駅の近くに居る場合は路線案内や時刻表のページを表示する.具体的には,目的の情報があるWeb ページのURL を位置情報や登録情報から生成し,そこから必要な情報を取得し,表示を行うアプリケーションを作成する.Web ブラウザの起動はアプリケーションのGUI 内に存在するボタンを押すことで明示的に行う.

アプリケーションの構成要素は,目的地を登録するためのボタン,現在地を更新するためのボタン,現在地から目的地までのルートを計算させるボタン,計算結果を出力するためのフィールドがある.ユーザは目的地を明示的に登録し,現在地を更新することでルートを計算する準備をすることが出来る.現在地の取得方法はGPS デバイスが利用可能かどうかによって,GPS から取得するコードと手動で入力するコードを選択することが出来る.アスペクト指向プログラミングを利用して開発をおこなうと,このようなデバッグコードをアプリケーションコード本体と独立して記述出来るメリットが得られる.

現在地から目的地までのルートの計算は,現在地が駅から近いか遠いかによって行う処理が変わる.駅から近い場合,最寄りの駅を調べ,その駅から目的地までの路線情報を出力する.駅から遠い場合は,最寄りの駅と現在地が表示される地図を出力する.

実行例

以下にアプリケーションの実行例を示す.

上記の図は新宿に居るときに,湘南台駅への経路を検索した実行例である.現在地は西新宿1丁目と新宿駅から少し距離があるため,新宿駅と現在地を含む地図を表示している.

また,上記の図では新宿駅構内で湘南台駅への経路を検索した実行例である.ここでは地図情報ではなく,電車での経路を表示している.

実装環境

本システムを利用する上で,ターゲットマシンに必須となるのがクラスローダを利用することができるJava 仮想マシンが搭載されていることである.そのため,Personal Java もしくはJ2ME5) CDC をサポートする環境である必要がある.本稿では,実装環境にSharp社のZaurus SL-C700 を利用した.ターゲットマシンのスペックを表3 に示す

今後の研究課題

本節では,今後の研究課題を以下の2つの観点から述べる.一つは本課題の発展として,モバイル機器でプログラミング環境を構築する研究に関する問題点である.もう一つは開発したアスペクト指向プログラミングシステムを用いた応用である.筆者が携わっているいくつかの研究プロジェクトにおいて,本システムを適用するメリットについて模索する.

モバイル環境におけるプログラミング環境の構築

モバイル環境において,ユーザの操作履歴を元に,一定の操作履歴群をまとめてそれを再現するためのスクリプト自動生成を行うシステムに関する研究を行う.本システムでは,スクリプトの自動生成とその実行をアスペクト指向プログラミングの機構を用いて実現する.そのため,スクリプト言語を対象とした動的アスペクト指向プログラミングの機構を構築する必要がある.現在のシステムは実行時にコンパイルを行う必要があるJava言語を対象に実装を行っているため,コンパイルを行わないスクリプト言語において適用する事は出来ない.そのため,コンパイラを用いず,実行環境に拡張を加えない動的アスペクト指向プログラミングの機構を構築する必要がある.

応用事例

筆者は本課題の他,以下の研究プロジェクトに関わっており,これらに対して本課題で開発したシステムを適用することで得られるメリットについて考察することが今後の課題である.

ユーザの操作履歴とコンテキストの関連づけよる操作予測システム

携帯電話上におけるユーザの操作履歴をその操作が行われたコンテキストと関連づけ,それらの履歴を元にユーザが次に行う操作を予測し,提案するシステムを開発している.このシステムにおいて,どのアプリケーションのどのタイミングで履歴を取得するか,あるいはどういったセンサーデバイスからコンテキスト情報を取得するか,といった端末やユーザによって変わる要素をアスペクトとして記述し,それを動的に選択できるようにすることで,操作予測システムの開発コストが大幅に下がると考えている.

個人の趣向による情報選択が行えるソーシャルネットワーキングサービス

ソーシャルネットワーキングサービスのユーザが登録した情報を分析し,その情報を元に趣向が近い他のSNSユーザを検索するシステムを開発している.このシステムにおいて,ユーザの情報登録の自動化や情報源からのデータ取得といった処理をアスペクトとして記述することを検討している.ユーザの情報登録は,日記などからの自動抽出や,オンラインショッピングでの購入・閲覧履歴から取得などを考えているが,これらをアスペクトとして記述することで,サービス運用中に無停止でこれらの機能を追加することが出来る.また,情報源からのデータ取得においては,現状では映画データベースから取得しているため,本サービスにおいて登録できる情報が映画に限られている.この情報取得ルーチンをアスペクトとしてきじゅつすることによって,音楽データベースや書籍データベースなどを後から追加することが出来るようになる.

P2P向け掲示板システム

P2Pネットワーク上で掲示板システムを開発している.本掲示板システムでは,あるトピックに関する議論に積極的に参加しているノード間同士の距離が近くなり,近いノード間同士においてのみ情報の一貫性を保つ.これにより,掲示板の一貫性保持のためのコストを大幅に下げることが出来る.トピックの規模やそのトピックにおける参加人数によって,P2Pネットワーク構築のポリシーを動的に変える必要があるが,これらのルーチンをアスペクトとして記述することで,動的により効率的なP2Pネットワークが構築できる.

学会発表

  • 豊田 陽一, 服部 隆志, 萩野 達也:「コンパイル時に織り込み位置を決定する動的アスペクト指向プログラミング」, 情報処理学会 第96回システムソフトウェアとオペレーティング・システム研究会(OS), 2004年6月
  • 遠山 緑生, 豊田 陽一, 加藤 文彦, 服部 隆志:「コンテクスト情報と操作履歴の関連付けによる操作予測システムの提案」, 情報処理学会 第6回ユビキタスコンピューティングシステム研究会(UBI), 2004年11月