(57)【特許請求の範囲】
【請求項１】
移動機器のアプリケーション・プログラムをネットワーク上のサーバで実行させるモバイル・エミュレータ・システムであって、
前記移動機器のアプリケーション・プログラムを動作させるエミュレーション機構と、
前記移動機器のアプリケーション・プログラムの実行を制御する実行制御機構と、
前記移動機器のアプリケーション・プログラムが移動先のネットワークへアクセスできるようにさせるホストアクセス機構と
を備え、モバイル・エージェントとして実現されていることを特徴とするモバイル・エミュレータ・システム。
【請求項２】
請求項１記載のモバイル・エミュレータ・システムをコンピュータ・システムに構築するプログラムを格納する記録媒体。
【請求項３】
請求項１記載のモバイル・エミュレータ・システムをコンピュータ・システムに構築するプログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ソフトウエアの開発・動作試験システムに関するものであり、特に、無線等によりネットワークにアクセスできる携帯端末等で動作するソフトウエアに対して開発・動作試験ができるシステムに関するものである。
【０００２】
【技術的背景】
現在、i-modeに代表される携帯電話や携帯情報機器によるインターネット接続が広く普及している。これらは、いつでもどこでも同じ内容の情報にアクセスできることが目的となっている。一方、IEEE802.11bやBluetoothなどの局所的な無線通信技術が急速に発展しているが、これらの局所的通信技術は携帯機器向けの新しい通信サービスを創出しようとしている。つまり、局所的無線通信やローカルネットワークへの接続は、インターネットなどの大域的な情報サービスの利用を可能にするだけではく、その携帯機器が接続されているネットワーク上のデータベース、プリンタなどの固有サービスが利用可能になる。
【０００３】
上述したように、IEEE802.11bやBluetoothなどの小範囲無線ネットワークやEthernetなどの有線ローカル・ネットワークの普及に伴い、これらの環境の利用を前提とした携帯機器向けのアプリケーションの開発及び動作試験を行う必要がある。こうした機器は移動するごとに計算環境が変わる。従って、別の無線ネットワークエリアや別のローカル・ネットワークに接続したときは、それ以前に利用していたサーバ類は利用できるとは限らず、その代わりに、その場所やネットワーク固有のサーバを利用する必要がある。従って、そのアプリケーション開発では、携帯機器が移動する可能性のあるすべての場所、または接続する可能性のあるすべてのネットワーク上で要求している動作を行うことができるか否かを調べる必要がある。
例えば、現在の携帯端末を利用した案内システムでは広範囲な地図にアクセスできるが、多くの利用者は現在地点に関する案内を要求している。このとき、携帯機器がローカルなサービスにアクセスできれば、行った先々の建物やフロアに設置された局所的無線通信基地局を通じて、その建物やフロア上のサーバに接続して、そのエリアの地図や情報にアクセス可能となる。しかし、これらのネットワークに依存したアプリケーション開発は、アプリケーションとともに携帯端末を移動し、移動先のローカル・ネットワークに接続してアプリケーションの動作試験を行う必要がある。また、案内システムなどでは移動順序に案内内容が依存することから、多様な移動順序でアプリケーションを動作試験する必要がある。その結果、携帯端末を建物やフロア間で移動させることになり、開発者への負担が非常に大きい。
【０００４】
さて、移動計算には物理的移動と論理的移動の２種類がある。前者はコンピュータそれ自体の移動であり、後者はモバイル・コードやモバイル・エージェントなどのソフトウェアがネットワークを通じてコンピュータ間を移動することである。
物理的移動について、図１を用いて説明する。図１は、ネットワークＡ１２０，ネットワークＢ１３０，ネットワークＣ１４０の間を携帯端末（又はモバイル・コンピュータ）１５０が移動するときの様子を示している。物理的移動の問題の一つは、コンピュータの移動に伴い、ネットワークとの切断及び接続先ネットワークが変化することである。図１においては、ネットワークＡ１２０からネットワークＢ１３０へ移動するとき、携帯機器（又はモバイル・コンピュータ）１５０は、ネットワークＡ１２０との接続を切断し、ネットワークＢ１３０と接続する。次にネットワークＢ１３０からネットワークＣ１４０に移動する際には、ネットワークＢ１３０と切断してネットワークＣ１４０と接続する。
このような移動を行うことができるように、ネットワークの変更を吸収し、コンピュータ上で動作するアプリケーションからはその相違を吸収する移動透過性に関する技術がいくつか研究されている。しかし、すべての相違を吸収することは困難であり、さらに現接続先ネットワークに固有なサービスを積極的に利用するアプリケーションも存在するが、ネットワーク変更による計算環境の変化による影響を調べる方法は進んでいない。
【０００５】
一方、アプリケーション開発を目的とした携帯機器のエミュレータが幾つか開発されている。これらはワークステーション上で動作し、携帯機器と同様な動作環境をアプリケーションに提供する。しかし、その多くは携帯機器がもつ制約、つまりＣＰＵパワー不足や、少メモリ、キーボードやディスプレーなどの入出力装置の制限・欠如によって、携帯機器自体によるアプリケーション開発やデバッグが困難であることに対応したものである。従って、ネットワークを介して提供される各種サービスはエミュレータ上では再現されない。
このため、ネットワーク利用を前提にした携帯端末向けアプリケーション開発では２つの方法がある。一つの方法は、開発対象のアプリケーションをそれを動かす携帯端末、またはその携帯端末のエミュレータを提供するモバイル・コンピュータ（可搬型コンピュータ）とともに開発者が移動して、移動先のネットワークに接続させるものである。しかし、開発者への負担が大きく、開発の最終段階以外には利用するべきではない。
【０００６】
もう一つの方法は、ワークステーション上のエミュレータ内でアプリケーションを動作させるとともに、そのエミュレータを介して遠隔ネットワーク上の各種情報サービスへのアクセスを許す方法である。これらにはＵＣバークレーのInfoPadプロジェクトやLancaster大学のネットワーク・エミュレータがある。しかし、Firewallなどのセキュリティ機構により、ローカル・ネットワーク上の各種サーバに外部ネットワークからアクセスできるとは限らない。また、ネットワーク機器やセンサのデータ収集では、ユーザ自身が携帯端末とともに移動し、移動先のローカル・ネットワークを介して、その場所にある各種機器から記録や観測データを収集することになるが、これらのアプリケーションは大データ量となることが多く、ローカル・ネットワーク上の機器とエミュレータのあいだのネットワーク・トラフィックが増大するため実用的とはいえない。
一方、モバイル・エージェントなどの論理的移動は分散システムの効率化・管理手法として近年急速に注目を集めている。しかし、物理的移動のアプリケーション開発手法として論理的移動を利用する事例はない。
【０００７】
【発明が解決しようとする課題】
上記課題を解決するため、本発明の目的は、携帯端末等の移動機器向けのアプリケーションの開発及び動作試験を行う場合において、移動機器自体の物理的な移動ではなく、論理的な移動により試験等を行うことを可能とする環境を提供することである。
【課題を解決するための手段】
上記の目的を達成するために、本発明は、移動機器のアプリケーション・プログラムをネットワーク上のサーバで実行させるモバイル・エミュレータ・システムであって、前記移動機器のアプリケーション・プログラムを動作させるエミュレーション機構と、前記移動機器のアプリケーション・プログラムの実行を制御する実行制御機構と、前記移動機器のアプリケーション・プログラムが移動先のネットワークへアクセスできるようにさせるホストアクセス機構と
を備え、モバイル・エージェントとして実現されていることを特徴とする。
上述のモバイル・エミュレータ・システムをコンピュータ・システムに構築できるプログラムやこのプログラムを記録した記録媒体も本発明である。
【０００８】
【発明の実施の形態】
以下、図面を参照して、本発明の実施形態を説明する。
本明細書では、モバイル・エージェントを利用した携帯機器の開発・試験システムを開示する。これはモバイル・エージェントの論理的移動を通じて携帯機器の物理的移動を擬似的に再現するものである。
このようなモバイル・エージェントは次の必要性を満足すべきものである。
・他のエミュレータと同様に、アプリケーションに対しては対象となる携帯機器の動作環境を再現すること。
・携帯端末の移動・ネットワーク接続を再現するとともに、接続先ネットワーク上のサーバ類への接続を可能とし、アプリケーションに対してはあたかも携帯端末の移動とともにネットワークに接続されているかのように再現すること。
・エミュレータ上で動作試験が行われたアプリケーションは変更や再コンパイルすることなくそのまま携帯機器上でも動作すること。
【０００９】
図２を用いて、本発明のエミュレータを説明する。図２は、試験対象のアプリケーション・プログラム１６０をネットワーク環境（ネットワークＡ等）で、エミュレータ１７０を用いて試験を行うことを示している。図２では、ネットワークＡからネットワークＢへ、ネットワークＢからネットワークＣへ、アプリケーションをエミュレータ１７０とともに移動（イミグレーション）して、試験を行っている。
このエミュレータ１７０はモバイル・エージェントとして実現されるが、他のモバイル・エージェントの枠組みと同様に、携帯端末の移動・接続先となるネットワークには、モバイル・エージェントを移動・実行を可能にするコンピュータが一台以上存在すると仮定する。なお、このコンピュータをアクセス・ポイントと呼ぶ。図２ではアクセス・ポイント１２４，１３４，１４４が示されている。これらのアクセス・ポイント１２４，１３４，１４４は、エミュレータ及びアプリケーションに実行環境を提供するとともに、それが接続されたローカル・ネットワークへの接続を可能にする。つまり、携帯端末のあるローカル・ネットワーク（例えば、ネットワークＡ）から別のローカル・ネットワーク（ネットワークＢ）への移動・接続は、その携帯端末のエミュレータが、そのあるローカル・ネットワーク上のアクセス・ポイントからもう一方のネットワーク上のアクセス・ポイントへの移動（イミグレーション）として実現する。
【００１０】
なお、モバイル・エージェントは、移動先においてそれの実行状態（プログラム変数など）を保持したまま処理を継続することから、エミュレータとともに移動するアプリケーションも、移動先のアクセス・ポイントでは移動前の実効状態から処理を継続する。この結果、アプリケーションからはネットワーク移動にともなう、休止→切断→接続→再開の流れを正確に表現することができる。
ところで、ネットワークを利用するアプリケーションでは移動に際して、接続中のサーバがあればそれらを切断し、移動・接続後は到着したネットワーク上で必要なサーバに接続・利用する必要がある。一方、計算機の休止や再開、そしてネットワークの切断や接続などはオペレーティング・システムやミドルウェアにより管理される。従って、アプリケーション自身がこれらの状態変化を監視することは難しい。このため、そのアプリケーションに対してオペレーティング・システムやミドルウェアから明示的に通知する機構が必要となる。また、コンポーネントなどのソフトウェア部品は複雑なソフトウェア開発では有効であることが知られている。以上から、以下に説明する本発明の実施形態では、各種状態変化に対応したコールバック・メソッドをもつコンポーネントによりアプリケーションを構成する。
【００１１】
エミュレータを実現するためのフレームワークは、次に説明する４つのサブシステムから構成される。
（１）モバイル・エミュレータ(Mobile Agent-based Emulator)
テスト対象となるアプリケーションを運び、移動先のアクセス・ポイント・ホストでは携帯端末自体の動作環境エミュレーションし、さらに移動先のネットワークへの接続を可能にするモバイル・エージェント。
（２）アプリケーション実行システム(Application Runtime System)
携帯端末上で動作し、アプリケーションに対してネットワーク接続・切断やコンピュータの再開・休止の直前直後にイベントを送るミドルウェア。
（３）アクセス・ポイント実行システム(Access Point Runtime System)
移動先ネットワーク上のホスト(アクセス・ポイント・ホスト)であり、モバイル・エージェントによるエミュレータの実行及び移動、そしてそのネットワーク内の各種サーバへの接続を可能にするミドルウェア。
（４）遠隔制御サーバ(Remote Control Server)
エミュレータの移動を管理し、ユーザに対してはインタラクティブな操作を提供する。また、アプリケーションのユーザ・インタフェースを転送・表示して直接操作を可能にする。
【００１２】
現在の実装ではそれぞれはＪａｖａ言語により実装している。なお、このフレームワーク対象となる携帯端末は、移動中に発生可能性のある落下などによるトラブルや、バッテリ消耗を防ぐため、稼働したまま別のネットワークに移動・接続することはないとする。つまりネットワーク切断・移動中は休止状態か、稼働していても短時間であると仮定する。また、エミュレータ上のアプリケーションがネットワークとＴＣＰ接続する場合は、アプリケーションはＴＣＰクライアント側と仮定する。
【００１３】
図３は、アクセス・ポイント・ホスト上でのエミュレータの構成を示している。アクセス・ポイント・ホスト内では、ハードウエア２１０上のオペレーティング・システム（ＯＳ）２２０，Ｊａｖａ言語で実装する場合のＪａｖａを実行するための仮想マシン２３０が存在している。この上にあるモバイル・エージェント実行システム２４２およびエミュレータ・ランタイム２４４は、上述のモバイル・エミュレータを実行するためのアクセス・ポイント・ランタイム・システムである。この上にエミュレータ２５０がある。以下に、エミュレータの構成を詳しく説明する。なお、図３で網掛け部分が新しく開発された部分である。
【００１４】
＜アプリケーション・プログラム（図３：２６０）＞
携帯機器はネットワークの切断・接続、そして休止状態となることがある。
従って、携帯端末上で実行されるアプリケーションは
・動作中かつネットワークに接続されている状態
・動作中だがネットワークが切断されている状態
・実行状態を保持しまま動作を休止している状態
・シャットダウンされて停止している状態
の４つの実行モードをもつ。そのため、エミュレータを用いる場合でも、以下の４つの状態を有している。
（１）単独実行モード(isolated running)
アプリケーションはエミュレータ内で動作中であるが、ネットワーク上のホストと通信が禁止されている状態。これは携帯端末が稼働しながらネットワーク切断及び移動を行っている状態である。
（２）接続実行モード(networked running)
アプリケーションはエミュレータ内で動作中、かつ、ネットワーク上のホストと通信が許されている状態。これは携帯端末が稼働中かつネットワークに接続されている状況に相当する。
（３）休止モード(suspended)
アプリケーションはその実行状態を保持したまま停止した状態であり、再び実行するときはその実行状態から再開される。
（４）停止モード(terminated)
アプリケーションの実行が停止した状態である。エミュレータ自体はアプリケーションの実行状態を記録したログなどを保持している。
【００１５】
これらの実行モードの変更に際して、エミュレータからアプリケーションに明示的にその変更を通知する必要がある。アプリケーションは、下記のインタフェースApplicationListenerの実装クラスとなり、モバイル・エージェント内のエミュレータ、または携帯端末上のアプリケーション実行システムによって、インタフェース内に定義されたメソッドが呼び出される。
1: interface ApplicationListener
2: extends AgentEventListener {
3: void create(URL url); // after creation at url
4: void connect(URL url); // before connecting to the network
5: void disconnect(); // after disconnecting from the network
6: void suspend(); // before suspending
7: void resume(); // after resumed
8: void destroy(); // before termination
9: ....
10: }
【００１６】
各メソッドの呼び出しタイミングと、アプリケーション開発者が記述すべき処理内容は下記の通りである。
（１）メソッドcreate( )は、アプリケーションが生成されたときに一度だけ呼び出される。このメソッド内にアプリケーション生成時に行うべき処理を定義する。
（２）メソッドconnect( )は、携帯機器がネットワークに接続されて、アプリケーションがネットワーク利用可能となった直後に呼び出される。引数は接続先におけるネットワーク・アドレスとなる。ここには、アプリケーションがネットワーク利用可能となる際に行うべき処理を定義する。
（３）メソッドdisconnect( )は、携帯機器がネットワークから切断された際に呼び出される。このメソッドには、アプリケーションがネットワークから切断される際に行うべき処理を定義する。
（４）メソッドsuspend( )は、休止モードに移行するときに呼び出される。ここにはアプリケーションが携帯機器とともに休止状態になる際に必要な処理を記述する。
（５）メソッドresume( )は、データ化されたアプリケーションがメモリにロードされて、単独実行モードに移行した直後に呼び出される。アプリケーションが携帯機器とともに休止状態から動作を再開する際の処理を定義する。
（６）メソッドdestroy( )は、アプリケーションが終了する直前に呼び出される。従って、アプリケーションの終了処理をこのメソッド内に定義する。
【００１７】
＜モバイル・エージェント実行システム（図３：２４２）＞
各アクセス・ポイント・ホストには、エミュレータの移動や実行を行うモバイル・エージェントの実行システムにおいて動作させる必要がある。実装では、発明者が開発したＪａｖａ言語ベースのモバイル・エージェント・システムAgentSpaceを利用している。ただし、このフレームワーク自体はAgentSpaceに依存するものではなく、下記を満足するものであればよい。
（１）エージェントはＪａｖａ言語によりプログラムされ、Ｊａｖａ言語オブジェクトとして実行できる。また、同時に複数のエージェントを実行すること。
（２）エージェントのコンピュータ間移動では、エージェントのプログラム・コードとともに、エージェント・プログラムのインスタンス変数などの実行状態を移動先のコンピュータに転送し、到着後はその実行状態から動作を再開すること。
（３）実行システムはエージェントのライフサイクル状態の変化（生成直後、移動直前、移動直後、停止直前）において、そのエージェントに用意したコールバック・メソッドを呼び出せること。
（４）エージェントはセキュリティ制限が許されれば、アクセス・ポイント・ホストのネットワーク及びファイル機能が利用できること。
（５）このほか、エージェントのコード及び実行状態の転送では、Ｗｅｂページの転送に用いるＨＴＴＰプロトコルまたは電子メールの転送に用いるＳＭＴＰプロトコルにより転送できると、ファイアウオールなどのネットワーク保護機構が利用されているネットワーク環境でもトンネリング転送によりエージェント移動が可能となる。
なお、これらの機能要求は既存のＪａｖａ言語ベースのモバイル・エージェント・システムの多くが満足し（例えば、ＩＢＭのAglets、ObjectSpace Inc.のVoyager）、容易に移植することができる。
【００１８】
＜エミュレータ（図３：２５０）＞
エミュレータ２５０は、モバイルエージェントの内部に実現され、アクセス・ポイント・ホスト上のエージェント実行システム上で動作する。また、一つのアプリケーションは一つのエミュレータの内部で動作する。各エミュレータは、図３に示すように、次の３つの部分から構成される。
（１）コールバック・メソッド群（図３：２５２）
コールバック・メソッド群２５２は、エージェントのライフサイクル状態の変更に応じて実行システムから呼び出されるメソッド群である。これらが呼び出されるとアプリケーションの実行モード(後述)を変化させる。例えば、エージェントの生成後はアプリケーションを独立実行モードにする。移動直前にはアプリケーションを休止モードにし、逆に移動直後には休止モードから独立実行モードに状態を遷移させる。
（２）アプリケーションの実行制御機構（図３：２５４）
アプリケーション・プログラムの実行モードを管理して、実行モードの変化に応じて所定のメソッドを呼び出す。また、ユーザからの明示的な指示にも従って、アプリケーション・プログラム側メソッド呼び出す。
（３）携帯端末エミュレーション機構（図３：２５６）
携帯端末のアプリケーション・プログラムを動作させる部分であり、携帯端末と同様のＣＰＵ命令セット、メモリ、キーボードや画面などの入出力環境をアプリケーション・プログラムに対して提供することにより、アプリケーション・プログラムがあたかも携帯端末で実行しているかのように動作させるものであり、携帯端末の種類毎に用意される。
（４）ホストアクセス機構（図３：２５８）
このエミュレータ部分は、移動先のネットワークへのアクセスを許すことにより、そのネットワーク固有の情報や計算資源を利用することを可能にしている。これは、ネットワークや画面、キーボードなどを利用するためのＪａｖａ言語のＡＰＩ群からなり、各ＡＰＩはホスト側の対応した機能を呼び出すことにより実現する。
さて、コールバック・メソッド群は、エージェントを構成するＪａｖａ言語クラスとして定義される。そして、アプリケーションの実行制御機構と携帯端末エミュレーション機構はＪａｖａ言語クラスであり、エミュレータの生成直後に対応するコールバック・メソッド内でオブジェクトとして生成される。
以下に、Ｊａｖａ言語クラスとして実装された場合について、ぞれぞれ詳しく説明する。
【００１９】
＜コールバック・メソッド群（図３：２５２）＞
エミュレータ・エージェントは、下記に示したようなAgentSpaceなどのＪａｖａ言語ベースのモバイル・エージェント・システムにおけるAgentを定義するクラスを継承することによって実装される。例えばAgentSpaceのモバイル・エージェントの抽象クラスは下記となる。
1: public abstract class Agent {
2:
3: /*サービスメソッド*/
4: //アクセスポイントホストの情報及び計算資源にアクセスする
5: Service getService(Message msg) throws NoSuchSeviceException ... { ... }
6: //他のエージェントにメッセージを送信する
7: Object call(AgentURL url, Message msg)
8: throws NoSuchAgentException ... { ... }9: // url に示されたアクセスポイントホストに移動する
10: void go(AgentURL url) {...}
11: throws NoSuchAgentException ... { ... } //
12:
13: /*エージェント実行システムから呼び出されるコールバック・メソッド*/
14: void create(URL url); //生成された直後に呼ばれる
15: void leave(URL dst); //アクセスポイントホストから移動する直前に呼ばれる
16: void arrive(URL src); //アクセスポイントホストに到着した直後に呼ばれる
17: void suspend( ); //エージェントをデータ化する直前に呼ばれる
18: void resume( ); //データ化されたエージェントが活性化された直後に呼ばれる
19: void destroy( ); //エミュレータ終了直前に呼ばれる
20: ....
21: }
【００２０】
エミュレータ・エージェントのプログラムは、エージェントのライフサイクル状態が変化する際にエージェント実行システムによって呼び出される下記のコールバック・メソッド(create，leave，arrive，resume，suspend，destroy)をオーバーライトして、状態変化時にエミュレータを行うべき処理をそれぞれのメソッド本体として、次のように定義する。
（１）create(AgentURL url)
アプリケーションの実行制御機構及び携帯端末エミュレーション機構を定義したクラスをオブジェクト化するとともに、アプリケーションをロードする。その次に、アプリケーション側のcreate()を呼び出して、アプリケーションの実行を開始する。
（２）leave(AgentURL dst)
他のアクセスポイントホスト上に転送するための準備を定義する。具体的にはアプリケーション実行制御機構を通じてアプリケーションが接続実行モードであれば単独実行モードに変更する。また、ホストアクセス機構を通じて利用していたソケットなどのネットワーク機能を利用不可にする。
（３）arrive(AgentURL src)
他のアクセスポイントホスト上に転送すための準備を定義するものであり、アプリケーションに対しては接続実行モードが禁止されていれば移行可能にするとともに、ホストアクセス機構の利用を可能にする。
（４）suspend( )
エミュレータがデータ化される直前に呼ばれることから、アプリケーションを休止状態に移行させるとともに、アプリケーションとエミュレータがデータ化される際の準備として、携帯端末エミュレーション機構を通じて利用していた画面などの入出力を終了させるとともに、スレッド停止なども行う。
（５）resume( )
データ化されていたエミュレータが再びエージェントに戻される際に必要な処理を定義する。これにはエミュレータの携帯端末エミュレーション機構の再開や処理用スレッドの機動が含まれる。また、アプリケーションに対しては休止モードから独立実行モードに移行させる。
（６）destroy( )
エミュレータを終了させるための処理を記述するものであり、携帯端末エミュレーション機構やホストアクセス機構を終了させる。また、アプリケーションが実行中であれば終了させる。
なお、エージェント実行システムの各種サービス利用のＡＰＩ(getService( ))、エージェント間通信のAPI(call( ))、エージェントの移動命令のＡＰＩ(go( ))などのモバイル・エージェントの基本API はそのまま利用する。
【００２１】
＜アプリケーション実行制御機構（図３：２５４）＞
アプリケーション実行制御機構２５４は、Ｊａｖａ言語プログラムとして実現された場合、その内部で、アプリケーションを内部オブジェクトして保持するとともに、そのアプリケーションの動作モードを内部変数として管理する。そして、動作モードの変更時には処理を行うとともに、下記の表に従ってアプリケーション側に用意されたメソッドを呼び出す。
【表１】
アプリケーションの実行モード移行と呼び出されるメソッド
0004020359.tif 000002
各エミュレータは、後述するコントロール・サーバの明示的な指示またはそれ自身の移動経路に従って次の移動先となるアクセス・ポイント・ホストを決定する。前者は到着ごとにコントロール・サーバに現在のホスト名を通知してユーザからの指示を待ち、その指示に従ってアプリケーションとともに移動を行う。自身の移動経路は移動を自動化するものであり、アクセス・ポイント・ホスト名、滞在時間、到着時にアプリケーションに送るイベント名の３項組のリストにより、そのリストの順にアプリケーションとともに移動し、上記のメソッドを所定のタイミングで呼び出す。
【００２２】
＜携帯端末エミュレーション機構（図３：２５６）＞
携帯端末の動作を再現するためには、携帯端末が提供するＣＰＵ命令セット、メモリ、キーボードや画面などの入出力環境をアプリケーション・プログラムに対して提供して、アプリケーション・プログラムがあたかも携帯端末で実行しているかのように模倣する。
（携帯機器のＣＰＵ及びメモリの再現）
携帯端末とエミュレータを実行するアクセス・ポイント・ホストの計算機のＣＰＵ及びメモリ・アーキテクチャは相違することが多い。携帯端末向けに開発されたアプリケーションを実行するため、携帯端末側のＣＰＵ及びメモリの動作を模倣して、アプリケーション・プログラムの実行を可能にするインタープリタを提供する。これはアプリケーション・プログラム中の命令セットを読み込むとともに、同様の命令に対して携帯機器のＣＰＵと同様の動作をソフトウェアとして実現することにより、アプリケーション・プログラムの動作を擬似的に再現する。ただし、今回の実装ではＪａｖａ言語によるアプリケーション・ソフトウェアを対象としている。このため、アプリケーション・ソフトウェアはＪａｖａ言語の命令セットによるプログラムとなるが、このとき携帯端末と各アクセス・ポイント・ホストの両方に、この命令セットを解釈実行するＪａｖａ言語の仮想機械を用意することにより、ソフトウェアを変更をすることなく両環境で動作できるようになる。
【００２３】
（携帯機器の各種機器の再現）
次に入出力であるが、キーボード、マウスなどポインティング入力装置、画面、音声などの標準的な入出力装置に関しては、携帯機器及びアクセス・ポイント・ホストのどちらにおいてもＪａｖａ言語側で標準機能として用意されている入出力用ライブラリ（ＡＰＩ群）を利用する。このため、入出力装置の相違はこの標準ＡＰＩ群で吸収されている。なお、携帯機器は画面サイズの制限やキーボードの未整備などユーザインタフェースに対する制限が多い。そこで携帯機器のユーザ・インタフェースの動作をアクセス・ポイント・ホスト上で再現するＪａｖａ言語用ライブラリ群を用意する。また、ファイル・システム及びネットワークに関してもライブラリ群を用意して、携帯機器の動作を再現する。
（１）ユーザ・インタフェース
携帯機器のユーザ・インタフェースには制限が多い。例えば画面のサイズや解像度、キーボードやマウスの有無など一般のＰＣが装備している入出力機器を保持しているとは限らない。このため、携帯機器向けのアプリケーションは制限された入出力機器を前提にテストを行う必要がある。そこで例えば、画面サイズや入力装置を制限したエミュレータの基本クラスである、小型のノートＰＣに相当する機器のエミュレータ・クラス、ハンディ型ＰＤＡに相当する機器のエミュレータ・クラス、タッチパネルによるタブレットＰＣに相当する機器のエミュレータ・クラスの３つの基本クラスを提供する。これらはＪａｖａ言語のウィンドウ用クラス(java.awt.Window)のサブクラスとして定義され、ウィンドウのサイズに携帯機器に相当する画面サイズの制限を加えたものである。また、Ｊａｖａ言語のユーザ入力再現用クラス(java.awt.event.Robot)を利用することにより、マウスなどのポインティング・デバイスとキーボードの動作を制限している。そして、実際の携帯機器向けのエミュレーションではこれらの基本クラスを拡張することにより実現する。また、後述するグラフィック遠隔転送システムにより、開発者は手元のコンピュータで表示・操作が可能である。
（２）ファイル
エミュレータはコンピュータ間を移動するため、アプリケーションはコンピュータ上のファイル・システムにファイルを保存することは難しい。そこで、エミュレータはその内部にファイル・システムに相当するデータベースを持っている。これは各ファイルをファイル名(ディレクトリ名を含む)とファイル・コンテンツの組としたハッシュ・テーブルとして実現されている。従って、ファイル名に従ってそれに対応したコンテンツを容易に取り出すことができる。このほか、ファイル生成、書き出し、消去、ファイル名の変更などの基本操作を提供するファイル操作クラスをアプリケーションに提供する。このデータベースはエミュレータの移動前後もそのまま保存されるので、エミュレータが終了するまではファイルは保持されることになる。
（３）ネットワーク
エミュレータとともにコンピュータ間を移動するとき、アプリケーションはネットワークを切断し、到着後に再接続する必要がある。しかし、一つのコンピュータ内で実行されている間、アプリケーションは通常のようにネットワークを利用することができることから、Ｊａｖａ言語側で用意されているソケット用ＡＰＩや遠隔オブジェクト・メソッド呼び出し機構（ＲＭＩ）をそのまま利用する。なお、コンピュータ間移動に際してアドレスが変更になるが、携帯機器で利用されるアプリケーションはクライアント側となることがほとんどである。従って、アドレスが変更になっても制約となることは少ない。
【００２４】
＜携帯機器用アプリケーション実行システム（図示せず）＞
アプリケーション実行システムは、携帯機器上のＪａｖａ言語仮想機械上で動作するミドルウェアであり、Ｊａｖａ言語プログラムとして実現されている。アプリケーションは、この実行システム内の内部オブジェクトとして保持され、実行システムが提供する環境の中で動作することになる。
なお、この実行システムは携帯機器のＯＳを通じて携帯機器がネットワークに接続されているかの有無や、休止状態になっているかを調べる。そして、携帯機器の状態が変化したときには、アプリケーション側に用意された下記のメソッドを呼び出す。
【表２】
携帯端末の状態変更に際して呼び出されるアプリケーション側メソッド
0004020359.tif 000003
ここで、ロード前とはアプリケーションが起動される前の状態を、終了とはアプリケーションが終了されたときをさす。
このほか、エミュレータが提供するファイル操作クラスなどと互換性をもつ実行ライブラリをアプリケーションも提供する。この結果、エミュレータ上でテストされたアプリケーションは修正や再コンパイルをすることなく、携帯機器上のアプリケーション実行システム上でも動作させることができる。
【００２５】
＜アクセス・ポイント・ホスト＞
アクセス・ポイント・ホストは、携帯機器が移動・接続するネットワークに一つ以上のワークステーション上に用意され、Ｊａｖａ言語仮想機械とモバイル・エージェントの実行システムの動作環境を提供する。また、エージェント移動及びアプリケーションに対してネットワーク接続を可能にする。ただし、ワークステーションに特別なハードウェアなどは必要としない。なお、多くのアプリケーションはグラフィカル・ユーザ・インタフェース（ＧＵＩ）を持つことが多く、これらを介したアプリケーションのテストが必要となる。ＧＵＩを開発者の手元のコンピュータで表示・操作するために、ＩＢＭのRemote Abstract Window Toolkit(RAWT)（例えば、International Business Machines Corporation, "Remote Abstract Window Toolkit for Java", http://www.alphaworks.ibm.com/, 1998.）を利用する。これはアクセス・ポイント・ホスト上のグラフィックをコントロール・サーバ上に動かしたRAWT Server に転送し、コントロール・サーバの入力をアクセス・ポイント・ホストに転送する。この結果、コントロール・サーバ上からＧＵＩを介した表示・操作が可能となる。
【００２６】
＜エミュレータ・コントロール・サーバ＞
エミュレータ・コントロール・サーバは各アクセス・ポイント・ホストを管理するとともに、エミュレータを制御する。各アクセス・ポイント・ホストは、エミュレータの到着直後及び移動直前にこのサーバに通知することにより、エミュレータの存在場所を調べることができる。また、サーバからエミュレータに対して、実行状態の問い合わせ及び、移動や実行モードの変更を指示するメッセージを送ることができる。メッセージの送信はＷｅｂに用いるＨＴＴＰを利用して、ＨＴＴＰリクエストとして、アクセス・ポイント・ホスト上のＨＴＴＰサーバに送られる。このサーバはエージェント実行システムを介してエージェントにメッセージを転送する。
【００２７】
図４は、エミュレータ・コントロール・サーバ上に表示されるエミュレータを制御するための画面の例である。この画面３００で、モバイル・エミュレータを操作することができる。以下に、この画面３００について説明する。
（１）エミュレータの設定変更・表示用のメニュー（図４：３０１）
このメニューにより、エミュレータ自体の終了や移動に用いるプロトコルの設定を行う。
（２）移動可能なネットワークの一覧（図４：３０２）
この表示欄３０２では、携帯機器の移動・接続先となるネットワークを一覧することができる。
（３）移動可能なネットワークの登録・削除ボタン（図４：３０３）
移動可能なネットワークの管理として、一覧３０２に表示されている各ネットワーク上のアクセス・ポイント名の登録(add)・削除(remove)を行う。
（４）移動順序リスト（図４：３０６）
この表示欄３０６に表示されている各項目は、エミュレータを移動させるネットワーク（上述のアクセス・ポイント）であり、上から下の順で移動する。
（５）移動順序経路の選択・削除ボタン（図４：３０４）
このボタンをクリックすることで、移動可能なネットワークの一覧３０２に登録されているネットワーク（上述のアクセス・ポイント）から、移動順序リスト３０６に表示されている実際に移動するネットワークを選択(append及びinsert)または削除(delete)する。
（６）移動順序変更ボタン（図４：３０５）
このボタンをクリックすることで、移動順序リスト３０６に表示されているネットワークの移動順序を入れ替えることができる。「up」ボタンでは移動順序リスト上選択したネットワーク名を一つ上の項目と入れ替え、「down」ボタンでは一つ下の項目と入れ替える。
（７）移動開始ボタン（図４：３０７）
エミュレータを移動順序リスト３０６に従って、ネットワーク（上述のアクセス・ポイント）の移動を開始させる。つまり、アプリケーションが携帯機器とともに移動した状態を再現している。
（８）移動停止ボタン（図４：３０８）
移動順序リスト３０６に従って移動中のエミュレータの移動を停止させる。
（９）ステップ移動ボタン（図４：３０９）
このボタンをクリックすることで、移動順序リスト３０６に従ってネットワーク（上のアクセスポイント）を一つずつ移動させることができる。
（１０）ネットワーク接続ボタン（図４：３１０）
このボタンをクリックすると、アプリケーションがエミュレータを介して移動先のネットワークへのアクセスを許す。つまり、アプリケーションが携帯機器とともに移動し、移動先のネットワークに接続した状態を再現する。
（１１）ネットワーク切断ボタン（図４：３１１）
このボタンをクリックすると、アプリケーションがエミュレータを介して移動先のネットワークへのアクセスを再び禁止する。
（１２）エミュレータ対象機器の設定（図４：３１２）
エミュレータが模倣する携帯機器の種別を、登録してある機種から選択して設定する。ここでは例えば、ノートＰＣ、タブレットＰＣ、ＰＤＡの３つが選択可能である。
（１３）エミュレータ対象機器のディスプレー・サイズの設定（図４：３１３）
エミュレータが模倣する携帯機器のディスプレー・サイズを設定する。例えば、１２０ｘ１６０，３２０ｘ２４０，６４０ｘ４８０，８００ｘ６００，１０２４ｘ７６８の中から選ぶことができる。
（１４）エミュレータの存在位置（図４：３１４）
エミュレータが現在存在するネットワーク名を表示している欄である。
（１５）アプリケーション実行状態（図４：３１５）
この欄には、アプリケーションの現在の実行状態、つまり単独実行モード、接続実行モード、休止モード、停止モードを表示する。
（１６）エミュレータの実行履歴表示ボタン（図４：３１６）
このボタンをクリックすると、エミュレータが移動・接続したネットワーク及びアプリケーションの属性情報及び実行状態の履歴を表示するウィンドウを開くことができる。
（１７）エミュレータの設定表示ボタン（図４：３１７）
このボタンをクリックすると、エミュレータの設定一覧を表示するウィンドウを開くことができる。
（１８）アプリケーション一覧リスト（図４：３１８）
この欄では、エミュレータ内で実行できるアプリケーションの一覧名を表示している。この欄でエミュレータで実行するアプリケーションを選択することができる。
（１９）アプリケーション実行開始ボタン（図４：３１９）
このボタンをクリックすると、アプリケーション一覧リスト３１８で選択したアプリケーションの実行を開始することができる。
（２０）アプリケーションのロードボタン（図４：３２０）
アプリケーションをエミュレータ内に取り込み、アプリケーション一覧リスト３１８にそのアプリケーション名を登録することができる。
（２１）アプリケーションの休止ロードボタン（図４：３２１）
このボタンをクリックすることで、アプリケーション一覧リスト３１８で選択した実行中アプリケーションの実行を休止させる。
（２２）アプリケーションの再開ロードボタン（図４：３２２）
このボタンをクリックすることで、アプリケーション一覧リスト３１８で選択した、休止中のアプリケーションの実行を再開させることができる。
（２３）アプリケーションの再開ロードボタン（図４：３２３）
このボタンをクリックすることで、アプリケーション一覧リスト３１８で選択したアプリケーションを終了させることができる。
【００２８】
上述するように、本発明では、モバイル・エージェント手法を導入することにより、コンピュータの物理的な移動を行う代わりに、そのコンピュータで動作するアプリケーション・ソフトウェアだけをネットワークを通じて論理的に移動させている。ここで、モバイル・エージェントとはコンピュータ間を移動しながら処理を行っていく自律的なソフトウェアであり、移動先のコンピュータでは変数内容などの実行状態は移動前と同じとなるので、移動先で処理を継続することができる。この結果、エミュレータ上のアプリケーションは計算機自体が移動したかのように扱われる。
本発明では、このモバイル・エージェントに各種の携帯端末、例えばノートＰＣやＰＤＡ、携帯電話が提供するローカルな実行環境エミュレータをモバイル・エージェントとして実装する。そして、このエージェントのコンピュータ間移動性を通じてアプリケーション・ソフトウェアを遠方のコンピュータに移動・実行させて動作実験を行えるようにする。これにより、開発者はコンピュータを実際に移動させることなく、携帯端末の移動に伴う、ネットワークから切断・再接続する過程を正確に仮想的に行える。さらに、このエミュレータ上で動作するプログラムを実際のモバイル・コンピュータ上でも一切の変更・再コンパイルを行うことなく動作できるようにする。
なお、上述ではＪａｖａ言語を用いて実装したが、本発明を実現するためのプログラム言語は何を用いてもよい。
【００２９】
【発明の効果】
本発明により、端末自体の物理的な移動ではなく、論理的な移動により代用する環境を提供することができる。
これにより、IEEE802.11bやBluetoothなどの小範囲無線ネットワークやEthernetなどの有線ローカル・ネットワークの利用を前提とした携帯機器向けのアプリケーションの開発及び動作試験が容易になる。
【図面の簡単な説明】
【図１】携帯端末が物理的にネットワークを移動することを説明する図である。
【図２】エミュレータが論理的にネットワークを移動することを説明する図である。
【図３】アクセス・ポイント・ホスト内のエミュレータ構成を示す図である。
【図４】モバイル・エミュレータを制御するための画面を示す図である。
【符号の説明】
１２０，１３０，１４０  ネットワーク
１２２，１３２，１４２  ローカル・サーバ
１２４，１３４，１４４  アクセス・ポイント・ホスト
１５０          携帯端末
１６０          アプリケーション・プログラム
１７０          モバイル・エミュレータ
【図１】
0004020359.tif 000004
【図２】
0004020359.tif 000005
【図３】
0004020359.tif 000006
【図４】
0004020359.tif 000007