(57)【要約】【課題】アーカイブ形式のライブラリについて、バージョンや関連性の情報を確実に確認することが可能になる。また、各々のアーカイブ形式のライブラリの同一性を確認する。【解決手段】データ処理装置１０は、Ｊａｒファイル解凍部１０Ａと、変更情報抽出部１０Ｂと、差異検出部１０Ｃとを備える。Ｊａｒファイル解凍部１０Ａは、ＪａｖａのＪａｒ形式のライブラリ（アーカイブ形式のライブラリ）を解凍する。変更情報抽出部１０Ｂは、Ｊａｒファイル解凍部１０Ａによって解凍されたライブラリに基づいて、アーカイブ形式のライブラリの変更に関連する情報を抽出する。差異検出部１０Ｃは、変更情報抽出部１０Ｂによって抽出された、変更に関連する情報に基づいて、アーカイブ形式のライブラリと比較対象となるライブラリとのバージョンの差異を検出する。【選択図】図１
2012164110.tif 000002
【特許請求の範囲】
【請求項１】
アーカイブ形式のライブラリを解凍するファイル解凍部と、
前記ファイル解凍部によって解凍されたライブラリに基づいて、前記アーカイブ形式のライブラリの変更に関連する情報を抽出する変更情報抽出部と、
前記変更情報抽出部によって抽出された前記変更に関連する情報に基づいて、前記アーカイブ形式のライブラリと比較対象となるライブラリとのバージョンの差異を検出する差異検出部と
を備えることを特徴とするデータ処理装置。
【請求項２】
前記変更情報抽出部は、
前記解凍されたライブラリからマニフェストファイルを検索し、検索した前記マニフェストファイルに記述された情報を抽出し、
前記変更に関連する情報には、前記マニフェストファイルに記述された情報が含まる
ことを特徴とする請求項１に記載のデータ処理装置。
【請求項３】
前記変更情報抽出部は、
前記解凍されたライブラリから、前記解凍されたライブラリ内に含まれる各クラスファイルのパス情報、前記各クラスファイルのファイル名、及び前記各クラスファイルのタイムスタンプ情報を抽出し、
前記変更に関連する情報には、前記パス情報、前記ファイル名、及びタイムスタンプ情報が含まれる
ことを特徴とする請求項１又は請求項２に記載のデータ処理装置。
【請求項４】
前記変更情報抽出部は、
前記解凍されたライブラリ内の各クラスファイルに対して逆アセンブルを行って、前記各クラスファイルをテキスト化したバイトコードを抽出し、
前記変更に関連する情報には、前記バイトコードが含まれる
ことを特徴とする請求項１から請求項３のいずれか１項に記載のデータ処理装置。
【請求項５】
請求項１から請求項４のいずれか１項に記載のデータ処理装置と、
ネットワーク上の前記アーカイブ形式のライブラリを提供する提供サイトをクローリングして最新の前記アーカイブ形式のライブラリを収集するデータ収集装置と、
ライブラリを記憶する記憶装置と
を備え、
前記データ処理装置は、
前記データ収集装置によって収集した前記アーカイブ形式のライブラリである収集ライブラリと、前記記憶装置に既に記憶されている比較対象となるライブラリとのバージョンの差異を前記差異検出部によって検出し、検出した前記バージョンの差異と前記収集ライブラリとを関連付けて、前記記憶装置に記憶させる
ことを特徴とするデータ収集システム。
【請求項６】
請求項１から請求項４のいずれか１項に記載のデータ処理装置を有し、インターネット上の前記アーカイブ形式のライブラリを取得する検証サーバと、
イントラネット内に配置され、前記イントラネットを介して前記検証サーバと接続される業務サーバと
を備え、
前記検証サーバは、前記データ処理装置によって、前記業務サーバから取得した前記アーカイブ形式のライブラリと、インターネット上の前記アーカイブ形式のライブラリとのバージョンの差異を検出する
ことを特徴とするデータ処理システム。
【請求項７】
アーカイブ形式のライブラリを解凍するファイル解凍ステップと、
前記ファイル解凍ステップによって解凍されたライブラリに基づいて、前記アーカイブ形式のライブラリの変更に関連する情報を抽出する変更情報抽出ステップと、
前記変更情報抽出ステップによって抽出された前記変更に関連する情報に基づいて、前記アーカイブ形式のライブラリと比較対象となるライブラリとのバージョンの差異を検出する差異検出ステップと
を有することを特徴とするデータ処理方法。
【請求項８】
ファイル解凍部が、アーカイブ形式のライブラリを解凍するファイル解凍手順と、
変更情報抽出部が、前記ファイル解凍手順によって解凍されたライブラリに基づいて、前記アーカイブ形式のライブラリの変更に関連する情報を抽出する変更情報抽出手順と、
差異検出部が、前記変更情報抽出手順によって抽出された前記変更に関連する情報に基づいて、前記アーカイブ形式のライブラリと比較対象となるライブラリとのバージョンの差異を検出する差異検出手順と
をコンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ処理装置、データ処理方法、データ収集システム、データ処理システム、及びプログラムに関する。
【背景技術】
【０００２】
ネットワークを経由してコミュニティサイト等のＪａｖａ（登録商標）関連のモジュール（Ｊａｖａモジュール）をダウンロードするデータ処理装置の例が特許文献１に記載されている。この特許文献１のデータ処理装置は、Ｊａｖａモジュールの新旧バージョンがシステムに入っているか否かの判定を行う。そして、この特許文献１のデータ処理装置は、旧バージョンがローカルシステムに存在している場合に、その旧バージョンをアンインストールし、最新バージョンがシステムに入っていない場合に、最新バージョンをダウンロードしてインストールする。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００３−１７７９３２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ところで、アーカイブ形式のライブラリやモジュールにおけるバージョンの確認について、上記特許文献１のような技術では、モジュールやライブラリのファイル名に付与したバージョン表記に基づいてバージョンの比較を行っている。
【０００５】
しかしながら、コミュニティ提供のモジュールやライブラリに基づいて別のプロダクトが作成され、これを元のモジュールやライブラリに含ませて更新する際にファイル名が変更されて、ファイル名に付与されることの多いバージョン情報が削除されることがある。このような場合は、更新されたモジュールやライブラリのバージョンの確認ができない。
【０００６】
また、ファイル名が同じでもその内容に修正が加えられていたり、内容が同一でもファイル名が変更されていたりすることもあるので、ファイル名だけではモジュールやライブラリの内容の同一性を確認することができなかった。
【０００７】
本発明は、このような問題点を解決するデータ処理装置、データ処理方法、データ収集システム、データ処理システム、及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００８】
上述した課題を解決するために、本発明の一態様によるデータ処理装置は、アーカイブ形式のライブラリを解凍するファイル解凍部と、前記ファイル解凍部によって解凍されたライブラリに基づいて、前記アーカイブ形式のライブラリの変更に関連する情報を抽出する変更情報抽出部と、前記変更情報抽出部によって抽出された前記変更に関連する情報に基づいて、前記アーカイブ形式のライブラリと比較対象となるライブラリとのバージョンの差異を検出する差異検出部とを備えることを特徴とする。
【０００９】
また、本発明の一態様によるデータ収集システムは、上記に記載のデータ処理装置と、ネットワーク上の前記アーカイブ形式のライブラリを提供する提供サイトをクローリングして最新の前記アーカイブ形式のライブラリを収集するデータ収集装置と、ライブラリを記憶する記憶装置とを備え、前記データ処理装置は、前記データ収集装置によって収集した前記アーカイブ形式のライブラリである収集ライブラリと、前記記憶装置に既に記憶されている比較対象となるライブラリとのバージョンの差異を前記差異検出部によって検出し、検出した前記バージョンの差異と前記収集ライブラリとを関連付けて、前記記憶装置に記憶させることを特徴とする。
【００１０】
また、本発明の一態様によるデータ処理システムは、上記記載のデータ処理装置を有し、インターネット上の前記アーカイブ形式のライブラリを取得する検証サーバと、イントラネット内に配置され、前記イントラネットを介して前記検証サーバと接続される業務サーバとを備え、前記検証サーバは、前記データ処理装置によって、前記業務サーバから取得した前記アーカイブ形式のライブラリと、インターネット上の前記アーカイブ形式のライブラリとのバージョンの差異を検出することを特徴とする。
【００１１】
また、本発明の一態様によるデータ処理方法は、アーカイブ形式のライブラリを解凍するファイル解凍ステップと、前記ファイル解凍ステップによって解凍されたライブラリに基づいて、前記アーカイブ形式のライブラリの変更に関連する情報を抽出する変更情報抽出ステップと、前記変更情報抽出ステップによって抽出された前記変更に関連する情報に基づいて、前記アーカイブ形式のライブラリと比較対象となるライブラリとのバージョンの差異を検出する差異検出ステップとを有することを特徴とする。
【００１２】
また、本発明の一態様によるプログラムは、ファイル解凍部が、アーカイブ形式のライブラリを解凍するファイル解凍手順と、変更情報抽出部が、前記ファイル解凍手順によって解凍されたライブラリに基づいて、前記アーカイブ形式のライブラリの変更に関連する情報を抽出する変更情報抽出手順と、差異検出部が、前記変更情報抽出手順によって抽出された前記変更に関連する情報に基づいて、前記アーカイブ形式のライブラリと比較対象となるライブラリとのバージョンの差異を検出する差異検出手順とをコンピュータに実行させるためのプログラムである。
【発明の効果】
【００１３】
本発明によれば、アーカイブ形式のライブラリについて、バージョンや関連性の情報を確実に確認することが可能になる。また、各々のアーカイブ形式のライブラリの同一性を確認することができ、各アーカイブ形式のライブラリの不整合を防ぐことが可能になる。
【図面の簡単な説明】
【００１４】
【図１】第１の実施形態に係る検証サーバの概略構成を示すブロック図である。
【図２】第１の実施形態に係るデータ処理装置の動作を示すフローチャートである。
【図３】第２の実施形態に係る検証サーバの構成を示すブロック図である。
【図４】第２の実施形態に係るデータ処理装置の動作を示すフローチャートである。
【図５】第３の実施形態に係る検証サーバの構成を示すブロック図である。
【図６】第４の実施形態に係るデータ収集システムの構成を示すブロック図である。
【図７】第５の実施形態に係るデータ処理システムの構成を示す模式図である。
【図８】第６の実施形態に係るデータ処理システムの構成を示す模式図である。
【発明を実施するための形態】
【００１５】
以下、本発明の実施形態について、図面を参照しながら説明する。
［第１の実施形態］
図１は、本発明の第１の実施形態に係る検証サーバ１２０の概略構成を示すブロック図である。
この図において、検証サーバ１２０は、プログラム制御によりアーカイブ形式のライブラリを処理するデータ処理装置１０と、各種の情報を記憶する記憶装置３０と、ネットワークからアーカイブ形式のライブラリを収集するデータ収集装置５０とを備えている。
【００１６】
データ処理装置１０は、Ｊａｒファイル解凍部１０Ａと、変更情報抽出部１０Ｂと、差異検出部１０Ｃとを備えている。記憶装置３０は、リポジトリ（データベース）３０Ａを有し、このリポジトリ３０Ａ内には、クラスファイル記憶部３１と、ファイル情報記憶部３２と、オリジナル情報記憶部３６と、サイト情報記憶部３７とが設けられている。
【００１７】
Ｊａｒファイル解凍部１０Ａは、オリジナル情報記憶部３６に記憶されているアーカイブ形式のライブラリを受け取り解凍する。例えば、Ｊａｒファイル解凍部１０Ａは、Ｊａｖａのコマンド「ｊａｒ」を使用し、拡張子ｊａｒのＪａｖａライブラリを例えばクラスファイル単位に解凍してメモリ上に展開する手段を有し、解凍した情報をクラスファイル記憶部３１に記憶させる。
【００１８】
変更情報抽出部１０Ｂは、Ｊａｒファイル解凍部１０Ａによって解凍されたライブラリに基づいて、アーカイブ形式のライブラリの変更に関連する情報を抽出する。そして、変更情報抽出部１０Ｂは、マニフェスト検索部１１、バージョン情報抽出部１２、バージョン情報保存部１３、ファイル名チェック部１４、及びファイル名バージョン保存部１５を備えている。さらに、変更情報抽出部１０Ｂは、ファイルパス情報保存部１６及びファイルタイムスタンプ情報保存部１７を備えている。
【００１９】
マニフェスト検索部１１は、Ｊａｒファイル解凍部１０Ａの解凍処理によってメモリ上に展開されている解凍情報（クラスファイル群）に対して、ｆｉｎｄコマンド等のコマンドを使用してＭＡＮＩＦＥＳＴ．ＭＦというファイル名のファイル（マニフェストファイル）を検索する。
なお、このＭＡＮＩＦＥＳＴ．ＭＦ（マニフェストファイル）は、Ｊａｒファイルを作成する際に生成されるファイルである。マニフェストファイルには、バージョンや、ｊａｒファイルの作成に使用したツールなどの情報が記述されている。
【００２０】
バージョン情報抽出部１２は、マニフェスト検索部１１が検索したマニフェストファイルを上記の解凍情報から読み取り、そのマニフェストファイルの中に記載事項があるか否かをｇｒｅｐコマンド等のコマンドを使用して確認する。そして、記載事項がある場合には、バージョン情報抽出部１２は、その記載事項の中からバージョンに関する情報を抽出する。
バージョン情報保存部１３は、バージョン情報抽出部１２により抽出されたバージョンに関する情報をファイル情報記憶部３２に記憶させる。
【００２１】
さらに、変更情報抽出部１０Ｂは、解凍されたライブラリから、解凍されたライブラリ内に含まれる各クラスファイルのパス情報、各クラスファイルのファイル名、及び各クラスファイルのタイムスタンプ情報を抽出する。すなわち、ファイル名チェック部１４は、ファイル名の中に数値データ（例えばxxx1-1-1やxxx1.1.1等）があるかを検索してこれを抽出する。
【００２２】
ファイル名バージョン保存部１５は、ファイル名チェック部１４が抽出した数値データ（ファイル名バージョン）をファイル情報記憶部３２に記憶させる。
ファイルパス情報保存部１６は、解凍情報であるファイル群からパス情報を抽出してファイル情報記憶部３２に記憶させる。
ファイルタイムスタンプ情報保存部１７は、解凍情報であるファイル群から作成日付やファイルサイズなどのタイムスタンプ情報を抽出してファイル情報記憶部３２に記憶させる。
【００２３】
そして、差異検出部１０Ｃは、変更情報抽出部１０Ｂによって抽出されたライブラリの変更に関連する情報に基づいて、アーカイブ形式のライブラリと比較対象となるライブラリとのバージョンの差異を検出する。ここで、ライブラリの変更に関連する情報には、バージョン情報抽出部１２により抽出されたバージョンに関する情報、ファイル名チェック部１４により抽出されたファイル名バージョン、及びファイルタイムスタンプ情報保存部１７により抽出されたタイムスタンプ情報を含む。
一方、先だって同様の処理により、比較対象となるライブラリのバージョンに関する情報、ファイル名バージョン、パス情報、及びタイムスタンプ情報が抽出され、これらの情報がオリジナル情報記憶部３６に格納されている。差異検出部１０Ｃは、このオリジナル情報記憶部３６内の情報と、ファイル情報記憶部３２に格納されている、バージョンに関する情報、ファイル名バージョン、パス情報、及びタイムスタンプ情報とを比較して、両ライブラリのバージョンの差異を検出する。
【００２４】
データ収集装置５０は、ネットワークに接続するためのネットワーク装置が装備されたパッケージ取得部５１と、パッケージ格納部５２とを備える。
パッケージ取得部５１は、予めサイト情報記憶部３７に登録しておいたコミュニティサイトのＵＲＬ等を保持して、ＨＴＴＰやＦＴＰ等の必要なプロトコルでネットワーク接続を行い、ライブラリのダウンロードを実施する。
パッケージ格納部５２は、ダウンロードしたライブラリから拡張子ｊａｒのファイルを抽出してオリジナル情報記憶部３６に記憶させる。
【００２５】
図２は、第１の実施形態に係るデータ処理装置１０の動作を示すフローチャートである。
このデータ処理装置１０の動作は、メモリ内に格納されたプログラムコードを、データ処理装置１０に配備されたＣＰＵが実行することによって進行する。
まずＪａｒファイル解凍部１０Ａは、“jar xvf 対象ファイル名.jar”のコマンドを実行することにより、必要なｊａｒライブラリをハードディスクやメモリ上に展開する（ステップＳ１）。続いて、マニフェスト検索部１１は、この展開によりツリー状のディレクトリ構成となったフォルダ内を、ｆｉｎｄコマンド等を使用してＭＡＮＩＦＥＳＴ．ＭＦファイルを検索し、その存在を確認する（ステップＳ２）。
【００２６】
マニフェスト検索部１１がＭＡＮＩＦＥＳＴ．ＭＦファイルの存在を確認した場合には、バージョン情報抽出部１２は、そのＭＡＮＩＦＥＳＴ．ＭＦファイルを読み込む（ステップＳ３）。そして、バージョン情報抽出部１２は、読み込まれたＭＡＮＩＦＥＳＴ．ＭＦファイルの中に記載事項があるかどうかをｇｒｅｐコマンドにより確認する。記載事項があった場合には、バージョン情報抽出部１２は、その記載事項の中からバージョンに関する情報を抽出する。バージョンに関する情報のキーワードは、Ｓｕｎ（登録商標）のＪａｖａにより指定された、例えば、以下のような語彙である。
【００２７】
“Extension-Name”、“Specification-Vendor”、“Specification-Version”、“Implementation-Vendor-Id”、“Implementation-Vendor”、“Implementation-Version”
【００２８】
すなわち、バージョン情報抽出部１２は、これらの語彙を検索語彙として規定する。なお、これらの語彙は、例えば、以下に記載されている。
【００２９】
“オプションパッケージのバージョン管理”、［online］、Sun Microsystems, Inc.、［平成２３年２月１日検索］、インターネット<http://java.sun.com/j2se/1.5.0/ja/docs/ja/guide/extensions/versioning.html>
【００３０】
バージョン情報保存部１３は、バージョンに関する情報が抽出されたか否かを判定する（ステップＳ４）。バージョン情報保存部１３は、バージョンに関する情報が抽出された場合には、処理をステップＳ５に進め、このバージョン情報をファイル情報記憶部３２に記憶させた後、ステップＳ６に進める。また、バージョン情報保存部１３は、バージョンに関する情報が抽出されない場合には、処理をステップＳ６に進める。
ステップＳ６では、ファイル名チェック部１４が、解凍されたＪａｒファイルの名前に付与されている数値データ（ファイル名バージョン）を検索する。そして、ファイル名バージョン保存部１５は、ファイルの名前にファイル名バージョンが存在しているか否かを判定する（ステップＳ７）。ファイル名バージョンが存在している場合には、ファイル名バージョン保存部１５は、処理をステップＳ８に進めて、ファイル名バージョンをファイル情報記憶部３２に記憶させた後、処理をステップＳ９に進める。ファイル名バージョンが存在していない場合には、ファイル名バージョン保存部１５は、処理をステップＳ９に進める。
【００３１】
ステップＳ９では、ファイルパス情報保存部１６が、解凍されたＪａｒファイルのフルパス名などのパス情報を抽出してファイル情報記憶部３２に記憶させる。また、ファイルタイムスタンプ情報保存部１７は、解凍されたＪａｒファイルの作成日時等のファイルの時間情報やファイルサイズなどのタイムスタンプ情報を抽出して、ファイル情報記憶部３２に記憶させる（ステップＳ１０）。
この状態において、ファイル情報記憶部３２には、今回のライブラリから抽出した変更に関連する情報、つまりバージョンに関する情報、ファイル名バージョン、パス情報、及びタイムスタンプ情報が記憶されている。また、オリジナル情報記憶部３６には、前回のライブラリ（比較対象のライブラリ）から抽出した変更に関連する情報、つまりバージョンに関する情報、ファイル名バージョン、パス情報、及びタイムスタンプ情報が既に記憶されている。
そして、差異検出部１０Ｃは、ファイル情報記憶部３２に存在する変更に関連する情報と、オリジナル情報記憶部３６に存在する変更に関連する情報とを比較し、両ライブラリのバージョンの差異を検出する。
【００３２】
以上のように、本実施形態によれば、データ処理装置１０は、Ｊａｒファイル解凍部１０Ａと、変更情報抽出部１０Ｂと、差異検出部１０Ｃとを備える。Ｊａｒファイル解凍部１０Ａは、ＪａｖａのＪａｒ形式のライブラリ（アーカイブ形式のライブラリ）を解凍する。変更情報抽出部１０Ｂは、Ｊａｒファイル解凍部１０Ａによって解凍されたライブラリに基づいて、アーカイブ形式のライブラリの変更に関連する情報を抽出する。差異検出部１０Ｃは、変更情報抽出部１０Ｂによって抽出された、変更に関連する情報に基づいて、アーカイブ形式のライブラリと比較対象となるライブラリとのバージョンの差異を検出する。
【００３３】
すなわち、データ処理装置１０では、ダウンロードしたアーカイブ形式のライブラリをＪａｒファイル解凍部１０Ａにより解凍し、クラスファイルを抽出する。この際に、バージョンの差異を検出するために必要な情報（つまり、アーカイブ形式のライブラリの変更に関連する情報）を取り出す。データ処理装置１０は、この取り出された必要な情報により、アーカイブ形式のライブラリについてバージョンや関連性の情報を確認することが可能になる。また、各々のアーカイブ形式のライブラリの同一性を確認することができるため、データ処理装置１０は、各アーカイブ形式のライブラリの不整合を防ぐことが可能になる。
【００３４】
また、変更情報抽出部１０Ｂは、解凍されたライブラリからマニフェストファイルをマニフェスト検索部１１によって検索し、検索したマニフェストファイルに記述された情報をバージョン情報抽出部１２によって抽出する。そして、ライブラリの変更に関連する情報には、マニフェストファイルに記述された情報が含まれる。すなわち、変更情報抽出部１０Ｂは、Ｊａｖａライブラリの拡張子ｊａｒのファイルの中身を検索し、ＭＡＮＩＦＥＳＴ．ＭＦファイルを検索する。このファイルがある場合はそのファイルの中身を確認し、バージョンに関する情報があるかを確認する。
このように、データ処理装置１０は、アーカイブ形式のライブラリについて、ファイル内部に含まれる情報を用いてバージョンを確認するので、確実にバージョンを確認することが可能になる。
【００３５】
また、変更情報抽出部１０Ｂは、解凍されたライブラリから、解凍されたライブラリ内に含まれる各クラスファイルのパス情報、各クラスファイルのファイル名、及び各クラスファイルのタイムスタンプ情報を抽出する。そして、ライブラリの変更に関連する情報には、パス情報、ファイル名、及びタイムスタンプ情報が含まれる。すなわち、データ処理装置１０では、ダウンロードしたアーカイブ形式のライブラリをＪａｒファイル解凍部１０Ａにより解凍し、クラスファイルを抽出する。この際に、マニフェスト検索部１１の他に、ファイル名チェック部１４やファイルパス情報保存部１６、ファイルタイムスタンプ情報保存部１７を介し、必要な情報と取り出す。
これにより、マニフェスト検索部１１によりＭＡＮＩＦＥＳＴ．ＭＦファイルの検索が失敗した際にも、与えられたライブラリのファイル名から数値データ（ファイル名バージョン）を検索し、これによってバージョン表記を確認することができる。さらに、このファイル名バージョンが存在しなくても、各クラスファイルのパス情報、及び各クラスファイルのタイムスタンプ情報によって、ライブラリのバージョンを確認することができる。このように、アーカイブ形式のライブラリについて、バージョンや関連性の情報を一層確実に確認することが可能になる。
【００３６】
ライブラリのバージョンの確認について、ファイル名に付与されているバージョン情報によってバージョンの確認をするだけでは、ファイル名を変更されたらバージョンの確認ができなくなる。この点を考慮して本実施形態では、ファイル内部に含まれる情報、つまりマニフェストファイル内のバージョンに関する情報を使用するので、バージョンの差異を確実に検出することができる。さらに、ファイル内に情報が含まれていたとしても必ずしも正しい情報とは限らないため、パス情報やタイムスタンプ情報を用いることにより、バージョンの差異をより確実に検出することができる。このように、バージョンの新旧や差異を確実に確認することができるので、ライブラリを実運用環境で使用する前に問題点を把握することが可能になる。
【００３７】
［第２の実施形態］
第２の実施形態では、クラスファイルの同一性を調べて、その内容差分によりバージョン差異を確認するデータ処理装置について説明する。
図３は、本発明の第２の実施形態に係る検証サーバ１２０の構成を示すブロック図である。
この図において、検証サーバ１２０内のデータ処理装置１０は、第１の実施形態と同じ構成のＪａｒファイル解凍部１０Ａと、第１の実施形態と異なる構成の変更情報抽出部１０Ｂと、第１の実施形態と異なる構成の差異検出部１０Ｄとを備えている。
【００３８】
変更情報抽出部１０Ｂは、Ｊａｒファイル解凍部１０Ａにより解凍されたライブラリ内の各クラスファイルに対して逆アセンブルを行って各クラスファイルをテキスト化したバイトコードを抽出する。そのために、変更情報抽出部１０Ｂは、Ｊａｒファイルパス一覧作成部１８と、Ｊａｖａｐ逆アセンブル部１９とを備えている。また、記憶装置３０のリポジトリ３０Ａ内には、クラスファイル記憶部３１と、ファイル一覧記憶部３３と、逆アセンブル情報記憶部３４と、Ｄｉｆｆ比較情報記憶部３５と、オリジナル情報記憶部３６と、サイト情報記憶部３７とが設けられている。
Ｊａｒファイルパス一覧作成部１８は、Ｊａｒファイル解凍部１０Ａで解凍しクラスファイル記憶部３１に記憶したライブラリ内の全クラスファイルにおけるフルパス名やクラスファイル名の一覧を作成して、ファイル一覧記憶部３３に記憶させる。作成した一覧を以下、ファイルパス一覧と呼ぶ。
【００３９】
Ｊａｖａｐ逆アセンブル部１９は、ファイルパス一覧を参照して、クラスファイル記憶部３１に記憶した全てのクラスファイルに対して逆アセンブルを行ってクラスファイルのバイトコードをテキスト形式化し、これを逆アセンブル情報記憶部３４に記憶させる。
差異検出部１０Ｄは、Ｄｉｆｆ比較部２０と、Ｄｉｆｆ比較結果保存部２１とを備えている。Ｄｉｆｆ比較部２０は、Ｊａｖａｐ逆アセンブル部１９でテキスト形式化したバイトコードと、同様に事前に比較対象のライブラリをＪａｖａｐ逆アセンブル部１９でテキスト形式化したバイトコードとを、Ｄｉｆｆコマンドで比較し、その差分情報の有無を調べる。比較対象のライブラリをテキスト形式化したバイトコードは、オリジナル情報記憶部３６に記憶してある。Ｄｉｆｆ比較結果保存部２１は、Ｄｉｆｆ比較部２０で行った結果の差分情報をＤｉｆｆ比較情報記憶部３５に記憶させる。
【００４０】
図４は、第２の実施形態に係るデータ処理装置１０の動作を示すフローチャートである。  このデータ処理装置１０の動作は、メモリ内に格納されたプログラムコードを、データ処理装置１０に配備されたＣＰＵが実行することによって進行する。
まずＪａｒファイル解凍部１０Ａは、第１の実施形態と同様に、必要なｊａｒライブラリを解凍しクラスファイル記憶部３１に記憶させる（ステップＳ２１）。
続いて、Ｊａｒファイルパス一覧作成部１８は、クラスファイル記憶部３１に記憶したライブラリ内の全クラスファイルについてのファイルパス一覧を作成して、ファイル一覧記憶部３３に記憶させる（ステップＳ２２）。このファイルパス一覧は、次のステップＳ２３でクラスファイルを使用する際に抽出できるように、パス情報と各クラスファイルとを関連付けてある。
【００４１】
その後、Ｊａｖａｐ逆アセンブル部１９は、ファイルパス一覧を参照して、クラスファイル記憶部３１に記憶された全てのクラスファイルに対し、コマンド「ｊａｖａｐ」を実施して逆アセンブルを行いクラスファイルのバイトコードをテキスト形式化する（ステップＳ２３）。つまり、リダイレクトして、例えば、“javap xxx.clsss > xxx.out”のようなテキストファイルとして、逆アセンブル情報記憶部３４に記憶させる。
【００４２】
続いて、Ｊａｖａｐ逆アセンブル部１９は、ファイルパス一覧を参照して、まだ逆アセンブルを実施していないクラスファイルがあるか否かを判定する（ステップＳ２４）。Ｊａｖａｐ逆アセンブル部１９は、全てのクラスファイルに対して逆アセンブルを実施したならば、処理をステップＳ２５に進める。
ステップＳ２５では、Ｄｉｆｆ比較部２０は、例えば“javap xxx.clsss > xxx.out”のようにテキスト形式化したファイルと、比較対象のライブラリのバイトコードをテキスト形式化したファイルとをＤｉｆｆコマンドで比較し、その差分情報の有無を調べる。そして、Ｄｉｆｆ比較結果保存部２１は、Ｄｉｆｆ比較部２０で行った結果の差分情報をＤｉｆｆ比較情報記憶部３５に記憶させる（ステップＳ２６）。すなわち、差分がない場合は両ライブラリが同一であると判断し、差分がある場合は同一でないと判断して差分情報をログファイルとしてＤｉｆｆ比較情報記憶部３５に記憶させる。なお、差分情報は、表示部の画面に出力してもよい。
【００４３】
以上のように、本実施形態によれば、データ処理装置１０における変更情報抽出部１０Ｂは、Ｊａｖａｐ逆アセンブル部１９を用いて、解凍されたライブラリ内の各クラスファイルに対して逆アセンブルを行って各クラスファイルをテキスト化したバイトコードを抽出する。これにより、比較対象のライブラリとコードレベルでの比較を行うことができるので、ライブラリの改ざんや改変を検出することが可能になる。すなわち、オープンソース製品でソースコードが公開されていて誰もが変更可能な状態にあるライブラリの同一性を確実に確認することが可能になる。したがって、各アーカイブ形式のライブラリの不整合を使用する前に把握することができ、各アーカイブ形式のライブラリの不整合を未然に防ぐことが可能になる。
【００４４】
［第３の実施形態］
第３の実施形態では、上記第１と第２の実施形態とを組み合わせた構成について説明する。
図５は、本発明の第３の実施形態に係る検証サーバ１２０の構成を示すブロック図である。
この図において、データ処理装置１０は、Ｊａｒファイル解凍部１０Ａと、変更情報抽出部１０Ｂと、差異検出部１０Ｃ，１０Ｄとを備えている。変更情報抽出部１０Ｂは、マニフェスト検索部１１、バージョン情報抽出部１２、バージョン情報保存部１３、ファイル名チェック部１４、及びファイル名バージョン保存部１５を備えている。さらに、変更情報抽出部１０Ｂは、ファイルパス情報保存部１６、ファイルタイムスタンプ情報保存部１７、Ｊａｒファイルパス一覧作成部１８、及びＪａｖａｐ逆アセンブル部１９を備えている。
また、記憶装置３０のリポジトリ３０Ａ内には、クラスファイル記憶部３１、ファイル情報記憶部３２、ファイル一覧記憶部３３、逆アセンブル情報記憶部３４、Ｄｉｆｆ比較情報記憶部３５、オリジナル情報記憶部３６、及びサイト情報記憶部３７が設けられている。
【００４５】
これらの各構成要素は、上記第１及び第２の実施形態で説明したものと同様である。また、本実施形態のデータ処理装置１０の動作は、図２のステップＳ１からステップＳ１１までの処理を実行した後、図４のステップＳ２２からステップＳ２６までの処理を実行することになる。その際、ステップＳ２２において、Ｊａｒファイルパス一覧作成部１８がファイルパス一覧を作成するときには、ファイル情報記憶部３２に記憶してあるパス情報を用いる。
【００４６】
本実施形態によれば、上記第１及び第２の実施形態と同等の作用効果を奏することができる。さらに、ライブラリの変更に関連する情報として、マニフェストファイル内のバージョンに関する情報、ファイル名バージョン、及びパス情報や日付情報に加えて、逆アセンブルした結果を基に、バージョンの差異を検出することができる。これにより、上記第１及び第２の実施形態よりも、より確実にライブラリのバージョンの差異を確認することができる。
【００４７】
［第４の実施形態］
第４の実施形態では、上述した第３の実施形態で説明した構成の検証サーバ１２０のデータ収集処理について説明する。
図６は、本発明の第４の実施形態に係るデータ収集システムの概略構成を示すブロック図である。
この図において、第３の実施形態で説明した構成の検証サーバ１２０で構成するデータ収集システム８０は、ネットワーク上のアーカイブ形式のライブラリを提供する提供サイトをクローリングして最新のアーカイブ形式のライブラリを収集するデータ収集装置５０を有する。さらに、データ収集システム８０は、上述した構成のデータ処理装置１０と、ライブラリを記憶する記憶装置３０とを備える。
データ処理装置１０は、データ収集装置５０によって収集したアーカイブ形式のライブラリである収集ライブラリと、記憶装置３０に既に記憶されている比較対象となるライブラリとのバージョンの差異を差異検出部１０Ｃ，１０Ｄによって検出する。そして、データ処理装置１０は、検出したバージョンの差異と収集ライブラリとを関連付けて、記憶装置３０のオリジナル情報記憶部３６に記憶させる。
【００４８】
具体的には、データ収集システム８０は、インターネット９０のコミュニティサイト９１をクローリングして、最新のライブラリを自動でダウンロードして取得する。すなわち、データ収集装置５０は、コミュニティサイト９１のファイル更新を考慮して自動で設定した期間でクローリングを行う機能を有し、最新のライブラリが提供された場合はパッケージ取得部５１を使用してダウンロードする。そして、このように順次ダウンロードしたライブラリは、パッケージ格納部５２がリポジトリ３０Ａ内のオリジナル情報記憶部３６に格納させる。
【００４９】
こうしてオリジナル情報記憶部３６に記憶されたダウンロードのライブラリは、Ｊａｒファイル解凍部１０Ａにより内部のＪａｒファイルがクラスファイルまで解凍される。そして、クラスファイルにおけるマニフェストファイル内のバージョンに関する情報や、ファイル名バージョン、パス情報、タイムスタンプ情報が、変更情報抽出部１０Ｂにより抽出される。これらの、ライブラリの変更に関連する情報は、一旦リポジトリ３０Ａ内のファイル情報記憶部３２に保持された後、差異検出部１０Ｃによる後の差異検出に用いるためオリジナル情報記憶部３６に記憶される。また、変更情報抽出部１０Ｂ内のＪａｖａｐ逆アセンブル部１９により各クラスファイルが逆アセンブルされ、各クラスファイルをテキスト化したバイトコードが抽出される。このバイトコードがリポジトリ３０Ａ内の逆アセンブル情報記憶部３４に一旦保持された後、差異検出部１０Ｄによる後の差異検出に用いるためオリジナル情報記憶部３６に記憶される。
【００５０】
なお、ダウンロードしたライブラリを記憶装置３０に記憶させるに際し、ライブラリがｊａｒ形式以外のライブラリ（例えばｚｉｐ、ｔａｒ．ｇｚ）である場合は、データ処理装置１０でその解凍を行い、内部のｊａｒファイルを取得する。これらはＬｉｎｕｘ（登録商標）での標準的なコマンドのｕｎｚｉｐやｔａｒを使用する。
本実施形態のデータ収集システム８０によれば、コミュニティサイト９１をクローリングして日々確認することで、最新のバージョン情報や差分情報をデータ収集システム８０内に追加することができる。
【００５１】
［第５の実施形態］
第５の実施形態では、イントラネット内の業務サーバから取得したライブラリと、インターネット外から取得したライブラリとの差分を調べるデータ処理システムについて説明する。
【００５２】
図７は、本発明の第５の実施形態に係るデータ処理システム１００の構成を示す模式図である。
この図において、データ処理システム１００は、イントラネット１１０内の業務サーバ１３０にエージェントを配置する。そして、データ処理システム１００は、検証サーバ１２０が、業務サーバ１３０内のＪａｒのライブラリを取得して、そのライブラリとインターネットから取得したライブラリとの差分を調べる。
すなわち、イントラネット１１０内での検証サーバ１２０において上述した各実施形態で説明した処理を実施する。具体的には、イントラネット１１０内の業務サーバ１３０に検証サーバ１２０へ拡張子ｊａｒのパッケージを送るための機能を持たせる。この機能は、検証サーバ１２０に対して作業を行うプログラム（エージェント）を業務サーバ１３０に搭載して実現する。
【００５３】
このような機能を業務サーバ１３０に持たせることにより、データ処理システム１００では、次のようなことを実現することができる。すなわち、検証サーバ１２０が、まず業務サーバ１３０に存在するライブラリと、インターネット外のコミュニティサイト等でダウンロードしたライブラリとを比較する。その後、検証サーバ１２０が、ダウンロードしたライブラリを業務サーバ１３０へ配布する。これにより、業務サーバ１３０でのライブラリの不整合問題を未然に防ぐことが可能となる。
【００５４】
［第６の実施形態］
第６の実施形態では、イントラネット内の業務サーバから取得したライブラリと、インターネットから取得したライブラリとの差分を調べるデータ処理システムについて説明する。
【００５５】
図８は、本発明の第６の実施形態に係るデータ処理システム１００の構成を示す模式図である。
この図において、データ処理システム１００は、データ処理装置１０及びデータ収集装置５０を有する検証サーバ１２０と、業務サーバ１３０とを備えている。検証サーバ１２０は、インターネット２００上のアーカイブ形式のライブラリを取得する。業務サーバ１３０は、イントラネット１１０内に配置され、イントラネット１１０を介して検証サーバ１２０と接続される。検証サーバ１２０は、データ処理装置１０によって、業務サーバ１３０から取得したアーカイブ形式のライブラリと、インターネット２００上のアーカイブ形式のライブラリとのバージョンの差異を検出する。
【００５６】
このデータ処理システム１００において、データ収集装置５０のパッケージ取得部５１は、インターネット２００を通じてコミュニティサイト２１０からＨＴＴＰやＦＴＰを使用して必要なライブラリを定期的にクローリングしてダウンロードする。データ処理装置１０が、このダウンロードしたライブラリをチェックし、第５の実施形態で説明した手法を利用し、業務サーバ１３０へ最新のライブラリを送り込むことができる。
【００５７】
なお、本発明の実施形態によれば、データ処理方法は、ファイル解凍ステップ（Ｓ１）と、変更情報抽出ステップ（Ｓ２からＳ１０）と、差異検出ステップ（Ｓ１１）とを有する。ファイル解凍ステップは、アーカイブ形式のライブラリを解凍する。変更情報抽出ステップは、ファイル解凍ステップによって解凍されたライブラリに基づいて、アーカイブ形式のライブラリの変更に関連する情報を抽出する。差異検出ステップは、変更情報抽出ステップによって抽出された変更に関連する情報に基づいて、アーカイブ形式のライブラリと比較対象となるライブラリとのバージョンの差異を検出する。これにより、データ処理方法では、第１の実施形態と同様の作用効果を奏する。
【００５８】
また、本発明の実施形態によれば、プログラムは、ファイル解凍手順（Ｓ１）と、変更情報抽出手順（Ｓ２からＳ１０）と、差異検出手順（Ｓ１１）とをコンピュータに実行させる。ファイル解凍手順は、Ｊａｒファイル解凍部１０Ａが、アーカイブ形式のライブラリを解凍する。変更情報抽出手順は、変更情報抽出部１０Ｂが、ファイル解凍手順によって解凍されたライブラリに基づいて、アーカイブ形式のライブラリの変更に関連する情報を抽出する。差異検出手順は、差異検出部１０Ｃ，１０Ｄが、変更情報抽出手順によって抽出された変更に関連する情報に基づいて、アーカイブ形式のライブラリと比較対象となるライブラリとのバージョンの差異を検出する。これにより、第１の実施形態と同様の作用効果を奏する。
【００５９】
なお、本発明は、上記の各実施形態に限定されるものではなく、本発明の趣旨を逸脱しない範囲で変更可能である。
【００６０】
上述のデータ処理装置１０は内部に、コンピュータシステムを有している。そして、上述したデータ処理装置１０の処理過程は、プログラムの形式でコンピュータ読み取り可能な記録媒体に記憶されており、このプログラムをコンピュータが読み出して実行することによって、上記処理が行われる。ここでコンピュータ読み取り可能な記録媒体とは、磁気ディスク、光磁気ディスク、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ、半導体メモリ等をいう。また、このコンピュータプログラムを通信回線によってコンピュータに配信し、この配信を受けたコンピュータが当該プログラムを実行するようにしてもよい。
【符号の説明】
【００６１】
１０  データ処理装置
１０Ａ  Ｊａｒファイル解凍部
１０Ｂ  変更情報抽出部
１０Ｃ、１０Ｄ  差異検出部
１１  マニフェスト検索部
１２  バージョン情報抽出部
１３  バージョン情報保存部
１４  ファイル名チェック部
１５  ファイル名バージョン保存部
１６  ファイルパス情報保存部
１７  ファイルタイムスタンプ情報保存部
１８  Ｊａｒファイルパス一覧作成部
１９  Ｊａｖａｐ逆アセンブル部
２０  Ｄｉｆｆ比較部
２１  Ｄｉｆｆ比較結果保存部
３０  記憶装置
３０Ａ  リポジトリ
３１  クラスファイル記憶部
３２  ファイル情報記憶部
３３  ファイル一覧記憶部
３４  逆アセンブル情報記憶部
３５  Ｄｉｆｆ比較情報記憶部
３６  オリジナル情報記憶部
３７  サイト情報記憶部
５０  データ収集装置
５１  パッケージ取得部
５２  パッケージ格納部
８０  データ収集システム
９０、２００  インターネット
９１、２１０  コミュニティサイト
１００  データ処理システム
１１０  イントラネット
１２０  検証サーバ
１３０  業務サーバ
【図１】
2012164110.tif 000003
【図２】
2012164110.tif 000004
【図３】
2012164110.tif 000005
【図４】
2012164110.tif 000006
【図５】
2012164110.tif 000007
【図６】
2012164110.tif 000008
【図７】
2012164110.tif 000009
【図８】
2012164110.tif 000010