(57)【要約】【課題】代替が可能な類似するソフトウェアライブラリを抽出する。【解決手段】アプリケーションのソースコードに対して行われたソフトウェアライブラリの追加または削除のコミットの履歴を抽出する履歴抽出部と、前記コミットの履歴からソースコードに追加または削除されたソフトウェアライブラリの情報を抽出する変更抽出部と、前記追加または削除されたソフトウェアライブラリの情報に基づき、類似するソフトウェアライブラリの情報を抽出する類似関係抽出部と、を備える。【選択図】図１
2018097800.tif 000002
【特許請求の範囲】
【請求項１】
アプリケーションのソースコードに対して行われたソフトウェアライブラリの追加または削除のコミットの履歴を抽出する履歴抽出部と、
前記コミットの履歴からソースコードに追加または削除されたソフトウェアライブラリの情報を抽出する変更抽出部と、
前記追加または削除されたソフトウェアライブラリの情報に基づき、類似するソフトウェアライブラリの情報を抽出する類似関係抽出部と、
を備えたことを特徴とする情報処理装置。
【請求項２】
前記変更抽出部は、前記コミットの履歴に含まれる各コミットに着目し、該コミットの前後のソースコードツリーに含まれるソフトウェアライブラリの集合から差集合を得ることで、追加されたソフトウェアライブラリと削除されたソフトウェアライブラリとを特定する、
ことを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記類似関係抽出部は、所定の全ソフトウェアライブラリの集合からソフトウェアライブラリの各組み合わせに着目し、該組み合わせのソフトウェアライブラリのそれぞれが所定の回数以上の追加または削除の履歴を有し、かつ、追加または削除が同時に行われている頻度が所定の値以上の場合に、類似すると判定する、
ことを特徴とする請求項１または２に記載の情報処理装置。
【請求項４】
前記類似関係抽出部は、所定の全ソフトウェアライブラリの集合からソフトウェアライブラリの各組み合わせに着目し、該組み合わせのソフトウェアライブラリのそれぞれが所定の回数以上の追加または削除の履歴を有し、かつ、追加または削除が１回のコミットまたは複数回に跨るコミットにより行われている頻度が所定の値以上の場合に、類似すると判定する、
ことを特徴とする請求項１または２に記載の情報処理装置。
【請求項５】
アプリケーションのソースコードに対して行われたソフトウェアライブラリの追加または削除のコミットの履歴を抽出し、
前記コミットの履歴からソースコードに追加または削除されたソフトウェアライブラリの情報を抽出し、
前記追加または削除されたソフトウェアライブラリの情報に基づき、類似するソフトウェアライブラリの情報を抽出する、
処理をコンピュータが実行することを特徴とする情報処理方法。
【請求項６】
アプリケーションのソースコードに対して行われたソフトウェアライブラリの追加または削除のコミットの履歴を抽出し、
前記コミットの履歴からソースコードに追加または削除されたソフトウェアライブラリの情報を抽出し、
前記追加または削除されたソフトウェアライブラリの情報に基づき、類似するソフトウェアライブラリの情報を抽出する、
処理をコンピュータに実行させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、情報処理方法およびプログラムに関する。
【背景技術】
【０００２】
昨今ではGitHub（バージョン管理システムの一種であるGitの利用のためのハブであり、プロジェクトの改訂履歴を管理し保存する機能を有するシステム）等のソースコードホスティングサービスにより、多数のソフトウェアが公開され、利用されるようになってきている。
【０００３】
また、アプリケーションの開発にあたっては、スキルや開発期間の関係から、所望の機能を提供するソフトウェアライブラリの利用が不可欠なものとなってきており、上述したソースコードホスティングサービス等が利用される場合も多い。
【０００４】
ところで、ソフトウェアライブラリの利用により開発されたアプリケーションの場合、その中で利用されているソフトウェアライブラリについてのサポート（提供者によるアップデートや支援等）が終了してしまったり、性能が満足できるものでない場合がある。このような場合、代替となる類似するソフトウェアライブラリが必要となる。
【０００５】
現在利用されているソフトウェアライブラリの代替の探索には、従来、人手に頼ったシステムが用いられていた。例えば alternativeToというシステムでは、人手によって類似するソフトウェアライブラリやサービスが登録されており、代替品の探索が可能となっている（alternativeTo - Crowdsourced software recommendations、http://alternativeto.net/）。
【０００６】
一方、ソフトウェア製品の更新履歴等を管理する技術が開示されている（特許文献１〜３等を参照）。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２０１０−３３３７３号公報
【特許文献２】特開２００７−２７９８８３号公報
【特許文献３】特開平８−３２０７８２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
上述したように、従来、ソフトウェアライブラリの代替の探索には、人手に頼ったシステムが用いられていたが、世の中には多数の類似したソフトウェアライブラリが存在し、人手に頼っていては類似のソフトウェアライブラリを網羅することは事実上不可能である。そのため、実際には適切なソフトウェアライブラリが存在していても、代替用として発見されない場合があった。
【０００９】
そこで、一側面では、代替が可能な類似するソフトウェアライブラリを抽出することを目的とする。
【課題を解決するための手段】
【００１０】
一つの形態では、アプリケーションのソースコードに対して行われたソフトウェアライブラリの追加または削除のコミットの履歴を抽出する履歴抽出部と、前記コミットの履歴からソースコードに追加または削除されたソフトウェアライブラリの情報を抽出する変更抽出部と、前記追加または削除されたソフトウェアライブラリの情報に基づき、類似するソフトウェアライブラリの情報を抽出する類似関係抽出部と、を備える。
【発明の効果】
【００１１】
代替が可能な類似するソフトウェアライブラリを抽出することができる。
【図面の簡単な説明】
【００１２】
【図１】一実施形態にかかるシステムの構成例を示す図である。
【図２】ソースコードリポジトリのデータ構造例を示す図である。
【図３】依存変更データベースのデータ構造例を示す図である。
【図４】アプリケーションサーバのハードウェア構成例を示す図である。
【図５】実施形態の処理例を示すフローチャートである。
【図６】依存変更抽出の処理例を示すフローチャートである。
【図７】依存抽出の例を示す図である。
【図８】類似関係抽出の処理例を示すフローチャートである。
【発明を実施するための形態】
【００１３】
以下、本発明の好適な実施形態につき説明する。
【００１４】
＜構成＞
図１は一実施形態にかかるシステムの構成例を示す図である。図１において、インターネット等のネットワークＮには、リポジトリサーバ１とアプリケーションサーバ３と端末５とが接続可能となっている。なお、ユーザＵがアプリケーションサーバ３に対して直接に操作を行う場合には、端末５は不要である。
【００１５】
リポジトリサーバ１は、ソースコードリポジトリ２１を保持するリポジトリデータベース２と接続され、各種のアプリケーションのソースコードについての情報を管理し、外部からの要求に応じて情報を提供する機能を有している。ソースコードリポジトリ２１は、アプリケーションのソースコードの履歴を保存しており、Gitや Subversion等の実装が存在する。ソースコードリポジトリ２１の構造は図２に示すようになっており、アプリケーション毎に今までのコミット（完了した変更処理）がすべて格納されている。各コミットにはそのコミットに関してのコメント、日時等を含むメタデータや、そのコミット時点におけるソースコードツリー（ソースコード自身やソースコードで利用されるソフトウェアライブラリ等を示す情報）を含んでいる。コミットはそのコミットの一つ前のコミットへの参照を持っており、その二つのコミットのソースコードツリーを比較することで、ソースコードがどのように変更されたか知ることができる。
【００１６】
図１に戻り、アプリケーションサーバ３は、代替が可能な類似するソフトウェアライブラリを抽出する機能を有するものであり、履歴抽出部３１と依存変更抽出部３２と類似関係抽出部３３とを備えている。また、アプリケーションサーバ３は、依存変更データベース４１を保持するアプリケーションデータベース４と接続されている。依存変更データベース４１は、コミットによりソースコードに追加または削除されたソフトウェアライブラリの情報を管理するデータベース（テーブル）である。
【００１７】
図３は依存変更データベース４１の例を示しており、「ＩＤ」「ソフトウェア」「日時」「削除」「追加」の項目を有している。「ＩＤ」は、依存変更データベース４１内のレコードを識別する情報である。「ソフトウェア」は、コミットの対象となったアプリケーションのソースコードを識別する情報である。「日時」は、コミットが行われた日時の情報である。「削除」は、コミットにより削除されたソフトウェアライブラリを示す情報である。「追加」は、コミットにより追加されたソフトウェアライブラリを示す情報である。
【００１８】
図示の例では、ＩＤ「1」のソフトウェア「software-1」について日時「2016-08-18 09:00」に、ソフトウェアライブラリ「libA」が削除されると同時に、ソフトウェアライブラリ「libB」が追加されたことを示している。ＩＤ「2」のソフトウェア「software-2」については、日時「2016-08-19 13:00」に、ソフトウェアライブラリの削除はなく、ソフトウェアライブラリ「libA」が追加されたことを示している。ＩＤ「3」のソフトウェア「software-2」については、日時「2016-08-19 14:00」に、ソフトウェアライブラリ「libB」が削除され、ソフトウェアライブラリの追加はないことを示している。ＩＤ「4」のソフトウェア「software-2」については、日時「2016-08-19 15:00」に、ソフトウェアライブラリの削除はなく、ソフトウェアライブラリ「libC」と「libD」が追加されたことを示している。ＩＤ「5」のソフトウェア「software-3」については、日時「2016-08-20 17:00」に、ソフトウェアライブラリ「libB」が削除されると同時に、ソフトウェアライブラリ「libA」が追加されたことを示している。
【００１９】
図１に戻り、履歴抽出部３１は、リポジトリサーバ１に対して要求を行うことで、リポジトリサーバ１からアプリケーションのソースコードに対して行われたソフトウェアライブラリの追加または削除のコミットの履歴を抽出（取得）する機能を有している。履歴抽出部３１は、様々な実装のソースコードリポジトリから統一的に情報を抽出する。
【００２０】
依存変更抽出部３２は、履歴抽出部３１により取得されたコミットの履歴からソースコードに追加または削除されたソフトウェアライブラリの情報を抽出する機能を有している。多くのパッケージマネージャは、package.jsonやGemfileなどの事前に定められた固定のファイル名を使っているため、情報の抽出が可能である。処理の詳細については後述する。
【００２１】
類似関係抽出部３３は、依存変更抽出部３２により抽出され依存変更データベース４１に格納された、いずれかのアプリケーションに対して追加または削除されたソフトウェアライブラリの情報に基づき、類似するソフトウェアライブラリの情報を抽出する機能を有している。すなわち、依存変更データベース４１には多数の依存変更データが格納されており、そのうち本当に類似関係のあるライブラリの組み合わせを抽出する。処理の詳細については後述する。また、依存変更抽出部３２は、代替可能な類似するソフトウェアライブラリの情報を外部に提供する機能も有している。
【００２２】
端末５は、代替用のソフトウェアライブラリを探すユーザＵにより操作される情報処理装置であり、アプリケーションサーバ３に対してソフトウェアライブラリの代替情報を要求し、代替情報の応答を受け取った場合にユーザＵに対して表示等の出力を行う機能を有している。なお、前述したように、ユーザＵがアプリケーションサーバ３に対して直接に操作を行う場合には、端末５は不要である。
【００２３】
図４はアプリケーションサーバ３のハードウェア構成例を示す図であり、一般的な情報処理装置（コンピュータ）の構成を有している。なお、リポジトリサーバ１および端末５のハードウェア構成についても、図４と同様である。
【００２４】
図４において、アプリケーションサーバ３は、バス307を介して相互に接続されたＣＰＵ（Central Processing Unit）301、ＲＯＭ（Read Only Memory）302、ＲＡＭ（Random Access Memory）303、ＨＤＤ（Hard Disk Drive）／ＳＳＤ（Solid State Drive）304を備えている。また、アプリケーションサーバ３は、接続Ｉ／Ｆ（Interface）305、通信Ｉ／Ｆ306を備えている。
【００２５】
ＣＰＵ301は、ＲＡＭ303をワークエリアとしてＲＯＭ302またはＨＤＤ／ＳＳＤ304等に格納されたプログラムを実行することで、アプリケーションサーバ３の動作を統括的に制御する。接続Ｉ／Ｆ305は、アプリケーションサーバ３に接続される機器とのインタフェースである。通信Ｉ／Ｆ306は、ネットワークを介して他の情報処理装置と通信を行うためのインタフェースである。
【００２６】
図１で説明したアプリケーションサーバ３の機能は、ＣＰＵ301において所定のプログラムが実行されることで実現される。プログラムは、記録媒体を経由して取得されるものでもよいし、ネットワークを経由して取得されるものでもよいし、ＲＯＭ組込でもよい。
【００２７】
＜動作＞
図５は上記の実施形態の処理例を示すフローチャートである。図５において、アプリケーションサーバ３は、ユーザＵの操作する端末５からソフトウェアライブラリの代替情報の要求を受けて処理を開始する。なお、後述するステップＳ１、Ｓ２までの処理を事前（定期的等）に行っておき、ユーザＵから要求があった場合にステップＳ３以降の処理を行うようにしてもよい。
【００２８】
先ず、アプリケーションサーバ３の履歴抽出部３１は、リポジトリサーバ１に対して要求を行うことで、アプリケーションのソースコードに対して行われたソフトウェアライブラリの追加または削除のコミットの履歴を抽出（取得）する（ステップＳ１）。
【００２９】
次いで、依存変更抽出部３２は、履歴抽出部３１により取得されたコミットの履歴からソースコードに追加または削除されたソフトウェアライブラリの情報を抽出する（ステップＳ２）。処理の詳細については後述する。
【００３０】
次いで、類似関係抽出部３３は、依存変更抽出部３２により抽出された、追加または削除されたソフトウェアライブラリの情報に基づき、類似するソフトウェアライブラリの情報を抽出する（ステップＳ３）。処理の詳細については後述する。
【００３１】
そして、類似関係抽出部３３は、代替可能な類似するソフトウェアライブラリの情報を要求元の端末５に提供し（ステップＳ４）、処理を終了する。
【００３２】
図６はアプリケーションサーバ３の依存変更抽出部３２による依存変更抽出（図５のステップＳ２）の処理例を示すフローチャートである。図６において、依存変更抽出部３２は、処理を開始すると、リポジトリサーバ１に要求を行ってリポジトリ一覧を取得する（ステップＳ２０１）。リポジトリ一覧は、複数のリポジトリが複数一覧になったものであり、１つのリポジトリは１つのアプリケーションに対応する。
【００３３】
次いで、依存変更抽出部３２は、リポジトリ一覧から１つのリポジトリに着目し（ステップＳ２０２）、そのリポジトリ内のコミット一覧を取得する（ステップＳ２０３）。コミット一覧は、着目しているリポジトリ内のコミットが複数一覧になったものである。
【００３４】
次いで、依存変更抽出部３２は、コミット一覧から１つのコミットに着目し（ステップＳ２０４）、着目しているコミットと参照による１つ前のコミットから新旧ツリーを取り出す（ステップＳ２０５）。新旧ツリーは、コミットの前のソースコードツリーである旧ツリーと、コミットの後のソースコードツリーである新ツリーとを含む。
【００３５】
次いで、依存変更抽出部３２は、旧ツリーから依存（追加されているソフトウェアライブラリ）を抽出するとともに（ステップＳ２０６）、新ツリーから依存を抽出する（ステップＳ２０７）。
【００３６】
次いで、依存変更抽出部３２は、旧ツリーから抽出されたソフトウェアライブラリの集合である旧依存集合と、新ツリーから抽出されたソフトウェアライブラリの集合である新依存集合との差集合（追加された依存）を抽出する（ステップＳ２０８）。すなわち、新依存集合から旧依存集合を引くことで、差集合（追加された依存）が得られる。
【００３７】
また、依存変更抽出部３２は、新ツリーから抽出されたソフトウェアライブラリの集合である新依存集合と、旧ツリーから抽出されたソフトウェアライブラリの集合である旧依存集合との差集合（削除された依存）を抽出する（ステップＳ２０９）。すなわち、旧依存集合から新依存集合を引くことで、差集合（削除された依存）が得られる。
【００３８】
図７は依存抽出の例を示す図であり、旧依存集合がソフトウェアライブラリ「libA」「libC」であり、新依存集合がソフトウェアライブラリ「libB」「libC」であるとする。この場合、新依存集合から旧依存集合を引いた差集合（追加された依存）はソフトウェアライブラリ「libB」となり、旧依存集合から新依存集合を引いた差集合（削除された依存）はソフトウェアライブラリ「libA」となる。
【００３９】
図６に戻り、次いで、依存変更抽出部３２は、追加・削除された依存をアプリケーションデータベース４の依存変更データベース４１に追加する（ステップＳ２１０）。図７に示した例の場合、図３におけるＩＤ「1」のように、削除が「libA」、追加が「libB」として追加される。
【００４０】
図６に戻り、次いで、依存変更抽出部３２は、着目しているコミットがコミット一覧の最後でない場合（ステップＳ２１１のＮｏ）は、次の１つのコミットの着目（ステップＳ２０４）に戻る。
【００４１】
また、依存変更抽出部３２は、着目しているコミットがコミット一覧の最後である場合（ステップＳ２１１のＹｅｓ）で、着目しているリポジトリがリポジトリ一覧の最後でない場合（ステップＳ２１２のＮｏ）は次の１つのリポジトリの着目（ステップＳ２０２）に戻る。着目しているリポジトリがリポジトリ一覧の最後である場合（ステップＳ２１２のＹｅｓ）、依存変更抽出部３２は処理を終了する。
【００４２】
図８はアプリケーションサーバ３の類似関係抽出部３３による類似関係抽出（図５のステップＳ３）の処理例を示すフローチャートである。図８において、類似関係抽出部３３は、処理を開始すると、判断の対象となる全てのソフトウェアライブラリを含むライブラリ集合から１つのソフトウェアライブラリｉに着目する（ステップＳ３０１）。次いで、類似関係抽出部３３は、同じく、ライブラリ集合から１つのソフトウェアライブラリｊ（ソフトウェアライブラリｉとは異なるものとする）に着目する（ステップＳ３０２）。すなわち、ソフトウェアライブラリの１つの組み合わせに着目し、全ての組み合わせについて同様の判定処理を行う。
【００４３】
次いで、類似関係抽出部３３は、着目しているソフトウェアライブラリｉ、ｊについて、依存変更データベース４１を参照し、それぞれが所定の閾値以上の回数だけ依存変更データベース４１に格納されているかを判定する（ステップＳ３０３）。これは、精度の低下を防止するため、情報が少ないソフトウェアライブラリを除くためである。
【００４４】
ソフトウェアライブラリｉ、ｊのそれぞれが所定の回数閾値を超えていると判定された場合（ステップＳ３０３のtrue）、類似関係抽出部３３は、ソフトウェアライブラリｉ、ｊの共起値が所定の閾値を超えているか否か判定する（ステップＳ３０４）。ここでの共起値は、追加または削除が同時に行われている頻度を示すものであり、例えば、次の式によって計算されるものである。
【００４５】
【数１】
2018097800.tif 000003
【００４６】
ここで、count(i)はソフトウェアライブラリｉが変更（追加・削除）された回数、count(j)はソフトウェアライブラリｊが変更（追加・削除）された回数、cooccur(i,j)はソフトウェアライブラリｉ、ｊが同時に追加・削除された回数である。この式のメリットは値域が［０，１］に収まるため扱いやすいことである。もちろん他の計算式を使って共起値を求めてもよい。
【００４７】
ソフトウェアライブラリｉ、ｊの共起値が所定の閾値を超えていると判定された場合（ステップＳ３０４のtrue）、類似関係抽出部３３は、ソフトウェアライブラリｉ、ｊを代替可能な類似ライブラリとして出力する（ステップＳ３０５）。ソフトウェアライブラリｉ、ｊのそれぞれが所定の回数閾値を超えていないと判定された場合（ステップＳ３０３のfalse）または共起値が所定の閾値を超えていないと判定された場合（ステップＳ３０４のfalse）は、類似ライブラリとしての出力（ステップＳ３０５）は行わない。
【００４８】
次いで、類似関係抽出部３３は、ソフトウェアライブラリｊがライブラリ集合の最後でない場合（ステップＳ３０６のＮｏ）は次の１つのソフトウェアライブラリｊの着目（ステップＳ３０２）に戻る。
【００４９】
また、類似関係抽出部３３は、ソフトウェアライブラリｊが最後である場合（ステップＳ３０６のＹｅｓ）で、ソフトウェアライブラリｉが最後でない場合（ステップＳ３０７のＮｏ）は次の１つのソフトウェアライブラリｉの着目（ステップＳ３０１）に戻る。ソフトウェアライブラリｉがライブラリ集合の最後である場合（ステップＳ３０７のＹｅｓ）、類似関係抽出部３３は処理を終了する。
【００５０】
＜変形例＞
上述した実施形態においては、共起値の計算式におけるcooccur(i,j)はソフトウェアライブラリｉ、ｊが同時に追加・削除された回数であると説明したが、複数のコミットに跨って追加・削除された回数（複数のコミットにまたがっての共起回数）に拡張してもよい。すなわち、類似するソフトウェアライブラリを入れ替える際には、一度のコミットで入れ替えをせずに、類似ライブラリをしばらく共存させたまま利用し、あとで依存を削除することがある。例えば、図３の依存変更データベース４１の例では、２行目でソフトウェア「software-2」についてソフトウェアライブラリ「libA」を追加し３行目でソフトウェアライブラリ「libB」を削除している。これは、類似するソフトウェアライブラリである「libA」をまずは導入し、「libB」を使っているアプリケーションのソースコードを「libA」を使うように順次書き換えていき、書き換えが終わったら「libB」を依存から削除したということが考えられる。cooccur(i,j)を複数のコミットに跨って追加・削除された回数とすることで、このようなケースにも対応できるようになる。
【００５１】
＜総括＞
以上説明したように、本実施形態によれば、代替が可能な類似するソフトウェアライブラリを抽出することができる。
【００５２】
以上、好適な実施の形態により説明した。ここでは特定の具体例を示して説明したが、特許請求の範囲に定義された広範な趣旨および範囲から逸脱することなく、これら具体例に様々な修正および変更を加えることができることは明らかである。すなわち、具体例の詳細および添付の図面により限定されるものと解釈してはならない。
【００５３】
以上の説明に関し、更に以下の項を開示する。
（付記１）
アプリケーションのソースコードに対して行われたソフトウェアライブラリの追加または削除のコミットの履歴を抽出する履歴抽出部と、
前記コミットの履歴からソースコードに追加または削除されたソフトウェアライブラリの情報を抽出する変更抽出部と、
前記追加または削除されたソフトウェアライブラリの情報に基づき、類似するソフトウェアライブラリの情報を抽出する類似関係抽出部と、
を備えたことを特徴とする情報処理装置。
（付記２）
前記変更抽出部は、前記コミットの履歴に含まれる各コミットに着目し、該コミットの前後のソースコードツリーに含まれるソフトウェアライブラリの集合から差集合を得ることで、追加されたソフトウェアライブラリと削除されたソフトウェアライブラリとを特定する、
ことを特徴とする付記１に記載の情報処理装置。
（付記３）
前記類似関係抽出部は、所定の全ソフトウェアライブラリの集合からソフトウェアライブラリの各組み合わせに着目し、該組み合わせのソフトウェアライブラリのそれぞれが所定の回数以上の追加または削除の履歴を有し、かつ、追加または削除が同時に行われている頻度が所定の値以上の場合に、類似すると判定する、
ことを特徴とする付記１または２に記載の情報処理装置。
（付記４）
前記類似関係抽出部は、所定の全ソフトウェアライブラリの集合からソフトウェアライブラリの各組み合わせに着目し、該組み合わせのソフトウェアライブラリのそれぞれが所定の回数以上の追加または削除の履歴を有し、かつ、追加または削除が１回のコミットまたは複数回に跨るコミットにより行われている頻度が所定の値以上の場合に、類似すると判定する、
ことを特徴とする付記１または２に記載の情報処理装置。
（付記５）
アプリケーションのソースコードに対して行われたソフトウェアライブラリの追加または削除のコミットの履歴を抽出し、
前記コミットの履歴からソースコードに追加または削除されたソフトウェアライブラリの情報を抽出し、
前記追加または削除されたソフトウェアライブラリの情報に基づき、類似するソフトウェアライブラリの情報を抽出する、
処理をコンピュータが実行することを特徴とする情報処理方法。
（付記６）
前記追加または削除されたソフトウェアライブラリの情報を抽出する処理は、前記コミットの履歴に含まれる各コミットに着目し、該コミットの前後のソースコードツリーに含まれるソフトウェアライブラリの集合から差集合を得ることで、追加されたソフトウェアライブラリと削除されたソフトウェアライブラリとを特定する、
ことを特徴とする付記５に記載の情報処理方法。
（付記７）
前記類似するソフトウェアライブラリの情報を抽出する処理は、所定の全ソフトウェアライブラリの集合からソフトウェアライブラリの各組み合わせに着目し、該組み合わせのソフトウェアライブラリのそれぞれが所定の回数以上の追加または削除の履歴を有し、かつ、追加または削除が同時に行われている頻度が所定の値以上の場合に、類似すると判定する、
ことを特徴とする付記５または６に記載の情報処理方法。
（付記８）
前記類似するソフトウェアライブラリの情報を抽出する処理は、所定の全ソフトウェアライブラリの集合からソフトウェアライブラリの各組み合わせに着目し、該組み合わせのソフトウェアライブラリのそれぞれが所定の回数以上の追加または削除の履歴を有し、かつ、追加または削除が１回のコミットまたは複数回に跨るコミットにより行われている頻度が所定の値以上の場合に、類似すると判定する、
ことを特徴とする付記５または６に記載の情報処理方法。
（付記９）
アプリケーションのソースコードに対して行われたソフトウェアライブラリの追加または削除のコミットの履歴を抽出し、
前記コミットの履歴からソースコードに追加または削除されたソフトウェアライブラリの情報を抽出し、
前記追加または削除されたソフトウェアライブラリの情報に基づき、類似するソフトウェアライブラリの情報を抽出する、
処理をコンピュータに実行させることを特徴とするプログラム。
（付記１０）
前記追加または削除されたソフトウェアライブラリの情報を抽出する処理は、前記コミットの履歴に含まれる各コミットに着目し、該コミットの前後のソースコードツリーに含まれるソフトウェアライブラリの集合から差集合を得ることで、追加されたソフトウェアライブラリと削除されたソフトウェアライブラリとを特定する、
ことを特徴とする付記９に記載のプログラム。
（付記１１）
前記類似するソフトウェアライブラリの情報を抽出する処理は、所定の全ソフトウェアライブラリの集合からソフトウェアライブラリの各組み合わせに着目し、該組み合わせのソフトウェアライブラリのそれぞれが所定の回数以上の追加または削除の履歴を有し、かつ、追加または削除が同時に行われている頻度が所定の値以上の場合に、類似すると判定する、
ことを特徴とする付記９または１０に記載のプログラム。
（付記１２）
前記類似するソフトウェアライブラリの情報を抽出する処理は、所定の全ソフトウェアライブラリの集合からソフトウェアライブラリの各組み合わせに着目し、該組み合わせのソフトウェアライブラリのそれぞれが所定の回数以上の追加または削除の履歴を有し、かつ、追加または削除が１回のコミットまたは複数回に跨るコミットにより行われている頻度が所定の値以上の場合に、類似すると判定する、
ことを特徴とする付記９または１０に記載のプログラム。
【００５４】
履歴抽出部３１は「履歴抽出部」の一例である。依存変更抽出部３２は「変更抽出部」の一例である。類似関係抽出部３３は「類似関係抽出部」の一例である。
【符号の説明】
【００５５】
１        リポジトリサーバ
２        リポジトリデータベース
２１      ソースコードリポジトリ
３        アプリケーションサーバ
３１      履歴抽出部
３２      依存変更抽出部
３３      類似関係抽出部
４        アプリケーションデータベース
４１      依存変更データベース
５        端末
Ｎ        ネットワーク
Ｕ        ユーザ
【図１】
2018097800.tif 000004
【図２】
2018097800.tif 000005
【図３】
2018097800.tif 000006
【図４】
2018097800.tif 000007
【図５】
2018097800.tif 000008
【図６】
2018097800.tif 000009
【図７】
2018097800.tif 000010
【図８】
2018097800.tif 000011