(57)【要約】【課題】端末の機能及び性能を落とすことなく、実行環境が異なる端末に同一のプログラムを提供できるプログラム配信装置及びプログラム配信方法を提供する。【解決手段】プログラム配信サーバ（１１）は、一つのプログラムに対し、異なるプログラミング言語を用いたソースコードを管理するプログラム管理サーバ（１４）から、端末（１３）の使用言語情報に基づき、その使用プログラミング言語を特定し、使用プログラミング言語を用いたソースコードを取得するソースコード取得部（１０２）と、使用プログラミング言語がコンパイル言語である場合、ソースコードを実行環境で実行可能な実行可能形式ファイルに変換するコード変換部（１０３）と、使用プログラミング言語がスクリプト言語である場合はソースコードを、使用プログラミング言語がコンパイル言語である場合は実行可能形式ファイルを、端末に送信する配信部（１０４）と、を具備する。【選択図】図２
2020144580.tif 000002
【特許請求の範囲】
【請求項１】
一つのプログラムに対し、異なるプログラミング言語を用いたソースコードを管理する管理部から、端末の使用言語情報に基づき、前記端末の実行環境で実行可能な使用プログラミング言語を特定し、前記使用プログラミング言語を用いた前記ソースコードを前記管理部から取得するソースコード取得部と、
前記使用プログラミング言語がコンパイル言語である場合、前記ソースコードを前記実行環境で実行可能な実行可能形式ファイルに変換する変換部と、
前記使用プログラミング言語がスクリプト言語である場合は前記ソースコードを、前記使用プログラミング言語が前記コンパイル言語である場合は前記実行可能形式ファイルを、前記端末に送信する送信部と、
を具備することを特徴とするプログラム配信装置。
【請求項２】
前記端末の実行環境情報に基づいて、前記端末の前記実行環境と同等の検証環境を構築する検証環境構築部と、
前記検証環境上での前記ソースコード又は前記実行可能形式ファイルを実行し、前記プログラムの検証を行う検証部と、
をさらに具備することを特徴とする請求項１に記載のプログラム配信装置。
【請求項３】
前記変換部は、コンパイラ及びリンカを含み、
前記端末のコンパイル条件及びリンク条件に基づき、前記ソースコードから前記実行可能形式ファイルとしてバイナリコードファイルを生成することを特徴とする請求項１又は請求項２に記載のプログラム配信装置。
【請求項４】
前記変換部は、前記ソースコードから、前記実行可能形式ファイルとして、前記端末上の仮想マシンで実行可能な中間言語ファイルを生成することを特徴とする請求項１から請求項３のいずれかに記載のプログラム配信装置。
【請求項５】
端末の使用言語情報に基づき、前記端末の実行環境で実行可能な使用プログラミング言語を特定し、一つのプログラムに対し、異なるプログラミング言語を用いたソースコードを管理する管理部から前記使用プログラミング言語を用いた前記ソースコードを取得する工程と、
前記使用プログラミング言語がコンパイル言語である場合、前記ソースコードを前記実行環境で実行可能な実行可能形式ファイルに変換する工程と、
前記使用プログラミング言語がスクリプト言語である場合は前記ソースコードを、前記使用プログラミング言語が前記コンパイル言語である場合は前記実行可能形式ファイルを、前記端末に送信する工程と、
を具備することを特徴とするプログラム配信方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラム配信装置及びプログラム配信方法に関する。
【背景技術】
【０００２】
従来、プラットフォームの種類が異なる端末に対して同一コードのアプリケーションプログラムを提供するシステムが知られている（特許文献１など参照）。
【０００３】
このシステムでは、各端末のプラットフォームの違いを仮想マシンレイヤで吸収している。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００１−５１８５７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、仮想マシン上でのプログラムの実行は、中間言語コードの解釈に負荷がかかるため、実行速度の低下及びＩ／Ｏアクセスの低下を招く。
【０００６】
本発明はかかる点に鑑みてなされたものであり、端末の機能及び性能を落とすことなく、実行環境が異なる端末に同一のプログラムを提供できるプログラム配信装置及びプログラム配信方法を提供することを目的の１つとする。
【課題を解決するための手段】
【０００７】
本発明に係るプログラム配信装置の一態様は、一つのプログラムに対し、異なるプログラミング言語を用いたソースコードを管理する管理部から、端末の使用言語情報に基づき、前記端末の実行環境で実行可能な使用プログラミング言語を特定し、前記使用プログラミング言語を用いた前記ソースコードを前記管理部から取得するソースコード取得部と、前記使用プログラミング言語がコンパイル言語である場合、前記ソースコードを前記実行環境で実行可能な実行可能形式ファイルに変換する変換部と、前記使用プログラミング言語がスクリプト言語である場合は前記ソースコードを、前記使用プログラミング言語が前記コンパイル言語である場合は前記実行可能形式ファイルを、前記端末に送信する送信部と、を具備することを特徴とする。
【０００８】
本発明に係るプログラム配信方法の一態様は、端末の使用言語情報に基づき、前記端末の実行環境で実行可能な使用プログラミング言語を特定し、一つのプログラムに対し、異なるプログラミング言語を用いたソースコードを管理する管理部から前記使用プログラミング言語を用いた前記ソースコードを取得する工程と、前記使用プログラミング言語がコンパイル言語である場合、前記ソースコードを前記実行環境で実行可能な実行可能形式ファイルに変換する工程と、前記使用プログラミング言語がスクリプト言語である場合は前記ソースコードを、前記使用プログラミング言語が前記コンパイル言語である場合は前記実行可能形式ファイルを、前記端末に送信する工程と、を具備することを特徴とする。
【発明の効果】
【０００９】
本発明によれば、端末の機能及び性能を落とすことなく、実行環境が異なる端末に同一のプログラムを提供できるプログラム配信装置及びプログラム配信方法を提供することができる。
【図面の簡単な説明】
【００１０】
【図１】第１の実施形態に係るプログラム配信システムを示す全体構成図である。
【図２】第１の実施形態に係るプログラム配信サーバを示す機能ブロック図である。
【図３】第１の実施形態に係る端末を示す機能ブロック図である。
【図４】第１の実施形態に係る端末のアーキティクチャ情報を示す説明図である。
【図５】第１の実施形態に係るプログラム配信サーバが行う各処理を示すフローチャートである。
【図６】第１の実施形態に係るプログラム配信サーバにおけるコード変換処理の各工程を示すフローチャートである。
【図７】第１の実施形態に係るプログラム配信サーバと端末との間のデータトランザクションを示すシーケンス図である。
【図８】第１の実施形態に係るサーバを実現するためのコンピュータ装置のハードウェア構成を示すブロック図である。
【図９】第２の実施形態に係るプログラム配信サーバを示す機能ブロック図である。
【図１０】第２の実施形態に係るプログラム配信サーバが行うアプリケーション検証処理の各工程を示すフローチャートである。
【図１１】第２の実施形態に係るプログラム配信サーバにおける検証環境構築処理の各工程を示すフローチャートである。
【図１２】第２の実施形態における対象アプリケーションと関連アプリケーションとの関係を示す模式図である。
【図１３】第２の実施形態に係るプログラム配信サーバにおける検証処理の各工程を示すフローチャートである。
【図１４】第２の実施形態における対象アプリケーションと関連アプリケーションとの接続における正常及び異常を示す模式図である。
【発明を実施するための形態】
【００１１】
以下、本実施の形態に係るプログラム配信装置及びプログラム配信方法について、図面を参照して説明する。
【００１２】
＜概要＞
端末においてプログラムが実行される実行環境（プラットフォーム）は様々である。そのうちの一つが、実行環境上で使用されるプログラミング言語（以下、使用プログラミング言語と記載する）である。
【００１３】
プログラミング言語のうち高級言語は、その変換形式によって、「コンパイラ言語」と「スクリプト言語」とに大別される。「コンパイラ言語」は、ソースコードを事前に実行環境上で実行可能な形式にコンパイルしておくプログラミング言語であり、例えば、Ｃ、Ｃ＋＋、Ｊａｖａ（登録商標）である。「スクリプト言語」は、ソースコードを実行環境上で解釈しながら実行するプログラミング言語であり、例えば、Ｐｙｔｈｏｎ、Ｐｅｒｌ、ＰＨＰ、Ｒｕｂｙ、ＪａｖａＳｃｒｉｐｔ（登録商標）である。
【００１４】
コンパイラ言語のうち、Ｃ、Ｃ＋＋など（以下、「Ｃ言語など」と記載する）は、ソースコードを、事前に実行可能形式ファイル（Ｅｘｅｃｕｔａｂｌｅ  ｆｉｌｅ、単に「実行形式」ともいう）に変換する。より具体的には、ソースコードを、機械語等で記述されたオブジェクトファイルにコンパイルし、オブジェクトファイルとライブラリとをリンクし、実行可能形式ファイルを生成する。
【００１５】
このようなＣ言語などは、端末での実行速度が速く、負荷も少ないという利点がある。しかし、コンパイル及びリンクが端末のプロセッサ（ＣＰＵ）、オペレーションシステム（ＯＳ）のようなアーキティクチャに依存する。
【００１６】
また、コンパイラ言語のうち、Ｊａｖａなどは、仮想マシンの上で実行される点で、Ｃ、Ｃ＋＋などと相違する。Ｊａｖａなどでは、ソースコードをコンパイルして中間言語コードを生成する。中間言語ファイルは、端末上で実行される仮想マシンにより解釈され、実行される。
【００１７】
仮想マシンには、中間言語コードを逐次解析しながら実行するインタプリタ型と、中間言語コードを読み込むときに機械語等にコンパイルし、実行するコンパイラ型と、があり、両者を組み合わせて使用されることもある。
【００１８】
このタイプの高級言語は、仮想マシンが端末のアーキティクチャの違いを吸収するため、中間言語コードを、実行環境が異なる端末どうしで共通化できるという利点がある。しかし、仮想マシンを端末上で実行させる必要があり、仮想マシン上でのプログラムの実行は、中間言語コードの解釈に負荷がかかるため、実行速度の低下及びＩ／Ｏアクセスの低下を招く。
【００１９】
一方、スクリプト言語は、端末上で実行されるインタプリタにより逐次解釈しながら実行されるため、事前にソースコードから他の形式に変換する必要はない。また、インタプリタが端末のアーキティクチャの違いを吸収するため、ソースコードを、実行環境が異なる端末どうしで共通化できるという利点がある。しかし、インタプリタにソースコードを逐次解釈しながら実行させるため、実行速度が遅い。
【００２０】
上述のような高級言語は、そのタイプによって利点及び欠点がある。従来は、実行速度が高速なＣ言語などの、事前の変換にコンパイラ及びリンカを用いる言語が多く使われていた。しかし、ＣＰＵの高速化に伴い、スクリプト言語やＪａｖａなどのインタプリタ又は仮想マシンを用いる言語が採用されるようになってきた。その理由として、スクリプト言語やＪａｖａなどは、端末の実行環境にインタプリタ及び仮想マシンが存在しなくても、ネットワークを介した配信により、インタプリタ又は仮想マシンを追加し、プログラムの追加及び実行が可能になることが挙げられる。
【００２１】
このような背景から、インターネット等の通信ネットワークを介して端末からの要求に応じてプログラムを配信するプログラム配信システムには、実行環境が異なる端末に同一のプログラムを提供できることが望まれる。しかしながら、端末の機能及び性能を落とすことなく、実行環境が異なる端末に同一のプログラムを提供できるものは知られていない。
【００２２】
さらに、プログラム配信システムにおいて、端末とサーバとで実行環境が異なるため、端末にアプリケーションを配信後、再度検証を行わなくてはならないという課題もあった。
【００２３】
そこで、本発明者らは、上記課題を解決すべく鋭意検討した結果、一つのプログラムに対し、異なるプログラミング言語を用いたソースコードを用意しておき、端末の使用言語情報に基づき、端末の実行環境で実行可能な使用プログラミング言語を特定し、使用プログラミング言語に応じて前記端末の実行環境で実行可能な形式でプログラムを端末に送信することにより、端末の機能及び性能を落とさないことに寄与することを見出だし、本発明を完成した。
【００２４】
すなわち、本実施の形態に係るプログラム配信装置は、一つのプログラムに対し、異なるプログラミング言語を用いたソースコードを管理する管理部から、端末の使用言語情報に基づき、前記端末の実行環境で実行可能な使用プログラミング言語を特定し、前記使用プログラミング言語を用いた前記ソースコードを前記管理部から取得するソースコード取得部と、前記使用プログラミング言語がコンパイル言語である場合、前記ソースコードを前記実行環境で実行可能な実行可能形式ファイルに変換する変換部と、前記使用プログラミング言語がスクリプト言語である場合は前記ソースコードを、前記使用プログラミング言語が前記コンパイル言語である場合は前記実行可能形式ファイルを、前記端末に送信する送信部と、を具備することを特徴とする。
【００２５】
すなわち、本実施の形態に係るプログラム配信方法は、端末の使用言語情報に基づき、前記端末の実行環境で実行可能な使用プログラミング言語を特定し、一つのプログラムに対し、異なるプログラミング言語を用いたソースコードを管理する管理部から前記使用プログラミング言語を用いた前記ソースコードを取得する工程と、前記使用プログラミング言語がコンパイル言語である場合、前記ソースコードを前記実行環境で実行可能な実行可能形式ファイルに変換する工程と、前記使用プログラミング言語がスクリプト言語である場合は前記ソースコードを、前記使用プログラミング言語が前記コンパイル言語である場合は前記実行可能形式ファイルを、前記端末に送信する工程と、を具備することを特徴とする。
【００２６】
また、本発明者らは、さらに検討を加えた結果、端末の実行環境情報に基づいて、端末の実行環境と同等の検証環境を構築し、検証環境上でのソースコード又は実行可能形式ファイルを実行し、プログラムの検証を行うにより、配信前に実行環境と同等の検証環境下で検証を行った上でプログラムを配信することを想到するに至った。
【００２７】
以下、図１〜図１４を参照して、本実施の形態に係るプログラム配信装置及びプログラム配信方法について詳細に説明する。以下の説明では、本発明のプログラムとして、アプリケーションプログラムを例に挙げるが、これに特に限定されず、システムプログラムであってもよい。
【００２８】
＜第１の実施形態＞
（システム）
図１は、第１の実施形態に係るプログラム配信システムを示す全体構成図である。図１に示すプログラム配信システム１は、プログラム配信サーバ１１と、ネットワーク１２と、複数の端末１３ａ〜１３ｎと、で構成されている。
【００２９】
プログラム配信サーバ１１は、ネットワーク１２を介して、端末１３ａ〜１３ｎにアプリケーションプログラムを配信する情報処理装置である。
【００３０】
端末１３ａ〜１３ｎは、プログラム配信サーバ１１から配信されたアプリケーションプログラムを実行する情報処理装置である。端末１３ａ〜１３ｎは、例えば、携帯電話、スマートフォン、タブレット型端末などの携帯端末（移動通信端末）、又は、パーソナルコンピュータ（ＰＣ：Personal  Computer）などの固定通信端末であってもよい。
【００３１】
ネットワーク１２は、インターネット、モバイルネットワーク、ＬＡＮ（Local  Area  Network）、ＷＡＮ（Wide  Area  Network）などの様々なネットワークを含む。なお、ネットワークは、無線、有線又はこれらの組み合わせで構成されてもよい。例えば、無線通信方式としては、Ｂｌｕｅｔｏｏｔｈ（登録商標）、無線ＬＡＮ（例えば、ＩＥＥＥ８０２．１１規格に準拠）、ＬＴＥ（Long  Term  Evolution）、又はその他の無線通信方式を利用することができる。
【００３２】
（プログラム配信サーバ）
図２は、第１の実施形態に係るプログラム配信サーバ１１を示す機能ブロック図である。図２に示すように、本発明のプログラム配信装置の一例であるプログラム配信サーバ１１は、アーキティクチャ情報取得部１０１、ソースコード取得部１０２、コード変換部１０３及び配信部１０４で構成されている。
【００３３】
アーキティクチャ情報取得部１０１は、ネットワーク１２（図１参照）を介して、端末１３（図１に示す端末１３ａ〜１３ｎを代表する）からアーキティクチャ情報を取得する処理（以下、「アーキティクチャ情報取得処理」と記載する）を行うように構成されている。アーキティクチャ情報は、端末１３を構成するコンピュータの設計思想及び構造に関する情報である。アーキティクチャ情報の詳細は後述する。
【００３４】
ソースコード取得部１０２は、ネットワーク１２を介して、プログラム管理サーバ１４からソースコードを取得する。
【００３５】
プログラム管理サーバ１４は、本発明の管理部の一例であり、一つのアプリケーションプログラムに対し、異なるプログラミング言語を用いたソースコードを記憶している。より具体的には、プログラム管理サーバ１４は、ストレージ１００３（図８参照）に、ソースコードを、以下の項目を含むレコードを複数格納したデータベースを備えている。
・ソースコードＩＤ
・アプリケーションプログラムＩＤ
・開発言語ＩＤ
・ソースコードファイル
・適合するインタプリタ又は仮想マシンに関する情報
【００３６】
ソースコードＩＤは、ソースコードに対してユニークに付与された識別情報である。また、アプリケーションプログラムＩＤは、アプリケーションプログラムに対してユニークに付与された識別情報である。また、開発言語ＩＤは、ソースコードに用いられているプログラミング言語に対してユニークに付与された識別情報である。これらの識別情報は、シリアルナンバー、英数字の組み合わせからなるコード、文字列のいずれであってもよく、特に限定されない。
【００３７】
ソースコードファイルは、アプリケーションプログラムのためのソースコードの本体である。ソースコードファイルに代えて、ソースコードファイルの保存場所を示すパスを記憶しておいてもよい。
【００３８】
適合するインタプリタ又は仮想マシンに関する情報とは、ソースコードファイルに、スクリプト言語又は仮想マシンを使用するコンパイラ言語が用いられている場合に用いられ、例えば、インタプリタの名称及びバージョン、又は、仮想マシンの名称及びバージョンであるが、特に限定されない。
【００３９】
プログラム管理サーバ１４は、プログラム配信サーバ１１からの要求に応じ、アプリケーションプログラムＩＤ及び開発言語ＩＤをキーとして、データベースを参照し、ソースコードファイルを検索し、プログラム配信サーバ１１に送信することができる。また、ソースコードファイルを検索した結果、該当するものがなかった場合には、その旨を示す通知を送信することができる。
【００４０】
コード変換部１０３は、本発明の変換部の一例であり、ソースコードファイルを実行可能形式ファイルに変換する処理（以下、「コード変換処理」と記載する）を行うように構成されている。コード変換処理の詳細については、後述する。
【００４１】
配信部１０４は、本発明の送信部の一例であり、ネットワーク１２（図２参照）を介して、実行可能形式ファイル又はソースコードファイルを、端末１３に送信する処理（以下、「配信処理」と記載する）を行うように構成されている。
【００４２】
（端末）
図３は、第１の実施形態に係る端末１３を示す機能ブロック図である。図３Ａ〜図３Ｃに示す端末１３Ａ、１３Ｂ、１３Ｃは、実行環境が異なる点で相違する。まず図３Ａを参照して、端末１３Ａ、１３Ｂ、１３Ｃに共通する構成について説明する。図３Ｂ、図３Ｃにおいて、図３Ａに示す端末１３Ａと同じ構成については同一の符号を付与し、説明を省略する。
【００４３】
図３Ａに示すように、端末１３Ａは、アプリケーションプログラムを実行するための実行環境として、ハードウェア（ＨＷ）２１、及び、オペレーションシステム（ＯＳ）２２を備えている。また、アーキティクチャ情報２３が、ストレージ１００３（図８参照）に記憶されている。
【００４４】
図３Ａに示す端末１３Ａは、プログラミング言語がＣ言語である実行環境を備えている。Ｃ言語が用いられたアプリケーションプログラム（以下、「Ｃアプリ」と記載する）２４は、ＯＳ２２上で実行可能である。
【００４５】
図３Ｂに示す端末１３Ｂは、使用するプログラミング言語がＰｙｔｈｏｎである実行環境を備えている。Ｐｙｔｈｏｎ言語が用いられたアプリケーションプログラム（以下、「Ｐｙｔｈｏｎアプリ」と記載する）２５は、ＯＳ２２により実行されるインタプリタ（以下、「Ｐｙｔｈｏｎインタプリタ」と記載する）２６により実行可能である。
【００４６】
図３Ｃに示す端末１３Ｃは、使用するプログラミング言語がＪａｖａである実行環境を備えている。Ｊａｖａ言語が用いられたアプリケーションプログラム（以下、「Ｊａｖａアプリ」と記載する）２７は、ＯＳ２２により実行される仮想マシン（以下、「Ｊａｖａ  ＶＭ」と記載する）２８により実行可能である。
【００４７】
（アーキティクチャ情報）
図４は、第１の実施形態に係る端末１３Ａ、１３Ｂ、１３Ｃのアーキティクチャ情報を示す説明図である。
【００４８】
図４に示すように、アーキティクチャ情報は、インストールアプリケーション情報と、エンジニアリング情報と、を含む。インストールアプリケーション情報は、本発明の実行環境情報の一例であり、端末１３Ａ、１３Ｂ、１３Ｃにインストールされているアプリケーションプログラムに関する情報であり、例えば、アプリケーションプログラムが行う処理内容情報（例えば、計測処理、演算処理、入力処理、出力処理）、アプリケーションプログラムのバージョン情報を含む。
【００４９】
また、エンジニアリング情報は、本発明の使用言語情報の一例である開発言語、本発明の実行環境情報の一例であるインタプリタ情報（名称及びバージョン）、コンパイル条件及びリンク条件を含む。
【００５０】
（プログラム配信方法）
以下、上述のような構成からなるプログラム配信システム１におけるプログラム配信方法について説明する。図５は、第１の実施形態に係るプログラム配信サーバ１１が行う各処理を示すフローチャートである。
【００５１】
図５に示すように、アーキティクチャ情報取得部１０１（図２参照）は、端末１３に、ネットワーク１２を介して、接続要求を送信する（Ｓ１）。
【００５２】
次に、アーキティクチャ情報取得部１０１は、端末１３からアーキティクチャ情報を受信できたか否か判定する（Ｓ２）。Ｓ２において判定がＮｏであった場合、異常として終了する（Ｓ３）。一方、Ｓ２において判定がＹｅｓであった場合、ソースコード取得部１０２（図２参照）は、プログラム管理サーバ１４からソースコードファイルを取得する（Ｓ４）。
【００５３】
具体的には、ソースコード取得部１０２は、取得要求を、プログラム管理サーバ１４に送信する。取得要求は、Ｓ１の接続要求に応じて端末１３から送信されたアーキティクチャ情報（図４参照）に含まれる開発言語に対応する開発言語ＩＤ、及び、配信対象のアプリケーションプログラムに対応するアプリケーションプログラムＩＤを含む。プログラム管理サーバ（図２参照）は、取得要求に含まれる開発言語ＩＤ及びアプリケーションプログラムＩＤをキーとして、データベースを検索し、検索されたソースコードファイルを、ソースコード取得部１０２に送信する。
【００５４】
なお、ソースコードファイルの取得の要否は、ソースコード取得部１０２が、アーキティクチャ情報に含まれるインストールアプリケーション情報に基づいて判定することができる。具体的には、端末１３にインストールされていないアプリケーションプログラムがあったとき、又は、インストール済みのアプリケーションプログラムのバージョンが古いときに、ソースコードファイルの取得を行うと判定することができる。このような判定により、アプリケーションプログラムの配信の要否を決めることができる。
【００５５】
次に、コード変換部１０３（図２参照）が、取得されたソースコードファイルを必要に応じて適切な形式に変換するコード変換処理を実行する（Ｓ５）。
【００５６】
（コード変換処理）
図６は、第１の実施の形態に係るプログラム配信サーバ１１におけるコード変換処理の各工程を示すフローチャートである。図６に示すように、まず、コード変換部１０３（図２参照）は、開発言語ＩＤに基づいて、ソースコードファイルに用いられているプログラム言語（以下、「使用プログラミング言語」と記載する）が、Ｃ言語か否か判定する（Ｓ１０）。
【００５７】
Ｓ１０における判定がＹｅｓであった場合、コード変換部１０３は、コンパイル・リンク処理を実施する（Ｓ１１）。コンパイル・リンク処理の詳細については後述する。次いで、コード変換部１０３は、コンパイル・リンク処理を正常に終了できたか否か判定する（Ｓ１２）。Ｓ１２において判定がＮｏであった場合、異常として終了する（Ｓ１３）。Ｓ１２において判定がＹｅｓであった場合、コンパイル・リンク処理で生成された実行可能形式ファイルから配信のためのパッケージを作成する（Ｓ１４）。その後、コード変換処理を正常に終了する（Ｓ１５）。
【００５８】
一方、Ｓ１０における判定がＮｏであった場合、コード変換部１０３は、開発言語ＩＤに基づいて、使用プログラミング言語がＰｙｔｈｏｎであるか否か判定する（Ｓ１６）。
【００５９】
Ｓ１６における判定がＹｅｓであった場合、コード変換部１０３は、Ｐｈｔｈｏｎインタプリタのバージョンチェック処理を実施する（Ｓ１７）。バージョンチェック処理の詳細については後述する。次いで、コード変換部１０３は、バージョンチェック処理を正常に終了できたか否か判定する（Ｓ１８）。Ｓ１８において判定がＮｏであった場合、異常として終了する（Ｓ１９）。Ｓ１８において判定がＹｅｓであった場合、ソースコードファイルからパッケージを作成する（Ｓ１４）。その後、コード変換処理を正常に終了する（Ｓ１５）。
【００６０】
一方、Ｓ１６における判定がＮｏであった場合、コード変換部１０３は、開発言語ＩＤに基づいて、使用プログラミング言語がＪａｖａであるか否か判定する（Ｓ２０）。
【００６１】
Ｓ２０における判定がＹｅｓであった場合、コード変換部１０３は、バイトコード変換処理を実施する（Ｓ２１）。バイトコード変換処理の詳細については後述する。次いで、コード変換部１０３は、バイトコード変換処理を正常に終了できたか否か判定する（Ｓ２２）。Ｓ２２において判定がＮｏであった場合、異常として終了する（Ｓ２３）。Ｓ２２において判定がＹｅｓであった場合、生成されたバイトコードファイルからパッケージを作成する（Ｓ１４）。その後、コード変換処理を正常に終了する（Ｓ１５）。一方、Ｓ２０における判定がＮｏであった場合、コード変換部１０３は、異常として終了する（Ｓ２３）。
【００６２】
図５に戻り、コード変換処理（Ｓ５）が正常に終了したならば、配信部１０４は、パッケージを端末１３（図２参照）に配信する（Ｓ６）。次いで、配信部１０４は、パッケージを受信した端末１３からの配信されたアプリケーションプログラムを起動した結果（ＯＫ又はＮＧ）を受信し、アプリ起動が成功したか否か判定する（Ｓ７）。Ｓ７における判定がＹｅｓであった場合、配信部１０４は、正常に処理を終了する（Ｓ８）。Ｓ７における判定がＮｏであった場合、配信部１０４は、異常として終了する（Ｓ９）。
【００６３】
（Ｃ言語コンパイル・リンク処理）
図６に示すコンパイル・リンク処理（Ｓ１１）の詳細について説明する。コンパイル・リンク処理（Ｓ１１）は、コード変換部１０３（図２参照）に含まれるコンパイラ及びリンカにより行われる。コンパイラ及びリンカは、当業者であればその名称から容易に理解できるであろう。
【００６４】
コンパイラによるコンパイルは、アーキティクチャ情報の、エンジニアリング情報に含まれるコンパイル条件に従って行われる。コンパイル条件は、例えば、プロセッサ名、コンパイラソフトウェア名、バージョン、メーカ名及びコンパイルオプションであるが、特に限定されない。
【００６５】
また、リンカによるリンクは、アーキティクチャ情報の、エンジニアリング情報に含まれるリンク条件に従って行われる。リンク条件は、例えば、リンカソフトウェア名、バージョン、メーカ名及びリンクオプションであるが、特に限定されない。
【００６６】
Ｓ１１で、端末１３Ａ（図３Ａ参照）から取得したアーキティクチャ情報のエンジニアリング情報内のコンパイル条件とリンク条件を使用することで、端末１３Ａに適合した実行可能形式のバイナリコードファイル（実行可能形式ファイル）が生成できる。
【００６７】
より具体的には、コンパイル条件を参照し、コンパイラソフトウェア名、バージョン及びメーカ名が一致するコンパイラを準備し、プロセッサ名とコンパイルオプションを指定して、コンパイルを実行する。
【００６８】
また、リンクは、リンク条件を参照し、リンカソフト名及びバージョンが一致するリンカを準備して、リンクオプションを指定して、リンクを実行する。その後、図６のＳ１４において、コンパイルとリンク後のバイナリーコード化された実行可能形式ファイルを、配信パッケージ化する。
【００６９】
（Ｐｙｔｈｏｎバージョンチェック処理）
Ｐｙｔｈｏｎ言語のインタプリタ上で動作するプログラム（ソースコードファイル）は、インタプリタのバージョンによって使用できるライブラリや関数が追加及び廃止があるので、一致させておかないと、端末でプログラムを動作させることができない。そこで、プログラム管理サーバ１４のデータベースにあるＰｙｔｈｏｎ言語で記述されたプログラムが、端末１３Ｂ（図３Ｂ参照）に実装されているインタプリタ２６で動作するバージョンか否かを確認することが好ましい。
【００７０】
このため、Ｐｙｔｈｏｎバージョンチェック処理（Ｓ１７）において、エンジニアリング情報（図４参照）内のインタプリタ名及びインタプリタバージョンが、プログラム管理サーバ１４からソースコード取得部１０２が取得したソースコードファイルのものと一致するか否かを確認する。
【００７１】
本実施の形態では、一致しない場合（Ｓ１８における判定でＮｏ）に異常として終了している（Ｓ１９）が、これに限定されない。例えば、ソースコード取得部１０２が取得したソースコードファイルに適合するインタプリタを、ソースコードファイルと共に配信パッケージ化し、端末１３Ｂに配信してもよい。
【００７２】
（Ｊａｖａ言語のバイトコード変換処理）
Ｊａｖａ言語の仮想マシン（Ｊａｖａ  ＶＭ）上で動作するバイトコードが用いられたプログラム（バイトコードファイル又は中間言語ファイル）は、仮想マシンのバージョンによって使用できるライブラリや関数が追加及び廃止があるので、一致させておかないと、端末でプログラムを動作させることができない。そこで、プログラム管理サーバ１４のデータベースにあるＪａｖａ言語で記述されたソースコードファイルが、端末１３Ｃ（図３Ｃ参照）に実装されているＪａｖａ  ＶＭ２８で動作するバージョンか否かを確認することが好ましい。
【００７３】
このため、バイトコード変換処理（Ｓ２１参照）において、エンジニアリング情報（図４参照）内の仮想マシン名及びバージョンが、プログラム管理サーバ１４からソースコード取得部１０２が取得したソースコードファイルのものと一致するか否かを確認する。
【００７４】
本実施の形態では、一致しない場合（Ｓ２２における判定でＮｏ）に異常として終了している（Ｓ２３）が、これに限定されない。例えば、ソースコード取得部１０２が取得したソースコードファイルに適合する仮想マシンを、ソースコードファイルと共に配信パッケージ化し、端末１３Ｃに配信してもよい。
【００７５】
バージョンチェックが完了したならば、コード変換部１０３は、Ｊａｖａ言語が用いられたソースコードファイルをコンパイルし、バイトコードを生成する。
【００７６】
（プログラム配信サーバと端末とのデータトランザクション）
図７は、第１の実施形態に係るプログラム配信サーバ１１と端末１３との間のデータトランザクションを示すシーケンス図である。図７に示すように、まず、プログラム配信サーバ１１（図２参照）のアーキティクチャ情報取得部１０１が、端末１３へ「接続要求」を送信する（Ｓ１０１）。端末１３は、アプリケーションプログラムを受入れ可能としたときに、レスポンス「ＯＫ」をプログラム配信サーバ１１へ返信する（Ｓ１０２）。ここで、受け入れ可能とは、通信をプログラム配信だけに使用し、他になにも通信していない状態をいう。例えば、端末１３において、プログラム配信に関係がないアプリケーションが通信をしていない状態を含む。
【００７７】
次に、端末１３は、記憶部（不図示）に記憶する「アーキティクチャ情報」を、プログラム配信サーバ１１へ送信する（Ｓ１０３）。これに対し、プログラム配信サーバ１１のアーキティクチャ情報取得部１０１は、アーキティクチャ情報の受信が完了すると、端末１３にレスポンス「ＯＫ」を送信する（Ｓ１０４）。また、プログラム配信サーバ１１は、アーキティクチャ情報を受信できなかった場合や、不明な応答を受け取った場合は、タイムアウトで異常終了する。
【００７８】
次に、プログラム配信サーバ１１の配信部１０４は、端末１３に対し、パッケージ配信を行う（Ｓ１０５）。端末１３は、パッケージを受信してプログラムの書換えを完了すると、レスポンス「ＯＫ」を返信する（Ｓ１０６）。プログラムの書換えとは、プログラムの配信を受けた端末１３が、パッケージを読み解き、チェックコードにより正しく受信できたかをチェックし、機器の記憶部（例えば、ＲＯＭ）に新しいアプリケーションを記録することをいう。
【００７９】
次に、プログラム配信サーバ１１の配信部１０４は、配信したアプリケーションプログラムを起動するために、「アプリ起動」を端末１３へ送信する（Ｓ１０７）。端末１３は、アプリケーションプログラムを正常に起動したならば、レスポンス「ＯＫ」を返信する（Ｓ１０８）。
【００８０】
図７を参照して説明したプログラム配信サーバ１１と端末１３との間のデータトランザクションは一例に過ぎず、順番等を適宜変更することができる。
【００８１】
（サーバの構成）
次に、図８を参照して、プログラム配信サーバ１１（図２参照）、プログラム管理サーバ１４のようなサーバ（以下、単に「サーバ」と記載する）を実現するためのコンピュータ装置のハードウェア構成について説明する。図８は、第１の実施形態に係るサーバを実現するためのコンピュータ装置のハードウェア構成を示すブロック図である。
【００８２】
第１の実施形態の説明に用いた図２は、機能単位のブロックを示している。これらの機能ブロック（構成部）は、ハードウェア及び／又はソフトウェアの任意の組み合わせによって実現される。また、各機能ブロックの実現手段は特に限定されない。すなわち、各機能ブロックは、物理的に結合した１つの装置により実現されてもよいし、物理的に分離した２つ以上の装置を有線又は無線で接続し、これら複数の装置により実現されてもよい。
【００８３】
例えば、第１の実施形態におけるサーバは、本発明のプログラム配信方法の各工程を実施するコンピュータとして機能してもよい。図８に示すサーバ１０００は、物理的には、プロセッサ１００１、メモリ１００２、ストレージ１００３、通信装置１００４、入力装置１００５、出力装置１００６、バス１００８などを含むコンピュータ装置として構成されてもよい。
【００８４】
なお、以下の説明では、「装置」という文言は、回路、デバイス、ユニットなどに読み替えることができる。サーバ１０００などのハードウェア構成は、図に示した各装置を１つ又は複数含むように構成されてもよいし、一部の装置を含まずに構成されてもよい。
【００８５】
例えば、プロセッサ１００１は１つだけ図示されているが、複数のプロセッサがあってもよい。また、処理は、１のプロセッサで実行されてもよいし、処理が同時に、逐次に、又はその他の手法で、１以上のプロセッサで実行されてもよい。
【００８６】
プログラム配信サーバ１１、プログラム管理サーバ１４などにおける各機能は、プロセッサ１００１、メモリ１００２などのハードウェア上に所定のソフトウェア（プログラム）を読み込ませることで、プロセッサ１００１が演算を行い、通信装置１００４による通信や、メモリ１００２及びストレージ１００３におけるデータの読み出し及び／又は書き込みを制御することで実現される。
【００８７】
プロセッサ１００１は、例えば、オペレーティングシステムを動作させてコンピュータ全体を制御する。プロセッサ１００１は、周辺装置とのインターフェース、制御装置、演算装置、レジスタなどを含む中央処理装置（ＣＰＵ：Central  Processing  Unit）で構成されてもよい。なお、上述のアーキティクチャ情報取得部１０１、ソースコード取得部１０２、コード変換部１０３及び配信部１０４などの各部は、プロセッサ１００１で実現されてもよい。プロセッサ１００１は、１以上のチップで実装されてもよい。
【００８８】
また、プロセッサ１００１は、プログラム（プログラムコード）、ソフトウェアモジュールやデータを、ストレージ１００３及び／又は通信装置１００４からメモリ１００２に読み出し、これらに従って各種の処理を実行する。プログラムとしては、上述の実施形態で説明した動作の少なくとも一部をコンピュータに実行させるプログラムが用いられる。例えば、アーキティクチャ情報取得部１０１、ソースコード取得部１０２、コード変換部１０３及び配信部１０４は、メモリ１００２に格納され、プロセッサ１００１で動作する制御プログラムによって実現されてもよく、他の機能ブロックについても同様に実現されてもよい。
【００８９】
メモリ１００２は、コンピュータ読み取り可能な記録媒体であり、例えば、ＲＯＭ（Read  Only  Memory）、ＥＰＲＯＭ（Erasable  Programmable  ROM）、ＥＥＰＲＯＭ（Electrically  EPROM）、ＲＡＭ（Random  Access  Memory）、その他の適切な記憶媒体の少なくとも１つで構成されてもよい。メモリ１００２は、レジスタ、キャッシュ、メインメモリ（主記憶装置）などと呼ばれてもよい。メモリ１００２は、本発明の一実施形態に係るプログラム配信方法を実施するために実行可能なプログラム（プログラムコード）、ソフトウェアモジュールなどを保存することができる。
【００９０】
ストレージ１００３は、コンピュータ読み取り可能な記録媒体であり、例えば、フレキシブルディスク、フロッピー（登録商標）ディスク、光磁気ディスク（例えば、コンパクトディスク（ＣＤ−ＲＯＭ（Compact  Disc  ROM）など）、デジタル多用途ディスク、Ｂｌｕ−ｒａｙ（登録商標）ディスク）、リムーバブルディスク、ハードディスクドライブ、スマートカード、フラッシュメモリデバイス（例えば、カード、スティック、キードライブ）、磁気ストライプ、データベース、サーバ、その他の適切な記憶媒体の少なくとも１つで構成されてもよい。ストレージ１００３は、補助記憶装置と呼ばれてもよい。
【００９１】
通信装置１００４は、有線及び／又は無線ネットワークを介してコンピュータ間の通信を行うためのハードウェア（送受信デバイス）であり、例えばネットワークデバイス、ネットワークコントローラ、ネットワークカード、通信モジュールなどともいう。
【００９２】
入力装置１００５は、外部からの入力を受け付ける入力デバイス（例えば、キーボード、マウスなど）である。出力装置１００６は、外部への出力を実施する出力デバイス（例えば、ディスプレイ、スピーカーなど）である。なお、入力装置１００５及び出力装置１００６は、一体となった構成（例えば、タッチパネル）であってもよい。サーバ１０００は、入力装置１００５及び出力装置１００６を備えていてなくてもよい。
【００９３】
また、プロセッサ１００１やメモリ１００２などの各装置は、情報を通信するためのバス１００８で接続される。バス１００８は、単一のバスで構成されてもよいし、装置間で異なるバスで構成されてもよい。
【００９４】
また、サーバ１０００は、マイクロプロセッサ、デジタル信号プロセッサ（ＤＳＰ：Digital  Signal  Processor）、ＡＳＩＣ（Application  Specific  Integrated  Circuit）、ＰＬＤ（Programmable  Logic  Device）、ＦＰＧＡ（Field  Programmable  Gate  Array）などのハードウェアを含んで構成されてもよく、当該ハードウェアにより、各機能ブロックの一部又は全てが実現されてもよい。例えば、プロセッサ１００１は、これらのハードウェアの少なくとも１つで実装されてもよい。
【００９５】
なお、上述のようなハードウェア構成からなるコンピュータ装置により、端末１３（図２参照）を実現することもできる。
【００９６】
以上説明したように、上記第１の実施形態によれば、一つのアプリケーションプログラムに対し、異なるプログラミング言語を用いたソースコードファイルをプログラム管理サーバ１４（図２参照）に用意し、プログラム配信サーバ１１は、端末１３から取得したアーキテクィチャ情報に含まれる開発言語（使用言語情報）に基づいてソースコードファイルを取得し、開発言語に適合するように、実行可能形式ファイルに変換し、又は、ソースコードファイルのままで、端末１３に配信する。これにより、端末１３の機能及び性能を落とすことなく、実行環境が異なる端末に同一のプログラムを提供できるという効果を発揮する。
【００９７】
＜第２の実施形態＞
図９〜図１４を参照して、第２の実施形態に係る、検証処理を含むプログラム配信システムについて説明する。以下の説明では、第１の実施形態と相違する点について説明し、同じ点については説明を省略する。また、図１〜図８に用いた符号は、同一の構成又は工程については同一の符号を付して説明を省略する。
【００９８】
第１の実施形態に係るプログラム配信システム１では、図７に示すように、プログラム配信サーバ１１から端末１３（図２参照）にアプリケーションプログラムを配信した後、端末１３にアプリケーションプログラムを起動させ、それが成功したことを示すレスポンス「ＯＫ」を受信したことにより、アプリケーションプログラムの検証を行なっている。このため、端末１３でのアプリケーションプログラムの検証により、端末１３にインストール済みで且つ起動中の他のアプリケーションプログラムとの干渉により、アプリケーションプログラムが起動できなくなるような事象があれば、プログラム配信サーバ１１側で異常終了として検知することができる。しかし、端末１３でのアプリケーションプログラムの検証は、端末１３を異常停止させたり、再起動が必要になったり等の不都合を招くことが懸念される。
【００９９】
そこで、第２の実施形態では、アプリケーションプログラムの配信前に、プログラム配信サーバにおいて、端末１３の実行環境と同等の評価環境を構築し、アプリケーションプログラムの検証を行なっている。
【０１００】
＜アプリケーション検証処理＞
図９は、第２の実施形態に係るプログラム配信サーバを示す機能ブロック図である。図９に示すように、プログラム配信サーバ２０１は、検証環境構築部２０２及び検証部２０３をさらに具備する。
【０１０１】
図１０は、第２の実施形態に係るプログラム配信サーバ２０１が行うアプリケーション検証処理の各工程を示すフローチャートである。プログラム配信サーバ２０１（図９参照）は、図５〜図７を参照して説明した第１の実施形態に係るプログラム配信サーバ１１と同様の処理を行う。しかし、パッケージを配信する（図５中、Ｓ６参照）前に、端末１３のアーキティクチャ情報に基づいてアプリケーションプログラムの検証環境下での検証（以下、「アプリケーション検証処理」と記載する）を行う点で相違する。
【０１０２】
（検証環境構築処理）
図１０に示すように、まず、検証環境構築部２０２が検証環境構築処理を実施する（Ｓ６１）。検証環境構築処理（Ｓ６１）では、プログラム配信サーバ２０１上に、アーキティクチャ情報に基づいて、端末１３（図９参照）と同等の実行環境である検証環境を仮想的に構築する。
【０１０３】
図１１は、第２の実施形態に係るプログラム配信サーバ２０１における検証環境構築処理の各工程を示すフローチャートである。図１１に示すように、端末１３（図９参照）のうち、評価対象の端末（以下、対象端末と記載する）について、事前に取得しているアーキティクチャ情報を解析し（Ｓ８１）、対象端末と同等の検証環境が構築可能か否かを判定する（Ｓ８２）。
【０１０４】
Ｓ８２の判定方法は、特に限定されないが、対象端末のアーキティクチャ情報に示された環境を構築できない場合に構築不可と判定し、そうでない場合に構築可能と判断することができる。具体的には、例えば、コンパイラのライセンス期限切れにより、再コンパイルがかけられない場合、及び、開発言語におけるバージョンの差異（例：Ｊａｖａ、Ｐｙｔｈｏｎのバージョン違い）がある場合が挙げられるが、特に限定されない。
【０１０５】
Ｓ８２において判定がＮｏであれば、異常として終了する（Ｓ８３）。Ｓ８２において判定がＹｅｓであれば、検証環境を構築する（Ｓ８４）。検証環境の構築は、具体的には、以下のようにして行うことができる。
【０１０６】
検証環境の構築は、仮想化技術（コンテナ型仮想化技術等）、バッチ処理による自動化環境を用いることで実現できる。対象端末のアーキティクチャ情報を基に、プログラム配信サーバ２０１に格納されているＣＰＵアーキティクチャ（ｘ８６、ＡＲＭ等）、ＯＳ（Ｄｅｂｉａｎ、Ｕｂｕｎｔｕ、ＣｅｎｔＯＳ等）、開発言語（Ｊａｖａ、Ｐｙｔｈｏｎ等）などの仮想環境を構築するためのイメージを取得し、各イメージを基に、対象端末と同様の検証環境を自動構築する。
【０１０７】
検証環境の構築を行った後、構築ができたか否かを判定する（Ｓ８５）。Ｓ８５における判定がＮｏであれば、異常として終了する（Ｓ８６）。一方、Ｓ８５における判定がＹｅｓであれば、図１０に示すＳ６２に進む。
【０１０８】
Ｓ６２では、検証部２０３は、関連アプリケーション（図１０中、「関連アプリ」と記載する）がプログラム管理サーバ１４から取得可能か否か判定する。
【０１０９】
（関連アプリケーション）
関連アプリケーションとは、配信対象のアプリケーションプログラム（以下、対象アプリケーションという）が複数のアプリケーションで構成されるアプリケーション群の一部であった場合、同アプリケーション群を構成するその他のアプリケーションプログラムをいう。
【０１１０】
図１２は、第２の実施形態における対象アプリケーションと関連アプリケーションとの関係を示す模式図である。図１２中、「加工アプリケーション」を「加工アプリ」、「分析アプリケーション」を「分析アプリ」と記載する。具体的には、図１２に示すように、対象端末において、あるデータ（加工データ）を加工する「加工アプリケーション」と、分析する「分析アプリケーション」が存在すると想定する。さらに、「加工アプリケーション」と「分析アプリケーション」はデータフォーマットを共有していると想定する。「分析アプリケーション」は、共有されたデータフォーマットを基に加工データの分析処理を実行するため、「加工アプリケーション」との依存性が発生する。また、「加工アプリケーション」は加工データを「分析アプリケーション」に送信後、「分析アプリケーション」から受信完了の応答を受け取る。
【０１１１】
このように、依存関係にある２つのアプリケーションのうち、一方を対象アプリケーションと、他方を関連アプリケーションと定義する。
【０１１２】
Ｓ６２での判定は、例えば、対象端末のアーキティクチャ情報内の、本発明の実行環境情報の一例であるインストールアプリケーション情報を用いて関連アプリケーションのソースコードファイルをプログラム管理サーバ１４のデータベースから検索し、検索結果が得られたか否かで行うことができる。
【０１１３】
Ｓ６２において判定がＮｏであった場合、異常として終了する（Ｓ６３）。Ｓ６２において判定がＹｅｓであった場合、ソースコード取得部１０２（図９参照）は、関連アプリケーションのソースコードファイルをプログラム管理サーバ１４から取得する（Ｓ６４）。
【０１１４】
次に、コード変換部１０３（図９参照）は、関連アプリケーションのソースコードファイルに対し、第１の実施形態と同様に、コード変換処理を実施する（Ｓ６５）。その後、コード変換処理が正常終了したか否かを判定する（Ｓ６６）。
【０１１５】
Ｓ６６において判定がＮｏであった場合、異常として終了する（Ｓ６７）。Ｓ６６において判定がＹｅｓであった場合、検証部２０３（図９参照）は、関連アプリケーションを検証環境へデプロイする（Ｓ６８）。ここでデプロイとは、関連アプリケーションを、検証環境上で実行可能な状態に配置することをいう。
【０１１６】
（検証処理）
次いで、検証部２０３は、検証処理を実施する（Ｓ６９）。図１３は、第２の実施形態に係るプログラム配信サーバ２０１における検証処理の各工程を示すフローチャートである。図１３に示すように、まず、検証部２０３（図９参照）は、対象アプリケーションの単体検証を実施する（Ｓ９１）。
【０１１７】
単体検証は、具体的には、対象アプリケーション単体での配信予定端末との適合性（ＣＰＵアーキティクチャ、ＯＳ、開発言語等）の確認を実施する。より具体的には、検証環境構築処理で構築した対象端末と同様の実行環境（ＣＰＵアーキティクチャ、ＯＳ、開発言語、等）において、対象アプリケーションの実行、実行結果のログ解析を実施する。この出力ログが、プログラム配信サーバ２０１にてあらかじめ定義されている正常値と一致すれば正常応答と判断する。また、異常の場合にはエラーコードを出力し、プログラム配信サーバ２０１にあらかじめ定義されているエラーコード表と照らし合わせることで不適合となる原因（ＣＰＵアーキティクチャ、ＯＳ、開発言語等）を配信前に確認することが可能となる。これにより、配信予定の対象アプリケーションが対象端末の実行環境と同等の環境下で実行可能であることが確認できる。
【０１１８】
次に、対象アプリケーションの単体検証の結果が正常か否かを判定する（Ｓ９２）。Ｓ９２における判定がＮｏである場合、異常であり、エラー出力を行い、処理を終了する（Ｓ９３）。Ｓ９２における判定がＹｅｓである場合、正常であり、次の接続検証（Ｓ９４）を行う。
【０１１９】
（接続検証）
接続検証（Ｓ９４）では、対象アプリケーションと関連アプリケーションとを接続させ、アプリケーション間の検証を実施する。
【０１２０】
上述のように、対象アプリケーションと関連アプリケーションとは依存性が存在する。接続検証では、その依存する項目において、不一致等の異常がある場合、異常の判定となる。
【０１２１】
具体的には、アプリケーション間における接続・通信におけるプロトコル又は設定の違いなどが挙げられる。
【０１２２】
図１４は、第２の実施形態における対象アプリケーションと関連アプリケーションとの接続における正常及び異常を示す模式図である。図１４を参照して、対象アプリケーションを「加工アプリケーション」、関連アプリケーションを「分析アプリケーション」として具体例を説明する。アプリケーション間にて通信を行う場合、同じ通信プロトコルの使用、アプリケーション同士で通信設定（例：ｐｏｒｔ番号等）の相互認識が必要となる。また、「加工アプリケーション」及び「分析アプリケーション」で共有しているデータフォーマットに準じていない場合等においても検証時異常（ＮＧ）となる。「加工アプリケーション」及び「分析アプリケーション」間の接続検証時における判定は、図１４に示す通り、例えば、通信プロトコル（ＨＴＴＰとＭＱＴＴ）の一致又は不一致、データフォーマット（ｔｅｘｔ、ＪＳＯＮ）の一致又は不一致に基づいて行うことができる。
【０１２３】
次に、接続検証の結果が正常か否かを判定する（Ｓ９５）。Ｓ９５における判定がＮｏである場合、異常であり、エラー出力を行い、処理を終了する（Ｓ９６）。Ｓ９５における判定がＹｅｓである場合、正常であり、検証処理を終了し、図１０のＳ７０に進む。
【０１２４】
Ｓ７０では、検証処理の結果が正常か否かを判定する。Ｓ７０における判定がＮｏである場合、異常として処理を終了する（Ｓ７１）。Ｓ７０における判定がＹｅｓである場合、正常であり、アプリケーション検証処理を終了し、対象端末へのパッケージの配信を行う（図５中、Ｓ６）。
【０１２５】
本実施の形態では、対象端末でのアプリケーションプログラムの起動による検証は必要ないが実施しても構わない。
【０１２６】
以上説明したように、上記第２の実施形態によれば、第１の実施形態の同様の効果に加えて、対象端末の実行環境情報（例えば、インストールアプリケーション情報）に基づいて、対象端末の実行環境と同等の検証環境を構築し、検証環境上でのソースコード又は実行可能形式ファイルを実行し、プログラムの検証を行う。これにより、対象端末で使用されるアプリケーションプログラムの管理、検証及び配信をプログラム配信サーバ２０１で行い、アプリケーションプログラムの開発及びデプロイを短期に、且つ、適切に行うことが可能になる。また、対象端末の実行環境に適合したアプリケーションプログラムを配信前に実行環境とバイナリレベルまで同等の検証環境下で検証を行った上で配信することが可能となるため、品質高いアプリケーションプログラムを提供することができ、対象端末はアプリケーション実行時間及び機能を落とさず、アプリケーションプログラムの実行が可能となる等の効果を奏する。
【０１２７】
なお、本発明は上記実施形態に限定されず、種々変更して実施することが可能である。上記実施の形態において、添付図面に図示されている構成要素の大きさや形状、機能などについては、これに限定されず、本発明の効果を発揮する範囲内で適宜変更することが可能である。その他、本発明の目的の範囲を逸脱しない限りにおいて適宜変更して実施することが可能である。
【０１２８】
例えば、上記第１、第２の実施形態では、アプリケーションプログラム（パッケージ）の配信は、プログラム配信サーバ１１、２０１（図２、図９参照）からの要求により行っているが、端末１３からの要求により行われてもよい。
【０１２９】
また、上記第１、第２の実施形態では、ソースコードファイルはプログラム管理サーバ１４のデータベースにより管理されているが、プログラム配信サーバ１１、２０１（図２、図９参照）がデータベースを、例えば、ストレージ１００３（図８参照）に備え、プログラム管理サーバ１４と同様にソースコードファイルを管理させてもよい。すなわち、本発明の管理部は、プログラム配信サーバ１１、２０１（図２、図９参照）が備えていてもよい。
【０１３０】
また、上記第２の実施形態では、ソースコード取得部（図２、図９参照）がソースコードファイルを取得してから、ソースコードファイルのバージョンチェックを行っているが、ソースコードファイルを取得する前に、プログラム管理サーバ１４から適合するインタプリタ又は仮想マシンに関する情報を取得し、バージョンチェックを行なってもよい。
【産業上の利用可能性】
【０１３１】
本発明は、端末の機能及び性能を落とすことなく、実行環境が異なる端末に同一のプログラムを提供できるという効果を奏し、例えば、アプリケーションプログラムの配信及び検証のためのシステムに適用して好適である。
【符号の説明】
【０１３２】
１  プログラム配信システム
１１、２０１  プログラム配信サーバ（プログラム配信装置）
１２  ネットワーク
１３（１３ａ〜１３ｃ、１３ｎ、１３Ａ〜１３Ｃ）  端末
１４  プログラム管理サーバ（管理部）
２３  アーキティクチャ情報
２６  インタプリタ
２８  Ｊａｖａ  ＶＭ（仮想マシン）
１０１  アーキティクチャ情報取得部
１０２  ソースコード取得部（取得部）
１０３  コード変換部（変換部）
１０４  配信部（送信部）
２０２  検証環境構築部
２０３  検証部
１０００  サーバ
１００１  プロセッサ
１００２  メモリ
１００３  ストレージ
１００４  通信装置
１００５  入力装置
１００６  出力装置
１００８  バス
【図１】
2020144580.tif 000003
【図２】
2020144580.tif 000004
【図３】
2020144580.tif 000005
【図４】
2020144580.tif 000006
【図５】
2020144580.tif 000007
【図６】
2020144580.tif 000008
【図７】
2020144580.tif 000009
【図８】
2020144580.tif 000010
【図９】
2020144580.tif 000011
【図１０】
2020144580.tif 000012
【図１１】
2020144580.tif 000013
【図１２】
2020144580.tif 000014
【図１３】
2020144580.tif 000015
【図１４】
2020144580.tif 000016