(57)【特許請求の範囲】
【請求項１】
ソフトウェアの動作を検証する機能を備えたコンピュータと、
前記コンピュータにソフトウェアの配信を行う第一の配信装置と、
前記コンピュータに前記ソフトウェアを検証するプログラムである検査プログラムの配信を行う第二の配信装置と、
からなるソフトウェア配信システムであって、
前記コンピュータは、
前記第一の配信装置から、前記ソフトウェアを受信する第一のソフトウェア受信手段と、
前記第二の配信装置から、前記ソフトウェアに対応する前記検査プログラムを受信する第二のソフトウェア受信手段と、
実行形式で記述された前記ソフトウェアと、前記検査プログラムとを合成し、実行するソフトウェア実行手段を有し、
前記第二のソフトウェア受信手段は、前記第一のソフトウェア受信手段が前記ソフトウェアを受信したタイミングで前記ソフトウェアに対応する検査プログラムの取得を試み、前記検査プログラムが取得できない場合は、所定の間隔をおいて再試行を繰り返し、
前記ソフトウェア実行手段は、前記第二のソフトウェア受信手段が前記検査プログラムを受信したタイミングで、前記ソフトウェアおよび前記検査プログラムを合成する
ことを特徴とするソフトウェア配信システム。
【請求項２】
前記第二の配信装置は、配信するソフトウェアのそれぞれ異なる一部の機能に対応する複数の検査プログラムを配信する
ことを特徴とする、請求項１に記載のソフトウェア配信システム。
【請求項３】
前記第二のソフトウェア受信手段は、前記第一のソフトウェア受信手段がソフトウェアの受信を行った際、受信した前記ソフトウェアを必要とする他のソフトウェアに対応する検査プログラムを前記第二の配信装置から取得する
ことを特徴とする、請求項１または２に記載のソフトウェア配信システム。
【請求項４】
前記第一および前記第二の配信装置は同一の配信装置であり、
前記配信装置は、配信対象のソフトウェアと前記ソフトウェアに対応する検査プログラムとを合成した合成ソフトウェアを生成するソフトウェア合成手段と、
前記合成ソフトウェアを前記コンピュータに配信する合成ソフトウェア配信手段
をさらに有し、
配信対象のソフトウェアに対応する検査プログラムが、前記配信装置に記憶されている場合に、
前記ソフトウェア合成手段が、前記配信対象のソフトウェアと前記検査プログラムから合成ソフトウェアを生成し、前記合成ソフトウェア配信手段が、前記合成ソフトウェアを配信する
ことを特徴とする、請求項１から３のいずれかに記載のソフトウェア配信システム。
【請求項５】
ソフトウェアの動作を検証する機能を備えたコンピュータと、前記コンピュータにソフトウェアの配信を行う第一の配信装置と、前記コンピュータに前記ソフトウェアを検証するプログラムである検査プログラムの配信を行う第二の配信装置が行うソフトウェア配信方法であって、
前記第一の配信装置が、前記コンピュータに対して、ソフトウェアを配信し、
前記第二の配信装置が、前記コンピュータに対して、前記ソフトウェアに対応する前記検査プログラムを配信し、
前記コンピュータが、前記ソフトウェアを受信したタイミングで前記ソフトウェアに対
応する検査プログラムの取得を試み、前記検査プログラムが取得できない場合は、所定の間隔をおいて再試行を繰り返し、前記検査プログラムを受信したタイミングで、前記ソフトウェアおよび前記検査プログラムを合成する
ことを特徴とするソフトウェア配信方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ソフトウェア配信システムに関する。
【背景技術】
【０００２】
近年、インターネットに接続可能な機器がネットワークを通してソフトウェアを取得する形態が普及している。このような機器には、例えばスマートフォンのような携帯端末から、パーソナルコンピュータ、自動車の車載端末といった様々なものがある（これらの端末を以下、クライアント端末と称する）。開発者によって作成されたソフトウェアは、配布を行うためのサーバにアップロードされ、システムによって自動的に、または利用者の操作によってクライアント端末にダウンロードされる。
【０００３】
一方で、悪意のあるソフトウェアや設計ミスを含むソフトウェアがサーバにアップロードされると、当該ソフトウェアをダウンロードしたクライアント端末に動作不良を引き起こしたり、端末内の情報が漏洩するなどといった被害が出る恐れがある。
【０００４】
そこで、ソフトウェアの安全性を確保するため、開発されたソフトウェアの動作テストを認証機関が行い、テストに合格したソフトウェアのみを流通させるという手法がある。特許文献１に記載された発明は、当該手法に関連するアクセス制御方法である。当該発明では、認定機関が、ソフトウェアが安全であると証明する認定情報を生成し、ソフトウェアとともにクライアント端末に送信する。クライアント端末は、当該認定情報に基づいてプログラムへのアクセス許可を決定する。このようにすることで、安全であると認定されていないソフトウェアをクライアント端末上で動作させることができなくなる。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００３−２８３４９４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、スマートフォンや車載端末といったクライアント端末にはさまざまな実行環境があるため、認証機関の固定された動作テスト環境では十分な動作検証を行うことができない場合がある。例えば、クライアント端末が自動車に車載された情報端末である場合、自動車の様々な走行状態を再現しなければテストが行えないため、完全な動作検証を行うことが難しいという問題がある。
【０００７】
そこで本出願人は、プログラムを実行しながら当該プログラムの動作監視を行うことができるソフトウェア作成方法を提案している（特願２０１１−２１４９９２）。具体的には、監視対象プログラムの入出力状態や変数などが、仕様通りとなっているか検証するための監視プログラムを同時に実行させ、監視対象プログラムの推奨されない動作を検出している。監視対象は、アプリケーションプログラムであってもよいし、オペレーティングシステム（ＯＳ）本体であってもよい。
【０００８】
ところで、クライアント端末で動作するソフトウェアは、頻繁に更新（アップデート）される場合が多い。ソフトウェアのアップデートは、セキュリティ対策や不具合の解消、機能追加等のために行われる。ネットワークを通じてソフトウェアやソフトウェアのアップデートを配信する形態に前述の手法を適用しようとした場合、配信対象のプログラムと、当該プログラムに対応する監視プログラムをその都度同時に配布しなければならないと
いう制約がある。
【０００９】
すなわち、配布対象のソフトウェアと、対応する監視プログラムをセットで提供しなければ、クライアント端末で動作するソフトウェアが保護されていない状態が生じる可能性がある。例えば、クライアント端末のＯＳをバージョンアップした際、新しいバージョンのＯＳに対応する監視プログラムの配布が遅れてしまうと、監視プログラムの配信を受けるまでの間はＯＳが監視されない状態となってしまうため、もしバージョンアップしたＯＳに問題のあるコードが含まれていた場合、クライアント端末上で実行されてしまう危険がある。このような場合は、監視プログラムが準備され次第、取得して適用することが望ましい。しかし、従来のソフトウェア配信サービスでは、既に配信したソフトウェアと同時に実行されるべき別のプログラムを後追いで補充することは想定されていない。つまり、利用者が時期を見計らって手動で監視プログラムをダウンロードし、対象ソフトウェアの監視を開始させない限り、ソフトウェアを保護された状態とすることができないという問題があった。
【００１０】
本発明は上記の問題点を考慮してなされたものであり、ソフトウェアが保護されていない状態を短くすることができるソフトウェア配信システムを提供することを目的とする。
【課題を解決するための手段】
【００１１】
本発明に係るソフトウェア配信システムは、ソフトウェアの動作を検証する機能を備えたコンピュータと、前記コンピュータにソフトウェアの配信を行う第一の配信装置と、前記コンピュータに前記ソフトウェアを検証するプログラムである検査プログラムの配信を行う第二の配信装置と、からなるソフトウェア配信システムである。なお第一の配信装置と、第二の配信装置は必ずしも分かれている必要はなく、同一の配信装置であってもよい。
【００１２】
前述した課題を解決するために、前記コンピュータは、前記第一の配信装置から、前記ソフトウェアを受信する第一のソフトウェア受信手段と、前記第二の配信装置から、前記ソフトウェアに対応する前記検査プログラムを受信する第二のソフトウェア受信手段と、実行形式で記述された前記ソフトウェアと、前記検査プログラムとを合成し、実行するソフトウェア実行手段を有し、前記第二のソフトウェア受信手段は、前記第一のソフトウェア受信手段が前記ソフトウェアを受信したタイミングで前記ソフトウェアに対応する検査プログラムの取得を試み、前記検査プログラムが取得できない場合は、所定の間隔をおいて再試行を繰り返し、前記ソフトウェア実行手段は、前記第二のソフトウェア受信手段が前記検査プログラムを受信したタイミングで、前記ソフトウェアおよび前記検査プログラムを合成することを特徴とする。
【００１３】
配信装置から配信されるソフトウェアとは、コンピュータによって実行されるプログラム、もしくはプログラムから呼び出されるライブラリである。配信されるソフトウェアはオペレーティングシステムであってもよいし、アプリケーションプログラムであってもよい。また、配信されるソフトウェアは単独で動作するものである必要はなく、たとえばプログラムから呼び出されるライブラリのみであってもよいし、バイナリコードの差分などであってもよい。
【００１４】
ソフトウェアの配信を受けるコンピュータは、配信装置から新しいソフトウェアを受信したタイミングで、対応する検査プログラムの取得を配信装置に対して要求する。この取得要求は、対応する検査プログラムが得られるまで繰り返し発行される。このように構成することにより、検査プログラムがソフトウェア本体の配信よりも遅れて準備されるようなケースであっても、コンピュータはこれを自動的に取得することができるため、配信されたソフトウェアが保護されていない時間を短くすることができる。
【００１５】
プログラムの合成とは、検査対象のソフトウェアを実行した際に、対応する検査プログラムが同時に実行されるような事前処理を行うことを指す。例えば、検査対象のソフトウェアに検査プログラムを足し合わせ、実行形式の一つのプログラムを生成する。検査プログラムを足し合わせる際には、対応する検査プログラムを自動で実行するようにソフトウェアの処理内容を変更する。このようにすることで、検査対象のソフトウェアと同時に検査プログラムを実行させることが可能となる。この他にも、例えば検査対象のソフトウェアと、対応する検査プログラムとを同時に起動させるためのプログラムを新規に生成してもよい。
クライアント端末側で、配布されたソフトウェアと検査プログラムとを合成することで、ソフトウェアを実行する際は必ず検査プログラムも実行されるようになるため、より強固にソフトウェアを保護できるようになる。
【００１６】
また、前記第二の配信装置は、配信するソフトウェアのそれぞれ異なる一部の機能に対応する複数の前記検査プログラムを個別に配信することを特徴としてもよい。
【００１７】
例えば、ソフトウェアの特定の機能に不具合が見つかり、当該不具合を解消するためのバージョンアップを行った場合、当該バージョンアップによって解消された不具合に関連する機能のみを監視する検査プログラムを配信する。その他の機能を監視する検査プログラムは既に配信済みであるため、配信を行わない。このようにすることで、検査プログラムのデータサイズを小さくすることができ、検査プログラムの配信時間を短縮することができる。また、検査プログラムを個別に作成することで、検査プログラムを開発して配信するまでの時間を短くすることができる。なお、配信される検査プログラムは、対象機能のみを監視する独立したプログラムであってもよいし、既に配信済みである検査プログラムをアップデートするための差分であってもよい。
【００１８】
また、前記第二のソフトウェア受信手段は、前記第一のソフトウェア受信手段がソフトウェアの受信を行った際、受信した前記ソフトウェアを必要とする他のソフトウェアに対応する検査プログラムを前記第二の配信装置から取得することを特徴としてもよい。
【００１９】
例えば、任意のソフトウェアをアップデートした場合、実行のために当該ソフトウェアを必要とする他のソフトウェアが正常に動作しなくなる可能性がある。これに対応するため、当該他のソフトウェアに対応する検査プログラムを自動で取得するようにすることができる。
【００２０】
また、前記第一および前記第二の配信装置は同一の配信装置であり、前記配信装置は、配信対象のソフトウェアと前記ソフトウェアに対応する検査プログラムとを合成した合成ソフトウェアを生成するソフトウェア合成手段と、前記合成ソフトウェアを前記コンピュータに配信する合成ソフトウェア配信手段をさらに有し、配信対象のソフトウェアに対応する検査プログラムが、前記配信装置に記憶されている場合に、前記ソフトウェア合成手段が、前記配信対象のソフトウェアと前記検査プログラムから合成ソフトウェアを生成し、前記合成ソフトウェア配信手段が、前記合成ソフトウェアを配信することを特徴としてもよい。
【００２１】
このように構成することで、配信対象のソフトウェアに対応する検査プログラムが配信装置上に準備されている場合は、双方を事前に合成して配信することができる。また、ソフトウェアと検査プログラムとを別々に配信することも可能であるため、ソフトウェアの配信段階で、対応する検査プログラムが準備されていない場合は、ソフトウェアを単独で配信することもできる。
【００２２】
なお、本発明は、上記手段の少なくとも一部を含むソフトウェア配信システムとして特定することができる。また、本発明は、上記手段が行う処理の少なくとも一部を含むソフトウェア配信方法として特定することもできる。上記処理や手段は、技術的な矛盾が生じない限りにおいて、自由に組み合わせて実施することができる。
【発明の効果】
【００２３】
本発明によれば、ソフトウェアが保護されていない状態を短くすることができるソフトウェア配信システムを提供することができる。
【図面の簡単な説明】
【００２４】
【図１】第一の実施形態に係るソフトウェア配信システムのシステム構成図である。
【図２】第一の実施形態に係るソフトウェア配信システムの処理フロー図である。
【図３】第二の実施形態に係るソフトウェア配信システムのシステム構成図である。
【図４】必要なアプリ検査コードのバージョンを判定するテーブルである。
【図５】第三の実施形態に係るソフトウェア配信システムのシステム構成図である。
【図６】第四の実施形態に係るソフトウェア配信システムのシステム構成図である。
【図７】第四の実施形態に係るソフトウェア配信システムの処理フロー図である。
【発明を実施するための形態】
【００２５】
（第一の実施形態）
<システム構成>
第一の実施形態に係るソフトウェア配信システムについて説明する。第一の実施形態に係るソフトウェア配信システムは、ネットワーク経由でオペレーティングシステムをアップデートする機能を有したコンピュータ１００と、当該コンピュータに対してオペレーティングシステムを配信する配信装置２００Ａと、当該コンピュータに対してシステム検査コードを配信する配信装置２００Ｂからなる。なお、本実施形態の説明において、システムライブラリとはコンピュータ１００を動作させるためのオペレーティングシステムの一部または全部を、システム検査コードとはオペレーティングシステムの動作を監視するための検査プログラムを指す。
【００２６】
図１は、本実施形態に係るソフトウェア配信システムのシステム構成図である。コンピュータ１００は、ＣＰＵと主記憶装置、補助記憶装置（いずれも不図示）を有している。補助記憶装置に記憶されたプログラムが主記憶装置にロードされ、ＣＰＵによって実行されることによって図１に図示した各手段が機能する。配信装置２００Ａまたは２００Ｂもコンピュータによって実現することができるが、配信装置２００Ａまたは２００Ｂの全部または一部は、専用に設計された回路を用いて実行されてもよい。
【００２７】
まず、コンピュータ１００について説明する。コンピュータ１００は、システムライブラリ受信部１０１、検査コード配信要求部１０２、システム検査コード受信部１０３、コード合成部１０４、コード実行部１０５を有している。コンピュータ１００は、パーソナルコンピュータであってもよいし、車載端末や、携帯情報端末などであってもよい。オペレーティングシステムやミドルウェア、ユーザアプリケーション等を含む任意のソフトウェアを実行することができるコンピュータであればよい。
【００２８】
システムライブラリ受信部１０１は、ネットワーク経由で、更新対象となるシステムライブラリを受信する手段であり、本発明における第一のソフトウェア受信手段である。受信するシステムライブラリには、システムをアップデートする際に必要となる全てのソフトウェアが含まれている。
【００２９】
検査コード配信要求部１０２は、更新されたシステムに対応するシステム検査コードの
配信を配信装置に要求する手段である。また、システム検査コード受信部１０３は、検査コード配信要求部１０２が要求したシステム検査コードを配信装置２００Ｂから受信する手段である。検査コード配信要求部１０２およびシステム検査コード受信部１０３が、本発明における第二のソフトウェア受信手段である。
【００３０】
コード合成部１０４は、受信したシステム検査コードをオペレーティングシステムに合成する手段である。コードの合成は、受信したシステムライブラリに対して行ってもよいし、受信したシステムライブラリを用いてコンピュータが記憶しているオペレーティングシステムをアップデートし、アップデートしたオペレーティングシステムに対して行ってもよい。
コードの合成とは、前述したように検査対象のソフトウェアと、検査プログラムの双方が同時に実行されるような処理を施すことを指す。本実施形態では、アップデートを行ったオペレーティングシステムのコードにシステム検査コードを足し合わせ、オペレーティングシステムの実行と同時にシステム検査コードを実行する処理を付加する。具体的な方法について後述する。
なお、コード合成は、オペレーティングシステムと検査プログラムとを同時に起動させるための処理であれば、必ずしもプログラムを足し合わせる必要はない。例えば、システムの起動と同時に検査プログラムを起動する処理を生成してもよい。
【００３１】
コード実行部１０５は、コード合成部１０４によって合成されたプログラムを実行する手段である。コード合成部１０４によって足し合わされたプログラムを実行することで、検査対象ソフトウェアの検査を開始する。コード合成部１０４およびコード実行部１０５が、本発明におけるソフトウェア実行手段である。
【００３２】
次に、配信装置２００Ａおよび２００Ｂについて説明する。配信装置２００Ａが本発明における第一の配信装置であり、配信装置２００Ｂが本発明における第二の配信装置である。
システムライブラリ配信部２０１は、コンピュータ１００上で動作するシステムライブラリを記憶し、コンピュータ１００に配信する手段である。記憶され、配信されるシステムライブラリは、前述したようにオペレーティングシステム全体であってもよいし、オペレーティングシステムのアップデートに必要なモジュールのみであってもよい。
【００３３】
システム検査コード配信部２０２は、配信対象のシステムライブラリを監視するためのプログラムであるシステム検査コードを記憶し、コンピュータ１００に配信する手段である。システム検査コード配信部２０２には、システムライブラリ配信部２０１が配信するシステムライブラリのバージョンと対応するバージョンのシステム検査コードが記憶されるが、必ずしも対応するバージョンのシステム検査コードが記憶されている必要は無い。たとえば、システムの不具合修正を優先するため、システムライブラリの配信を先に行い、システム検査コードは後から記憶させてもよい。
【００３４】
<処理フロー>
本実施形態に係るソフトウェア配信システムが行う処理の詳細を説明する。図２は、コンピュータ１００が、配信装置２００Ａからシステムライブラリを、配信装置２００Ｂからシステム検査コードを受信し、実行モジュールを生成するまでの処理を表したフローチャートである。
【００３５】
まず、システムライブラリ受信部１０１が、システムライブラリ配信部２０１に対してシステムライブラリの配信を要求し、配信されたシステムライブラリを受信する（Ｓ１１）。受信したシステムライブラリは、コード合成部１０４へ送信される。
次に、検査コード配信要求部１０２が、システム検査コード配信部２０２に対して、受
信したシステムライブラリに対応するシステム検査コードの有無を問い合わせる（Ｓ１２）。具体的には、コンピュータ１００に既に記憶されているシステム検査コードのバージョンと、配信を受けたシステムライブラリのバージョンを配信装置に送信し、システム検査コード配信部２０２が、更新が必要なシステム検査コードがあるかを判断する。
【００３６】
ステップＳ１２でシステム検査コード配信部２０２が行う判断の結果は、以下の三種類に分類できる。
（１）システム検査コードを更新する必要があり、適合するバージョンのシステム検査コードが配信できる状態であるため、その旨を通知する
（２）システム検査コードを更新する必要は無いため、その旨を通知する
（３）システム検査コードを更新する必要があるが、配信準備ができていないため、その旨を通知する
システム検査コードの更新が必要であり、配信が可能である場合は、処理はステップＳ１４へ遷移し、配信すべきバージョンのシステム検査コードの配信を開始する。（前記（１）のケース）
また、システムライブラリの機能が大幅に追加・変更されていない場合など、システム検査コードの更新が必要ない場合は、配信不要である旨を応答として返す。この場合、処理は終了する。（前記（２）のケース）
【００３７】
一方、システムのアップデートを行う場合、不具合解消のために緊急に行うリリースがあり、そのような場合はシステムライブラリの修正が優先され、検査コードの準備が間に合わない場合がある。検査コードの準備ができていない場合は、検査コード配信要求部１０２から問い合わせがあっても、対応する検査コードのバージョンを応答として返すことができない。このような場合は、システム検査コード配信部２０２は検査コード配信要求部１０２に対して、配信準備ができていない旨の応答を返す。この場合、処理はステップＳ１２に戻り、数分から数時間といった間隔をおいたうえで再度の問い合わせを行う。この間隔は任意の時間とすることができる。（前記（３）のケース）
【００３８】
ステップＳ１４では、システム検査コード受信部１０３が、対応するバージョンのシステム検査コードを受信する。受信が成功した場合（Ｓ１５−Ｙｅｓ）、受信したシステム検査コードはコード合成部１０４へ送信される。失敗した場合（Ｓ１５−Ｎｏ）、所定の時間の後に再試行される。
【００３９】
次に、コード合成部１０４が、受信したシステムライブラリを用いてオペレーティングシステムの更新を行う。更新が完了すると、コード合成部１０４がオペレーティングシステムとシステム検査コードとの合成を行う（Ｓ１６）。実行形式のプログラムコードに別のプログラムコードを足し合わせ、その実行を制御する技術は、たとえば特開２００２−２２９７９０号公報に記載されている。
【００４０】
より具体的には、検査対象のプログラムの末尾に検査プログラムを付加し、実行ファイルのヘッダに保持されているエントリポイント（実行開始アドレス）を検査プログラムのアドレスに変更する。検査プログラムは、合成されたコードのうち自己を除く部分、すなわち検査対象のプログラムのみを主記憶装置にコピーし、実行させる。このようにすることで、検査対象のプログラムを実行しようとすると、まず検査プログラムが起動し、検査プログラムが検査対象のプログラムを起動するため、双方を同時に実行することができる。
【００４１】
生成した実行モジュールはコード実行部１０５へ送信され、処理が終了する。コード実行部１０５によってオペレーティングシステムが実行されると、システム検査コードが起動され、システムの監視が開始される。
【００４２】
第一の実施形態によると、システムをアップデートしたタイミングで、対応する検査コードを配信装置に対して要求する。もし検査コードが準備できていない場合は、取得できるまで定期的に配信要求を繰り返し、取得できたタイミングで検査コードの合成を実施する。このように構成することで、システムが検査コードによって保護されていない時間を最短にすることができる。
【００４３】
（第二の実施形態）
第二の実施形態に係るソフトウェア配信システムは、配信装置がネットワーク経由でアプリケーションプログラムをクライアント端末に配信する形態である。また、第二の実施形態は、検査コードを配信する際に、必要とされる最小限のコードのみを配信する形態である。受信するソフトウェアの種類が異なるのみで、ソフトウェアと検査プログラムを配信するという目的は第一の実施形態と同様である。第一の実施形態と同じ手段については、同じ符号を付して説明を省略する。また、以下で説明するステップ以外の動作は第一の実施形態と同様である。
【００４４】
図３は、第二の実施形態に係るソフトウェア配信システムのシステム構成図である。
アプリケーション受信部１１１は、配信装置２００Ａから配信されるアプリケーションプログラムを受信する手段である。受信するソフトウェアの種類が異なるのみで、処理の内容はシステムライブラリ受信部１０１と同様である。
検査コード配信要求部１１２は、更新されたアプリケーションプログラムに対応する検査プログラムであるアプリ検査コードの配信を配信装置２００Ｂに要求する手段である。要求する検査コードの種類が異なるのみで、処理の内容は検査コード配信要求部１０２と同様である。
アプリ検査コード受信部１１３は、配信装置２００Ｂから配信されるアプリケーション検査コードを受信する手段である。検査コードが対象とするソフトウェアが異なるのみで、処理の内容はシステム検査コード受信部１０３と同様である。
コード合成部１１４は、受信したアプリ検査コードをアプリケーションプログラムに合成する手段である。対象のソフトウェアの種類が異なるのみで、処理の内容はコード合成部１０４と同様である。
【００４５】
アプリケーション配信部２１１は、コンピュータ１００上で動作するアプリケーションプログラムを記憶し、コンピュータ１００に配信する手段である。配信するアプリケーションプログラムは、アプリケーション全体であってもよいし、アップデートに必要なモジュールまたは差分のみであってもよい。配信するソフトウェアの種類が異なるのみで、処理の内容はシステムライブラリ配信部２０１と同様である。
【００４６】
アプリ検査コード配信部２１２は、アプリケーションプログラムを監視するためのプログラムであるアプリ検査コードを記憶し、コンピュータ１００に配信する手段である。その機能は、第一の実施形態におけるシステム検査コード配信部２０２と同様であるが、アプリ検査コードを記憶する方法が異なる。システム検査コード配信部２０２は、配信するシステムライブラリ全体に対応する検査コードを記憶するが、本実施形態におけるアプリ検査コード配信部２１２は、配信するアプリケーションプログラムが有する機能のうち、一部に対応する検査コードを個別に記憶しているという点で第一の実施形態と異なる。
【００４７】
この点について説明する。ソフトウェアのアップデートは、機能の追加や不具合の解消のために行われる場合が多く、更新されていない機能に対して同一の検査コードを再度送信すると通信帯域を無駄に消費することになる。そこで、検査コードを対応する機能やモジュールに分割して記憶し、アップデートによって変更された部分に対応する検査コードのみを送信する。検査コードの分割は、任意の単位で行うことができる。
【００４８】
第二の実施形態においてコンピュータ１００が行う処理内容の、第一の実施形態との差異点は以下の通りである。
ステップＳ１１では、アプリケーション受信部１１１がアプリケーション配信部２１１に対してアプリケーションプログラムの配信を要求し、アプリケーションプログラムを受信する。
ステップＳ１２では、受信したアプリケーションプログラムのバージョンに対応するアプリ検査コードの有無を、第一の実施形態と同様の方法でアプリ検査コード配信部２１２に問い合わせる。配信すべきアプリ検査コードのバージョンが何であるかという情報は、例えば、図４に示したようなテーブル形式でアプリ検査コード配信部２１２が保持していてもよい。本実施形態では、アプリケーションプログラムの変更された機能に対応する検査コードのみを配信するため、更新前のアプリケーションのバージョンが新しいほど、取得するアプリ検査コードも少なくなる。図４の例の場合、例えば更新前のアプリケーションプログラムのバージョンが１．５であった場合、２．０および２．１というバージョンを持つアプリ検査コードが配信対象となる。
【００４９】
ステップＳ１３の処理は、第一の実施形態と同様である。
ステップＳ１４では、アプリ検査コード受信部１１３が、対象のアプリ検査コードを受信する。ステップＳ１５〜１６の処理は、第一の実施形態と同様である。
【００５０】
第二の実施形態では、アップデートによって変更された機能やモジュールに対応する検査コードのみを配信するため、検査コードのサイズを抑えることができ、通信帯域の消費を抑えることができるという利点がある。また、検査プログラムの開発規模が小さくなるため、配信の準備が完了するまでの時間を短くすることができる。
【００５１】
（第三の実施形態）
第三の実施形態は、第一の実施形態に係る配信装置に、システムライブラリとシステム検査コードを合成する機能を追加した形態である。システムライブラリの配信を開始する際、対応するシステム検査コードが準備されている場合は、配信装置側でシステム検査コードとシステムライブラリを合成して配信し、準備されていない場合は個別に配信する。第一の実施形態と同じ手段については、同じ符号を付して説明を省略する。また、以下で説明するステップ以外の動作は第一の実施形態と同様である。
【００５２】
図５は、第三の実施形態に係るソフトウェア配信システムのシステム構成図である。
システムライブラリ配信部２０１およびシステム検査コード配信部２０２の動作は、第一の実施形態と類似しているが、配信対象のシステムライブラリおよびシステム検査コードを、コード合成部２０３を経由して送信するという点で第一の実施形態と相違する。また、本実施形態においては、システムライブラリを配信する配信装置と、システム検査コードを配信する配信装置は同一の配信装置２００である。
【００５３】
コード合成部２０３は、コード合成部１０４と同様に、システムライブラリと、システム検査コードとを合成し、ひとつの実行モジュールを生成したのちに、合成されたプログラムをコンピュータ１００へ配信する手段である。ただし、コード合成は、システムライブラリの配信を開始する際に、対応するシステム検査コードが配信装置に存在している場合にのみ行われる。対応するシステム検査コードが準備できていない場合は、コード合成は行われず、第一の実施形態と同様の配信を行う。コード合成部２０３が、本発明におけるソフトウェア合成手段および合成ソフトウェア配信手段である。
【００５４】
第三の実施形態においてコンピュータ１００が行う処理内容の、第一の実施形態との差異点は以下の通りである。
ステップＳ１１では、システムライブラリ受信部１０１がコード合成部２０３に対してシステムライブラリの配信を要求する。コード合成部２０３は、要求されたバージョンのシステムライブラリに対応するシステム検査コードが配信装置に記憶されている場合は、当該システムライブラリと、対応するシステム検査コードとを合成し配信する。そうでない場合は、合成を行わずにシステムライブラリのみを配信する。
【００５５】
次に、ステップＳ１２では、第一の実施形態と同様に、検査コード配信要求部１０２が、受信したシステムライブラリに対応するシステム検査コードの有無を配信装置に問い合わせる。ただし、受信したシステムライブラリが配信装置にて合成されたものであった場合、対応するシステム検査コードは既に取得済みであるため、ステップＳ１２〜Ｓ１６をスキップし、処理を終了させる。
受信したシステムライブラリが配信装置にて合成されていない場合であって、対応するシステム検査コードが配信装置に存在する場合（すなわち、後からシステム検査コードが追加された場合）はステップＳ１４へ遷移し、システム検査コード受信部１０３がシステム検査コードを取得する。また、受信したシステムライブラリが配信装置にて合成されていない場合であって、対応するシステム検査コードの配信準備ができていない場合、再度ステップＳ１２へ遷移する。ステップＳ１５〜１６の処理は第一の実施形態と同様である。
【００５６】
第三の実施形態によると、システムライブラリの配信開始時に、対応するシステム検査コードが準備されている場合は配信装置側でコードを合成し、準備ができていない場合は個別に配信することができる。これにより、クライアント端末の負荷を軽減することが可能になり、かつ、システム検査コードの準備が後回しになるケースにも対応することができる。
【００５７】
（第四の実施形態）
第四の実施形態は、システムライブラリを受信してオペレーティングシステムをアップデートした際に、アプリケーションプログラムに対する検査コードも同時に要求する形態である。
オペレーティングシステムをアップデートした場合、互換性の問題によりアプリケーションプログラムが正常に動作しなくなる場合がある。例えば、アプリケーションにて使用しているＡＰＩの仕様が、オペレーティングシステムのバージョンアップによって変更された場合などである。このような場合、アプリ検査コードが最新のオペレーティングシステムに対応していないと、アプリケーションプログラムがシステム上の制限のために正常に動作しないのか、単なる不具合のため正常に動作しないのかが判別できなくなる。このようなケースに対応するため、アプリケーションに対する最新の検査コードの取得をシステムのアップデートと同時に試みるのが第四の実施形態である。第一の実施形態と同じ手段については、同じ符号を付して説明を省略する。
【００５８】
図６は、第四の実施形態に係るソフトウェア配信システムのシステム構成図である。
検査コード配信要求部１０２は、更新されたシステムに対応するシステム検査コードの配信を配信装置２００に要求する手段であるが、更新されたシステムに対応するアプリ検査コードの配信を同時に配信装置２００に要求するという点で、第一の実施形態と異なる。本実施形態においては、システムライブラリを配信する配信装置と、システム検査コードを配信する配信装置は同一の配信装置２００として構成される。
【００５９】
図７は、第四の実施形態に係るコンピュータ１００が行う処理のフローチャートである。ステップＳ１１からＳ１６までの処理は、システムを更新するための処理であり、第一の実施形態と同様である。
ステップＳ１１の完了後、検査コード配信要求部１０２は、第二の実施形態と同様に、
必要なアプリ検査コードの有無を配信装置に問い合わせる（Ｓ２２）。問い合わせの概要は「更新したシステムのバージョンに対応するアプリ検査コードがあるか」である。すなわち検査コード配信要求部１０２は、受信したシステムライブラリのバージョンを同時に送信し、記憶している全てのアプリ検査コードについて、更新が必要であるかチェックを行う。
【００６０】
ここで、対応するアプリ検査コードの配信準備ができていなかった場合は、検査コード配信要求部１０２は処理をステップＳ２２に戻し、第一の実施形態と同様の方法で再度の要求を試みる。対応するアプリ検査コードが準備されていた場合、ステップＳ２４で、対応するバージョンの全てのアプリ検査コードを取得する。受信したアプリ検査コードはコード合成部１０４へ送信され、コード合成が行われる（Ｓ２６）。なお、複数のアプリ検査コードのうち、一部のみが準備できていた場合、取得可能なものを先に取得してもよい。
【００６１】
このように第四の実施形態では、システムのアップデートと連動して最新のアプリ検査コードを取得する。このようにすることで、オペレーティングシステムのバージョンアップを行った際に、アプリケーションプログラムの監視が正常に行えなくなる事態を防止することができる。
【００６２】
（変形例）
各実施形態の説明は本発明を説明する上での例示であり、本発明は、発明の趣旨を逸脱しない範囲で適宜変更または組み合わせて実施することができる。例えば、第一および第二の実施形態では、ソフトウェアを配信する配信装置と、検査プログラムを配信する配信装置を別の装置としたが、ソフトウェアおよび検査プログラムは同一の配信装置から配信されてもよい。また、第一の実施形態ではオペレーティングシステムに対して検査を行う形態について述べたが、アプリケーションプログラムを検査対象としてもよい。同様に、第二の実施形態ではアプリケーションプログラムに対して検査を行う形態について述べたが、オペレーティングシステムを検査対象としてもよい。また、各実施形態で述べた処理の内容を併用してもよい。
【００６３】
また、各実施形態で述べた検査プログラムは、実行されるソフトウェアの妥当性を検証するものであれば、どのようなものであってもよい。例えば、使用されるＡＰＩ（Application Programming Interface）の呼び出し方法が正しいかを検証して記録するものであ
ってもよいし、認められていないリソースへのアクセスを検出してブロックするものであってもよい。
【符号の説明】
【００６４】
１００  コンピュータ
２００  配信装置
１０１  システムライブラリ受信部
１０２  検査コード配信要求部
１０３  システム検査コード受信部
１０４  コード合成部
１０５  コード実行部
１１１  アプリケーション受信部
１１２  検査コード配信要求部
１１３  アプリ検査コード受信部
２０１  システムライブラリ配信部
２０２  システム検査コード配信部
２０３  コード合成部
２１１  アプリケーション配信部
２１２  アプリ検査コード配信部
【図１】
0005533935.tif 000002
【図２】
0005533935.tif 000003
【図３】
0005533935.tif 000004
【図４】
0005533935.tif 000005
【図５】
0005533935.tif 000006
【図６】
0005533935.tif 000007
【図７】
0005533935.tif 000008