(57)【特許請求の範囲】
【請求項１】
通信ネットワークを介して、配信サーバから利用者端末ヘ配信されたアプリケーションを、前記利用者端末において再開する際に、前記利用者端末からの前記アプリケーションの転送要求に応答して、配信サーバが前記アプリケーションの最新の実行状況を示す実行データに基づいて、前記アプリケーションを最適化して前記利用者端末に配信することで前記利用者端末において最新の実行状況から前記アプリケーションを再開する配信システムにおいて、
前記配信サーバは、
各前記利用者端末の利用者を認証する利用者認証部と、
前記アプリケーションの最適化前のプログラムコードを管理するプログラムコード管理部と、
各前記利用者端末における前記アプリケーションの実行状況を示す実行データを保存する実行データ管理部と、
各前記利用者端末において前記アプリケーションが用いる設定ファイル及びデータファイルである利用者データを管理する利用者データ管理部と、
前記利用者端末から、前記通信ネットワークを介して、前記アプリケーションの前記実行データ及び前記利用者データを取得して、それぞれ実行データ管理部と利用者データ管理部へ登録する手段と、
前記実行データに基づいて前記アプリケーションの前記最適化前のプログラムコードを最適化し、最適化されたプログラムコードを生成するコード最適化部であって、
前記コード最適化部は、前記プログラムコード管理部に管理された前記最適化前のプログラムコードを取得し、前記実行データ管理部により保存された当該アプリケーションの配信先の利用端末における前記実行データを取得し、取得された実行データにより示された前記アプリケーションの最新の実行状況に基づいて、取得された前記最適化前のプログラムコードから配信先の利用端末において実行されることのない部分を特定して削除することにより、実行される可能性のあるコードのみを含んだ当該アプリケーションのプログラムコードを新規に生成するコード抽出手段と、
前記コード抽出手段が生成した、前記アブリケーションの新規のプログラムコードを圧縮することにより、当該アプリケーションの圧縮された新規のプログラムコードを生成するコード圧縮手段と、
前記コード圧縮手段が生成した、前記アプリケーションの新規のプログラムコードを、当該アプリケーションの最適化されたプログラムコードとして生成する手段とを備えるコード最適化部と、
前記利用者端末から、前記アプリケーションの転送要求を受け付け、コード最適化部が生成した前記アプリケーションの最適化されたプログラムコードと、実行データ管理部から読み出した当該利用者端末における当該アプリケーションの最新の実行状況を示す実行データと、利用者データ管理部から読み出した当該利用者端末において当該アプリケーションが用いる設定ファイル及びデータファイルである利用者データとを、まとめて当該利用者端末に送信する手段とを備え
前記利用者端末は、  前記アプリケーションの実行状況を示す実行データと前記利用者データを取得して、前記配信サーバに送信するアプリケーション管理部と、
前記アプリケーションを再開する際に、前記配信サーバに対して、前記アプリケーションの転送要求を送信する送信手段と、
前記転送要求に応答して前記配信サーバから配信される前記アプリケーションの最適化されたプログラムコード、前記アプリケーションの最新の実行状況を示す実行データと前記利用者データを取得し、取得した前記プログラムコードを、前記実行データにより示される当該アプリケーションの最新の実行状況に基づいて再開させる実行データ処理部とを備えることを特徴とする配信システム。
【請求項２】
前記実行データが、前記アプリケーションの実行中における、プログラムカウンタ、ヒープ、スタックの情報を含むことを特徴とする請求項１に記載の配信システム。
【請求項３】
前記実行データが、前記アプリケーションの実行時にメモリ上に生成される、各オブジェクトのインスタンス変数の値の情報を含むことを特徴とする請求項１又は請求項２に記載の配信システム。
【請求項４】
前記配信サーバは、前記コード最適化部が生成した最適化されたプログラムコードを一時保存するキャッシュ部を備えることを特徴とする請求項１から請求項３のいずれか１つに記載の配信システム。
【請求項５】
前記利用者端末は、当該利用者端末の情報である利用者端末情報を取得する情報公開部を備え、  前記配信サーバは、前記情報公開部が取得した、前記利用者端末の利用者端末情報に基づいて、当該利用者端末に対し配信するアプリケーションのプログラムコードを選別する情報解析部を備えることを特徴とする請求項１から請求項４のいずれか１つに記載の配信システム。
【請求項６】
前記利用者端末情報が．当該利用者端末に格納されているクラスライブラリの情報を含み、前記配信サーバの前記情報解析部は、前記利用者端末情報において示される、配信先の利用者端末に格納されているクラスライブラリを、当該利用者端末に配信する前記アプリケーションのプログラムコードから削除することを特徴とする請求項５に記載の配信システム。
【請求項７】
前記配信サーバと前記通信ネットワークとを接続し、前記配信サーバと各前記利用者端末との通信を中継する情報転送装置を備えることを特徴とする請求項１から請求項６のいずれか１つに記載の配信システム。
【請求項８】
前記通信ネットワークをインターネットとし、前記情報転送装置は、ウェブサーバの機能を備え、前記配信サーバとの間でサーブレットを用いて通信することを特徴とする請求項７に記載の配信システム。
【請求項９】
通信ネットワークを介して、配信サーバから利用者端末ヘ配信されたアプリケーションを、前記利用者端末において再開する際に、前記利用者端末からの前記アプリケーションの転送要求に応答して、前記アプリケーションの最新の実行状況を示す実行データに基づいて、前記アプリケーションを最適化して前記利用者端末に配信することで前記利用者端末において最新の実行状況から前記アプリケーションを再開させる配信サーバであって、
前記配信サーバは、  各前記利用者端末の利用者を認証する利用者認証部と、
前記アプリケーションの最適化前のプログラムコードを管理するプログラムコード管理部と、
各前記利用者端末における前記アプリケーションの実行状況を示す実行データを保存する実行データ菅理部と、
各前記利用者端末における前記アプリケーションが用いる設定ファイル及びデータファイルである利用者データを管理する利用者データ管理部と、
前記実行データに基づいて前記アプリケーションの前記最適化前のプログラムコードを最適化し、最適化されたプログラムコードを生成するコード最適化部であって、
前記プログラムコード管理部に管理された前記最適化前のプログラムコードを取得し、前記実行データ管理部により保存された当該アプリケーションの配信先の利用端末における前記実行データを取得し、取得された実行データにより示された前記アプリケーションの最新の実行状況に基づいて、取得された前記最適化前のプログラムコードから配信先の利用端末において実行されることのない部分を特定して削除することにより、実行される可能性のあるコードのみを含んだ当該アプリケーションのプログラムコードを新規に生成するコード抽出手段と、
前記コード抽出手段が生成した、前記アプリケーションの新規のプログラムコードを圧縮することにより、当該アプリケーションの圧縮された新規のプログラムコードを生成するコード圧縮手段と、
前記コード圧縮手段が生成した、前記アプリケーションの新規のプログラムコードを、当該アプリケーションの最適化されたプログラムコードとして生成する手段とを備えるコード最適化部と
前記アプリケーションの前記利用者端末への配信時に、プログラムコード管理部から当該アプリケーションのプログラムコードを読み出し、前記利用者端末から、前記アプリケーションの転送要求を受け付け、コード最適化部が生成した前記アプリケーションの最適化されたプログラムコードと、実行データ管理部から読み出した当該利用者端末における当該アプリケーションの最新の実行状況を示す実行データと、利用者データ管理部から読み出した当該利用者端末において当該アプリケーションが用いる設定ファイル及びデータファイルである利用者データとを、まとめて当該利用者端末に送信する手段と
前記利用者端末から、前記通信ネットワークを介して、前記アプリケーションの前記実行データ及び前記利用者データを取得して、それぞれ実行データ管理部と利用者データ管理部へ登録する手段を備え、
前記利用者端末へ前記アプリケーションを配信し、前記利用者端末から前記アプリケーションの実行データを取得、保存し、前記実行データに基づいて、コード最適化部が前記アプリケーションのプログラムコードを最適化し、前記利用者端末に対して最適化したアプリケーションを配信することを特徴とする配信サーバ。
【請求項１０】
前記コード最適化部が生成した最適化されたプログラムコードを一時保存するキャッシュ部を備えることを特徴とする請求項９に記載の配信サーバ。
【請求項１１】
前記利用者端末から、当該利用者端末の情報である利用者端末情報を取得し、前記利用者端末情報に基づいて、当該利用者端末に対し配信するアプリケーションのプログラムコードを選別する情報解析部を備えることを特徴とする請求項９から請求項１０のいずれか1つに記載の配信サーバ。
【請求項１２】
前記利用者端末情報が、当該利用者端末に格納されているクラスライブラリの情報を含み、前記情報解析部は、前記利用者端末情報において示される、配信先の利用者端末に格納されているクラスライブラリを、当該利用者端末に配信する前記アプリケーションのプログラムコードから削除することを特徴とする請求項１１に記載の配信サーバ。
【請求項１３】
通信ネットワークを介して、請求項９から請求項１２のいずれか１項に記載の配信サーバからアプリケーションの配信を受け付けて実行する利用者端末であって、
前記配信サーバから前記アプリケーションの最適化されたプログラムコード、前記アプリケーションの最新の実行状況を示す実行データと前記利用者データを取得し、取得した前記プログラムコードを、前記実行データに示される当該アプリケーションの最新の実行状況に基づいて再開させる実行データ処理部と、
実行中の前記アプリケーションの前記実行データと前記利用者データを取得して、前記配信サーバに送信するアプリケーション管理部と
前記アプリケーションを再開する際に、前記配信サーバに対して、前記アプリケーションの転送要求を送信する送信手段とを備え、
前記配信サーバからの前記アプリケーションの配信時には、当該アプリケーションのプログラムコードと、当該端末装置における当該アプリケーションの実行データと、当該端末装置において当該アプリケーションが用いる設定ファイル及びデータファイルである利用者データとを、まとめて受信し、
前記アプリケーション管理部は、
実行中の前記アプリケーションの前記実行データ及び前記利用者データを取得して、前記配信サーバに送信し、
前記実行データ処理部は、
前記転送要求に応答して前記配信サーバから配信される前記アプリケーションの最適化されたプログラムコードを、当該アプリケーションの前記実行データによって示される当該アプリケーションの最新の実行状況に基づいて再開させることを特徴とする利用者端末。
【請求項１４】
当該端末装置の情報である利用者端末情報を取得する情報公開部を備え、  前記情報公開部が取得した当該端末装置の前記利用者端末情報を、前記配信サーバに送信することを特徴とする請求項１３に記載の利用者端末。
【請求項１５】
通信ネットワークを介して、配信サーバから利用者端末ヘ配信されたアプリケーションを、前記利用者端末において再開する際に、前記利用者端末からの前記アプリケーションの転送要求に応答して、配信サーバが前記アプリケーションの最新の実行状況を示す実行データに基づいて、前記アプリケーションを最適化して前記利用者端末に配信することで前記利用者端末において最新の実行状況から前記アプリケーションを再開する配信方法において、
前記配信方法は、
前記配信サーバが、各前記利用者端末の利用者を認証する利用者認証手順と、  前記配信サーバが、前記アプリケーションの最適化前のプログラムコードをプログラムコード管理記憶手段に管理するプログラムコード管理手順と、  前記配信サーバが、前記利用者端末から、前記通信ネットワークを介して、前記アプリケーションの実行状況を示す実行データを取得して実行データ記憶手段に保存する実行データ管理手順と、
前記配信サーバが、前記利用者端末から、前記通信ネットワークを介して、前記アプリケーションが用いる設定ファイル及びデータファイルである利用者データを取得して利用者データ記憶手段に管理する利用者データ管理手順と、  前記配信サーバが、前記利用者端末から、前記通信ネットワークを介して、前記アプリケーションの前記実行データ及び前記利用者データを取得して、それぞれ前記実行データ記憶手段と前記利用者データ記憶手段へ登録する手順と、  前記配信サーバが、前記実行データに基づいて前記アプリケーションの前記最適化前のプログラムコードを最適化し、最適化されたプログラムコードを生成するコード最適化手順であって、
前記コード最適化手順は、前記配信サーバが、前記プログラムコード管理記憶手段で管理された前記最適化前のプログラムコードを取得し、前記実行データ管理記憶手段により保存された当該アプリケーションの配信先の利用端末における前記実行データを取得し、取得された実行データにより示された前記アプリケーションの最新の実行状況に基づいて、取得された前記最適化前のプログラムコードから配信先の利用端末において実行されることのない部分を特定して削除することにより、実行される可能性のあるコードのみを含んだ当該アプリケーションのプログラムコードを新規に生成するコード抽出手順と、
前記配信サーバが、前記コード抽出手順において生成された、前記アブリケーションの新規のプログラムコードを圧縮することにより、当該アプリケーションの圧縮された新規のプログラムコードを生成するコード圧縮手順と、
前記配信サーバが、前記コード圧縮手順において生成された、前記アプリケーションの新規のプログラムコードを、当該アプリケーションの最適化されたプログラムコードとして生成する手順とから構成されるコード最適化手順と、
前記配信サーバが、前記利用者端末から、前記アプリケーションの転送要求を受け付け、前記アプリケーションの前記利用者端末への配信時に、前記コード最適化手順で生成された前記アプリケーションの最適化されたプログラムコードと、前記実行データ記憶手段から読み出した当該利用者端末における当該アプリケーションの最新の実行状況を示す実行データと、前記利用者データ管理部から読み出した当該利用者端末において当該アプリケーションが用いる設定ファイル及びデータファイルである利用者データとを、まとめて当該利用者端末に送信する手順と、
前記利用者端末が、前記アプリケーションの前記実行データと前記利用者データを取得して、前記配信サーバに送信するアプリケーション管理手順と、
前記利用者端末が、前記アプリケーションを再開する際に、前記配信サーバに対して、前記アプリケーションの転送要求を送信する送信手順と、
前記利用者端末が、前記転送要求に応答して前記配信サーバから配信される前記アプリケーションの最適化されたプログラムコード、前記アプリケーションの最新の実行状況を示す実行データと前記利用者データを取得し、取得した前記プログラムコードを、前記実行データによって示される当該アプリケーションの最新の実行状況に基づいて再開する実行データ処理手順と、から構成されることを特徴とする配信方法。
【請求項１６】
前記配信サーバが、  前記コード最適化手順において生成した最適化されたプログラムコードを一時保存するキャッシュ手順を備えることを特徴とする請求項１５に記載の配信方法。
【請求項１７】
前記配信サーバが、  前記利用者端末から、当該利用者端末の情報である利用者端末情報を取得し、前記利用者端末情報に基づいて、当該利用者端末に対し配信するアプリケーションのプログラムコードを選別する情報解析手順を備えることを特徴とする請求項１５又は請求項１６に記載の配信方法。
【請求項１８】
前記利用者端末情報が、当該利用者端末に格納されているクラスライブラリの情報を含み、  前記配信サーバが、前記情報解析手順において、  前記利用者端末情報において示される、配信先の利用者端末に格納されているクラスライブラリを、当該利用者端末に配信する前記アプリケーションのプログラムコードから削除することを特徴とする請求項１７に記載の配信方法。
【請求項１９】
通信ネットワークを介して、配信サーバから利用者端末ヘ配信されたアプリケーションを、前記利用者端末において再開する際に、前記利用者端末からの前記アプリケーションの転送要求に応答して、配信サーバが前記アプリケーションの最新の実行状況を示す実行データに基づいて、前記アプリケーションを最適化して前記利用者端末に配信することで前記利用者端末において最新の実行状況から前記アプリケーションを再開させるための配信プログラムであって、
前記配信プログラムは、  前記配信サーバに、  各前記利用者端末の利用者を認証する利用者認証部と、前記アプリケーションの最適化前のプログラムコードを管理するプログラムコード管理部と、  各前記利用者端末における前記アプリケーションの実行状況を示す実行データを保存する実行データ管理部と、  各前記利用者端末において前記アプリケーションが用いる設定ファイル及びデータファイルである利用者データを管理する利用者データ管理部と、  前記利用者端末から、前記通信ネットワークを介して、前記アプリケーションの前記実行データ及び前記利用者データを取得して、それぞれ実行データ管理部と利用者データ管理部へ登録する手段と、
前記実行データに基づいて前記アプリケーションの前記最適化前のプログラムコードを最適化し、最適化されたプログラムコードを生成するコード最適化部であって、
前記コード最適化部は、前記プログラムコード管理部に管理された前記最適化前のプログラムコードを取得し、前記実行データ管理部により保存された当該アプリケーションの配信先の利用端末における前記実行データを取得し、取得された実行データにより示された前記アプリケーションの最新の実行状況に基づいて、取得された前記最適化前のプログラムコードから配信先の利用端末において実行されることのない部分を特定して削除することにより、実行される可能性のあるコードのみを含んだ当該アプリケーションのプログラムコードを新規に生成するコード抽出手段と、
前記コード抽出手段が生成した、前記アブリケーションの新規のプログラムコードを圧縮することにより、当該アプリケーションの圧縮された新規のプログラムコードを生成するコード圧縮手段と、
前記コード圧縮手段が生成した、前記アプリケーションの新規のプログラムコードを、当該アプリケーションの最適化されたプログラムコードとして生成する手段とを備えるコード最適化部と、
前記利用者端末から、前記アプリケーションの転送要求を受け付け、コード最適化部が生成した前記アプリケーションの最適化されたプログラムコードと、実行データ管理部から読み出した当該利用者端末における当該アプリケーションの最新の実行状況を示す実行データと、利用者データ管理部から読み出した当該利用者端末において当該アプリケーションが用いる設定ファイル及びデータファイルである利用者データとを、まとめて当該利用者端末に送信する手段として機能させるためのプログラムと、
前記利用者端末に、
前記アプリケーションの実行状況を示す実行データと前記利用者データを取得して、前記配信サーバに送信するアプリケーション管理部と、
前記アプリケーションを再開する際に、前記配信サーバに対して、前記アプリケーションの転送要求を送信する送信手段と、
前記転送要求に応答して前記配信サーバから配信される前記アプリケーションの最適化されたプログラムコード、前記アプリケーションの最新の実行状況を示す実行データと前記利用者データを取得し、取得した前記プログラムコードを、前記実行データにより示される当該アプリケーションの最新の実行状況に基づいて再開させる実行データ処理部として機能させるためのプログラムとから構成されることを特徴とする配信プログラム。
【請求項２０】
前記配信サーバに、前記コード最適化手段によって生成された最適化されたプログラムコードを一時保存するキャッシュ処理手段として機能させることを特徴とする請求項１９に記載の配信プログラム。
【請求項２１】
前記配信サーバに、前記利用者端末から、当該利用者端末の情報である利用者端末情報を取得し、前記利用者端末情報に基づいて、当該利用者端末に対し配信するアプリケーションのプログラムコードを選別する情報解析処理手段として機能させることを特徴とする請求項１９又は請求項２０に記載の配信プログラム。
【請求項２２】
前記利用者端末情報が、当該利用者端末に格納されているクラスライブラリの情報を含み、前記情報解析処理手段において、
前記配信サーバに、前記利用者端末情報において示される、配信先の利用者端末に格納されているクラスライブラリを、当該利用者端末に配信する前記アプリケーションのプログラムコードから削除する処理手段として機能させることを特徴とする請求項２１に記載の配信プログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、通信ネットワークを介した配信に関し、特に、利用者からの要求に応じて利用者端末へアプリケーションを配信する配信システム、配信サーバとその配信方法、配信プログラムに関する。
【０００２】
【従来の技術】
従来のアプリケーション配信システムの一例が、２０００年１２月、サン・マイクロシステムズ発行、ジャバ・ネットワーク・ラウンチング・プロトコル・アンド・エイピイアイ・スペシフィケーション（ジェイ・エス・アール-５６）(Sun Microsystems発行、Java(TM) Networking Launching Protocol & API Specification(JSR-56))に記載されている。この種のアプリケーション配信システムは、複数のアプリケーションをサーバで集中的に管理し、利用者からの要求に応じて利用者端末へアプリケーションを配信するシステムである。
【０００３】
図１１は、従来のアプリケーション配信システムの構成例を示すブロック図である。全体の構成は、アプリケーションを配信する機能を備える配信サーバ４０と、利用者端末５０−１〜５０−ｎと、配信サーバ４０と各利用者端末５０−１〜５０−ｎとをネットワークを通して接続するWebサーバ等の情報転送装置６０からなる。
【０００４】
配信サーバ４０は、利用者の認証を行なう利用者認証部４１と、配信するアプリケーションの（最適化する前の）プログラムコードを管理するプログラムコード管理部４２と、アプリケーションの設定ファイルやデータファイルを各利用者と対応付けて管理する利用者データ管理部４３を備える。
【０００５】
各利用者端末５０−１〜５０−ｎは、同様の構成を備え、アプリケーションを配信サーバ４０から取得し、実行する機能を持つアプリケーション管理部５１を備える。
【０００６】
このような構成を有する従来のアプリケーション配信システムは、次のように動作する。図１２は配信サーバ４０の処理を示すフローチャート図である。この図１２を参照して、利用者端末５０−１からアプリケーション取得要求を受け付けた場合の処理を説明する。
【０００７】
まず、配信サーバ４０の利用者認証部４１は、利用者端末５０−１に含まれるアプリケーション管理部５１から、アプリケーション取得要求を示すメッセージを受け付ける（ステップ１２０１）。このメッセージは、例えば、要求するアプリケーションの名前と、要求元である利用者の身元を証明するユーザ名とパスワード等の認証情報から構成される。
【０００８】
利用者認証部４１は、先のメッセージに含まれる認証情報を用いて、利用者の認証を行なう（ステップ１２０２）。認証が失敗した場合（ステップ１２０２がＮＯ）は、エラーを返す（ステップ１２０６）。認証が成功した場合（ステップ１２０２がＹＥＳ）は、利用者認証部４１は、先のメッセージにより指定されたアプリケーションのプログラムコードを、プログラムコード管理部４２から取得する（ステップ１２０３）。
【０００９】
次に、利用者認証部４１は、利用者データ管理部４３から、認証した利用者が所有し、かつ、先のメッセージに含まれるアプリケーションに対応する設定ファイルやデータファイルなどの利用者データを取得する（ステップ１２０４）。
【００１０】
最後に、利用者認証部４１は、ステップ１２０３とステップ１２０４より得られたプログラムコードと利用者データを一つのアプリケーションとして利用者端末５０−１に配信する。
【００１１】
【発明が解決しようとする課題】
しかし、従来の技術では、アプリケーションを構成するプログラムコードを、そのまま利用者端末へ転送する方式であり、このため、プログラムコードに含まれる利用者端末上で利用されることのないコードも同様に転送されることになり、その分の通信トラフィックが無駄に浪費されるという問題点がある。
【００１２】
本発明の第１の目的は、上記従来技術の欠点を解決し、利用者端末上で利用される可能性のない冗長な部分を取り除いてアプリケーションを配信することにより、アプリケーション配信時に発生する通信量の削減と、利用者端末で実行されるアプリケーションが消費するメモリ量の削減を実現する配信システム、配信サーバとその配信方法、配信プログラムを提供することにある。
【００１３】
本発明の第２の目的は、上記従来技術の欠点を解決し、アプリケーションの利用者端末における実行状況を示す実行データに基づいて、転送するアプリケーションのプログラムコードから、利用者端末上で利用される可能性がない冗長な部分を自動的に取り除いて配信する配信システム、配信サーバとその配信方法、配信プログラムを提供することにある。
【００１４】
【課題を解決するための手段】
上記目的を達成するため本発明の配信システムは、通信ネットワークを介して、配信サーバから利用者端末へアプリケーションを配信する配信システムにおいて、前記配信サーバは、各前記利用者端末の利用者を認証する利用者認証部と、前記アプリケーションの最適化前のプログラムコードを管理するプログラムコード管理部と、各前記利用者端末における前記アプリケーションの実行状況を示す実行データを保存する実行データ管理部と、各前記利用者端末における前記アプリケーションの利用者データを管理する利用者データ管理部と、前記実行データに基づいて前記アプリケーションの前記最適化前のプログラムコードを最適化し、最適化されたプログラムコードを生成するコード最適化部を備え、前記アプリケーションの前記利用者端末への配信時に、プログラムコード管理部から当該アプリケーションのプログラムコードを読み出し、実行データ管理部から当該利用者端末における当該アプリケーションの実行データを読み出し、利用者データ管理部から当該利用者端末において当該アプリケーションが用いる設定ファイル及びデータファイルである利用者データを読み出し、まとめて当該利用者端末に送信する手段と、前記利用者端末から、前記通信ネットワークを介して、前記アプリケーションの前記実行データ及び前記利用者データを取得して、それぞれ実行データ管理部と利用者データ管理部へ登録する手段を備え前記利用者端末は、前記配信サーバから前記アプリケーションのプログラムコード、前記実行データと前記利用者データを取得し、取得した前記プログラムコードを、前記実行データにより示される当該アプリケーションの実行状況に基づいて実行させる実行データ処理部と、実行中の前記アプリケーションの前記実行データと前記利用者データを取得して、前記配信サーバに送信するアプリケーション管理部とを備え、前記コード最適化部は、前記プログラムコード管理部に管理された前記最適化前のプログラムコードを取得し、前記実行データ管理部により保存された当該アプリケーションの配信先の利用端末における前記実行データを取得し、取得された実行データにより示された実行状況に基づいて、取得された前記最適化前のプログラムコードから配信先の利用端末において実行されることのない部分を特定して削除することにより、実行される可能性のあるコードのみを含んだ当該アプリケーションのプログラムコードを新規に生成するコード抽出手段と、前記コード抽出手段が生成した、前記アブリケーションの新規のプログラムコードを圧縮することにより、当該アプリケーションの圧縮された新規のプログラムコードを生成するコード圧縮手段を備え、前記コード圧縮手段が生成した、前記アプリケーションの新規のプログラムコードを、当該アプリケーションの最適化されたプログラムコードとして生成し、前記配信サーバは、前記利用者端末へ前記アプリケーションを配信し、前記利用者端末から前記アブリケーションの実行状況を示す実行データを取得、保存し、前記実行データに基づいて、コード最適化部が前記アプリケーションのプログラムコードを最適化し、前記利用者端末に対して最適化したアプリケーションを配信することを特徴とする。
【００１５】
請求項２の本発明の配信システムは、前記実行データが、前記アプリケーションの実行中における、プログラムカウンタ、ヒープ、スタックの情報を含むことを特徴とする。
【００１６】
請求項３の本発明の配信システムは、前記実行データが、前記アプリケーションの実行時にメモリ上に生成される、各オブジェクトのインスタンス変数の値の情報を含むことを特徴とする。
【００１７】
請求項４の本発明の配信システムは、前記配信サーバは、前記コード最適化部が生成した最適化されたプログラムコードを一時保存するキャッシュ部を備えることを特徴とする。
【００１８】
請求項５の本発明の配信システムは、前記利用者端末は、当該利用者端末の情報である利用者端末情報を取得する情報公開部を備え、前記配信サーバは、前記情報公開部が取得した、前記利用者端末の利用者端末情報に基づいて、当該利用者端末に対し配信するアプリケーションのプログラムコードを選別する情報解析部を備えることを特徴とする。
【００１９】
請求項６の本発明の配信システムは、前記利用者端末情報が．当該利用者端末に格納されているクラスライブラリの情報を含み、前記配信サーバの前記情報解析部は、前記利用者端末情報において示される、配信先の利用者端末に格納されているクラスライブラリを、当該利用者端末に配信する前記アプリケーションのプログラムコードから削除することを特徴とする。
【００２０】
請求項７の本発明の配信システムは、前記配信サーバと前記通信ネットワークとを接続し、前記配信サーバと各前記利用者端末との通信を中継する情報転送装置を備えることを特徴とする。
【００２１】
請求項８の本発明の配信システムは、前記通信ネットワークをインターネットとし、前記情報転送装置は、ウェブサーバの機能を備え、前記配信サーバとの間でサーブレットを用いて通信することを特徴とする。
【００２２】
請求項９の本発明の配信サーバは、通信ネットワークを介して、利用者端末ヘアプリケーションを配信する配信サーバであって、前記配信サーバは、各前記利用者端末の利用者を認証する利用者認証部と、前記アプリケーションの最適化前のプログラムコードを管理するプログラムコード管理部と、各前記利用者端末における前記アプリケーションの実行状況を示す実行データを保存する実行データ菅理部と、各前記利用者端末における前記アプリケーションの利用者データを管理する利用者データ管理部と、前記実行データに基づいて前記アプリケーションの前記最適化前のプログラムコードを最適化し、最適化されたプログラムコードを生成するコード最適化部を備え、前記アプリケーションの前記利用者端末への配信時に、プログラムコード管理部から当該アプリケーションのプログラムコードを読み出し、実行データ管理部から当該利用者端末における当該アプリケーションの実行データを読み出し、利用者データ管理部から当該利用者端末において当該アプリケーションが用いる設定ファイル及びデータファイルである利用者データを読み出し、まとめて当該利用者端末に送信する手段と、前記利用者端末から、前記通信ネットワークを介して、前記アプリケーションの前記実行データ及び前記利用者データを取得して、それぞれ実行データ管理部と利用者データ管理部へ登録する手段を備え、前記利用者端末へ前記アプリケーションを配信し、前記利用者端末から前記アプリケーションの実行データを取得、保存し、前記実行データに基づいて、コード最適化部が前記アプリケーションのプログラムコードを最適化し、前記利用者端末に対して最適化したアプリケーションを配信し、前記コード最適化部は、前記プログラムコード管理部に管理された前記最適化前のプログラムコードを取得し、前記実行データ管理部により保存された当該アプリケーションの配信先の利用端末における前記実行データを取得し、取得された実行データにより示された実行状況に基づいて、取得された前記最適化前のプログラムコードから配信先の利用端末において実行されることのない部分を特定して削除することにより、実行される可能性のあるコードのみを含んだ当該アプリケーションのプログラムコードを新規に生成するコード抽出手段と、前記コード抽出手段が生成した、前記アプリケーションの新規のプログラムコードを圧縮することにより、当該アプリケーションの圧縮された新規のプログラムコードを生成するコード圧縮手段を備え、前記コード圧縮手段が生成した、前記アプリケーションの新規のプログラムコードを、当該アプリケーションの最適化されたプログラムコードとして生成することを特徴とする。
【００２３】
請求項１０の本発明の配信サーバは、前記コード最適化部が生成した最適化されたプログラムコードを一時保存するキャッシュ部を備えることを特徴とする。
【００２４】
請求項１１の本発明の配信サーバは、前記利用者端末から、当該利用者端末の情報である利用者端末情報を取得し、前記利用者端末情報に基づいて、当該利用者端末に対し配信するアプリケーションのプログラムコードを選別する情報解析部を備えることを特徴とする。
【００２５】
請求項１２の本発明の配信サーバは、前記利用者端末情報が、当該利用者端末に格納されているクラスライブラリの情報を含み、前記情報解析部は、前記利用者端末情報において示される、配信先の利用者端末に格納されているクラスライブラリを、当該利用者端末に配信する前記アプリケーションのプログラムコードから削除することを特徴とする。
【００２６】
請求項１３の本発明の利用者端末は、通信ネットワークを介して、請求項９から請求項１２のいずれか１項に記載の配信サーバからアプリケーションの配信を受け付けて実行する端末装置であって、前記配信サーバから前記アプリケーションのプログラムコード、前記実行データと前記利用者データを取得し、取得した前記プログラムコードを、前記実行データに示される当該アプリケーションの実行状況に基づいて実行させる実行データ処理部と、実行中の前記アプリケーションの前記実行データと前記利用者データを取得して、前記配信サーバに送信するアプリケーション管理部とを備え、前記配信サーバからの前記アプリケーションの配信時には、当該アプリケーションのプログラムコードと、当該端末装置における当該アプリケーションの実行データと、当該端末装置において当該アプリケーションが用いる設定ファイル及びデータファイルである利用者データとを、まとめて受信し、前記アプリケーション管理部は、実行中の前記アプリケーションの前記実行データ及び前記利用者データを取得して、前記配信サーバに送信し、前記実行データ処理部は、前記配信サーバから配信された前記アプリケーションのプログラムコードを、当該アプリケーションの前記実行データによって示される当該アプリケーションの実行状況に基づいて実行させることを特徴とする。
【００２７】
請求項１４の本発明の利用者端末は、当該端末装置の情報である利用者端末情報を取得する情報公開部を備え、前記情報公開部が取得した当該端末装置の前記利用者端末情報を、前記配信サーバに送信することを特徴とする。
【００２８】
請求項１５の本発明の配信方法は、通信ネットワークを介して、配信サーバから利用者端末ヘアプリケーションを配信する配信方法において、前記配信サーバは、各前記利用者端末の利用者を認証する利用者認証部と、前記アプリケーションの最適化前のプログラムコードを管理するプログラムコード管理部と、各前記利用者端末における前記アプリケーションの実行状況を示す実行データを保存する実行データ管理部と、各前記利用者端末における前記アプリケーションの利用者データを管理する利用者データ管理部と、前記実行データに基づいて前記アプリケーションの前記最適化前のプログラムコードを最適化し、最適化されたプログラムコードを生成するコード最適化部を備え、前記利用者端末は、前記配信サーバから前記アプリケーションのプログラムコード、前記実行データと前記利用者データを取得し、取得した前記プログラムコードを、前記実行データによって示される当該アプリケーションの実行状況に基づいて実行させる実行データ処理部と、実行中の前記アプリケーションの前記実行データと前記利用者データを取得して、前記配信サーバに送信するアプリケーション管理部とを備え、前記アプリケーションの前記利用者端末への配信時に、プログラムコード管理部から当該アプリケーションのプログラムコードを読み出し、実行データ管理部から当該利用者端末における当該アプリケーションの実行データを読み出し、利用者データ管理部から当該利用者端末において当該アプリケーションが用いる設定ファイル及びデータファイルである利用者データを読み出し、まとめて当該利用者端末に送信する手順と、前記利用者端末から、前記通信ネットワークを介して、前記アプリケーションの前記実行データ及び前記利用者データを取得して、それぞれ実行データ管理部と利用者データ管理部へ登録する手順を備え、前記配信サーバにおいて、各前記利用者端末の利用者を認証する利用者認証手順と、前記配信サーバにおいて、前記実行データに基づいて、コード最適化部が前記アプリケーションのプログラムコードを最適化する手順と、前記配信サーバが前記利用者端末に対して最適化したアプリケーションを配信する手順をからなり、前記プログラムコードを最適化する手順は、前記プログラムコード管理部に管理された前記最適化前のアプリケーションのプログラムコードを取得し、前記実行データ管理部により保存された当該アプリケーションの配信先の利用端末における前記実行データを取得し、取得された実行データにより示された実行状況に基づいて、取得された前記最適構えのプログラムコードから配信先の利用端末において実行されることのない部分を特定して削除することにより、実行される可能性のあるコードのみを含んだ当該アプリケーションのプログラムコードを新規に生成するコード抽出手順と、前記コード抽出手順が生成した、前記アプリケーションの新規のプログラムコードを圧縮することにより、当該アプリケーションの圧縮された新規のプログラムコードを生成するコード圧縮手順とからなり前記コード圧縮手順において生成した、前記アプリケーションの新規のプログラムコードを、当該アプリケーションの最適化されたプログラムコードとして生成することによってプログラムコードを最適化することを特徴とする。
【００２９】
請求項１６の本発明の配信方法は、前記配信サーバが、前記コード最適化手順において生成した最適化されたプログラムコードを一時保存するキャッシュ手順を備えることを特徴とする。
【００３０】
請求項１７の本発明の配信方法は、前記配信サーバが、前記利用者端末から、当該利用者端末の情報である利用者端末情報を取得し、前記利用者端末情報に基づいて、当該利用者端末に対し配信するアプリケーションのプログラムコードを選別する情報解析手順を備えることを特徴とする。
【００３１】
請求項１８の発明の配信方法は、前記利用者端末情報が、当該利用者端末に格納されているクラスライブラリの情報を含み、前記配信サーバが、前記情報解析手順において、前記利用者端末情報において示される、配信先の利用者端末に格納されているクラスライブラリを、当該利用者端末に配信する前記アプリケーションのプログラムコードから削除することを特徴とする。
【００３２】
請求項１９の本発明のプログラムは、各前記利用者端末の利用者を認証する利用者認証部と、前記アプリケーションの最適化前のプログラムコードを管理するプログラムコード管理部と、各前記利用者端末における前記アプリケーションの実行状況を示す実行データを保存する実行データ管理部と、各前記利用者端末における前記アプリケーションの利用者データを管理する利用者データ管理部と、前記実行データに基づいて前記アプリケーションの前記最適化前のプロゲラムコードを最適化し、最適化されたプログラムコードを生成するコード最適化部を備えるコンピュータを制御することにより、配信サーバから通信ネットワークを介して利用者端末ヘアプリケーションを配信する配信プログラムであって、利用者認証部が各前記利用者端末の利用者を認証する処理と、前記アプリケーションの前記利用者端末への配信時に、プログラムコード管理部から当該アプリケーションのプログラムコードを読み出し、実行データ管理部から当該利用者端末における当該アプリケーションの実行データを読み出し、利用者データ管理部から当該利用者端末において当該アプリケーションが用いる設定ファイル及びデータファイルである利用者データを読み出し、まとめて当該利用者端末に送信する処理と、前記利用者端末から、前記通信ネットワークを介して、前記アプリケーションの前記実行データ及び前記利用者データを取得して、それぞれ実行データ管理部と利用者データ管理部へ登録する処理と、前記実行データに基づいて、コード最適化部が前記アプリケーションのプログラムコードを最適化する処理と、前記利用者端末に対して最適化したアプリケーションを配信する処理を実行させ、前記プログラムコードを最適化する処理は、前記プログラムコード管理部に管理された前記最適化前のプログラムコードを取得し、前記実行データ管理部により保存された当該アプリケーションの配信先の利用端末における前記実行データを取得し、取得された実行データにより示された実行状況に基づいて、取得された前記最適化前のプログラムコードから配信先の利用端末において実行されることの無い部分を特定して削除することにより、実行される可能性のあるコードのみを含んだ当該アプリケーションのプログラムコードを新規に生成するコード抽出処理と、前記コード抽出処理が生成した、前記アプリケーションの新規のプログラムコードを圧縮することにより、当該アプリケーションの圧縮された新規のプログラムコードを生成するコード圧縮処理と、前記コード圧縮処理において生成した、前記アプリケーションの新規のプログラムコードを、当該アプリケーションの最適化されたプログラムコードとして生成することによってプログラムコードを最適化することを特徴とする。
【００３３】
本発明の請求項２０のプログラムは、前記コード最適化処理において生成した最適化されたプログラムコードを一時保存するキャッシュ処理を実行させることを特徴とする。
【００３４】
本発明の請求項２１のプログラムは、前記利用者端末から、当該利用者端末の情報である利用者端末情報を取得し、前記利用者端末情報に基づいて、当該利用者端末に対し配信するアプリケーションのプログラムコードを選別する情報解析処理を実行させることを特徴とすることを特徴とする。
【００３５】
請求項２２の本発明のプログラムは、前記利用者端末情報が、当該利用者端末に格納されているクラスライブラリの情報を含み、前記情報解析処理において、前記利用者端末情報において示される、配信先の利用者端末に格納されているクラスライブラリを、当該利用者端末に配信する前記アプリケーションのプログラムコードから削除する処理を実行させることを特徴とする。
【００５２】
【発明の実施の形態】
以下、本発明の実施の形態について図面を参照して詳細に説明する。
【００５３】
図１は、本発明の第１の実施の形態による配信システムの構成を示すブロック図である。図１を参照すると本実施の形態の配信システムは、コード最適化を行ないアプリケーションを配信する機能を備える配信サーバ１０と、各利用者が用いる端末装置である利用者端末２０−１〜２０−ｎとが、通信ネットワーク１００を介して接続している。
【００５４】
また、配信サーバ１０は、通信ネットワーク１００との接続のために情報転送装置３０を用いている。情報転送装置３０は、ウェブサーバ等の機能を備えることにより、利用者端末２０−１〜２０−ｎからの通信ネットワーク１００を介した接続を受け付ける。また、通信ネットワーク１００の種類は、特に限定する必要は無く、例えば、インターネットやＬＡＮ等のネットワークを用いることができる。又、利用者端末の台数ｎも特に限定する必要は無く、任意の台数としてよい。
【００５５】
各利用者端末２０−１〜２０−ｎは、それぞれ同様の構成であり、配信サーバ１０からアプリケーションを取得するアプリケーション管理部２１と、アプリケーションの処理を実行させる実行データ処理部２２を備える。実行データ処理部２２は、配信サーバ１０から取得したプログラムコードと、そのアプリケーションの当該利用者端末における実行状況を示す実行データとに基づいて、取得したプログラムの処理を再開させるのである。
【００５６】
アプリケーション管理部２１は、情報転送装置３０を介して、配信サーバ１０から、要求するアプリケーションを取得する。ここで本実施の形態の配信サーバ１０が配信するアプリケーションは、例えば、最適化されたプログラムコードと、利用者データと、実行データ等により構成される。
【００５７】
アプリケーション管理部２１は、配信サーバ１０から取得した最適化されたプログラムコードと実行データを実行データ処理部２２に渡し、そのアプリケーションの計算を再開させる。また、アプリケーション管理部２１は、実行データ処理部２２から最新の実行データを取得して、利用者データと実行データを配信サーバ１０の利用者認証部１１へ転送し、配信サーバ１０内に利用者データと実行データを保存させる。
【００５８】
ここで、実行データは、アプリケーションの当該利用者端末における実行状況を示すデータとして、様々な情報を基に構成することができる。例えば、アプリケーションの実行中（の定められた時点）における、プログラムカウンタ、ヒープ、スタックの情報を用いて構成することや、アプリケーションの実行時にメモリ上に生成される全ての（又は、指定された一部の）オブジェクトのインスタンス変数の値を用いて構成すること等ができる。
【００５９】
利用者データは、例えば、アプリケーションの設定ファイルや、文書データや画像データのようなデータファイル等である。利用者データは、この例の様に、アプリケーションがハードディスク等の不揮発性の記憶媒体に書き込むデータである。利用者データは、一般に、アプリケーションの利用者毎に存在し、利用者が所有する。
【００６０】
実行データ処理部２２は、アプリケーション管理部２１から、最適化されたプログラムコードと実行データを取得すると、その最適化されたプログラムコードと実行データを用いて、アプリケーションの計算を再開させる。アプリケーションは、必要に応じてアプリケーション管理部２１から、利用者データを取得して処理を実行する。また、実行データ処理部２２は、実行中のアプリケーションの実行データをそのアプリケーションから取得して、取得した実行データをアプリケーション管理部２１に渡す。
【００６１】
配信サーバ１０は、プログラム制御されるＣＰＵ等で実現され、利用者の認証を行なう利用者認証部１１と、配信するアプリケーションを管理するプログラムコード管理部１２と、アプリケーションの設定ファイルやデータファイルを管理する利用者データ管理部１３と、コードの最適化を行なうコード最適化部１４と、アプリケーション・プログラムの計算の実行状況を示す情報を保存した実行データを管理する実行データ管理部１５を備えている。
【００６２】
利用者認証部１１は、利用者を認証する機能を備える。利用者認証部１１は、情報転送装置３０を経由してアプリケーション管理部２１からアプリケーション転送要求を受け付け、コード最適化部１４から最適化されたプログラムコードを取得し、実行データ管理部１５から実行データを取得し、利用者データ管理部１３から利用者データを取得し、最適化されたプログラムコードと実行データと利用者データを一つのアプリケーションとしてアプリケーション管理部２１に転送する。
【００６３】
プログラムコード管理部１２は、プログラムコードを、例えばアプリケーションの名前などと対応付けて管理する。コード最適化部１４が、プログラムの名前を指定して、プログラムコード管理部１２にプログラムコードを要求すると、プログラムコード管理部１２は指定されたプログラムコードを返す。
【００６４】
利用者データ管理部１３は、プログラムコード管理部１２が管理しているプログラムが利用する利用者データを、利用者の名前とアプリケーションの名前の対などと対応づけて管理する。利用者認証部１１が各利用者端末２０−ｉ（ｉ＝１,…,ｎ）の利用者を認証し、認証した利用者の名前と各利用者端末２０−ｉ（ｉ＝１,…,ｎ）から要求されたアプリケーションの名前を用いて、利用者データ管理部１３に利用者データを要求すると、利用者データ管理部１３は指定された利用者データを返す。
【００６５】
実行データ管理部１５は、利用者端末２０−１〜２０−ｎ上で作動していたアプリケーション・プログラムの計算の実行状況を示す情報を保存する実行データを管理する。実行データは、例えば、利用者の名前とアプリケーションの名前の対などと対応づけて管理される。
【００６６】
実行データ管理部１５は、コード最適化部１４、又は利用者認証部１１から、利用者の名前と利用者端末２０−ｉ（ｉ＝１,…,ｎ）から要求されたアプリケーションの名前を用いて要求を受けると、指定された実行データを返す。尚、実行データは、利用者端末２０−ｉ（ｉ＝１,…,ｎ）上で動作するアプリケーションの処理時に、実行データ処理部２２によって作成され、作成された実行データは同じ利用者端末２０−ｉのアプリケーション管理部２１に渡され、アプリケーション管理部２１は、実行データを、利用者認証部１１経由で、実行データ管理部１５に転送し、最終的に、実行データ管理部１５によって保存される。
【００６７】
コード最適化部１４は、プログラムコードと実行データから、最適化されたプログラムコードを生成する機能を備える。コード最適化部１４は、利用者認証部１１から、認証した利用者の名前と利用者端末２０−ｉ（ｉ＝１...ｎ）から要求されたアプリケーションの名前を受け取る。次に、コード最適化部１４は、プログラムコード管理部１２から要求されたアプリケーションの名前を用いてプログラムコードを取得し、実行データ管理部１５から、認証した利用者の名前と要求されたアプリケーションの名前を用いて、実行データを取得する。次に、コード最適化部１４は、実行データを用いてプログラムコードの最適化を行ない、最適化されたプログラムコードを利用者認証部１１に返す。
【００６８】
コード最適化部１４について、更に詳細に構成を説明する。図２は、本実施の形態による配信サーバ１０の構成の一例を示すブロック図であり、図２に示されるように本実施の形態のコード最適化部１４は、コード圧縮部１４１と、コード抽出部１４２を備えている。
【００６９】
コード抽出部１４２は、実行データを用いてプログラムコードから不必要な部分を取り除く機能を備える。利用者認証部１１は、認証した利用者の名前と要求されたアプリケーションの名前を用いて、コード抽出部１４２に最適化コードの生成を要求する。コード抽出部１４２は、プログラムコード管理部１２から要求されたアプリケーションの名前を用いてプログラムコードを取得し、実行データ管理部１５から、認証した利用者の名前と要求されたアプリケーションの名前を用いて、実行データを取得する。コード抽出部１４２は、プログラムコードを解析し、実行データを利用して、前記実行データとプログラムコードを用いてアプリケーションの計算を再開した場合に実行されることが無い部分を特定し、実行される可能性のあるコードのみを含んだプログラムコードを新しく生成する。生成されたコードはコード圧縮部１４１に渡される。
【００７０】
コード抽出部１４２は、実行データからプログラムコードを再開した場合に実行されることが無い部分を特定するために、例えば、実行データに示される特定のプログラムカウンタから、静的解析を行ない、関数呼び出しの木を作成し、実行データから制御文の条件が真か偽かがわかる場合、関数呼び出しの木から呼び出されない部分木を切取り、最終的に得られた木から、利用されないフィールドや、関数、オブジェクト指向言語であれば、クラス等を判別する方法を利用することができる。
【００７１】
コード圧縮部１４１は、プログラムコードを圧縮する機能を備える。コード圧縮部１４１は、コード抽出部１４２からコード抽出処理のされたプログラムコードを受け取ると、受け取ったプログラムコードから圧縮したプログラムコードを新しく生成し、生成したプログラムコードを利用者認証部１１に渡す。
【００７２】
コード圧縮部１４１は、コードを圧縮するために、例えば、オブジェクト指向言語の場合、クラスやメソッドの名前を短くしたり、プログラムの元の意図を保持しつつ、クラス階層の変形や、クラスの融合等によりクラスの数を減らす、等の方法を利用することができる。
【００７３】
通信ネットワーク１００をインターネットとし、情報転送装置３０がウェブサーバの機能を備える場合においては、各利用者端末のアプリケーション管理部２１と情報転送装置３０の間の通信は、例えば１９９９年６月、アール・エフ・シー２６１６、ハイパーテキスト・トランスファー・プロトコル--エイチ・ティ・ティ・ピィ／１．１（RFC2616, Hypertext Transfer Protocol--HTTP/1.1）記載の、エイチ・ティ・ ティ・ピィ（HTTP）を用いることで容易に実現できる。更にこの場合における、情報転送装置３０と配信サーバ１０の間の通信は、例えばWebサーバと、１９９９年１２月、サン・マイクロシステムズ発行、ジャバ・サーブレット・スペシフィケーション、v2.2（Sun Microsystems発行、Java Servlet Specification, v2.2）に記載のサーブレット（Servlet）を利用することで容易に実現できる。
【００７４】
次に、図３〜６のフローチャートと、図７のデータ構造を参照して第１の実施の形態の全体の動作について詳細に説明する。
【００７５】
図３は、配信サーバ１０が、利用者端末２０−ｉ（ｉ＝１...ｎ）からアプリケーション取得要求を受け付け、最適化されたプログラムコードを含むアプリケーションを返すまでの処理の流れを示すフローチャートである。
【００７６】
図４は、図３のステップ３０３における最適化されたプログラムコードの取得処理をより詳細に表したフローチャートであり、コード最適化部１４がプログラムコードの最適化を行なう処理の流れを示す。
【００７７】
図５は、利用者端末２０−１〜２０−ｎが、配信サーバ１０からアプリケーションを取得して、アプリケーションを実行し、利用者データと実行データを配信サーバ１０に転送するまでの処理の流れを示すフローチャートである。
【００７８】
図６は、配信サーバ１０が、利用者端末２０−ｉから利用者データと実行データの保存要求を受け付け、データを格納する処理の流れを示すフローチャートである。
【００７９】
図７は、配信サーバ１０から利用者端末２０−１〜２０−ｎに転送されるアプリケーション８０のデータ構成の一例を示す図であり、アプリケーション８０はプログラムコード８１と、実行データ８２と、利用者データ８３を含む。以後、アプリケーション８０には、これらの情報を含むこととして説明する。
【００８０】
まず、アプリケーション管理部２１は、利用者端末２０−ｉを利用するユーザからの要求があると、アプリケーション取得要求を配信サーバ１０に送信する（図５、ステップ５０１）。アプリケーション管理部２１は、利用者端末２０−ｉを利用するユーザが設定するなどして、情報転送装置３０が解釈する配信サーバ１０の場所の情報を保持しているものとする。配信サーバ１０の場所は、具体的には、例えば、ユニフォーム・リソース・ロケータ（Uniform Resource Locator; URL）を利用する。アプリケーション取得要求としてアプリケーション管理部２１から配信サーバ１０に送信する情報は、必ず、取得対象のアプリケーションの名前と、利用者端末２０−ｉを利用しているユーザの身元を明らかにする認証情報を含む。認証情報は、例えば、ユーザ名とパスワードを利用する。
【００８１】
配信サーバ１０内の利用者認証部１１は、アプリケーション管理部２１からのアプリケーション取得要求を受け付ける（図３、ステップ３０１）。利用者認証部１１は、アプリケーション取得要求に含まれる利用者端末２０−ｉの利用者の認証情報と、アプリケーション管理部２１が内部に保持する認証データベースを用いて、利用者端末２０−ｉの利用者を認証する（図３、ステップ３０２）。認証に失敗した場合（図３、ステップ３０２がＮＯ)、アプリケーション管理部２１は、利用者端末２０−ｉのアプリケーション管理部２１にエラーを返す（図３、ステップ３０７）。認証に成功した場合（図３、ステップ３０２がＹＥＳ)、利用者認証部１１は、コード最適化部１４から要求されたアプリケーションの最適化されたプログラムコードを取得する（図３、ステップ３０３）。
【００８２】
図３のステップ３０３の処理を詳しく説明すると、次のようになる。コード最適化部１４内のコート抽出部１４２は、利用者認証部１１から、コード最適化要求を受け付ける（図４、ステップ４０１）。コード最適化要求は、アプリケーションの名前と、図３のステップ３０２の認証によって得られたユーザの情報を含む。前記ユーザの情報とは、例えばユーザの名前や、ユーザに対して一意に割り当てられた識別子等を利用する。利用者データ管理部１３と実行データ管理部１５は、ユーザの情報、及びアプリケーションの名前と対応付けてデータ管理を行なう。本実施例では、ユーザの情報としてユーザの名前を利用する。次に、コート抽出部１４２は、コード最適化要求に含まれる、アプリケーションの名前を用いて、プログラムコード管理部１２から、プログラムコードを取得する（図４、ステップ４０２）。次に、コート抽出部１４２は、コード最適化要求に含まれるアプリケーションの名前とユーザの名前を用いて、実行データ管理部１５から実行データを取得する（図４、ステップ４０３）。コート抽出部１４２は、実行データとプログラムコードを用いてアプリケーションの計算を再開した場合に実行されることが無い部分を特定し、実行される可能性のあるコードのみを含んだプログラムコードを新しく生成する（図４、ステップ４０４）。コート抽出部１４２が新しく生成したプログラムコードは、コード圧縮部１４１に送られ、コード圧縮部１４１は送られてきたプログラムコードから、例えば、クラスの融合などを用いて、圧縮された新しいプログラムコードを生成する（図４、ステップ４０５）。最後に、コード圧縮部１４１は、抽出、及び、圧縮された、最適化されたプログラムコードを利用者認証部１１に返す（図４、ステップ４０６）。
【００８３】
利用者認証部１１は、前述の処理により、最適化されたプログラムコードを取得すると、次に、要求されたアプリケーションの名前と認証したユーザの名前を用いて、利用者データ管理部１３から、利用者データを取得する（図３、ステップ３０４）。同様に、利用者認証部１１は、要求されたアプリケーションの名前と認証したユーザの名前を用いて、実行データ管理部１５から実行データを取得する（図３、ステップ３０５）。利用者認証部１１は、これまでの処理により得られた、最適化されたプログラムコードと、実行データと、利用者データより、アプリケーション８０（図７）を構成し、アプリケーションの要求元である利用者端末２０−ｉのアプリケーション管理部２１に前述アプリケーション８０を転送する（図３、ステップ３０６）。
【００８４】
利用者端末２０−ｉのアプリケーション管理部２１は、認証の失敗等でアプリケーション取得に失敗した場合（図５、ステップ５０２がＮＯ）、例えば、ユーザに失敗の旨を通知し、処理を終える（図５、ステップ５０６）。アプリケーション管理部２１は、アプリケーションの取得に成功した場合（図５、ステップ５０２がＹＥＳ）、アプリケーション８０のプログラムコードと実行データを、実行データ処理部２２に渡し、実行データ処理部２２は、プログラムコードと実行データからアプリケーションの計算を再開させる（図５、ステップ５０３）。
【００８５】
図５のステップ５０３とステップ５０４の間、利用者はアプリケーションを利用している。
【００８６】
利用者端末２０−ｉのユーザが明示的に保存を要求するか、又は実行データ処理部２２が自動的に判断して、実行データ処理部２２は実行中のアプリケーションの実行データを取得する（図５、ステップ５０４）。
【００８７】
実行データ処理部２２は取得した実行データをアプリケーション管理部２１に渡すと、アプリケーション管理部２１は配信サーバ１０に利用者データと実行データの保存要求を送信する（図５、ステップ５０５）。保存要求は、利用者データと、実行データと、アプリケーションの名前と、利用者端末２０−ｉを利用しているユーザの身元を明らかにする認証情報を含む。
【００８８】
配信サーバ１０内の利用者認証部１１は、利用者データと実行データの保存要求を受け付け（図６、ステップ６０１）、要求元である利用者端末２０−ｉのユーザの認証を行なう（図６、ステップ６０２）。認証に失敗した場合（図６、ステップ６０２がＮＯ)、利用者認証部１１は利用者端末２０−ｉのアプリケーション管理部２１にエラーを返す（図６、ステップ６０４）。認証に成功した場合（図６、ステップ６０２がＹＥＳ)、利用者認証部１１は、保存要求に含まれるアプリケーションの名前と利用者データと、認証により得られたユーザの名前を用いて、利用者データ管理部１３に利用者データを格納し、保存要求に含まれるアプリケーションの名前と実行データと、認証により得られたユーザの名前を用いて、実行データ管理部１５に実行データを格納する（図６、ステップ６０３）。
【００８９】
以上説明したように、本実施の形態の配信システムによれば、アプリケーション配信時に、各利用者端末におけるそのアプリケーション・プログラムの計算の実行状況を示す実行データに基づいて、プログラムコードから配信先の利用者端末で利用される可能性がない冗長な部分を取り除くコード最適化を行ない、その最適化されたプログラムコードを利用者端末に配信することができる。
【００９０】
これにより、配信するアプリケーションのプログラムコード量が削減できるため、アプリケーション配信時に発生する通信量の削減、及び利用者端末で実行されるアプリケーションが消費するメモリ量の削減を実現できる。
【００９１】
次に、本発明の第２の実施の形態について詳細に説明する。図８は、本発明に係るコード最適化を行なった上でアプリケーションを配信する配信システムの、第２の実施の形態の構成例を示すブロック図である。本実施の形態は、配信サーバ１０の代わりに、配信サーバ１０ａを備えている点、利用者端末２０−１〜２０−ｎの代わりに利用者端末２０−１ａ〜２０−ｎａを備えている点が、図１に示した第１の実施の形態と相違している。
【００９２】
利用者端末２０−１ａは、情報公開部２３が追加されている点、アプリケーション管理部２１の代わりにアプリケーション管理部２１ａを備えている点が、第１の実施の形態の利用者端末２０−１と相違している。尚、他の利用者端末２０−２ａ〜２０−ｎａも、利用者端末２０−１ａと同様の構成を備える。
【００９３】
情報公開部２３は、アプリケーション管理部２１ａからの要求に応じて、当該利用者端末の情報である利用者端末情報を取得して提供する。
【００９４】
ここで、利用者端末情報とは、ハードウェア資源に関連する情報や、ソフトウェア資源に関連する情報等から構成される。ハードウェア資源に関連する情報とは、例えば、利用者端末２０−１ａの機器の名前や、画面の大きさ、利用可能な揮発性メモリの大きさ、利用可能な不揮発性の記憶領域の大きさ等であり、ソフトウェア資源に関連する情報とは、利用者端末２０−１ａの不揮発性の記憶領域に格納されたアプリケーションやクラスライブラリの名前等である。
【００９５】
本実施の形態のアプリケーション管理部２１ａが、第１の実施の形態のアプリケーション管理部２１と相違する点は、まず第１に、配信サーバ１０ａのサーバ利用者認証部１１ａに、アプリケーションを要求する前に（図５、ステップ５０１に相当）、情報公開部２３により利用者端末情報を取得する点があり、第２に、アプリケーション取得要求として、アプリケーション管理部２１ａから配信サーバ１０ａに転送する情報に、取得対象のアプリケーションの名前と、利用者端末を利用しているユーザの身元を明らかにする認証情報の他に、更に前記利用者端末情報を含める点がある。
【００９６】
本実施の形態の配信サーバ１０ａは、情報解析部１６が追加されている点と、コード最適化部１４の代わりにコード最適化部１４ａを備える点と、利用者認証部１１の代わりに利用者認証部１１ａを備える点が、第１の実施の形態の配信サーバ１０と相違している。
【００９７】
本実施の形態の利用者認証部１１ａは、利用者端末情報を含んだアプリケーション取得要求をアプリケーション管理部２１ａから受け取り、情報解析部１６にコード取得要求を出し、コード最適化部１４ａから最適化されたコードを取得する点が、第１の実施の形態の利用者認証部１１と相違している。
【００９８】
情報解析部１６は、情報公開部２３が生成した利用者端末情報を解釈し、コードの選別を行なう機能を備える。ここでは、利用者端末情報の具体例として、利用者端末にキャッシュされているクラスライブラリの名前を利用する。情報解析部１６は、利用者端末情報からキャッシュされているクラスライブラリの名前を判別し、プログラムコード管理部１２からプログラムコードを取得すると、キャッシュされているクラスライブラリに相当するコードを削除し、新しいプログラムコードを生成する。生成した新しいプログラムコードは、コード最適化部１４ａに渡される。
【００９９】
図９は、本実施の形態のコード最適化部１４ａの構成例を示すブロック図である。本実施の形態のコード最適化部１４ａは、第１の実施の形態のコード抽出部１４２の代わりにコード抽出部１４２ａを備える点が、第１の実施の形態のコード最適化部１４と相違している。
【０１００】
本実施の形態のコード抽出部１４２ａは、情報解析部１６からプログラムコードを取得する点が、第１の実施の形態のコード抽出部１４２と相違している。
【０１０１】
次に、本実施の形態の動作について説明する。尚ここでは、情報解析部１６とコード最適化部１４ａの動作を中心に説明することとし、最適化されたコードを取得後の配信サーバ１０の処理は、第１の実施の形態と同様であるため省略する。
【０１０２】
アプリケーション管理部２１ａは、情報公開部２３から利用者端末情報を取得後、利用者認証部１１ａにアプリケーション取得要求を送る（図５、ステップ５０１に相当）。アプリケーション取得要求は、取得対象のアプリケーションの名前と、利用者端末を利用しているユーザの身元を明らかにする認証情報と、先に取得した利用者端末情報を含む。
【０１０３】
アプリケーション取得要求を受け取った利用者認証部１１ａは、情報解析部１６に対して、要求されたアプリケーションの名前と、認証された利用者の名前と、利用者端末情報を渡し、プログラムコードの生成を要求する。
【０１０４】
情報解析部１６は、利用者認証部１１ａから、要求されたアプリケーションの名前と、認証された利用者の名前と、利用者端末情報を受け取ると、まず、アプリケーションの名前を用いて、プログラムコード管理部１２からプログラムコードを取得する。次に、情報解析部１６は、利用者端末情報を解析し、利用者端末にキャッシュされているクラスライブラリを判別する。次に、情報解析部１６は、取得したプログラムコードから、キャッシュされているクラスライブラリに相当するコードを取り除いた、新しいプログラムコードを生成し、コード抽出部１４２ａに生成したプログラムコードと、アプリケーションの名前と、認証された利用者の名前を渡す。
【０１０５】
コード抽出部１４２ａは、アプリケーションの名前と、認証された利用者の名前を用いて、実行データ管理部１５から実行データを取得し、実行データを用いたコード抽出を行なって、新しいプログラムコードを生成する。生成したプログラムコードはコード圧縮部１４１に渡される。コード圧縮部１４１は渡されたプログラムコードを圧縮して、新しく圧縮されたプログラムコードを生成し、利用者認証部１１ａに渡す。
【０１０６】
以上説明したように、本実施の形態によれば、実行データからの情報だけでなく、利用者端末情報に基づいてプログラムコードを削減することができる。
【０１０７】
本実施の形態では、各利用者端末情報をその利用者端末の情報公開部２３が保持し、毎回アプリケーション要求の度に利用者端末情報を、利用者端末から配信サーバ１０ａへ転送しているが、また別の実施の形態として、事前に利用者端末情報を配信サーバ１０ａ側の情報解析部１６が保持する方式も同様に実施することができる。この場合は、利用者端末情報を、アプリケーション要求の度に、利用者端末から配信サーバ１０ａに転送する必要はない。
【０１０８】
次に、本発明の第３の実施の形態について詳細に説明する。図１０は、本発明に係るコード最適化を行なった上でアプリケーションを配信する配信システムの、第３の実施の形態の構成例を示すブロック図である。本実施の形態は、配信サーバ１０の代わりに配信サーバ１０ｂを備える点が、図１に示した第１の実施の形態と相違している。
【０１０９】
本実施の形態の配信サーバ１０ｂは、キャッシュ部１７が追加されている点と、利用者認証部１１の代わりに利用者認証部１１ｂを備える点が、第１の実施の形態の配信サーバ１０と相違している。
【０１１０】
本実施の形態の利用者認証部１１ｂは、キャッシュ部１７に最適化されたプログラムコードを要求する点が、第１の実施の形態の利用者認証部１１と相違している。
【０１１１】
キャッシュ部１７は、利用者認証部１１ｂの要求に応じてコード最適化部１４が生成した最適化されたプログラムコードを、一時的に格納し、管理する機能を備える。一時的に格納した最適化されたプログラムコードをキャッシュしたプログラムコードと呼ぶ。利用者認証部１１ｂから、最適化されたプログラムコードを要求された時、キャッシュしたプログラムコードが利用可能であれば、キャッシュしたプログラムコードを返し、そうでない場合は、コード最適化部１４から最適化されたプログラムコードを取得し、取得したプログラムコードをキャッシュとして保存すると共に、利用者認証部１１ｂに最適化されたプログラムコードを返す。
【０１１２】
次に、本実施の形態の動作について説明する。尚、ここでは、キャッシュ部１７の動作を中心に説明する。最適化されたコードを取得後の配信サーバ１０の処理は、第１の実施の形態と同様であるため省略する。
【０１１３】
アプリケーション管理部２１からアプリケーション取得要求を受けると、利用者認証部１１ｂは、認証を行なった後、キャッシュ部１７に、前記取得要求に含まれるアプリケーションの名前と、認証により得られた利用者の名前を用いて、キャッシュ部１７に最適化されたプログラムコードを要求する。
【０１１４】
キャッシュ部１７は、現在、管理しているキャッシュしたプログラムコードの中から、利用可能なプログラムコードを探し出し、見つかれば、そのプログラムコードをアプリケーション管理部２１に返す。見つからなければ、コード最適化部１４から最適化されたプログラムコードを取得し、取得したプログラムコードをキャッシュとして保存すると共に、利用者認証部１１ｂに最適化されたプログラムコードを返す。キャッシュしたコードが利用可能かどうかの判定は、例えば、キャッシュ部１７が最適化されたコードを格納する時に、その時のアプリケーションの名前と、利用者の名前と、実行データのハッシュ値の三種類の情報と関連付けて管理しておき、利用者認証部１１ｂから要求が来ると、要求されたアプリケーション名と利用者の名前を用いて実行データ管理部１５から実行データを取得し、要求されたアプリケーション名と、利用者の名前と、実行データからハッシュ値を算出し、この三点の情報と対応するキャッシュされたプログラムコードが存在するかどうかを調べることにより利用可能かどうかを判定する方法を利用する。
【０１１５】
以上説明したように、本実施の形態によれば、配信サーバ１０ｂの最適化されたプログラムコードの生成処理を、キャッシュ部を用いて効率的に処理することができる。
【０１１６】
また、別の実施の形態として、利用者データを実行データの一部と見なし、利用者データを実行データに含めて、これを一つの実行データとして管理し利用することもできる。
【０１１７】
また、上記各実施の形態の配信システムは、互いに組み合わせて実施することができる。
【０１１８】
なお、上記各実施の形態の配信システムは、配信サーバ１０、１０ａ、１０ｂにおける利用者認証部１１、１１ａ、１１ｂ、プログラムコード管理部１２、利用者データ管理部１３、コード最適化部１４、１４ａ、コード圧縮部１４１、コード抽出部１４２、１４２ａ、実行データ管理部１５、情報解析部１６、キャッシュ部１７の機能や、利用者端末２０−１〜２０−ｎ、２０−１ａ〜２０−ｎａにおけるアプリケーション管理部２１、２１ａ、実行データ処理部２２、情報公開部２３の機能や、その他の機能をハードウェア的に実現することは勿論として、各機能を備えるコンピュータプログラムである配信プログラムを、コンピュータ処理装置のメモリにロードされることで実現することができる。このコンピュータプログラムは、磁気ディスク、半導体メモリその他の記録媒体９０、９０ａ、９０ｂ、９１、９１ａ、９１ｂに格納される。そして、その記録媒体からコンピュータ処理装置にロードされ、コンピュータ処理装置の動作を制御することにより、上述した各機能を実現する。
【０１１９】
以上好ましい実施の形態及び実施例をあげて本発明を説明したが、本発明は必ずしも上記実施の形態及び実施例に限定されるものではなく、その技術的思想の範囲内において様々に変形して実施することができる。
【０１２０】
【発明の効果】
以上説明したように本発明の配信システム、配信サーバとその配信方法、配信プログラムによれば、以下のような効果が達成される。
【０１２１】
第１に、本発明によれば、アプリケーション配信時に、各利用者端末におけるそのアプリケーション・プログラムの計算の実行状況を示す実行データに基づいて、プログラムコードから配信先の利用者端末で利用される可能性がない冗長な部分を取り除くコード最適化を行ない、その最適化されたプログラムコードを利用者端末に配信することができる。
【０１２２】
これにより、配信するアプリケーションのプログラムコード量が削減できるため、アプリケーション配信時に発生する通信量の削減、及び利用者端末で実行されるアプリケーションが消費するメモリ量の削減を実現できる。
【０１２３】
また、本発明の第２の実施の形態によれば、利用者端末のハードディスクに格納されているクラスライブラリ等の、利用者端末の様々な情報に基づいて効率的なプログラムコードの最適化ができる。
【０１２４】
更に、本発明の第３の実施の形態によれば、配信サーバにキャッシュ部を備えることにより、効率的に最適化されたプログラムコードの配信ができる。
【図面の簡単な説明】
【図１】  本発明の第１の実施の形態による配信システムの構成を示すブロック図である。
【図２】  本発明の第１の実施の形態による配信サーバの構成を示すブロック図である。
【図３】  本発明の第１の実施の形態による配信サーバの処理を説明するためのフローチャートである。
【図４】  本発明の第１の実施の形態のコード最適化部の処理を説明するためのフローチャートである。
【図５】  本発明の第１の実施の形態による利用者端末の処理を説明するためのフローチャートである。
【図６】  本発明の第１の実施の形態による配信サーバの、利用者データと実行データの受信処理を説明するためのフローチャートである。
【図７】  本発明の第１の実施の形態のアプリケーションのデータ構成の一例を示す図である。
【図８】  本発明の第２の実施の形態による配信システムの構成を示すブロック図である。
【図９】  本発明の第２の実施の形態による配信サーバの構成を示すブロック図である。
【図１０】  本発明の第３の実施の形態による配信システムの構成を示すブロック図である。
【図１１】  従来のアプリケーション配信システムの構成の一例を示すブロック図である。
【図１２】  従来のサーバの処理の流れの一例を示すフローチャートである。
【符号の説明】
１０、１０ａ、１０ｂ  配信サーバ
１１、１１ａ、１１ｂ  利用者認証部
１２  プログラムコード管理部
１３  利用者データ管理部
１４、１４ａ  コード最適化部
１４１  コード圧縮部
１４２、１４２ａ  コード抽出部
１５  実行データ管理部
１６  情報解析部
１７  キャッシュ部
２０−１〜２０−ｎ、２０−１ａ〜２０−ｎａ  利用者端末
２１、２１ａ  アプリケーション管理部
２２  実行データ処理部
２３  情報公開部
３０  情報転送装置
４０  配信サーバ
４１  利用者認証部
４２  プログラムコード管理部
４３  利用者データ管理部
５０−１〜５０−ｎ  利用者端末
５１  アプリケーション管理部
６０  情報転送装置
８０  アプリケーション
８１  プログラムコード
８２  実行データ
８３  利用者データ
９０、９０ａ、９０ｂ、９１、９１ａ、９１ｂ  記録媒体
１００  通信ネットワーク
【図１】
0004205323.tif 000002
【図２】
0004205323.tif 000003
【図３】
0004205323.tif 000004
【図４】
0004205323.tif 000005
【図５】
0004205323.tif 000006
【図６】
0004205323.tif 000007
【図７】
0004205323.tif 000008
【図８】
0004205323.tif 000009
【図９】
0004205323.tif 000010
【図１０】
0004205323.tif 000011
【図１１】
0004205323.tif 000012
【図１２】
0004205323.tif 000013