(57)【要約】【課題】アプリケーションに含まれる各機能の開発者をユーザに通知する。【解決手段】通信部１０は、第１のプログラムを含む第１の要素アプリケーションと、第１の要素アプリケーションを起動する第２のプログラムを含む第２の要素アプリケーションと、第１の要素アプリケーションの開発者を示す第１の開発者情報と、第２の要素アプリケーションの開発者を示す第２の開発者情報とを含むアプリケーションパッケージから抽出された第１の開発者情報および第２の開発者情報を受信し、さらにアプリケーションパッケージを受信する。表示部１３は、第１の開発者別情報および第２の開発者情報を表示する。インストール部１１２は、表示部１３によって第１の開発者情報および第２の開発者情報が表示された後、アプリケーションパッケージに含まれる第１の要素アプリケーションおよび第２の要素アプリケーションをインストールする。【選択図】図２
2014002528.tif 000002
【特許請求の範囲】
【請求項１】
第１のプログラムを含む第１の要素アプリケーションと、前記第１の要素アプリケーションを起動する第２のプログラムを含む第２の要素アプリケーションと、前記第１の要素アプリケーションの開発者を示す第１の開発者情報と、前記第２の要素アプリケーションの開発者を示す第２の開発者情報とを含むアプリケーションパッケージを記憶する記憶部から前記アプリケーションパッケージを読み出し、前記アプリケーションパッケージから前記第１の開発者情報および前記第２の開発者情報を抽出する抽出部と、
前記抽出部によって抽出された前記第１の開発者情報および前記第２の開発者情報を送信し、さらに前記アプリケーションパッケージを送信する送信部と、
を備えた外部装置から前記第１の開発者情報および前記第２の開発者情報を受信し、さらに前記アプリケーションパッケージを受信する受信部と、
前記受信部によって受信された前記第１の開発者別情報および前記第２の開発者情報を表示する表示部と、
前記表示部によって前記第１の開発者情報および前記第２の開発者情報が表示された後、前記受信部によって受信された前記アプリケーションパッケージに含まれる前記第１の要素アプリケーションおよび前記第２の要素アプリケーションをインストールするインストール部と、
を備えたことを特徴とする情報処理装置。
【請求項２】
前記アプリケーションパッケージはさらに、前記第１のプログラムが使用する権限を示す第１の権限情報と、前記第２のプログラムが使用する権限を示す第２の権限情報とを含み、
前記抽出部はさらに、前記アプリケーションパッケージから前記第１の権限情報および前記第２の権限情報を抽出し、
前記送信部はさらに、前記抽出部によって抽出された前記第１の権限情報および前記第２の権限情報を送信し、
前記受信部はさらに、前記第１の権限情報および前記第２の権限情報を受信し、
前記表示部はさらに、前記受信部によって受信された前記第１の権限情報および前記第２の権限情報を表示し、
前記インストール部は、前記表示部によって前記第１の開発者情報、前記第２の開発者情報、前記第１の権限情報、および前記第２の権限情報が表示された後、前記受信部によって受信された前記アプリケーションパッケージに含まれる前記第１の要素アプリケーションおよび前記第２の要素アプリケーションをインストールする
ことを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記インストール部は、前記表示部によって前記第１の開発者情報、前記第２の開発者情報、前記第１の権限情報、および前記第２の権限情報が表示され、ユーザによってインストールの実行が指示された後、前記受信部によって受信された前記アプリケーションパッケージに含まれる前記第１の要素アプリケーションおよび前記第２の要素アプリケーションをインストールすることを特徴とする請求項２に記載の情報処理装置。
【請求項４】
インストール済みのアプリケーションをアンインストールするアンインストール部をさらに備え、
前記送信部はさらに、アンインストール対象の前記第１の要素アプリケーションを識別するアンインストール情報を送信し、
前記受信部はさらに、前記アンインストール情報を受信し、
前記アンインストール部はさらに、前記受信部によって受信された前記アンインストール情報が示す前記第１の要素アプリケーションをアンインストールする
ことを特徴とする請求項１〜請求項３のいずれか一項に記載の情報処理装置。
【請求項５】
第１のプログラムを含む第１の要素アプリケーションと、前記第１の要素アプリケーションを起動する第２のプログラムを含む第２の要素アプリケーションと、前記第１の要素アプリケーションの開発者を示す第１の開発者情報と、前記第２の要素アプリケーションの開発者を示す第２の開発者情報とを含むアプリケーションパッケージを記憶する記憶部から前記アプリケーションパッケージを読み出し、前記アプリケーションパッケージから前記第１の開発者情報および前記第２の開発者情報を抽出する抽出部と、
前記抽出部によって抽出された前記第１の開発者情報および前記第２の開発者情報を表示する表示部と、
前記表示部によって前記第１の開発者情報および前記第２の開発者情報が表示された後、前記アプリケーションパッケージに含まれる前記第１の要素アプリケーションおよび前記第２の要素アプリケーションをインストールするインストール部と、
を備えたことを特徴とする情報処理装置。
【請求項６】
前記アプリケーションパッケージはさらに、前記第１のプログラムが使用する権限を示す第１の権限情報と、前記第２のプログラムが使用する権限を示す第２の権限情報とを含み、
前記抽出部はさらに、前記アプリケーションパッケージから前記第１の権限情報および前記第２の権限情報を抽出し、
前記表示部はさらに、前記抽出部によって抽出された前記第１の権限情報および前記第２の権限情報を表示し、
前記インストール部は、前記表示部によって前記第１の開発者情報、前記第２の開発者情報、前記第１の権限情報、および前記第２の権限情報が表示された後、前記アプリケーションパッケージに含まれる前記第１の要素アプリケーションおよび前記第２の要素アプリケーションをインストールする
ことを特徴とする請求項５に記載の情報処理装置。
【請求項７】
前記インストール部は、前記表示部によって前記第１の開発者情報、前記第２の開発者情報、前記第１の権限情報、および前記第２の権限情報が表示され、ユーザによってインストールの実行が指示された後、前記アプリケーションパッケージに含まれる前記第１の要素アプリケーションおよび前記第２の要素アプリケーションをインストールすることを特徴とする請求項６に記載の情報処理装置。
【請求項８】
前記アプリケーションパッケージはさらに、前記第１の要素アプリケーションのバージョンを示すバージョン情報を含み、
前記第１の要素アプリケーションがインストールされると前記バージョン情報は当該情報処理装置内に格納され、
前記インストール部はさらに、インストール対象の前記第１の要素アプリケーションが既にインストールされている場合、インストール対象の前記第１の要素アプリケーションの前記バージョン情報がインストール済みの前記第１の要素アプリケーションの前記バージョン情報よりも新しければ、前記第１の要素アプリケーションをインストールし、インストール対象の前記第１の要素アプリケーションの前記バージョン情報がインストール済みの前記第１の要素アプリケーションの前記バージョン情報よりも古ければ、前記第１の要素アプリケーションのインストールを中止することを特徴とする請求項１〜請求項７のいずれか一項に記載の情報処理装置。
【請求項９】
前記アプリケーションパッケージはさらに、前記第２の要素アプリケーションのバージョンを示すバージョン情報を含み、
前記第２の要素アプリケーションがインストールされると前記バージョン情報は当該情報処理装置内に格納され、
前記インストール部はさらに、インストール対象の前記第２の要素アプリケーションが既にインストールされている場合、インストール対象の前記第２の要素アプリケーションの前記バージョン情報がインストール済みの前記第２の要素アプリケーションの前記バージョン情報よりも新しければ、前記第２の要素アプリケーションをインストールし、インストール対象の前記第２の要素アプリケーションの前記バージョン情報がインストール済みの前記第２の要素アプリケーションの前記バージョン情報よりも古ければ、前記第２の要素アプリケーションのインストールを中止することを特徴とする請求項１〜請求項７のいずれか一項に記載の情報処理装置。
【請求項１０】
インストール済みの前記第１の要素アプリケーションを識別する第１の識別情報と、当該第１の要素アプリケーションを起動する、インストール済みの前記第２の要素アプリケーションを識別する第２の識別情報とが関連付けられたアプリケーション情報を記憶するアプリケーション情報記憶部をさらに備え、
前記インストール部は、インストール対象の前記第１の要素アプリケーションおよび前記第２の要素アプリケーションをインストールする際、インストール対象の前記第１の要素アプリケーション、前記第２のアプリケーションのそれぞれに対応する前記第１の識別情報、前記第２の識別情報が関連付けられた前記アプリケーション情報を前記アプリケーション情報記憶部に格納する
ことを特徴とする請求項１〜請求項９のいずれか一項に記載の情報処理装置。
【請求項１１】
インストール済みのアプリケーションをアンインストールするアンインストール部をさらに備え、
前記アンインストール部は、前記アプリケーション情報において、アンインストール対象の前記第２の要素アプリケーションが起動する前記第１の要素アプリケーションに対応する前記第１の識別情報が複数の前記第２の識別情報と関連付けられている場合、アンインストール対象の前記第２の要素アプリケーションのみをアンインストールすることを特徴とする請求項１０に記載の情報処理装置。
【請求項１２】
前記第１の要素アプリケーションはさらに、前記第１のプログラムの開発者の第１の電子署名を含み、
前記第２の要素アプリケーションはさらに、前記第２のプログラムの開発者の第２の電子署名を含む
ことを特徴とする請求項１〜請求項１１のいずれか一項に記載の情報処理装置。
【請求項１３】
外部装置および情報処理装置を備え、
前記外部装置は、
第１のプログラムを含む第１の要素アプリケーションと、前記第１の要素アプリケーションを起動する第２のプログラムを含む第２の要素アプリケーションと、前記第１の要素アプリケーションの開発者を示す第１の開発者情報と、前記第２の要素アプリケーションの開発者を示す第２の開発者情報とを含むアプリケーションパッケージを記憶する記憶部から前記アプリケーションパッケージを読み出し、前記アプリケーションパッケージから前記第１の開発者情報および前記第２の開発者情報を抽出する抽出部と、
前記抽出部によって抽出された前記第１の開発者情報および前記第２の開発者情報を送信し、さらに前記アプリケーションパッケージを送信する送信部と、
を有し、
前記情報処理装置は、
前記外部装置から前記第１の開発者情報および前記第２の開発者情報を受信し、さらに前記アプリケーションパッケージを受信する受信部と、
前記受信部によって受信された前記第１の開発者情報および前記第２の開発者情報を表示する表示部と、
前記表示部によって前記第１の開発者情報および前記第２の開発者情報が表示された後、前記受信部によって受信された前記アプリケーションパッケージに含まれる前記第１の要素アプリケーションおよび前記第２の要素アプリケーションをインストールするインストール部と、
を有することを特徴とする情報処理システム。
【請求項１４】
第１のプログラムを含む第１の要素アプリケーションと、前記第１の要素アプリケーションを起動する第２のプログラムを含む第２の要素アプリケーションと、前記第１の要素アプリケーションの開発者を示す第１の開発者情報と、前記第２の要素アプリケーションの開発者を示す第２の開発者情報とを含むアプリケーションパッケージを記憶する記憶部から前記アプリケーションパッケージを読み出し、前記アプリケーションパッケージから前記第１の開発者情報および前記第２の開発者情報を抽出する抽出部と、
前記抽出部によって抽出された前記第１の開発者情報および前記第２の開発者情報を送信し、さらに前記アプリケーションパッケージを送信する送信部と、
を備えた外部装置から前記第１の開発者情報および前記第２の開発者情報を受信し、さらに前記アプリケーションパッケージを受信する受信部と、
前記受信部によって受信された前記第１の開発者別情報および前記第２の開発者情報を表示する表示部と、
前記表示部によって前記第１の開発者情報および前記第２の開発者情報が表示された後、前記受信部によって受信された前記アプリケーションパッケージに含まれる前記第１の要素アプリケーションおよび前記第２の要素アプリケーションをインストールするインストール部と、
としてコンピュータを機能させるためのプログラム。
【請求項１５】
第１のプログラムを含む第１の要素アプリケーションと、前記第１の要素アプリケーションを起動する第２のプログラムを含む第２の要素アプリケーションと、前記第１の要素アプリケーションの開発者を示す第１の開発者情報と、前記第２の要素アプリケーションの開発者を示す第２の開発者情報とを含むアプリケーションパッケージを記憶する記憶部から前記アプリケーションパッケージを読み出し、前記アプリケーションパッケージから前記第１の開発者情報および前記第２の開発者情報を抽出する抽出部と、
前記抽出部によって抽出された前記第１の開発者情報および前記第２の開発者情報を表示する表示部と、
前記表示部によって前記第１の開発者情報および前記第２の開発者情報が表示された後、前記アプリケーションパッケージに含まれる前記第１の要素アプリケーションおよび前記第２の要素アプリケーションをインストールするインストール部と、
としてコンピュータを機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、アプリケーションのインストールを行う情報処理装置および情報処理システムに関する。また、本発明は、本情報処理装置としてコンピュータを機能させるためのプログラムにも関する。
【背景技術】
【０００２】
スマートフォンでは、様々なAPI（Application Program Interface）が公開されており、スマートフォン向けのアプリケーションの開発者は、そのAPIを用いて、機能性、利便性の優れたアプリケーションを開発することができる。また、電話番号、通話履歴、アドレス帳、端末固有識別子などのユーザ情報がスマートフォンに蓄積されており、これらの情報を取得するAPIが用意されている。アプリケーションの開発者は、広告を表示するモジュール、アプリケーションのユーザ情報を収集するモジュールなど、他の開発者が作成したモジュール（以降、外部モジュールと呼ぶ）を自身のアプリケーションに組み込むことができる。例えば、アプリケーションの開発者が、広告を表示するモジュールを自身のアプリケーションに組み込むと、アプリケーションの画面の一部分に広告が表示される。ユーザがその広告を選択した場合、広告表示モジュールの開発者からアプリケーションの開発者に報酬が支払われる。
【０００３】
スマートフォンに搭載されるOS（Operating Systems）は、パーミッションに基づくセキュリティモデルを採用している。パーミッションは、アプリケーションを実行可能な端末内の機能・情報の利用や設定の変更に係る権限を規定する仕組みである。パーミッションに基づくセキュリティモデルでは、アプリケーションが利用する機能や情報はパーミッションによって制限されており、ユーザがアプリケーションに対して、必要な権限を許可しない限り、アプリケーションは所定の機能や情報を利用することができない。パーミッションによって利用が制限される機能の例として、インターネットアクセス、GPS（Global Positioning System）の利用などがあり、パーミッションによって利用が制限される情報の例として、端末識別子、アドレス帳の情報、位置情報などがある。
【０００４】
アプリケーションのインストール時に、アプリケーションが使用する権限がユーザに通知（宣言）され、ユーザによってインストールの可否が判断される。アプリケーションがインストールされた後、アプリケーションは、インストール時に宣言した権限に応じた範囲内で動作する。しかし、全てのアプリケーションは、情報の取得に関する権限を宣言することが可能であり、その権限の使用がユーザによって承認されると、インストール後に、端末に存在する情報を簡単に取得することができる。
【０００５】
現在、アプリケーションに組み込まれる外部モジュールによる勝手な情報収集が問題になっている。例えば、広告を表示するモジュールは、アプリケーションのユーザに効果のある広告を表示するために、ユーザの位置情報、端末識別子などのユーザ情報を、ユーザの許可無く勝手に収集する場合がある。パーミッションに基づくセキュリティモデルでは、アプリケーションのインストール時に承認した権限を使用する行為が、アプリケーションによって、いつ、どのように発生しているのかをユーザは知ることができないため、外部モジュールによってユーザ情報が収集されていることにユーザが気付かない場合がある。
【０００６】
外部モジュールの中でも、ターゲティング広告を配信するような外部モジュールは、位置情報や端末識別子を取得することが多いため、位置情報や端末識別子を取得する権限を必要とするよう設計される。よって、アプリケーションの開発者が作成したアプリケーションの本体がこれらの権限を使用しなくても、外部モジュールを含むアプリケーションの全体としては権限を使用する必要があるため、アプリケーションが多数の権限の許可を要求することになる。なお、特許文献１には、アプリケーションが、パーミッションによって利用が制限されている情報を外部に送信する挙動を検知する技術が記載されている。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２０１２−８４０５４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
アプリケーションの開発者は外部モジュールの特性を理解し、ユーザに対して、外部モジュールがどのような情報を収集し、誰がどのような目的で外部モジュールを使用するのかを説明する必要がある。しかしながら、アプリケーションの開発者は、外部モジュールの特性を理解しないままアプリケーションに外部モジュールを組み込むため、結果的に、外部モジュールが勝手にユーザ情報を収集する行為が発生している。
【０００９】
また、ユーザがアプリケーションの配信サイトからアプリケーションをダウンロードする際、アプリケーションの中にどのような外部モジュールが含まれているのか確認することができない。このため、外部モジュールによるユーザ情報の収集に対してユーザが自衛する手段がないという問題がある。
【００１０】
本発明は、上述した課題に鑑みてなされたものであって、アプリケーションに含まれる各機能の開発者をユーザに通知することを目的とする。
【課題を解決するための手段】
【００１１】
本発明は、上記の課題を解決するためになされたもので、第１のプログラムを含む第１の要素アプリケーションと、前記第１の要素アプリケーションを起動する第２のプログラムを含む第２の要素アプリケーションと、前記第１の要素アプリケーションの開発者を示す第１の開発者情報と、前記第２の要素アプリケーションの開発者を示す第２の開発者情報とを含むアプリケーションパッケージを記憶する記憶部から前記アプリケーションパッケージを読み出し、前記アプリケーションパッケージから前記第１の開発者情報および前記第２の開発者情報を抽出する抽出部と、前記抽出部によって抽出された前記第１の開発者情報および前記第２の開発者情報を送信し、さらに前記アプリケーションパッケージを送信する送信部と、を備えた外部装置から前記第１の開発者情報および前記第２の開発者情報を受信し、さらに前記アプリケーションパッケージを受信する受信部と、前記受信部によって受信された前記第１の開発者別情報および前記第２の開発者情報を表示する表示部と、前記表示部によって前記第１の開発者情報および前記第２の開発者情報が表示された後、前記受信部によって受信された前記アプリケーションパッケージに含まれる前記第１の要素アプリケーションおよび前記第２の要素アプリケーションをインストールするインストール部と、を備えたことを特徴とする情報処理装置である。
【００１２】
また、本発明の情報処理装置において、前記アプリケーションパッケージはさらに、前記第１のプログラムが使用する権限を示す第１の権限情報と、前記第２のプログラムが使用する権限を示す第２の権限情報とを含み、前記抽出部はさらに、前記アプリケーションパッケージから前記第１の権限情報および前記第２の権限情報を抽出し、前記送信部はさらに、前記抽出部によって抽出された前記第１の権限情報および前記第２の権限情報を送信し、前記受信部はさらに、前記第１の権限情報および前記第２の権限情報を受信し、前記表示部はさらに、前記受信部によって受信された前記第１の権限情報および前記第２の権限情報を表示し、前記インストール部は、前記表示部によって前記第１の開発者情報、前記第２の開発者情報、前記第１の権限情報、および前記第２の権限情報が表示された後、前記受信部によって受信された前記アプリケーションパッケージに含まれる前記第１の要素アプリケーションおよび前記第２の要素アプリケーションをインストールすることを特徴とする。
【００１３】
また、本発明の情報処理装置において、前記インストール部は、前記表示部によって前記第１の開発者情報、前記第２の開発者情報、前記第１の権限情報、および前記第２の権限情報が表示され、ユーザによってインストールの実行が指示された後、前記受信部によって受信された前記アプリケーションパッケージに含まれる前記第１の要素アプリケーションおよび前記第２の要素アプリケーションをインストールすることを特徴とする。
【００１４】
また、本発明の情報処理装置は、インストール済みのアプリケーションをアンインストールするアンインストール部をさらに備え、前記送信部はさらに、アンインストール対象の前記第１の要素アプリケーションを識別するアンインストール情報を送信し、前記受信部はさらに、前記アンインストール情報を受信し、前記アンインストール部はさらに、前記受信部によって受信された前記アンインストール情報が示す前記第１の要素アプリケーションをアンインストールすることを特徴とする。
【００１５】
また、本発明は、第１のプログラムを含む第１の要素アプリケーションと、前記第１の要素アプリケーションを起動する第２のプログラムを含む第２の要素アプリケーションと、前記第１の要素アプリケーションの開発者を示す第１の開発者情報と、前記第２の要素アプリケーションの開発者を示す第２の開発者情報とを含むアプリケーションパッケージを記憶する記憶部から前記アプリケーションパッケージを読み出し、前記アプリケーションパッケージから前記第１の開発者情報および前記第２の開発者情報を抽出する抽出部と、前記抽出部によって抽出された前記第１の開発者情報および前記第２の開発者情報を表示する表示部と、前記表示部によって前記第１の開発者情報および前記第２の開発者情報が表示された後、前記アプリケーションパッケージに含まれる前記第１の要素アプリケーションおよび前記第２の要素アプリケーションをインストールするインストール部と、を備えたことを特徴とする情報処理装置である。
【００１６】
また、本発明の情報処理装置において、前記アプリケーションパッケージはさらに、前記第１のプログラムが使用する権限を示す第１の権限情報と、前記第２のプログラムが使用する権限を示す第２の権限情報とを含み、前記抽出部はさらに、前記アプリケーションパッケージから前記第１の権限情報および前記第２の権限情報を抽出し、前記表示部はさらに、前記抽出部によって抽出された前記第１の権限情報および前記第２の権限情報を表示し、前記インストール部は、前記表示部によって前記第１の開発者情報、前記第２の開発者情報、前記第１の権限情報、および前記第２の権限情報が表示された後、前記アプリケーションパッケージに含まれる前記第１の要素アプリケーションおよび前記第２の要素アプリケーションをインストールすることを特徴とする。
【００１７】
また、本発明の情報処理装置において、前記インストール部は、前記表示部によって前記第１の開発者情報、前記第２の開発者情報、前記第１の権限情報、および前記第２の権限情報が表示され、ユーザによってインストールの実行が指示された後、前記アプリケーションパッケージに含まれる前記第１の要素アプリケーションおよび前記第２の要素アプリケーションをインストールすることを特徴とする。
【００１８】
また、本発明の情報処理装置において、前記アプリケーションパッケージはさらに、前記第１の要素アプリケーションのバージョンを示すバージョン情報を含み、前記第１の要素アプリケーションがインストールされると前記バージョン情報は当該情報処理装置内に格納され、前記インストール部はさらに、インストール対象の前記第１の要素アプリケーションが既にインストールされている場合、インストール対象の前記第１の要素アプリケーションの前記バージョン情報がインストール済みの前記第１の要素アプリケーションの前記バージョン情報よりも新しければ、前記第１の要素アプリケーションをインストールし、インストール対象の前記第１の要素アプリケーションの前記バージョン情報がインストール済みの前記第１の要素アプリケーションの前記バージョン情報よりも古ければ、前記第１の要素アプリケーションのインストールを中止することを特徴とする。
【００１９】
また、本発明の情報処理装置において、前記アプリケーションパッケージはさらに、前記第２の要素アプリケーションのバージョンを示すバージョン情報を含み、前記第２の要素アプリケーションがインストールされると前記バージョン情報は当該情報処理装置内に格納され、前記インストール部はさらに、インストール対象の前記第２の要素アプリケーションが既にインストールされている場合、インストール対象の前記第２の要素アプリケーションの前記バージョン情報がインストール済みの前記第２の要素アプリケーションの前記バージョン情報よりも新しければ、前記第２の要素アプリケーションをインストールし、インストール対象の前記第２の要素アプリケーションの前記バージョン情報がインストール済みの前記第２の要素アプリケーションの前記バージョン情報よりも古ければ、前記第２の要素アプリケーションのインストールを中止することを特徴とする。
【００２０】
また、本発明の情報処理装置は、インストール済みの前記第１の要素アプリケーションを識別する第１の識別情報と、当該第１の要素アプリケーションを起動する、インストール済みの前記第２の要素アプリケーションを識別する第２の識別情報とが関連付けられたアプリケーション情報を記憶するアプリケーション情報記憶部をさらに備え、前記インストール部は、インストール対象の前記第１の要素アプリケーションおよび前記第２の要素アプリケーションをインストールする際、インストール対象の前記第１の要素アプリケーション、前記第２のアプリケーションのそれぞれに対応する前記第１の識別情報、前記第２の識別情報が関連付けられた前記アプリケーション情報を前記アプリケーション情報記憶部に格納することを特徴とする。
【００２１】
また、本発明の情報処理装置は、インストール済みのアプリケーションをアンインストールするアンインストール部をさらに備え、前記アンインストール部は、前記アプリケーション情報において、アンインストール対象の前記第２の要素アプリケーションが起動する前記第１の要素アプリケーションに対応する前記第１の識別情報が複数の前記第２の識別情報と関連付けられている場合、アンインストール対象の前記第２の要素アプリケーションのみをアンインストールすることを特徴とする。
【００２２】
また、本発明の情報処理装置において、前記第１の要素アプリケーションはさらに、前記第１のプログラムの開発者の第１の電子署名を含み、前記第２の要素アプリケーションはさらに、前記第２のプログラムの開発者の第２の電子署名を含むことを特徴とする。
【００２３】
また、本発明は、外部装置および情報処理装置を備え、前記外部装置は、第１のプログラムを含む第１の要素アプリケーションと、前記第１の要素アプリケーションを起動する第２のプログラムを含む第２の要素アプリケーションと、前記第１の要素アプリケーションの開発者を示す第１の開発者情報と、前記第２の要素アプリケーションの開発者を示す第２の開発者情報とを含むアプリケーションパッケージを記憶する記憶部から前記アプリケーションパッケージを読み出し、前記アプリケーションパッケージから前記第１の開発者情報および前記第２の開発者情報を抽出する抽出部と、前記抽出部によって抽出された前記第１の開発者情報および前記第２の開発者情報を送信し、さらに前記アプリケーションパッケージを送信する送信部と、を有し、前記情報処理装置は、前記外部装置から前記第１の開発者情報および前記第２の開発者情報を受信し、さらに前記アプリケーションパッケージを受信する受信部と、前記受信部によって受信された前記第１の開発者情報および前記第２の開発者情報を表示する表示部と、前記表示部によって前記第１の開発者情報および前記第２の開発者情報が表示された後、前記受信部によって受信された前記アプリケーションパッケージに含まれる前記第１の要素アプリケーションおよび前記第２の要素アプリケーションをインストールするインストール部と、を有することを特徴とする情報処理システムである。
【００２４】
また、本発明は、第１のプログラムを含む第１の要素アプリケーションと、前記第１の要素アプリケーションを起動する第２のプログラムを含む第２の要素アプリケーションと、前記第１の要素アプリケーションの開発者を示す第１の開発者情報と、前記第２の要素アプリケーションの開発者を示す第２の開発者情報とを含むアプリケーションパッケージを記憶する記憶部から前記アプリケーションパッケージを読み出し、前記アプリケーションパッケージから前記第１の開発者情報および前記第２の開発者情報を抽出する抽出部と、前記抽出部によって抽出された前記第１の開発者情報および前記第２の開発者情報を送信し、さらに前記アプリケーションパッケージを送信する送信部と、を備えた外部装置から前記第１の開発者情報および前記第２の開発者情報を受信し、さらに前記アプリケーションパッケージを受信する受信部と、前記受信部によって受信された前記第１の開発者別情報および前記第２の開発者情報を表示する表示部と、前記表示部によって前記第１の開発者情報および前記第２の開発者情報が表示された後、前記受信部によって受信された前記アプリケーションパッケージに含まれる前記第１の要素アプリケーションおよび前記第２の要素アプリケーションをインストールするインストール部と、としてコンピュータを機能させるためのプログラムである。
【００２５】
また、本発明は、第１のプログラムを含む第１の要素アプリケーションと、前記第１の要素アプリケーションを起動する第２のプログラムを含む第２の要素アプリケーションと、前記第１の要素アプリケーションの開発者を示す第１の開発者情報と、前記第２の要素アプリケーションの開発者を示す第２の開発者情報とを含むアプリケーションパッケージを記憶する記憶部から前記アプリケーションパッケージを読み出し、前記アプリケーションパッケージから前記第１の開発者情報および前記第２の開発者情報を抽出する抽出部と、前記抽出部によって抽出された前記第１の開発者情報および前記第２の開発者情報を表示する表示部と、前記表示部によって前記第１の開発者情報および前記第２の開発者情報が表示された後、前記アプリケーションパッケージに含まれる前記第１の要素アプリケーションおよび前記第２の要素アプリケーションをインストールするインストール部と、としてコンピュータを機能させるためのプログラムである。
【発明の効果】
【００２６】
本発明によれば、アプリケーションパッケージに含まれる第１の要素アプリケーション、第２の要素アプリケーションのそれぞれの開発者を示す開発者情報が表示されるので、アプリケーションに含まれる各機能の開発者をユーザに通知することができる。
【図面の簡単な説明】
【００２７】
【図１】本発明の第１の実施形態による情報処理システムの構成を示すブロック図である。
【図２】本発明の第１の実施形態による端末装置の構成を示すブロック図である。
【図３】本発明の第１の実施形態によるサーバの構成を示すブロック図である。
【図４】本発明の第１の実施形態におけるアプリケーションパッケージの構成を示す参考図である。
【図５】本発明の第１の実施形態におけるマニフェストの内容を示す参考図である。
【図６】本発明の第１の実施形態におけるアプリケーションマニフェストの内容を示す参考図である。
【図７】本発明の第１の実施形態におけるアプリケーションパッケージを生成する手順を示すフローチャートである。
【図８】本発明の第１の実施形態におけるアプリケーションパッケージのダウンロードおよびインストールを行うときの端末装置の表示部の画面を示す参考図である。
【図９】本発明の第１の実施形態によるサーバの動作の手順を示すフローチャートである。
【図１０】本発明の第１の実施形態による端末装置の動作の手順を示すフローチャートである。
【図１１】本発明の第１の実施形態による端末装置の動作の手順を示すフローチャートである。
【図１２】本発明の第１の実施形態におけるパッケージリストの内容を示す参考図である。
【図１３】本発明の第１の実施形態におけるパッケージリストが更新される様子を示す参考図である。
【図１４】本発明の第１の実施形態におけるアンインストールの例を示す参考図である。
【図１５】本発明の第１の実施形態による端末装置の動作の手順を示すフローチャートである。
【図１６】本発明の第１の実施形態による端末装置の動作の手順を示すフローチャートである。
【図１７】本発明の第１の実施形態におけるアプリケーションのアンインストールを行うときの端末装置の表示部の画面を示す参考図である。
【図１８】本発明の第１の実施形態におけるパッケージリストが更新される様子を示す参考図である。
【図１９】本発明の第２の実施形態による端末装置の構成を示すブロック図である。
【図２０】本発明の第２の実施形態による端末装置の動作の手順を示すフローチャートである。
【図２１】従来のアプリケーションの構成を示す参考図である。
【図２２】従来のアプリケーションのダウンロードおよびインストールを行うときの端末装置の表示部の画面を示す参考図である。
【発明を実施するための形態】
【００２８】
以下では、パーミッションに基づくセキュリティモデルを採用しているOSの１つであるandroid（登録商標）が搭載されているスマートフォン等の端末装置に対して本発明を適用する例を説明する。本明細書および図面では、便宜上、必要に応じてandroid（登録商標）という文字列を*andrd*という文字列で代用している。すなわち、*andrd*という文字列はandroid（登録商標）という文字列と等価である。
【００２９】
まず、従来技術におけるアプリケーションの構成と、アプリケーションのインストール時における端末装置の画面とを説明する。図２１は、従来技術において、インストールされるアプリケーションを構成するファイルの構成の一例を示している。アプリケーションＡＰ１０は、コンポーネント毎のプログラム２１００〜２１０３およびマニフェスト２１０４を含むアーカイブファイルと、このアーカイブファイルに対して付加された署名情報２１０５とを含む。
【００３０】
コンポーネントは、android（登録商標）上で動作するアプリケーションの構成要素であり、Activity、Service、BroadcastReceiver、ContentProviderの４つのコンポーネントがある。図２１に示す例では、プログラム２１００，２１０１はActivityのプログラムであり、プログラム２１０２，２１０３はServiceのプログラムである。アプリケーションの開発者は、画面に広告を表示するサービスを利用する場合、そのサービスの提供者であるASP（ASP:Affiliate Service Provider）が開発したプログラムを、自身が開発したアプリケーションのプログラムに埋め込む必要がある。
【００３１】
プログラム２１００は、アプリケーションＡＰ１０の開発者が開発したコードと、ASPの開発者が開発したコードとを含むプログラムである。プログラム２１０１，２１０２は、アプリケーションＡＰ１０の開発者が開発したコードを含むプログラムである。プログラム２１０３は、プログラム２１００に含まれるコードを開発したASPの開発者とは別のASPの開発者が開発したコードを含むプログラムである。上記のように、１つのコンポーネントのプログラムが単一の開発者のコードで構成される場合と、１つのコンポーネントのプログラムが複数の開発者のコードで構成される場合とがある。
【００３２】
マニフェスト２１０４は、アプリケーションＡＰ１０が使用する権限等の情報を含む。署名情報２１０５は、アプリケーションＡＰ１０の開発者の電子署名を含む。
【００３３】
図２２は、アプリケーションを配信する代表的な配信サイトから端末装置がアプリケーションをダウンロードおよびインストールする際の端末装置の画面の一例を示している。画面の上部には、アプリケーションの名前２２００とアプリケーションの開発者の名前２２０１が表示される。画面の下部には、アプリケーションが端末装置にインストールされた場合に許可される権限２２０２〜２２０４が表示される。ユーザがタッチパネルのボタン２２０５を押下すると、アプリケーションが、権限２２０２〜２２０４を必要とする機能や情報を利用することが許可されたとみなされ、アプリケーションのダウンロードが開始され、その後、アプリケーションがインストールされる。
【００３４】
従来技術では以下の問題がある。
（Ａ）第１の問題
図２２に示した画面では、アプリケーションの名前２２００とアプリケーションの開発者の名前２２０１が表示されるが、ASPの開発者が開発したコードを含むプログラムがアプリケーションに含まれているのか否かをアプリケーションのインストール前にユーザが知ることはできない。
【００３５】
（Ｂ）第２の問題
android（登録商標）では、UserID（UID）およびGroup ID（GID）が与えられるアプリケーションの単位で、機能や情報を利用する権限が与えられる。従来技術では、１つのアプリケーションの中に、アプリケーションの開発者が開発したプログラムと、ASPの開発者が開発したプログラムとが混在しており、どのプログラムに対して権限が与えられているのかが明示されていない。このため、図２２に示した画面では、アプリケーションの開発者が開発したコードを含むプログラムと、ASPの開発者が開発したコードを含むプログラムとのどちらが権限２２０２〜２２０４を使用するのかをユーザが知ることはできない。
【００３６】
（Ｃ）第３の問題
例えば、特定のアプリケーションによる勝手なユーザ情報の収集が判明した場合に、コードの解析により、ユーザ情報の収集を行ったコードを特定することは可能である。しかし、アプリケーションの開発者がASPの開発者のコードを改変してから自身のコードに組み込むことも考えられるため、勝手なユーザ情報の収集の責任者が必ずしも明確ではない。例えば、ユーザ情報の収集を行ったコードがASPの開発者のコードであることを特定できたとしても、そのコードがアプリケーションの開発者によって改変されている可能性があるため、責任者がASPの開発者とアプリケーションの開発者のどちらであるのかが明確ではない。このように、権限を必要とする機能や情報を勝手に利用する行為を行うコードを開発した開発者を必ずしも特定することができない。
【００３７】
（Ｄ）第４の問題
権限を必要とする機能や情報を勝手に利用する行為の発生が判明した場合の対応方法が限られている。第１の対応方法は、ユーザが自身でその行為の発生に気付いてアプリケーションをアンインストールするという方法である。第２の対応方法は、アプリケーションの開発者が、その行為を行うコードを含むプログラムを修正した後、ユーザがアプリケーションのアップデートを行うという方法である。いずれの方法であっても、権限を必要とする機能や情報を勝手に利用する行為を迅速に止めることができない。
【００３８】
（第１の実施形態）
以下、本発明の第１の実施形態を説明する。まず、本実施形態におけるアプリケーションの構成と、アプリケーションのインストール時における端末装置の画面とを説明する。本実施形態のアプリケーションは、複数のアプリケーションを要素として含むアプリケーションパッケージとして構成される。図４は、本実施形態において、インストールされるアプリケーションを含むアプリケーションパッケージを構成するファイルの構成の一例を示している。
【００３９】
アプリケーションパッケージＡＰＣＫ１は、それぞれ個別のアプリケーションとして構成されたアプリケーションＡＰ１，ＡＰ２を有する。アプリケーションＡＰ１は、アプリケーションパッケージＡＰＣＫ１の開発者が開発したコードからなるプログラムを含む。アプリケーションＡＰ２は、ASPの開発者が開発したコードからなるプログラムを含む。本実施形態では、アプリケーションパッケージの開発者が開発したコードからなるプログラムを含むアプリケーションを親アプリケーション（メインアプリケーション）と定義する。また、アプリケーションパッケージの開発者以外の開発者が開発したコードからなるプログラムを含むアプリケーションを補助アプリケーションと定義する。
【００４０】
本実施形態のアプリケーションパッケージは１つの親アプリケーションと１つ以上の補助アプリケーションを含む。親アプリケーションは、補助アプリケーションを起動するコードを含む。また、親アプリケーションと補助アプリケーションはそれぞれ、単一の開発者のみのコードを含む。
【００４１】
アプリケーションＡＰ１は、コンポーネント毎のプログラム４００〜４０２およびマニフェスト４０３を含むアーカイブファイルと、このアーカイブファイルに対して付加された署名情報４０４とを含む。プログラム４００〜４０２は、アプリケーションＡＰ１の開発者すなわちアプリケーションパッケージＡＰＣＫ１の開発者が開発したコードを含むプログラムである。また、プログラム４０１は、アプリケーションＡＰ２を起動するコードを含む。マニフェスト４０３は、アプリケーションＡＰ１が使用する権限を含む。マニフェスト４０３は、アプリケーションＡＰ１のバージョンと、アプリケーションＡＰ１単体からなるパッケージの名前も含むが、図４ではこれらは省略されている。署名情報４０４は、アプリケーションＡＰ１の開発者の秘密鍵によって暗号化された電子署名と、アプリケーションＡＰ１の開発者の公開鍵とを含む。アプリケーションＡＰ１は、本発明における第２の要素アプリケーションの一例である。
【００４２】
図５はマニフェスト４０３の内容の一例を示している。マニフェスト４０３は、権限を示すコード５００と、バージョンを示すコード５０１と、パッケージの名前を示すコード５０２とを含む。コード５００が示す権限（*andrd*.permission.INTERNET）は、インターネット接続に係る権限である。コード５０１が示すバージョンは１である。コード５０２が示すパッケージの名前は「com.sample.apps1」である。このパッケージの名前は、アプリケーションＡＰ１がインストールされたときにアプリケーションＡＰ１のファイルが格納されるフォルダの名前に相当する。
【００４３】
アプリケーションＡＰ２は、コンポーネント毎のプログラム４１０およびマニフェスト４１１を含むアーカイブファイルと、このアーカイブファイルに対して付加された署名情報４１２とを含む。プログラム４１０は、ASPの開発者が開発したコードを含むプログラムである。マニフェスト４１１は、アプリケーションＡＰ２が使用する権限を含む。マニフェスト４１１は、アプリケーションＡＰ２のバージョンと、アプリケーションＡＰ２単体からなるパッケージの名前も含むが、図４ではこれらは省略されている。署名情報４１２は、アプリケーションＡＰ２の開発者であるASPの開発者の秘密鍵によって暗号化された電子署名と、ASPの開発者の公開鍵とを含む。アプリケーションＡＰ２は、本発明における第１の要素アプリケーションの一例である。
【００４４】
アプリケーションパッケージＡＰＣＫ１は、上記のアプリケーションＡＰ１，ＡＰ２およびアプリケーションマニフェスト４２０を含むアーカイブファイルと、このアーカイブファイルに対して付加された署名情報４２１とを含む。アプリケーションマニフェスト４２０は、アプリケーションパッケージＡＰＣＫ１の名前と、アプリケーションＡＰ１の各種情報と、アプリケーションＡＰ２の各種情報とを含む。署名情報４２１は、アプリケーションパッケージＡＰＣＫ１の開発者すなわちアプリケーションＡＰ１の開発者の秘密鍵によって暗号化された電子署名と、アプリケーションＡＰ１の開発者の公開鍵とを含む。つまり、署名情報４２１と署名情報４０４は同一の開発者の公開鍵を含む。
【００４５】
図６はアプリケーションマニフェスト４２０の内容の一例を示している。アプリケーションマニフェスト４２０はコード６００〜６０８を含む。コード６００は、アプリケーションパッケージＡＰＣＫ１の名前を示している。コード６０１は、アプリケーションＡＰ１単体からなるパッケージの名前を示している。このパッケージの名前は、アプリケーションＡＰ１がインストールされたときにアプリケーションＡＰ１のファイルが格納されるフォルダの名前に相当する。コード６０２は、アプリケーションＡＰ１の名前を示している。コード６０３は、アプリケーションＡＰ１の開発者を示している。コード６０４は、アプリケーションＡＰ１の開発者の連絡先（メールアドレス）を示している。
【００４６】
コード６０５は、アプリケーションＡＰ２単体からなるパッケージの名前を示している。このパッケージの名前は、アプリケーションＡＰ２がインストールされたときにアプリケーションＡＰ２のファイルが格納されるフォルダの名前に相当する。コード６０６は、アプリケーションＡＰ２の名前を示している。コード６０７は、アプリケーションＡＰ２の開発者を示している。コード６０８は、アプリケーションＡＰ２の開発者の連絡先（メールアドレス）を示している。
【００４７】
コード６００が示すアプリケーションパッケージＡＰＣＫ１の名前は「com.sample.app-package」である。コード６０１が示すパッケージの名前は「com.sample.apps1」である。コード６０２が示すアプリケーションＡＰ１の名前は「Sample1」である。コード６０３が示すアプリケーションＡＰ１の開発者は「DEV A」である。コード６０４が示すアプリケーションＡＰ１の開発者の連絡先は「sample1@mail.com」である。コード６０５が示すパッケージの名前は「com.sample.apps2」である。コード６０６が示すアプリケーションＡＰ２の名前は「Sample2」である。コード６０７が示すアプリケーションＡＰ２の開発者は「ASP A」である。コード６０８が示すアプリケーションＡＰ２の開発者の連絡先は「sample2@mail.com」である。
【００４８】
上記のようにコード６００はアプリケーションパッケージＡＰＣＫ１の名前を示しているが、アプリケーションパッケージＡＰＣＫ１の名前は、アプリケーションパッケージＡＰＣＫ１を識別する情報であればよい。また、上記のようにコード６０１，６０３はそれぞれアプリケーションＡＰ１，ＡＰ２の名前を示しているが、アプリケーションＡＰ１，ＡＰ２の名前はそれぞれアプリケーションＡＰ１，ＡＰ２を識別する情報であればよい。
【００４９】
図７は、本実施形態のアプリケーションパッケージを生成する手順を示している。親アプリケーションの開発者によって親アプリケーションのソースファイルが生成され（ステップＳ１００）、さらにソースファイルがコンパイルされる（ステップＳ１０５）。続いて、コンパイル後のファイルに親アプリケーションの開発者の署名情報が付加される（ステップＳ１１０）。これにより、図４の親アプリケーションＡＰ１等の親アプリケーションが生成される。
【００５０】
続いて、アプリケーションパッケージに組み込む補助アプリケーションが選択される（ステップＳ１１５）。この補助アプリケーションは、図４の補助アプリケーションＡＰ２等の補助アプリケーションである。続いて、親アプリケーションと補助アプリケーションに対してアプリケーションマニフェストが付加され（ステップＳ１２０）、ファイルの全体が圧縮される（ステップＳ１２５）。圧縮後のファイルに署名情報が付加される（ステップＳ１３０）と、アプリケーションパッケージの生成が終了する。
【００５１】
図８は、アプリケーションを配信する代表的な配信サイトから端末装置がアプリケーションをダウンロードおよびインストールする際の端末装置の画面の一例を示している。図８では、ダウンロードの対象であるアプリケーションパッケージは、１つの親アプリケーションと２つの補助アプリケーションを含む。
【００５２】
画面の上部には、親アプリケーションの名前８００と、親アプリケーションの開発者（アプリケーションパッケージの開発者）８０１と、第１の補助アプリケーションの名前８０２と、第１の補助アプリケーションの開発者８０３と、第２の補助アプリケーションの名前８０４と、第２の補助アプリケーションの開発者８０５とが表示される。親アプリケーションの名前８００は、アプリケーションマニフェスト４２０に含まれるコード６０２が示す情報に相当する。親アプリケーションの開発者８０１は、アプリケーションマニフェスト４２０に含まれるコード６０３が示す情報に相当する。第１の補助アプリケーションの名前８０２、第２の補助アプリケーションの名前８０４は、アプリケーションマニフェスト４２０に含まれるコード６０６が示す情報に相当する。第１の補助アプリケーションの開発者８０３、第２の補助アプリケーションの開発者８０５は、アプリケーションマニフェスト４２０に含まれるコード６０７が示す情報に相当する。
【００５３】
画面の中央部および下部には、アプリケーションが端末装置にインストールされた場合に許可される権限８０６〜８１１が表示される。アプリケーションパッケージに含まれる親アプリケーションと補助アプリケーション毎に許可される権限が分かるように権限８０６〜８１１が表示される。権限８０６は、親アプリケーションに対して許可される権限である。権限８０７〜８０９は、第１の補助アプリケーションに対して許可される権限である。権限８１０，８１１は、第２の補助アプリケーションに対して許可される権限である。権限８０６〜８１１は、マニフェスト４０３に含まれるコード５００が示す情報に相当する。
【００５４】
ユーザがタッチパネルのボタン２２０５を押下すると、アプリケーションパッケージが、権限８０６〜８１１を必要とする機能や情報を利用することが許可されたとみなされ、アプリケーションパッケージのダウンロードが開始される。その後、アプリケーションパッケージに含まれる親アプリケーションおよび補助アプリケーションがインストールされる。
【００５５】
本実施形態では、前述した第１〜第４の問題が以下のように解決される。
（ａ）第１の問題に対する解決方法
図８に示した画面では、親アプリケーションの開発者８０１、第１の補助アプリケーションの開発者８０３、第２の補助アプリケーションの開発者８０５が表示される。このため、親アプリケーションの開発者以外のASP等の開発者が開発したコードを含むプログラムがアプリケーションパッケージに含まれているのか否かをアプリケーションのインストール前にユーザが知ることができる。
【００５６】
（ｂ）第２の問題に対する解決方法
図８に示した画面では、アプリケーションパッケージに含まれる親アプリケーションと補助アプリケーション毎に、インストール後に許可される権限８０６〜８１１が表示される。このため、親アプリケーションの開発者が開発したコードを含むプログラムと、親アプリケーションの開発者以外のASP等の開発者が開発したコードを含むプログラムとのそれぞれが使用する権限をユーザが知ることができる。したがって、ユーザは、自身が信頼できる開発者以外の開発者が開発したコードを含むプログラムが、ユーザ情報の収集に必要な権限を使用する場合には、アプリケーションパッケージに含まれるアプリケーションをインストールしない等の判断を行うことができる。
【００５７】
（ｃ）第３の問題に対する解決方法
本実施形態のアプリケーションパッケージでは、親アプリケーションと補助アプリケーションはそれぞれ単一の開発者のコードを含み、それぞれのアプリケーションに対して別々に署名情報が付与されている。それぞれの署名情報は、親アプリケーションと補助アプリケーションのそれぞれが、それぞれの開発者以外によって改竄されていないことを保証する。このため、親アプリケーションまたは補助アプリケーションが開発者以外によって改竄されていない限り、それぞれのアプリケーションの開発者は、それぞれのアプリケーションの行為について責任を負うことになる。例えば、特定のアプリケーションによる勝手なユーザ情報の収集が判明し、コードの解析により、ユーザ情報の収集を行ったコードを特定することができた場合、そのコードを含む親アプリケーションまたは補助アプリケーションの開発者が勝手なユーザ情報の収集の責任を負うことになる。つまり、権限を必要とする機能や情報を勝手に利用する行為の発生が判明した場合に、その行為を行うコードを開発した開発者を特定することができる。
【００５８】
アプリケーションの開発者が、自身以外の開発者が開発したコードを含むプログラムを自身のアプリケーションのプログラムに組み込むことは可能である。しかし、アプリケーション毎にそのアプリケーションの開発者がそのアプリケーションの行為の責任を負うというルールが適用されるならば、アプリケーションの開発者が、自身以外の開発者が開発したコードを含むプログラムを自身のアプリケーションのプログラムに組み込むことを控えることが期待される。
【００５９】
（ｄ）第４の問題に対する解決方法
権限を必要とする機能や情報を勝手に利用する行為の発生が判明した場合、本実施形態では、アプリケーションを配信する配信サイトから端末装置に、その補助アプリケーションを削除するメッセージが送信される。メッセージを受信した端末装置は、その補助アプリケーションのアンインストールを行う。これによって、権限を必要とする機能や情報を勝手に利用する行為を迅速に止めることができる。
【００６０】
次に、本実施形態の構成を説明する。図１は、本実施形態によるアプリケーション配信システムの構成を示している。本実施形態のアプリケーション配信システムは、本発明の情報処理システムの一例である。本実施形態の情報処理システムは複数の端末装置１ａと１台のサーバ２を有している。サーバ２は複数であってもよい。端末装置１ａとサーバ２はネットワークＮを介して通信を行う。この通信は有線通信と無線通信のいずれであってもよい。
【００６１】
端末装置１ａは、スマートフォン等の装置として構成されている。端末装置１ａは、本発明の情報処理装置の一例である。サーバ２は、アプリケーションを配信する配信サイトのサーバである。サーバ２は、本発明の情報処理装置と通信を行う外部装置の一例である。
【００６２】
図２は端末装置１ａの構成を示している。端末装置１ａは、通信部１０、アプリケーション取得部１１、操作部１２、表示部１３、アンインストール部１４、アプリケーション管理部１５、および記憶部１６を記憶する。通信部１０は、サーバ２と通信を行う通信モジュールを有する。アプリケーション取得部１１は、アプリケーションパッケージをサーバ２から取得し、アプリケーションパッケージに含まれるアプリケーションのインストールを行う。操作部１２は、ユーザが操作するキーやタッチパネル等を有する。表示部１３は、各種情報を表示する液晶パネル等を有する。アンインストール部１４は、端末装置１ａにインストールされているアプリケーションのアンインストールを行う。アプリケーション管理部１５は、アプリケーションのインストールおよびアンインストールを管理する。記憶部１６は、サーバ２から受信されたアプリケーションパッケージや、端末装置１ａにインストールされたアプリケーションのファイル、OSのプログラム等を記憶する記憶装置を有する。
【００６３】
アプリケーション取得部１１は、通信制御部１１０、表示処理部１１１、およびインストール部１１２を有する。通信制御部１１０は、通信部１０がサーバ２と行う通信を制御する。表示処理部１１１は、表示部１３の画面に各種の情報を表示する処理を行う。インストール部１１２は、サーバ２から受信されたアプリケーションパッケージに含まれるアプリケーションのインストールを行う。アプリケーション取得部１１は、例えばアプリケーションとして実装されている。
【００６４】
アプリケーション管理部１５は、例えばOSの機能として実装されている。Android（登録商標）のアプリケーションフレームワークで提供されているクラスのうちPackageManagerServiceクラスの機能がアプリケーション管理部１５に対応する。PackageManagerServiceクラスは、アプリケーションのインストールおよびアンインストールの管理を行ったり、アプリケーションに適切なパーミッションが付与されているか否かの判定を行ったりするAPIを定義しているクラスである。アンインストール部１４は、例えばアプリケーションとして実装されている。
【００６５】
本実施形態のアプリケーション管理部１５の機能を提供するOSのプログラムと、アプリケーション取得部１１、アンインストール部１４のそれぞれの機能を提供するアプリケーションのプログラムとをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータ（本実施形態の端末装置１ａ）に読み込ませ、実行させることにより、アプリケーション管理部１５、アプリケーション取得部１１、アンインストール部１４は、各部に対して規定された処理を実行する。
【００６６】
ここで、「コンピュータ」は、ＷＷＷシステムを利用している場合であれば、ホームページ提供環境（あるいは表示環境）も含むものとする。また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ＲＯＭ、ＣＤ−ＲＯＭ等の可搬媒体、コンピュータに内蔵されるハードディスク等の記憶装置のことをいう。さらに「コンピュータ読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムが送信された場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリ（ＲＡＭ）のように、一定時間プログラムを保持しているものも含むものとする。
【００６７】
また、上述したプログラムは、このプログラムを記憶装置等に格納したコンピュータから、伝送媒体を介して、あるいは伝送媒体中の伝送波により他のコンピュータに伝送されてもよい。ここで、プログラムを伝送する「伝送媒体」は、インターネット等のネットワーク（通信網）や電話回線等の通信回線（通信線）のように、情報を伝送する機能を有する媒体のことをいう。また、上述したプログラムは、前述した機能の一部を実現するためのものであってもよい。さらに、前述した機能を、コンピュータに既に記録されているプログラムとの組合せで実現できるもの、いわゆる差分ファイル（差分プログラム）であってもよい。
【００６８】
図３はサーバ２の構成を示している。サーバ２は、通信部２０、制御部２１、および記憶部２２を有する。通信部２０は端末装置１ａと通信を行う。制御部２１は、通信部２０が端末装置１ａと行う通信を制御する。記憶部２２は、アプリケーションパッケージ等を記憶する。
【００６９】
次に、アプリケーションパッケージに含まれるアプリケーションのインストールの手順を説明する。図９はサーバ２の動作の手順を示し、図１０および図１１は端末装置１ａの動作の手順を示している。端末装置１ａの通信制御部１１０は、操作部１２を介して入力されるユーザの指示に基づいて、アプリケーションのダウンロードの開始を要求する情報と、ダウンロード対象のアプリケーションを識別する情報とを含むメッセージを、通信部１０を介してサーバ２に送信する。サーバ２の制御部２１は、通信部２０を介してこのメッセージを受信すると、以下の処理を行う。
【００７０】
制御部２１は、記憶部２２からダウンロード対象のアプリケーションパッケージを読み出し、アプリケーションパッケージに含まれる署名情報（図４の署名情報４０４，４１２，４２１）に基づいて、各開発者の署名を検証する（ステップＳ２００）。より具体的には、ステップＳ２００では、制御部２１は、署名情報に含まれる電子署名を、署名情報に含まれる公開鍵で復号し、復号後のデータを用いて解析を行う。これにより、署名情報が付加されたデータが改竄されているか否かが検証される。ステップＳ２００における署名の検証を省略してもよい。
【００７１】
続いて、制御部２１は、ステップＳ２００における署名の検証結果に基づいて、署名の検証に成功したか否かを判定する（ステップＳ２０５）。データが改竄されている場合、署名の検証に失敗したことになり、サーバ２における処理が終了する。この場合、アプリケーションパッケージのダウンロードは行われない。また、データが改竄されていない場合、署名の検証に成功したことになり、制御部２１は親アプリケーションを識別する（ステップＳ２１０）。より具体的には、ステップＳ２１０では、制御部２１は、図４の署名情報４０４，４１２のそれぞれに含まれる公開鍵を、署名情報４２１に含まれる公開鍵と比較し、署名情報４０４，４１２に含まれる公開鍵のうち、署名情報４２１に含まれる公開鍵と一致した公開鍵を含む署名情報が付加されているアプリケーションを親アプリケーションと識別する。
【００７２】
続いて、制御部２１は、アプリケーションパッケージから親アプリケーションおよび補助アプリケーションの情報を抽出する（ステップＳ２１５）。ステップＳ２１５でアプリケーションパッケージから抽出される情報は、各アプリケーションのマニフェストに含まれる権限（図５のコード５００が示す情報）、アプリケーションマニフェストに含まれる各アプリケーションの名前（図６のコード６０２，６０６が示す情報）および開発者（図６のコード６０３，６０７が示す情報）の各情報である。
【００７３】
続いて、制御部２１は、ステップＳ２１５で抽出した各情報を含むメッセージを、通信部２０を介して端末装置１ａに送信する（ステップＳ２２０）。メッセージの送信後、制御部２１は、インストールの実行または中止を示す情報を含むメッセージを端末装置１ａから受信するための待機状態となる。メッセージを受信する（ステップＳ２２５）と、制御部２１は、メッセージに含まれる情報に基づいて、インストールを実行するか否かを判定する（ステップＳ２３０）。
【００７４】
メッセージに含まれる情報がインストールの中止を示している場合、制御部２１は、インストールを中止すると判定する。この場合、サーバ２における処理が終了し、アプリケーションパッケージのダウンロードは行われない。また、メッセージに含まれる情報がインストールの実行を示している場合、制御部２１は、インストールを実行すると判定する。この場合、制御部２１は、ダウンロード対象のアプリケーションパッケージを、通信部２０を介して端末装置１ａに送信する（ステップＳ２３５）。アプリケーションパッケージの送信後、サーバ２における処理が終了する。
【００７５】
一方、端末装置１ａにおいて、通信制御部１１０は、ステップＳ２２０でサーバ２から送信されたメッセージを、通信部１０を介して受信する（ステップＳ３００）。表示処理部１１１は、ステップＳ３００で受信されたメッセージに含まれる情報に基づいて、表示部１３の画面に、親アプリケーションおよび補助アプリケーションのそれぞれの名前および開発者と、親アプリケーションおよび補助アプリケーションのそれぞれについてインストール後に許可される権限とを表示する（ステップＳ３０５）。
【００７６】
ステップＳ３０５では、表示部１３の画面は、例えば図８に示した画面となる。このとき、親アプリケーションの情報が補助アプリケーションの情報の上側に表示されるように情報の表示位置が決定される。例えば、図８に示した画面では、親アプリケーションの名前８００と開発者８０１が、第１の補助アプリケーションの名前８０２と開発者８０３、第２の補助アプリケーションの名前８０４と開発者８０５よりも上側に表示される。また、図８に示した画面では、親アプリケーションに係る権限８０６が、補助アプリケーションに係る権限８０７〜８１１よりも上側に表示される。これにより、ユーザは、親アプリケーションの情報と補助アプリケーションの情報を区別することができる。
【００７７】
続いて、インストール部１１２は、操作部１２を介して入力される、インストールの実行または中止を示す情報を操作部１２から取得し（ステップＳ３１０）、取得した情報に基づいて、インストールを実行するか否かを判定する（ステップＳ３１５）。取得した情報がインストールの中止を示している場合、インストール部１１２は、インストールを中止すると判定する。この場合、通信制御部１１０は、インストールの中止を示す情報を含むメッセージを、通信部１０を介してサーバ２に送信する（ステップＳ３９０）。その後、端末装置１ａにおける処理が終了する。
【００７８】
また、取得した情報がインストールの実行を示している場合、インストール部１１２は、インストールを実行すると判定する。この場合、通信制御部１１０は、インストールの実行を示す情報を含むメッセージを、通信部１０を介してサーバ２に送信する（ステップＳ３２０）。続いて、通信制御部１１０は、サーバ２から送信されたアプリケーションパッケージを、通信部１０を介して受信する（ステップＳ３２５）。続いて、インストール部１１２は、受信されたアプリケーションパッケージに含まれる署名情報（図４の署名情報４０４，４１２，４２１）に基づいて、各開発者の署名を検証する（ステップＳ３３０）。署名の検証方法は、ステップＳ２０５における署名の検証方法と同様である。
【００７９】
続いて、制御部２１は、ステップＳ３３０における署名の検証結果に基づいて、署名の検証に成功したか否かを判定する（ステップＳ３３５）。データが改竄されている場合、署名の検証に失敗したことになり、端末装置１ａにおける処理が終了する。この場合、アプリケーションパッケージのダウンロードは行われない。また、データが改竄されていない場合、署名の検証に成功したことになり、インストール部１１２は記憶部１６からパッケージリストを読み出す（ステップＳ３４０）。
【００８０】
パッケージリストは、端末装置１ａにインストールされている親アプリケーションと補助アプリケーションの一覧を示すリストであり、端末装置１ａにインストールされている親アプリケーションと補助アプリケーションの関係を示している。この関係は、補助アプリケーションがどの親アプリケーションによって起動されるのかということである。パッケージリストは、本発明におけるアプリケーション情報の一例である。
【００８１】
図１２はパッケージリストの内容の一例を示している。パッケージリストでは、親アプリケーションを識別する情報と、その親アプリケーションによって起動される補助アプリケーションを識別する情報とが互いに関連付けられて記録されている。各アプリケーションを識別する情報は、各アプリケーション単体からなるパッケージの名前と、各アプリケーションの名前との組合せである。図１２では、各アプリケーションの名前のみが記載され、パッケージの名前は省略されている。
【００８２】
図１２では、例えば名前が「App A」である補助アプリケーションは、名前が「App 1」である親アプリケーションによって起動される。また、名前が「App B」である補助アプリケーションは、名前が「App 1」である親アプリケーションによって起動される一方、名前が「App 2」である親アプリケーション、名前が「App 4」である親アプリケーションのそれぞれによっても起動される。互いに関連付けられている情報は、図１２の同じ行に記載されている。例えば、親アプリケーションの名前である「App 1」と、補助アプリケーションの名前である「App A」とは、同じ行に記載されており、互いに関連付けられている。
【００８３】
ステップＳ３４０に続いて、インストール部１１２は、ステップＳ３２５で受信されたアプリケーションパッケージに含まれるアプリケーションマニフェストから親アプリケーションおよび補助アプリケーションのパッケージの名前（図６のコード６０１，６０５が示す情報）を抽出する（ステップＳ３４５）。続いて、インストール部１１２は、ステップＳ３４５で抽出したパッケージの名前のいずれかを選択することにより、処理対象のアプリケーションを選択する（ステップＳ３５０）。ステップＳ３５０では、同一のアプリケーションパッケージについて既に処理対象として選択されたアプリケーションは選択の対象から除外される。
【００８４】
続いて、インストール部１１２は、処理対象のアプリケーションが既にインストールされているか否かを判定する（ステップＳ３５５）。より具体的には、ステップＳ３５５では、インストール部１１２は、ステップＳ３５０で選択したパッケージの名前が、パッケージリストに記録されているいずれかのアプリケーションのパッケージの名前と一致した場合、処理対象のアプリケーションが既にインストールされていると判定する。また、インストール部１１２は、ステップＳ３５０で選択したパッケージの名前が、パッケージリストに記録されているどのアプリケーションのパッケージの名前とも一致しなかった場合、処理対象のアプリケーションがインストールされていないと判定する。
【００８５】
処理対象のアプリケーションがインストールされていない場合、処理はステップＳ３７０に進む。また、処理対象のアプリケーションが既にインストールされている場合、インストール部１１２は、処理対象のアプリケーションのバージョン（図５のコード５０１が示す情報）を、ステップＳ３２５で受信されたアプリケーションパッケージに含まれる処理対象のアプリケーションのマニフェストから抽出すると共に、既にインストールされている同じアプリケーションのバージョンを記憶部１６の所定のフォルダから読み出す（ステップＳ３６０）。
【００８６】
アプリケーションパッケージに含まれる親アプリケーションおよび補助アプリケーションがインストールされると、それぞれのアプリケーションのマニフェストに含まれる情報が抽出され、記憶部１６の所定のフォルダに格納される。ステップＳ３６０では、インストール部１１２は、このフォルダから、既にインストールされているアプリケーションのバージョンを読み出す。
【００８７】
ステップＳ３６０に続いて、インストール部１１２は、２つのバージョンを比較し、処理対象のアプリケーションのバージョンが、既にインストールされている同じアプリケーションのバージョンよりも新しいか否かを判定する（ステップＳ３６５）。処理対象のアプリケーションのバージョンの数値が、既にインストールされている同じアプリケーションのバージョンの数値と同じか、その数値よりも小さい場合、処理はステップＳ３５０に戻り、処理対象となる次のアプリケーションが選択される。
【００８８】
また、処理対象のアプリケーションのバージョンの数値が、既にインストールされている同じアプリケーションのバージョンの数値よりも大きい場合、インストール部１１２は、処理対象のアプリケーションのインストールを行うため、インストールを行うAPIを呼び出す（ステップＳ３７０）。インストールを行うAPIは、com/android/server/pm/PackageManagerServiceクラスのinstallPackageというAPIである。
【００８９】
APIが呼び出されると、アプリケーション管理部１５は、処理対象のアプリケーションのファイル（例えば、図４の親アプリケーションＡＰ１または補助アプリケーションＡＰ２のファイル）を伸長し、伸長後のファイルを記憶部１６に格納することによって、アプリケーションのインストールを行う（ステップＳ３７５）。このとき、アプリケーションを構成する各コンポーネントのプログラムは、アプリケーションのパッケージの名前（図６のコード６０１，６０５が示す情報）に相当するフォルダに格納される。また、マニフェストおよびアプリケーションマニフェストに含まれる情報が抽出され、例えばアプリケーションのパッケージの名前と関連付けられて記憶部１６の所定のフォルダに格納される。
【００９０】
続いて、インストール部１１２は、インストールしたアプリケーションの情報をパッケージリストに追加することにより、パッケージリストを更新する（ステップＳ３８０）。図１１では、アプリケーションのインストールが行われた後にパッケージリストが更新されるが、パッケージリストが更新された後にアプリケーションのインストールが行われてもよい。例えば、図１１ではステップＳ３７０，Ｓ３７５，Ｓ３８０の順番で処理が行われるが、ステップＳ３８０，Ｓ３７０，Ｓ３７５の順番で処理が行われてもよい。あるいは、全てのアプリケーションのインストールが終了した後にパッケージリストの更新が行われてもよい。
【００９１】
図１３は、パッケージリストが更新される様子を示している。例えば、ステップＳ３５０で親アプリケーションが最初に処理対象のアプリケーションとして選択された後、再度ステップＳ３５０の処理が行われる毎に補助アプリケーションが処理対象のアプリケーションとして選択される場合、パッケージリストは以下のように更新される。
【００９２】
最初に処理対象のアプリケーションとして選択された親アプリケーションがステップＳ３７５でインストールされた後、ステップＳ３８０では、インストール部１１２は、その親アプリケーションの情報をパッケージリストに追加する（図１３（ａ））。続いて、処理対象のアプリケーションとして選択された補助アプリケーションがステップＳ３７５でインストールされた後、ステップＳ３８０では、インストール部１１２は、その補助アプリケーションの情報をパッケージリストに追加する（図１３（ｂ））。このとき、追加された補助アプリケーションの情報は、既にインストールされた親アプリケーションの情報と関連付けられる。
【００９３】
続いて、処理対象のアプリケーションとして選択された別の補助アプリケーションがステップＳ３７５でインストールされた後、ステップＳ３８０では、インストール部１１２は、その補助アプリケーションの情報をパッケージリストに追加する（図１３（ｃ））。このとき、追加された補助アプリケーションの情報は、既にインストールされた親アプリケーションの情報と関連付けられる。これ以降、処理対象のアプリケーションとして補助アプリケーションが選択されてインストールされる毎に、上記の処理が繰り返され、補助アプリケーションの情報がパッケージリストに追加される（図１３（ｄ））。
【００９４】
ステップＳ３８０に続いて、インストール部１１２は、インストールが終了したか否かを判定する（ステップＳ３８５）。ステップＳ３２５で受信されたアプリケーションパッケージに含まれる親アプリケーションと補助アプリケーションのうち処理対象として選択されていないアプリケーションがある場合、処理はステップＳ３５０に戻り、処理対象となる次のアプリケーションが選択される。また、ステップＳ３２５で受信されたアプリケーションパッケージに含まれる全ての親アプリケーションと補助アプリケーションが処理対象として選択された場合、端末装置１ａにおける処理が終了する。
【００９５】
上記の例では、アプリケーション管理部１５の機能は従来のOSで実現されており、OSのプログラムを変更する必要はない。一方、上記の例におけるインストール部１１２の機能の一部をアプリケーション管理部１５が担うようにしてもよい。例えば、ステップＳ３３０〜Ｓ３８５の処理をアプリケーション管理部１５が行うようにしてもよい。この場合、従来のOSのプログラムを変更すればよい。
【００９６】
次に、端末装置１ａにインストールされたアプリケーションが起動する手順を説明する。一例として、図４の親アプリケーションＡＰ１と補助アプリケーションＡＰ２がインストールされた場合に各アプリケーションが起動する手順を説明する。図４では、Activityのプログラム４０１に対して、Intent-filterの*andrd*.intent.category.LAUNCHER が設定されているものとする。この設定がなされているActivityのプログラムは、HOME画面に表示される。
【００９７】
ユーザが、HOME画面に表示されているアプリケーションのアイコンをタッチすると、アプリケーションが起動する。このときに起動するプログラムは、上記の設定がなされているプログラム４０１のonCreateメソッドである。onCreateメソッドは、アプリケーションが最初に起動するときに呼ばれるメソッドである。プログラム４０１のonCreateメソッドのコードに、プログラム４１０を起動するコードが含まれているため、プログラム４０１のonCreateメソッドが起動すると、補助アプリケーションＡＰ２が起動する。
【００９８】
次に、インストールされているアプリケーションのアンインストールの手順を説明する。アンインストールの対象となるアプリケーションはユーザによって選択される。本実施形態では、親アプリケーションがアンインストールの対象として選択されると、その親アプリケーションによって起動される補助アプリケーションも親アプリケーションと一緒にアンインストールされる。ただし、アンインストールされる親アプリケーションによって起動される補助アプリケーションが他の親アプリケーションによっても起動される場合には、その補助アプリケーションはアンインストールされず、アンインストール対象の親アプリケーションのみがアンインストールされる。
【００９９】
図１４はアンインストールの一例を示している。図１４（ａ）は、アンインストールが行われる前に端末装置１ａにインストールされているアプリケーションを示している。端末装置１ａには、親アプリケーション１４００，１４０１と、補助アプリケーション１４１０〜１４１２がインストールされている。補助アプリケーション１４１０は、親アプリケーション１４００によって起動される。補助アプリケーション１４１１は、親アプリケーション１４００，１４０１によって起動される。補助アプリケーション１４１２は、親アプリケーション１４０１によって起動される。図１４（ａ）に示すアプリケーションがインストールされている状態で、親アプリケーション１４００がアンインストール対象として選択されたものとする。
【０１００】
図１４（ｂ）は、アンインストールが行われた後に端末装置１ａにインストールされているアプリケーションを示している。アンインストールの対象として親アプリケーション１４００が選択された場合、親アプリケーション１４００と補助アプリケーション１４１０がアンインストールされる。補助アプリケーション１４１１は親アプリケーション１４００によって起動されるが、親アプリケーション１４０１によっても起動されるため、アンインストールされない。
【０１０１】
図１５および図１６は端末装置１ａの動作の手順を示している。ユーザが操作部１２を操作し、アンインストール対象の親アプリケーションを選択し、アンインストールの指示を入力すると、以下の処理が行われる。
【０１０２】
端末装置１ａにおいて、アンインストール部１４は、記憶部１６からパッケージリストを読み出し（ステップＳ４００）、アンインストール対象の親アプリケーションのパッケージの名前をパッケージリストから抽出する（ステップＳ４０５）。さらに、アンインストール部１４は、アンインストール対象の親アプリケーションによって起動される補助アプリケーションのパッケージの名前をパッケージリストから抽出する（ステップＳ４１０）。
【０１０３】
より具体的には、ステップＳ４１０では、アンインストール部１４は、ステップＳ４０５で抽出したアンインストール対象の親アプリケーションのパッケージの名前と関連付けられている補助アプリケーションのパッケージの名前を抽出する。この補助アプリケーションは、アンインストール対象の親アプリケーションによって起動されるアプリケーションである。
【０１０４】
例えば、名前が「App 1」である親アプリケーションがアンインストール対象である場合、ステップＳ４１０では、図１２のパッケージリストから、アンインストール対象の親アプリケーション（名前が「App 1」であるアプリケーション）によって起動される補助アプリケーション（名前が「App A」、「App B」、「App C」であるアプリケーション）のパッケージの名前が抽出される。
【０１０５】
ステップＳ４１０に続いて、アンインストール部１４は、ステップＳ４１０で抽出したパッケージの名前を有する補助アプリケーションをアンインストール対象に指定する（ステップＳ４１５）。この時点で、アンインストール対象になっているアプリケーションは、ユーザが選択した親アプリケーションと、その親アプリケーションによって起動される補助アプリケーションとである。例えば、名前が「App 1」である親アプリケーションがユーザによって選択された場合、ステップＳ４１５では、図１２のパッケージリストに記録されているアプリケーションのうち、この親アプリケーションと、名前が「App A」、「App B」、「App C」である補助アプリケーションとがアンインストール対象に指定される。
【０１０６】
ステップＳ４１５に続いて、アンインストール部１４は、ステップＳ４１０で抽出したパッケージの名前を有する補助アプリケーションを起動する、アンインストール対象の親アプリケーション以外の親アプリケーションのパッケージの名前をパッケージリストから抽出する（ステップＳ４２０）。例えば、名前が「App 1」である親アプリケーションがアンインストール対象である場合、ステップＳ４２０では、図１２のパッケージリストから、名前が「App B」、「App C」である補助アプリケーションを起動する親アプリケーション（名前が「App 2」、「App 4」であるアプリケーション）のパッケージの名前が抽出される。
【０１０７】
続いて、アンインストール部１４は、ステップＳ４２０の処理の結果に基づいて、ステップＳ４１０で抽出したパッケージの名前を有する補助アプリケーションを起動する、アンインストール対象の親アプリケーション以外の親アプリケーションがあるか否かを判定する（ステップＳ４２５）。ステップＳ４２０において、アンインストール対象の親アプリケーション以外の親アプリケーションのパッケージの名前がパッケージリストから抽出されなかった場合、アンインストール部１４は、アンインストール対象の親アプリケーション以外の親アプリケーションがないと判定する。この場合、処理はステップＳ４３５に進む。
【０１０８】
また、ステップＳ４２０において、アンインストール対象の親アプリケーション以外の親アプリケーションのパッケージの名前がパッケージリストから抽出された場合、アンインストール部１４は、アンインストール対象の親アプリケーション以外の親アプリケーションがあると判定する。この場合、アンインストール部１４は、ステップＳ４１５でアンインストール対象に指定した補助アプリケーションのうち、ステップＳ４２０で抽出した名前を有する親アプリケーションによって起動される補助アプリケーションをアンインストール対象から除外する（ステップＳ４３０）。
【０１０９】
例えば、名前が「App 1」である親アプリケーションがアンインストール対象である場合、ステップＳ４３０では、図１２のパッケージリストに記録されている補助アプリケーションのうち、名前が「App B」、「App C」である補助アプリケーションがアンインストール対象から除外される。このため、アンインストール対象のアプリケーションは、名前が「App 1」である親アプリケーションと、名前が「App A」である補助アプリケーションとになる。
【０１１０】
ステップＳ４３０に続いて、アンインストール部１４は、表示部１３の画面に、アンインストール対象のアプリケーションの情報を表示する（ステップＳ４３５）。図１７は、ステップＳ４３５の処理が行われたときの表示部１３の画面を示している。画面の上部には、親アプリケーションのアイコン１７００と親アプリケーションの名前１７０１が表示される。親アプリケーションの名前１７０１は、パッケージリストにおいて、ステップＳ４００で抽出したアプリケーションのパッケージの名前と組み合わされているアプリケーションの名前である。
【０１１１】
親アプリケーションのアイコン１７００と親アプリケーションの名前１７０１の下には、親アプリケーションと補助アプリケーションが関係を有していることを示すメッセージ１７１０が表示される。より具体的には、メッセージ１７１０は、親アプリケーションのアンインストールを行うと、補助アプリケーションのアンインストールも行われることを示している。
【０１１２】
メッセージ１７１０の下には、補助アプリケーションのアイコン１７２０と補助アプリケーションの名前１７２１が表示される。補助アプリケーションの名前１７２１は、パッケージリストにおいて、ステップＳ４１０で抽出したアプリケーションのパッケージの名前と組み合わされているアプリケーションの名前である。補助アプリケーションのアイコン１７２０と補助アプリケーションの名前１７２１の下には、親アプリケーションをアンインストールするか否かを確認するメッセージ１７３０が表示される。
【０１１３】
ユーザがタッチパネルのボタン１７４０を押下すると、親アプリケーションのアンインストールの実行が選択される。また、ユーザがタッチパネルのボタン１７４１を押下すると、アプリケーションのアンインストールの中止が選択される。
【０１１４】
ステップＳ４３５に続いて、アンインストール部１４は、操作部１２を介して入力される、アンインストールの実行または中止を示す情報を操作部１２から取得し（ステップＳ４４０）、取得した情報に基づいて、アンインストールを実行するか否かを判定する（ステップＳ４４５）。取得した情報がアンインストールの中止を示している場合、アンインストール部１４は、アンインストールを中止すると判定する。この場合、アンインストールの処理が終了する。
【０１１５】
また、取得した情報がアンインストールの実行を示している場合、アンインストール部１４は、アンインストールを実行すると判定する。この場合、アンインストール部１４は、アンインストール対象になっている親アプリケーションと補助アプリケーションのパッケージの名前のいずれかを選択することにより、処理対象のアプリケーションを選択する（ステップＳ４５０）。ステップＳ４５０では、既に処理対象として選択されたアプリケーションは選択の対象から除外される。
【０１１６】
続いて、アンインストール部１４は、処理対象のアプリケーションのアンインストールを行うため、アンインストールを行うAPIを呼び出す（ステップＳ４５５）。アンインストールを行うAPIは、com/android/server/pm/PackageManagerServiceクラスのdeletePackageというAPIである。
【０１１７】
APIが呼び出されると、アプリケーション管理部１５は、処理対象のアプリケーションのファイルを記憶部１６から消去することによって、アプリケーションのアンインストールを行う（ステップＳ４６０）。処理対象のアプリケーションのパッケージの名前はパッケージリストから判明しているので、ステップＳ４６０では、アプリケーション管理部１５は、そのパッケージの名前に相当するフォルダからアプリケーションのファイルを消去する。また、ステップＳ４６０では、アプリケーション管理部１５は、インストール時にマニフェストおよびアプリケーションマニフェストから抽出されて記憶部１６の所定のフォルダに格納された情報を消去する。
【０１１８】
ステップＳ４６０に続いて、アンインストール部１４は、アンインストールが終了したか否かを判定する（ステップＳ４６５）。アンインストール対象である親アプリケーションと補助アプリケーションのうち処理対象として選択されていないアプリケーションがある場合、処理はステップＳ４５０に戻り、処理対象となる次のアプリケーションが選択される。
【０１１９】
また、アンインストール対象である全ての親アプリケーションと補助アプリケーションが処理対象として選択された場合、アンインストール部１４は、アンインストールした親アプリケーションの情報と、その親アプリケーションに関連付けられた補助アプリケーションの情報とをパッケージリストから消去することにより、パッケージリストを更新する（ステップＳ４７０）。図１６では、全てのアプリケーションのアンインストールが行われた後にパッケージリストが更新されるが、個々のアプリケーションが更新される毎にパッケージリストが更新されてもよい。
【０１２０】
図１８（ａ）は、ステップＳ４７０で更新される前のパッケージリストの一例を示している。図１８（ａ）に示すパッケージリストは、図１２に示したパッケージリストと同じである。図１８（ｂ）は、名前が「App 1」である親アプリケーションがアンインストール対象である場合にステップＳ４７０で更新された後のパッケージリストの一例を示している。図１８（ａ）において、アンインストールされた親アプリケーションの名前である「App 1」と、その親アプリケーションが起動する補助アプリケーションの名前である「App A」、「App B」、「App C」がパッケージリストから消去されている。
【０１２１】
上記の例では、アプリケーション管理部１５の機能は従来のOSで実現されており、OSのプログラムを変更する必要はない。一方、上記の例におけるアンインストール部１４の機能の一部をアプリケーション管理部１５が担うようにしてもよい。例えば、ステップＳ４５０〜Ｓ４７０の処理をアプリケーション管理部１５が行うようにしてもよい。この場合、従来のOSのプログラムを変更すればよい。
【０１２２】
権限を必要とする機能や情報を特定の補助アプリケーションが勝手に利用することが判明した場合、アンインストール部１４は、サーバ２から受信されるメッセージに基づいて補助アプリケーションのアンインストールを行う。例えば、サーバ２の制御部２１は、削除する補助アプリケーションを識別する情報（例えば、補助アプリケーションのパッケージの名前）と、補助アプリケーションを削除する指示を示す情報とを含むメッセージを、通信部２０を介して、端末装置１ａに送信する。このメッセージは、本発明におけるアンインストール情報の一例である。端末装置１ａの通信部１０は、このメッセージを受信する。受信されたメッセージはアンインストール部１４に出力される。アンインストール部１４は、メッセージに含まれる情報が示す補助アプリケーションをアンインストールする。
【０１２３】
上述したように、本実施形態によれば、アプリケーションパッケージに含まれる親アプリケーション、補助アプリケーションのそれぞれの開発者が表示部１３の画面に表示されるので、アプリケーションに含まれる各機能の開発者をユーザに通知することができる。
【０１２４】
また、アプリケーションパッケージに含まれる親アプリケーションと補助アプリケーション毎に、インストール後に許可される権限が表示部１３の画面に表示されるので、親アプリケーションと補助アプリケーション毎に、必要とする権限をユーザに通知することができる。
【０１２５】
また、アプリケーションパッケージに含まれる親アプリケーションと補助アプリケーションはそれぞれ単一の開発者のコードを含み、それぞれのアプリケーションに対して別々に署名情報が付与されているので、権限を必要とする機能や情報を勝手に利用する行為の発生が判明した場合に、その行為を行うコードを開発した開発者を特定することができる。
【０１２６】
また、権限を必要とする機能や情報を勝手に利用する行為の発生が判明した場合、サーバ２から端末装置１ａに、その補助アプリケーションを削除するメッセージが送信され、メッセージを受信した端末装置１ａが、その補助アプリケーションのアンインストールを行うので、権限を必要とする機能や情報を勝手に利用する行為を迅速に止めることができる。
【０１２７】
（第２の実施形態）
次に、本発明の第２の実施形態を説明する。本実施形態では、端末装置に着脱可能な記憶媒体であるカード媒体に保存されているアプリケーションパッケージに含まれているアプリケーションをインストールする方法を説明する。
【０１２８】
図１９は、本実施形態の端末装置１ｂの構成を示している。端末装置１ｂは、操作部１２、表示部１３、アンインストール部１４、アプリケーション管理部１５、記憶部１６、およびインストール処理部１７を記憶する。インストール処理部１７を除く他の構成は、第１の実施形態の端末装置１ａが有する構成と同様であるので、それらの構成の説明を省略する。端末装置１ｂには、アプリケーションパッケージが保存されたカード媒体３０が接続されている。インストール処理部１７は、カード媒体３０からアプリケーションパッケージを取得し、アプリケーションパッケージに含まれるアプリケーションのインストールを行う。
【０１２９】
インストール処理部１７は、前処理部１７０、表示処理部１７１、およびインストール部１７２を有する。表示処理部１７１、インストール部１７２は、第１の実施形態における表示処理部１１１、インストール部１１２とそれぞれ同様である。前処理部１７０は、アプリケーションのインストール前に必要な各種処理を行う。インストール処理部１７は、例えばアプリケーションとして実装されている。
【０１３０】
次に、アプリケーションパッケージに含まれるアプリケーションのインストールの手順を説明する。図２０は端末装置１ｂの動作の手順を示している。端末装置１ｂのインストール処理部１７は、操作部１２を介して入力されるユーザの指示に基づいて、以下の処理を行う。
【０１３１】
前処理部１７０は、カード媒体３０からアプリケーションパッケージを読み出し（ステップＳ５００）、親アプリケーションを識別する（ステップＳ５０５）。より具体的には、ステップＳ５０５では、図４の署名情報４０４，４１２のそれぞれに含まれる公開鍵を、署名情報４２１に含まれる公開鍵と比較し、署名情報４０４，４１２に含まれる公開鍵のうち、署名情報４２１に含まれる公開鍵と一致した公開鍵を含む署名情報が付加されているアプリケーションを親アプリケーションと識別する。
【０１３２】
続いて、前処理部１７０は、アプリケーションパッケージから親アプリケーションおよび補助アプリケーションの情報を抽出する（ステップＳ５１０）。ステップＳ５１０でアプリケーションパッケージから抽出される情報は、各アプリケーションのマニフェストに含まれる権限（図５のコード５００が示す情報）、アプリケーションマニフェストに含まれる各アプリケーションの名前（図６のコード６０２，６０６が示す情報）および開発者（図６のコード６０３，６０７が示す情報）の各情報である。
【０１３３】
続いて、表示処理部１７１は、ステップＳ５１０で抽出された情報に基づいて、表示部１３の画面に、親アプリケーションおよび補助アプリケーションのそれぞれの名前および開発者と、親アプリケーションおよび補助アプリケーションのそれぞれについてインストール後に許可される権限とを表示する（ステップＳ５１５）。ステップＳ５１５では、表示部１３の画面は、例えば図８に示した画面となる。
【０１３４】
続いて、インストール部１７２は、操作部１２を介して入力される、インストールの実行または中止を示す情報を操作部１２から取得し（ステップＳ５２０）、取得した情報に基づいて、インストールを実行するか否かを判定する（ステップＳ５２５）。取得した情報がインストールの中止を示している場合、インストール部１７２は、インストールを中止すると判定する。この場合、インストールの処理が終了する。
【０１３５】
また、取得した情報がインストールの実行を示している場合、インストール部１７２は、インストールを実行すると判定する。この場合、インストール部１７２は、アプリケーションパッケージに含まれる署名情報（図４の署名情報４０４，４１２，４２１）に基づいて、各開発者の署名を検証する（ステップＳ５３０）。署名の検証方法は、第１の実施形態のステップＳ２０５における署名の検証方法と同様である。
【０１３６】
続いて、インストール部１７２は、ステップＳ５３０における署名の検証結果に基づいて、署名の検証に成功したか否かを判定する（ステップＳ５３５）。データが改竄されている場合、署名の検証に失敗したことになり、インストールの処理が終了する。また、データが改竄されていない場合、署名の検証に成功したことになり、インストール部１７２は記憶部１６からパッケージリストを読み出す（ステップＳ５４０）。これ以降の処理は、図１１に示した処理と同様である。
【０１３７】
アプリケーションパッケージに含まれるアプリケーションのアンインストールの方法は、第１の実施形態におけるアンインストールの方法と同様である。
【０１３８】
本実施形態によれば、第１の実施形態で得られる効果と同様の効果を得ることができる。
【０１３９】
以上、図面を参照して本発明の実施形態について詳述してきたが、具体的な構成は上記の実施形態に限られるものではなく、本発明の要旨を逸脱しない範囲の設計変更等も含まれる。
【符号の説明】
【０１４０】
１ａ，１ｂ・・・端末装置、２・・・サーバ、１０・・・通信部（受信部）、１１・・・アプリケーション取得部、１２・・・操作部、１３・・・表示部、１４・・・アンインストール部、１５・・・アプリケーション管理部１５、１６・・・記憶部（アプリケーション情報記憶部）、１７・・・インストール処理部、２０・・・通信部（送信部）、２１・・・制御部（抽出部）、２２・・・記憶部、１１０・・・通信制御部、１１１，１７１・・・表示処理部、１１２，１７２・・・インストール部、１７０・・・前処理部（抽出部）
【図１】
2014002528.tif 000003
【図２】
2014002528.tif 000004
【図３】
2014002528.tif 000005
【図４】
2014002528.tif 000006
【図５】
2014002528.tif 000007
【図６】
2014002528.tif 000008
【図７】
2014002528.tif 000009
【図８】
2014002528.tif 000010
【図９】
2014002528.tif 000011
【図１０】
2014002528.tif 000012
【図１１】
2014002528.tif 000013
【図１２】
2014002528.tif 000014
【図１３】
2014002528.tif 000015
【図１４】
2014002528.tif 000016
【図１５】
2014002528.tif 000017
【図１６】
2014002528.tif 000018
【図１７】
2014002528.tif 000019
【図１８】
2014002528.tif 000020
【図１９】
2014002528.tif 000021
【図２０】
2014002528.tif 000022
【図２１】
2014002528.tif 000023
【図２２】
2014002528.tif 000024