(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-01-30
(45)【発行日】2023-02-07
(54)【発明の名称】情報処理装置およびAPI使用履歴表示プログラム
(51)【国際特許分類】
G06F 11/34 20060101AFI20230131BHJP
【FI】
G06F11/34 166
(21)【出願番号】P 2021511802
(86)(22)【出願日】2019-04-01
(86)【国際出願番号】 JP2019014458
(87)【国際公開番号】W WO2020202433
(87)【国際公開日】2020-10-08
【審査請求日】2021-07-14
(73)【特許権者】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】100092978
【氏名又は名称】真田 有
(74)【代理人】
【識別番号】100189201
【氏名又は名称】横田 功
(72)【発明者】
【氏名】大三島 仙知
【審査官】三坂 敏夫
(56)【参考文献】
【文献】特開2011-242891(JP,A)
【文献】特開2000-330821(JP,A)
【文献】特開2017-162312(JP,A)
【文献】杉本 拓,「Red Hat 3scaleのAPI管理 エンタープライズでのAPI利用例 APIの管理からわかる高度な使い方」,Software Design 2018年3月号,(株)技術評論社,2018年,第54頁-第61頁,ISSN:0916-6297
(58)【調査した分野】(Int.Cl.,DB名)
G06F 11/07
11/28-11/36
(57)【特許請求の範囲】
【請求項1】
複数のAPI(Application Programming Interface)を用いるコンピュータサービスの利用履歴データから前記APIの実行回数を抽出し、前記APIの実行回数に応じて、前記APIに対する表示形態を決定する表示形態決定部と、
前記複数のAPIのそれぞれに対応するノードを表す有向グラフにおいて、決定された前記表示形態で前記APIに対応する前記ノードを表示させる表示制御部と
を備えることを特徴とする、情報処理装置。
【請求項2】
前記表示形態決定部が、前記利用履歴データに基づき、前記複数のAPIのうち連続して実行された2つのAPIの当該実行の順序で実行された回数に応じて、前記有向グラフにおける前記2つのAPIに対応する2つのノード間を接続する有向線分の表示形態を決定し、
前記表示制御部が、前記有向グラフにおいて、決定された前記表示形態で前記有向線分を表示させる
ことを特徴とする、請求項1記載の情報処理装置。
【請求項3】
前記表示制御部が、
前記有向グラフにおいて、前記ノードを、当該ノードに対応する前記APIの品質に応じた状態で表示させる
ことを特徴とする、請求項1または2記載の情報処理装置。
【請求項4】
前記表示制御部が、
前記有向グラフにおいて、前記ノードを、当該ノードに対応する前記APIの開発コストに応じた状態で表示させる
ことを特徴とする、請求項1~3のいずれか1項に記載の情報処理装置。
【請求項5】
複数のAPI(Application Programming Interface)を用いるコンピュータサービスに接続される情報処理装置のプロセッサに、
前記コンピュータサービスの利用履歴データから前記APIの実行回数を抽出し、前記APIの実行回数に応じて、前記APIに対する表示形態を決定し、
前記複数のAPIのそれぞれに対応するノードを表す有向グラフにおいて、決定された前記表示形態で前記APIに対応する前記ノードを表示させる
処理を実行させる、API使用履歴表示プログラ
ム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、情報処理装置およびAPI使用履歴表示プログラムに関する。
【背景技術】
【0002】
近年、複数のソフトウェアコンポーネントをAPI(Application Programming Interface)を用いて連携することで構成されたコンピュータサービスが実現されている。そして、多種多様なAPIが提供されている。
【0003】
図9はAPIを用いて構成されたコンピュータシステムの構成を例示する図である。
【0004】
この
図9に示す例においては、決済システム,通信・SMS(Short Message Service)システムおよび地図システムのそれぞれとAPIを介して接続されたコンピュータシステム500を示している。
【0005】
コンピュータシステム500は、例えば、地図システム用のAPIを介して地図システムの地図機能を呼び出し、このAPIを介して地図システムが提供する地図機能を使用することができる。
【0006】
システム管理者においては、複数のAPIについて、それらの使用状況を把握したいという要求がある。
【0007】
従来においては、APIの使用履歴を個別のログデータを見て、例えば、使用回数や使用日時を管理している。
【先行技術文献】
【特許文献】
【0008】
【文献】特開2015-106268号公報
【文献】特開2017-228257号公報
【文献】特開2018-147350号公報
【発明の開示】
【発明が解決しようとする課題】
【0009】
しかしながら、このような従来のAPI管理方法では、APIがどのように用いられたかや、実際に役に立ったものであるか等を把握することができず利便性が低いという課題がある。
【0010】
1つの側面では、本発明は、APIの使用状況を容易に把握できるようにすることを目的とする。
【課題を解決するための手段】
【0011】
このため、この情報処理装置は、複数のAPIを用いるコンピュータサービスの利用履歴データから前記APIの実行回数を抽出し、前記APIの実行回数に応じて、前記APIに対する表示形態を決定する表示形態決定部と、前記複数のAPIのそれぞれに対応するノードを表す有向グラフにおいて、決定された前記表示形態で前記APIに対応する前記ノードを表示させる表示制御部とを備える。
【発明の効果】
【0012】
一実施形態によれば、APIの使用状況を容易に把握できる。
【図面の簡単な説明】
【0013】
【
図1】実施形態の一例としてのコンピュータシステムの構成を模式的に示す図である。
【
図2】実施形態の一例としてのコンピュータシステムのハードウェア構成を示す図である。
【
図3】実施形態の一例としてのコンピュータシステムのログ管理データベースによって管理されるテーブルのレコードを例示する図である。
【
図4】実施形態の一例としてのコンピュータシステムのログ解析部による解析方法を説明するための図である。
【
図5】実施形態の一例としてのコンピュータシステムのログ解析部によるAPI呼び出しパターン毎の発生回数の管理方法を例示する図である。
【
図6】実施形態の一例としてのコンピュータシステムのログ解析部によるAPI呼び出しパターン毎の発生回数の管理方法を例示する図である。
【
図7】実施形態の一例としてのコンピュータシステムにおける出力画面を例示する図である。
【
図8】実施形態の一例としてのコンピュータシステムにおける処理を説明するためのフローチャートである。
【
図9】APIを用いて構成されたコンピュータシステムの構成を例示する図である。
【発明を実施するための形態】
【0014】
以下、図面を参照して本情報処理装置およびAPI使用履歴表示プログラムに係る実施の形態を説明する。ただし、以下に示す実施形態はあくまでも例示に過ぎず、実施形態で明示しない種々の変形例や技術の適用を排除する意図はない。すなわち、本実施形態を、その趣旨を逸脱しない範囲で種々変形して実施することができる。また、各図は、図中に示す構成要素のみを備えるという趣旨ではなく、他の機能等を含むことができる。
【0015】
(A)構成
図1は実施形態の一例としてのコンピュータシステム1の構成を模式的に示す図、
図2はそのハードウェア構成を示す図である。
図2においては、主に管理装置10のハードウェア構成を詳細に示す。
【0016】
コンピュータシステム1は、
図1に示すように、管理装置10およびコンピュータサービス20を備える。
【0017】
コンピュータサービス20は、サービス利用者(エンドユーザ)に利用されるサービスであって、複数種類のアプリケーションプログラム(以下、単にアプリケーションという)を組み合わせて構成されている。以下、コンピュータサービス20を単にサービス20という場合がある。
【0018】
サービス20において、アプリケーション毎にAPIが備えられており、アプリケーションに処理(機能)を実行させるためには、このAPIを介してアプリケーションの処理を呼び出す。
図1においてはAPI_A,API_BおよびAPI_Cの3つのAPIが図示されている。
【0019】
また、アプリケーション間の連携もAPIを介して行なわれる。例えば、一のアプリケーションのAPIが他のアプリケーションのAPIを呼び出し、呼び出されたAPIが他のプログラムを実行させる。また、一のアプリケーションから他のアプリケーションへのデータ授受を行なう場合には、これらのAPIを介してデータの授受が行なわれる。
【0020】
図2に示すように、管理装置10はネットワーク18aを介して、ネットワーク網50に接続されている。このネットワーク網50には、1つ以上のサービス提供サーバ51および1つ以上のユーザ端末52が接続されている。ユーザ端末52をEU52と表す場合がある。
【0021】
サービス提供サーバ51は、サーバ機能を有する情報処理装置(コンピュータ)であり、各種機能を実現するアプリケーションと、当該アプリケーションに対応して設けられたAPIとを提供する。また、サービス提供サーバ51は、自身が提供するアプリケーション以外のアプリケーションに対応するAPIを提供してもよい。サービス提供サーバ51をSP51と表す場合がある。サービス20はサービス提供サーバ51によって提供される。複数のサービス提供サーバ51が協働してサービス20を提供してもよい。
【0022】
サービス提供サーバ51は、例えば、クラウドコンピューティングシステムにおいて、ネットワーク網50上に仮想的に備えられた仮想サーバであってもよい。
【0023】
サービス提供サーバ51においては、アプリケーションやAPIの実行に伴なって、ログの収集が行なわれ、サービス利用者によるサービス20の利用に関する利用履歴データとして記憶される。
【0024】
利用履歴データには、例えば、APIが実行された時刻の情報や、当該APIを使用したサービス利用者を特定するための識別情報(サービス利用者ID)が含まれる。これらのAPIの使用履歴を示す情報は、APIの使用履歴ログとしてサービス提供サーバ51の記憶装置(図示省略)に記憶される。
【0025】
本コンピュータシステム1においては、後述の如く、管理装置10のログ解析部102によるAPIの使用履歴ログ解析時に、APIを使用したサービス利用者を特定する必要があるため、各サービス利用者に対して一意に識別できる識別情報であるサービス利用者ID(Identification)が予め設定される。
【0026】
本コンピュータシステム1においては、例えば、サービス20の利用開始時に、図示しないログイン画面において、サービス利用者にサービス利用者IDの入力を行なわせる。これにより、サービス20の利用に際して、APIを使用したサービス利用者を特定し、後述するログ収集部101により使用履歴ログとして収集することができる。
【0027】
サービス20を構成する各APIは、当該APIを使用したサービス利用者のサービス利用者IDおよび使用時刻の情報を、使用履歴ログとして、サービス20によって管理される所定の記憶領域(図示省略)に記録する機能を備える。使用履歴ログを記録する記憶領域は、上述の如く、サービス20を提供するサービス提供サーバ51の記憶装置であってもよい。
【0028】
ユーザ端末52は、サービス利用者が使用する情報処理装置(コンピュータ)である。サービス利用者は、このユーザ端末52を用いてサービス20を利用する。
管理装置10は、サービス20において使用されているAPIを管理する。
管理装置10は、例えば、サーバ機能を備える情報処理装置(コンピュータ)である。
【0029】
図2を参照しながら、実施形態の一例としてのコンピュータシステム1の管理装置10のハードウェア構成について説明する。
【0030】
管理装置10は、例えば、プロセッサ11,メモリ12,記憶装置13,グラフィック処理装置14,入力インタフェース15,光学ドライブ装置16,機器接続インタフェース17およびネットワークインタフェース18を構成要素として有する。これらの構成要素11~18は、バス19を介して相互に通信可能に構成される。
【0031】
プロセッサ(処理部)11は、管理装置10全体を制御する。プロセッサ11は、マルチプロセッサであってもよい。プロセッサ11は、例えばCPU(Central Processing Unit),MPU(Micro Processing Unit),DSP(Digital Signal Processor),ASIC(Application Specific Integrated Circuit),PLD(Programmable Logic Device),FPGA(Field Programmable Gate Array)のいずれか一つであってもよい。また、プロセッサ11は、CPU,MPU,DSP,ASIC,PLD,FPGAのうちの2種類以上の要素の組み合わせであってもよい。
【0032】
そして、プロセッサ11がAPI使用履歴表示プログラム(図示省略)を実行することにより、
図1に例示する、ログ収集部101,ログ解析部102,グラフ作成・表示制御部103およびログ管理データベース104としての機能が実現される。ログ収集部101,ログ解析部102,グラフ作成・表示制御部103としての機能は、例えば、OS(Operating System)プログラム上で動作する機能として実装されてもよく、また、OSプログラムの機能として実装されてもよい。
【0033】
なお、管理装置10は、例えばコンピュータ読み取り可能な非一時的な記録媒体に記録されたプログラム(API使用履歴表示プログラムやOSプログラム)を実行することにより、ログ収集部101,ログ解析部102,グラフ作成・表示制御部103およびログ管理データベース104としての機能を実現する。
【0034】
管理装置10に実行させる処理内容を記述したプログラムは、様々な記録媒体に記録しておくことができる。例えば、管理装置10に実行させるプログラムを記憶装置13に格納しておくことができる。プロセッサ11は、記憶装置13内のプログラムの少なくとも一部をメモリ(RAM)12にロードし、ロードしたプログラムを実行する。
【0035】
また、管理装置10(プロセッサ11)に実行させるプログラムを、光ディスク16a,メモリ装置17a,メモリカード17c等の非一時的な可搬型記録媒体に記録しておくこともできる。可搬型記録媒体に格納されたプログラムは、例えばプロセッサ11からの制御により、記憶装置13にインストールされた後、実行可能になる。また、プロセッサ11が、可搬型記録媒体から直接プログラムを読み出して実行することもできる。
【0036】
メモリ12は、ROM(Read Only Memory)およびRAM(Random Access Memory)を含む記憶メモリである。メモリ12のRAMは管理装置10の主記憶装置として使用される。RAMには、プロセッサ11に実行させるOSプログラムや制御プログラムの少なくとも一部が一時的に格納される。また、メモリ12には、プロセッサ11による処理に必要な各種データが格納される。
【0037】
記憶装置13は、ハードディスクドライブ(Hard Disk Drive:HDD)、SSD(Solid State Drive)、ストレージクラスメモリ(Storage Class Memory:SCM)等の記憶装置であって、種々のデータを格納するものである。記憶装置13は、管理装置10の補助記憶装置として使用される。記憶装置13には、OSプログラム,制御プログラムおよび各種データが格納される。制御プログラムにはAPI使用履歴表示プログラムが含まれる。
【0038】
なお、補助記憶装置としては、SCMやフラッシュメモリ等の半導体記憶装置を使用することもできる。また、複数の記憶装置13を用いてRAID(Redundant Arrays of Inexpensive Disks)を構成してもよい。
【0039】
また、記憶装置13には、後述するログ管理データベース104を構成するデータが格納される。
【0040】
グラフィック処理装置14には、モニタ14aが接続されている。グラフィック処理装置14は、プロセッサ11からの命令に従って、画像をモニタ14aの画面に表示させる。モニタ14aとしては、CRT(Cathode Ray Tube)を用いた表示装置や液晶表示装置等が挙げられる。後述する出力画面200(
図7参照)はモニタ14aに表示(出力)される。
【0041】
入力インタフェース15には、キーボード15aおよびマウス15bが接続されている。入力インタフェース15は、キーボード15aやマウス15bから送られてくる信号をプロセッサ11に送信する。なお、マウス15bは、ポインティングデバイスの一例であり、他のポインティングデバイスを使用することもできる。他のポインティングデバイスとしては、タッチパネル,タブレット,タッチパッド,トラックボール等が挙げられる。
【0042】
光学ドライブ装置16は、レーザ光等を利用して、光ディスク16aに記録されたデータの読み取りを行なう。光ディスク16aは、光の反射によって読み取り可能にデータを記録された可搬型の非一時的な記録媒体である。光ディスク16aには、DVD(Digital Versatile Disc),DVD-RAM,CD-ROM(Compact Disc Read Only Memory),CD-R(Recordable)/RW(ReWritable)等が挙げられる。
【0043】
機器接続インタフェース17は、管理装置10に周辺機器を接続するための通信インタフェースである。例えば、機器接続インタフェース17には、メモリ装置17aやメモリリーダライタ17bを接続することができる。メモリ装置17aは、機器接続インタフェース17との通信機能を搭載した非一時的な記録媒体、例えばUSB(Universal Serial Bus)メモリである。メモリリーダライタ17bは、メモリカード17cへのデータの書き込み、またはメモリカード17cからのデータの読み出しを行なう。メモリカード17cは、カード型の非一時的な記録媒体である。
【0044】
ネットワークインタフェース18は、ネットワーク18aに接続される。ネットワークインタフェース18は、ネットワーク18aを介して、サービス20(サービス提供サーバ51)との間でデータの送受信を行なう。ネットワーク18aには他の情報処理装置や通信機器等が接続されてもよい。
【0045】
ネットワーク18aにはサービス20を提供するサービス提供サーバ51が接続され、管理装置10は、ネットワークインタフェース18およびネットワーク18aを介して、これらのサービス提供サーバ51と通信可能に接続される。
【0046】
管理装置10はサービス管理者によって操作される。サービス管理者は、後述するグラフ作成・表示制御部103に、サービス20を構成するAPIの情報を入力する。そのため、サービス管理者は、サービス20を構成する複数のAPI間の関係の他、各APIの開発コストや品質について一定の知識を持つものであることが望ましい。
【0047】
また、サービス管理者は、グラフ作成・表示制御部103において表示される結果を確認し、今後のサービスの改善を検討する。
【0048】
ログ収集部101は、サービス20を構成する各APIからそれぞれ、その使用履歴ログを収集する。ログ収集部101は、サービス提供サーバ51からAPIの使用履歴ログを収集する。APIの使用履歴ログの収集は、定期的に行なってもよく、また、随時行なってもよい。ログ収集部101は、後述するログ解析部102による解析に必要とされる情報を抽出し、ログ管理データベース104の対応するテーブルに格納する。
【0049】
また、ログ収集部101は、サービス20を構成するAPIに関する情報を、後述するグラフ作成・表示制御部103から予め取得する。
【0050】
ログ管理データベース104は、ログ収集部101が収集、抽出したデータ(使用履歴ログ)を記憶(格納)する。
【0051】
図3は実施形態の一例としてのコンピュータシステム1のログ管理データベース104によって管理されるテーブルのレコードを例示する図である。
【0052】
図3においては、ログ管理データベース104がテーブル形式でデータを管理する例を示しているが、これに限定されるものではなく、種々変形して実施することができる。
例えば、ログ管理データベース104は、API毎にテーブルを備える。
【0053】
図3に示す例において、符号P1はAPI_Aに関する使用履歴ログを、符号P2はAPI_Bに関する使用履歴ログを、符号P3はAPI_Cに関する使用履歴ログを、それぞれ示す。
【0054】
図3に例示するログ管理データベース104のテーブルは、APIを使用したサービス利用者のIDと使用した時刻とを対応付けて構成されている。
【0055】
例えば、
図3の符号P1に示すテーブルの先頭のエントリにおいては、サービス利用者IDが“001”のサービス利用者が2019/02/13の12:00にAPI_Aを使用したことを示す。
【0056】
ログ収集部101は、各APIの使用履歴ログから、サービス利用者IDと、サービス利用者がAPIを使用した時刻とを抽出し、これらの情報をログ管理データベース104の対応するAPIのテーブルに格納する。
【0057】
ログ解析部102は、ログ管理データベース104のテーブルのレコードを用いて、APIの使用状況の解析を実施する。
【0058】
[サービス利用者によるAPI使用回数の解析]
ログ解析部102は、サービス利用者がAPIを使用した回数(API使用回数)をAPIごとに解析する。
【0059】
ログ解析部102は、ログ管理データベース104のAPIごとに用意されたテーブルから、それぞれ、レコード数(全サービス利用者によるAPIの累計使用回数)を取得する。
【0060】
例えば、
図3において、符号P1~P3で示す各テーブルのレコード数はいずれも4である。ログ解析部102は、第1の解析結果として、これらのAPI_A,API_BおよびAPI_Cの各API使用回数としてそれぞれ“4”を得る。
【0061】
ログ解析部102は、APIごとのレコード数の大小、すなわちAPI使用回数に応じて、後述するグラフ作成・表示制御部103がモニタ14aに表示させる出力画面200(
図7参照)における、APIを表すノード201の大きさ(ノードサイズ)を決定する。
【0062】
ログ解析部102は、API使用回数が多いAPIほど大きいノードサイズを決定し、API使用回数が小さいAPIほど小さいノードサイズを決定する。
【0063】
ログ解析部102は、決定した各APIのノードサイズを示すノードサイズ情報をグラフ作成・表示制御部103に出力(通知)する。ログ解析部102は、ノードサイズ情報を、当該ノードサイズによって表されるAPIを特定する情報(API識別情報)とともにグラフ作成・表示制御部103に通知する。
【0064】
ログ解析部102は、複数のAPIの使用履歴ログからAPIの実行回数を抽出し、APIの実行回数に応じて、出力画面200の有向グラフにおけるAPIに対応するノード201の表示形態(ノードサイズ)を決定する表示形態決定部に相当する。
【0065】
[サービス利用者によるAPIの使用順序の解析]
また、ログ解析部102は、サービス利用者がAPIを使用した順序の解析を行なう。
APIを使用した順序は以下の処理1~3に従って行なわれる。
【0066】
(1)処理1
ログ解析部102は、ログ管理データベース104のAPIごとに用意されたテーブルに格納されたレコードを、サービス利用者毎にグループ化し、時系列順に整列する。
【0067】
図4は実施形態の一例としてのコンピュータシステム1のログ解析部102による解析方法を説明するための図である。
【0068】
この
図4においては、
図3に例示したサービス利用者によるAPIの使用履歴ログを、サービス利用者毎にグループ化し、さらに時系列順に並べてテーブル状に表している。
【0069】
なお、この
図4においては、API毎の使用履歴ログをテーブル形式で表しているが、これに限定されるものではなく、種々変形して実施することができる。
【0070】
図4に示す例において、符号P4はサービス利用者IDが“001”のサービス利用者の使用履歴ログを示す。同様に、符号P5はサービス利用者IDが“002”のサービス利用者の使用履歴ログを、符号P6はサービス利用者IDが“003”のサービス利用者の使用履歴ログを、符号P7はサービス利用者IDが“004”のサービス利用者の使用履歴ログを、それぞれ示す。
【0071】
図4に例示する使用履歴ログのテーブルは、使用したAPIと使用した時刻とを対応付けて構成されている。
【0072】
例えば、
図4の符号P4に示す、サービス利用者IDが“001”のサービス利用者に関するテーブルにおいては、API_Aが2019/02/13の12:00に使用されたことを示す。また、このテーブルにおいては、その後、API_Bが2019/02/13の12:05に使用され、API_Cが2019/02/13の12:10に使用され、さらにその後、API_Aが2019/02/13の12:15に使用されたことを示す。
【0073】
これにより、サービス利用者IDが“001”のサービス利用者が、API_A,API_B,API_C,API_Aの順でAPIを使用したことがわかる。
【0074】
また、この
図4の符号P4に示すテーブルにおいて、各エントリの使用した時刻は5分間隔で推移していることがわかる。
【0075】
ログ解析部102は、時系列に並べられた複数のエントリにおいて、先のエントリの使用した時刻から後続するエントリの使用した時刻までの経過時間が所定の閾値T(例えば、T=30分)以内の場合に、これらのエントリが一連の処理として連続して処理されたものである(連続性がある)と判断する。
【0076】
これに対して、先のエントリの使用した時刻から後続するエントリの使用した時刻までの経過時間が所定の閾値T(例えば、T=30分)よりも大きい場合には、ログ解析部102は、これらのエントリ(API)が一連の処理として連続して使用されたものでないと判断する。
【0077】
例えば、
図4の符号P5に示す、サービス利用者IDが“002”のサービス利用者に関するテーブルにおいては、サービス利用者IDが“002”のサービス利用者が、API_C,API_A,API_Bの順でAPIを使用したことがわかる。
【0078】
ここで、API_Cが2019/02/13の11:30に使用された後に、API_Aが2019/02/13の12:30に使用されている。すなわち、サービス利用者IDが“002”のサービス利用者は、API_Cを使用してから60分後にAPI_Aを使用している。この場合には、先のエントリの使用した時刻から後続するエントリの使用した時刻までの経過時間(60分)が閾値T(T=30分)よりも大きいので、ログ解析部102は、これらのAPIの使用は連続して使用されたものではない(連続性がない)と判断する。
【0079】
また、
図4の符号P6に示す、サービス利用者IDが“003”のサービス利用者に関するテーブルにおいて、API_Bの使用した時刻と、その後に行なわれたAPI_Aの使用した時刻との間には75分が経過している。従って、ログ解析部102は、これらのAPIの使用についても、連続して行なわれたものではない(連続性がない)と判断する。
【0080】
なお、閾値Tは30分に限定されるものではなく、適宜変更して設定することができる。閾値Tを設定するために、サービス管理者は、サービス利用者の平均サービス滞在時間を推定し、この推定値よりも大きな値を閾値Tとしてログ解析部102に予め入力することが望ましい。サービス利用者の平均サービス滞在時間の推定は、例えば、過去の実績値を参照する等、既知の手法で実現することができ、その説明は省略する。
【0081】
(2)処理2
次に、ログ解析部102は、上述した処理1でサービス利用者ごとにグループ化したレコード群のそれぞれについて、APIの使用順序に基づき、連続性があると認められたAPIの呼び出しパターン(実行順序のパターン)のそれぞれについて、発生回数を求める。なお、APIの使用順序はAPIの実行順序と同義であるものとする。
【0082】
ここで、APIの呼び出しパターンは、連続して使用された2つのAPIの組み合わせであって、連続して実行された2つのAPIの実行順序である。APIの呼び出しパターンは、使用されたAPIの遷移を表す。ここで、連続して使用された2つのAPIの組み合わせにおいて、先に使用されたAPIを始点といい、後に使用されたAPIを終点という場合がある。APIの呼び出しパターンは始点と終点とを備える。
【0083】
ログ解析部102は、時系列順に並べられたサービス利用者毎のAPIの使用履歴ログにおいて、APIの使用に連続性があると認められた、連続する2つのAPIの組み合わせ(呼び出しパターン,実行順序パターン)を1つの単位として抽出(分割)し、それぞれの発生回数を計数する。
【0084】
例えば、
図4の符号P4に示す、サービス利用者IDが“001”のサービス利用者に関するテーブルにおいては、サービス利用者が、API_A,API_B,API_C,API_Aの順でAPIを使用している。このような使用順序は、API_A → API_B,API_B → API_C,API_C → API_Aの3つの呼び出しパターンを備える。これらの呼び出しパターンの発生回数はそれぞれ1である。
【0085】
図5は実施形態の一例としてのコンピュータシステム1のログ解析部102によるAPI呼び出しパターン毎の発生回数の管理方法を例示する図である。
【0086】
以下、API_A,API_B,API_Cを、それぞれA,B,Cで表す場合がある。
【0087】
図5に示す例においては、サービス利用者毎に、始点となるAPI(API_A,API_B,API_C)を列に配置し、終点となるAPI(API_A,API_B,API_C)を行に配置したマトリクスを示している。そして、APIの呼び出しパターンの発生回数が、このマトリクスにおける対応位置に設定されている。
【0088】
なお、この
図5においては、呼び出しパターンを構成するAPIの組み合わせをマトリクス形式で表しているが、これに限定されるものではなく、種々変形して実施することができる。
【0089】
図5に示す例において、符号P8はサービス利用者IDが“001”のサービス利用者の使用履歴ログにおけるAPIの呼び出しパターンの発生回数を示す。同様に、符号P9はサービス利用者IDが“002”のサービス利用者の使用履歴ログにおけるAPIの呼び出しパターンの発生回数を示す。また、符号P10はサービス利用者IDが“003”のサービス利用者の使用履歴ログにおけるAPIの呼び出しパターンの発生回数を示し、符号P11はサービス利用者IDが“004”のサービス利用者の使用履歴ログにおけるAPIの呼び出しパターンの発生回数を示す。各サービス利用者のマトリクスは互いに同じフォーマットを有する。
【0090】
上述の如く、
図4の符号P4に示す、サービス利用者IDが“001”のサービス利用者に関するテーブルにおいては、API_A → API_B,API_B → API_C,API_C → API_Aの3つの呼び出しパターンを備える。すなわち、始点A-終点B,始点B-終点Cおよび始点C-終点Aの3つの呼び出しパターンのそれぞれの発生回数が1である。
【0091】
これにより、
図5における符号P8に示すマトリクスにおいては、始点A-終点B,始点B-終点Cおよび始点C-終点Aのそれぞれの位置に発生回数1が設定されている。
【0092】
このように、ログ解析部102は、APIの使用順序のうち連続性があると認められた部分を、連続して実行(使用)された2つのAPIの組み合わせ(呼び出しパターン)を1つの単位として抽出し、それぞれの発生回数を計数する。
【0093】
また、上述の如く、ログ解析部102は、連続性があると認められたAPIの呼び出しパターンのそれぞれについて、発生回数を求める。そのため、先のエントリの使用した時刻から後続するエントリの使用した時刻までの経過時間(60分)が閾値T(例えば、T=30分)よりも大きい場合には、ログ解析部102は、これらのAPIの使用は(例外的に)計数に含めない。
【0094】
図4の符号P6に示す、サービス利用者IDが“003”のサービス利用者に関するテーブルにおいては、API_B → API_A,API_A → API_C,API_C → API_Cの3つの呼び出しパターンを備える。ただし、API_B → API_Aの呼び出しパターンについては、API_Bの使用した時刻から後続するAPI_Aの使用した時刻までの経過時間(75分)が閾値T(例えば、T=30分)よりも大きいので、ログ解析部102は、この呼び出しパターンを計数に含めない。
【0095】
これにより、
図5における符号P10に示すマトリクスにおいては、始点A-終点Cおよび始点C-終点Cのそれぞれの位置に発生回数1が設定される。
【0096】
(3)処理3
ログ解析部102は、処理2においてサービス利用者ごとに作成したマトリクスを合算する。これにより、ログ解析部102は、連続性があると認められたAPIの呼び出しパターンのそれぞれについて、全サービス利用者についての発生回数(呼び出し回数)の総和を求める。
【0097】
すなわち、ログ解析部102は、連続して実行された2つのAPIの当該実行順序で実行された回数を求める。
【0098】
図6は実施形態の一例としてのコンピュータシステム1のログ解析部102によるAPI呼び出しパターン毎の発生回数の管理方法を例示する図であり、全サービス利用者についての発生回数の合計を示している。
【0099】
この
図6に例示するマトリクスにおいては、始点A-終点Bの呼び出しパターン、すなわち、API_Aの次にAPI_Bが呼び出されるパターンの発生回数(呼び出し回数)が最も多いことがわかる。
【0100】
ログ解析部102は、合算されたマトリクスの各要素の大小に応じて、グラフ作成・表示制御部103で表示する出力画面200(
図7を用いて後述)において、有向グラフ上の対応するエッジ202の表示形態を決定し、グラフ作成・表示制御部103に出力する。
【0101】
ログ解析部102は、上述の如く解析された連続性があるAPI間における呼び出し回数に応じて、エッジ202の線種を決定する。例えば、ログ解析部102は、呼び出し回数が多い呼び出しパターンほどエッジ202の線を太くする。
【0102】
ログ解析部102は、決定したエッジ202の線種を示す情報(線種情報)をグラフ作成・表示制御部103に出力(通知)する。ログ解析部102は、エッジ202の線種情報を、当該線種情報によって表されるエッジ202を特定する情報(例えば、エッジ202の始点および終点となる各APIのAPI識別情報)とともにグラフ作成・表示制御部103に通知する。
【0103】
ログ解析部102は、APIの使用履歴ログに基づき、複数のAPIのうち連続して実行された2つのAPIの実行順序で実行された回数に応じて、出力画面200の有向グラフにおける2つのAPIに対応する2つのノード201間を接続するエッジ202の表示形態(線種)を決定する表示形態決定部に相当する。
【0104】
グラフ作成・表示制御部103は、モニタ14aに表示させる表示画面の生成を行なう。
【0105】
グラフ作成・表示制御部103は、サービス管理者に提供する表示画面を生成し、グラフィック処理装置14を介してモニタ14aに表示させる。
【0106】
グラフ作成・表示制御部103が生成する表示画面は、サービス管理者が入力操作を行なうための入力画面と、ログ解析部102によるログ解析結果を出力する出力画面とを含んでもよい。
【0107】
グラフ作成・表示制御部103によって生成される入力画面はGUI(Graphical User Interface)をそなえ、サービス管理者は、このGUIを介して入力操作を行なう。サービス管理者は、例えば、サービス20を構成するAPIに関する情報を入力する。
【0108】
サービス管理者は、APIに関する情報を、例えば、ノードとエッジ(辺,枝)とを備える有向グラフの形式で入力する。
【0109】
APIに関する情報には、例えば、APIの名称,APIの品質,APIの開発コストおよびAPI間の関連性の有無を含む。入力されたAPIの情報は、
図7に示す出力画面200の生成に用いられる。
【0110】
なお、APIの品質は、例えば、APIにおけるエラー発生数(エラー発生率)によって表してもよい。また、APIの開発コストは金額や作業工数で表してもよい。
【0111】
図7は実施形態の一例としてのコンピュータシステム1における出力画面200を例示する図である。
【0112】
この出力画面200は、サービス20におけるAPIの使用履歴に関する情報を有向グラフに反映させて表すものであり、主にサービス管理者に対して提供されるものである。出力画面200はサービス20に対応して生成される。
【0113】
この
図7に例示する出力画面200は、複数(
図7に示す例では7個)のノード201-1~201-7と、複数(
図7に示す例では11個)のエッジ202-1~202-11とを備える。これらのノード201-1~201-7とエッジ202-1~202-11とは有向グラフを構成している。また、この
図7に例示する出力画面200は、関連性があるノード201間を連結する無向エッジ203も備える。
【0114】
ノード201-1~201-7はAPIを表す。
図7に示す例においては7個のノード201-1~201-7が円形で示されており、これらのノード201-1~201-7は、サービス20に備えられた7個のAPI(API_A,API_B,API_C,API_D,API_E,API_F,API_G)に対応する。
【0115】
以下、7個のノード201-1~201-7を特に区別しない場合には、ノード201と表記する。ノード201内には、当該ノード201の名称が示されている。
【0116】
エッジ202-1~202-11は関連性のあるノード201どうしを連結する有向線分(矢印)である。以下、11個のエッジ202-1~202-11を特に区別しない場合には、エッジ202と表記する。
【0117】
グラフ作成・表示制御部103は、入力画面のGUIから入力されたAPIの名称を、出力画面200においてノード201の名称として表示する。また、API間の関連性の有無を、出力画面200におけるノード201間のエッジの有無として表現する。
【0118】
出力画面200においては、API間でのデータの受け渡しが発生する等、互いに関連するAPIに対応するノード201間を線(無向エッジ203,エッジ202)で連結することで、API間の連携を視覚的に表す。
【0119】
出力画面200において、ノード201間を連結する無向エッジ203およびエッジ202は、APIの呼び出しが繰り返し行なわれたことを示す。そして、エッジ202の線の太さが太いほど、APIの呼び出しの繰り返し回数が多いことを示す。
【0120】
また、グラフ作成・表示制御部103は、APIの呼び出しの繰り返し回数が所定の閾値以下である場合、すなわち、APIの呼び出しの繰り返し回数が少ない場合に、例えば、エッジ202の線種を破線もしくは点線にする(エッジ202-9参照)。
【0121】
なお、グラフ作成・表示制御部103は、APIの呼び出しの繰り返し回数が第1の閾値以上、且つ第2の閾値以下である場合、すなわち、APIの呼び出しの繰り返し回数が多くも少なくもない場合に、エッジ202の図示を抑止してもよい。これにより、出力画面200に表示させる情報を抑制し、見やすくすることができる。
【0122】
また、グラフ作成・表示制御部103は、入力画面のGUIから入力されたAPIの品質を、出力画面200における縦軸方向のノード201の位置として表現する。例えば、品質が高いAPIほど出力画面200中における上方位置に配置し、品質が低いAPIほど出力画面200中における下方位置に配置する。
【0123】
すなわち、グラフ作成・表示制御部103は、出力画面200の有向グラフにおいて、ノード201を、当該ノード201に対応するAPIの品質に応じた状態で表示させる。
【0124】
なお、ログ収集部101により各APIで検出されたエラーの情報を収集し、ログ解析部102によりAPI毎のエラー発生数(エラー発生率)を求めてもよい。そして、このエラー発生数(エラー発生率)に応じて、グラフ作成・表示制御部103は、出力画面200中におけるノード201の位置を適宜移動させてもよい。
【0125】
さらに、グラフ作成・表示制御部103は、入力画面のGUIから入力されたAPIの開発コストを、出力画面200における横軸方向のノード201の位置として表現する。
【0126】
例えば、開発コストが高いAPIほど出力画面200中における左方位置に配置し、開発コストが低いAPIほど出力画面200中における右方位置に配置する。例えば、無償のOSS(Open Source Software)として提供されるAPIは開発コストがかかっていないので出力画面200中における右端位置に配置する。また、自前で開発したコア機能のAPIは、開発コストが高いものとして出力画面200中における左側位置に配置する。有償のプロダクトであるAPIは、例えば、出力画面200中における左右方向の中央付近位置に配置してもよい。
【0127】
すなわち、グラフ作成・表示制御部103は、出力画面200の有向グラフにおいて、ノード201を、当該ノード201に対応するAPIの開発コストに応じた状態で表示させる。
【0128】
グラフ作成・表示制御部103は、上述の如く生成した出力画面200に対して、ログ解析部102から通知されたノードサイズ情報および線種情報を反映させる。
【0129】
すなわち、グラフ作成・表示制御部103は、ログ解析部102からAPI識別情報とともに通知されたノードサイズ情報に基づき、当該API識別情報によって特定されるAPIのノード201をノードサイズ情報によって示されるサイズに変更する。
【0130】
また、グラフ作成・表示制御部103は、ログ解析部102からエッジ202を特定する情報とともに通知された線種情報に基づき、当該エッジ202を特定する情報によって特定されるエッジ202を線種情報によって示される線種に変更する。
【0131】
グラフ作成・表示制御部103は、これらのノードサイズ情報や線種情報を反映させた出力画面200をモニタ14aに表示させることでサービス管理者に提供する。
【0132】
(B)動作
上述の如く構成された実施形態の一例としてのコンピュータシステム1における処理を、
図8に示すフローチャート(ステップA1~S8)に従って説明する。
【0133】
ステップS1において、サービス管理者は、キーボード15aやマウス15bを用いて、グラフ作成・表示制御部103が提供する入力画面のGUIから、サービス20を構成するAPIに関する情報を入力する。サービス管理者は、ノード201とエッジ202とを有する有向グラフの形式で、APIに関する情報を入力する。入力された情報は、例えば、記憶装置13の所定の記憶領域に記憶される。
【0134】
ステップS2において、サービス利用者はサービス20を利用する。この際、サービス提供サーバ51においては、サービス20を構成するAPIが使用され、その使用履歴ログが、例えば、API提供サーバ51の図示しないメモリや記憶装置に、サービス20の利用履歴に含めて記録される。
【0135】
ステップS3において、ログ収集部101は、グラフ作成・表示制御部103から、ステップS1において入力されたAPIに関する情報を取得する。
【0136】
ステップS4において、ログ収集部101は、ステップS3において取得したAPIに関する情報に基づき、ステップS2において記録されたAPIの使用履歴ログをサービス提供サーバ51から取得する。
【0137】
ステップS5において、ログ収集部101は、ステップS4で取得したAPIの使用履歴ログから必要なデータ(例えば、サービス利用者IDや使用時刻)を抽出し、ログ管理データベース104に格納する。
【0138】
ステップS6において、ログ解析部102は、ステップS5で格納したデータを、ログ管理データベース104にから取得して、解析する。
【0139】
すなわち、ログ解析部102は、サービス利用者がAPIを使用した回数(API使用回数)をAPI毎に解析する。
【0140】
また、ログ解析部102は、サービス利用者がAPIを使用した順序の解析を行ない、APIの使用順序に基づき、連続性があると認められたAPIの呼び出しパターン(実行順序パターン)のそれぞれについて、全サービス利用者についての発生回数(呼び出し回数)の総和を求める。
【0141】
ステップS7において、ログ解析部102は、サービス利用者によるAPI使用回数に基づいてノードサイズ情報を決定し、当該ノードサイズ情報を、ノードサイズによって表されるAPIを特定する情報(API識別情報)とともにグラフ作成・表示制御部103に出力する。
【0142】
また、ログ解析部102は、連続性があると認められたAPIの呼び出しパターンのそれぞれについて、全サービス利用者についての発生回数(呼び出し回数)の総和を求める。そして、ログ解析部102は、連続性があるAPI間における呼び出し回数に応じて、エッジ202の線種(表示形態)を決定する。
【0143】
ログ解析部102は、決定したエッジ202の線種情報を、当該線種情報によって表されるエッジ202を特定する情報(例えば、エッジ202の始点および終点となる各APIのAPI識別情報)とともにグラフ作成・表示制御部103に出力する。
【0144】
ステップS8において、グラフ作成・表示制御部103は、ログ解析部102から出力されたノードサイズ情報および線種情報を出力画面200の有向グラフに反映させ、モニタ14aに出力することでサービス管理者に提示する。その後、処理を終了する。
【0145】
(C)効果
このように、本発明の一実施形態としてのコンピュータシステム1によれば、ログ解析部102が、サービス利用者がAPIを使用した回数(API使用回数)をAPIごとに解析し、このAPI使用回数に応じてPIを表すノード201の大きさ(ノードサイズ)を決定し、グラフ作成・表示制御部103に通知する。
【0146】
グラフ作成・表示制御部103が、出力画面200の有向グラフにおいて、ログ解析部102から通知されたノードサイズでAPIに対応するノード201を表示させる。
【0147】
これにより、出力画面200において、サービス20において使用されている複数のAPIの使用状況(使用回数)が可視化され、サービス管理者がAPIの使用状況を容易に把握することができ、利便性が高い。例えば、使用頻度が低いAPIについて、早期に改善策をとることができる。
【0148】
例えば、
図7に例示する出力画面200において、API_E,API_Gの使用回数が少ないことを容易に把握することができ、早期に改善に取り組むことができる。
【0149】
ここで、API_Eは開発コストが高いにも関わらず、使用回数が少ないことは問題であると考えられ、施策として、API_Eの品質の改善や、自前で開発することをやめて同じ機能をもつOSSにリプレースする等の対処を早期に施すことができる。
【0150】
API_GもAPI_Eと同様に使用回数が少ないとはいえ、開発コストがもともと低いため、サービス20に与える影響は小さいと判断することができる。ここで、しかし、API_Gの使用頻度を高める方針をとるのであれば、同じ機能を有するリッチなプロダクトへのリプレースや、API_Gの開発を自前で行なうといった施策を早期に施すことができる。
【0151】
また、ログ解析部102が、各APIの使用順序に基づき、連続性があるAPIの呼び出しパターン(実行順序パターン)のそれぞれについて、全サービス利用者についての発生回数(呼び出し回数)の総和を求める。そして、ログ解析部102は、解析された連続性があるAPI間における呼び出し回数に応じて、エッジ202の線種を変更させる線種情報を作成する。
【0152】
グラフ作成・表示制御部103が、出力画面200の有向グラフにおいて、ログ解析部102から通知された線種情報でノード201間のエッジ202を表示させる。
【0153】
これにより、出力画面200において、API間のエッジ202を見ることで、サービス利用者がどのような順序でAPIを使用しているかをサービス管理者がAPIの使用状況を容易に把握することができ、利便性が高い。
【0154】
例えば、
図7に例示する出力画面200において、API_BとAPI_Eとは連携するAPIであるにもかかわらず、API_B → API_Eという順番でAPIを使用する人が極端に少ないことがわかる。サービス管理者は、ここに何かサービス利用者が使用し辛いボトルネックがあると推測することできる。
【0155】
一方で、API_Cから他のAPIを続けて使用される回数が多いことから、API_Cがハブのような役割を果たしていることを容易に把握することができる。従って、API_CとAPI_Eとを連携させるようサービス20を改善することで、API_Eの使用回数の増加が期待される旨の分析を行なうこともできる。
【0156】
(D)その他
開示の技術は上述した実施形態に限定されるものではなく、本実施形態の趣旨を逸脱しない範囲で種々変形して実施することができる。本実施形態の各構成および各処理は、必要に応じて取捨選択することができ、あるいは適宜組み合わせてもよい。
【0157】
例えば、上述した実施形態においては、ログ解析部102が、APIの使用回数に応じて、出力画面200の有向グラフにおけるAPIに対応するノード201のサイズを変更しているが、これに限定されるものではない。
【0158】
すなわち、APIの使用回数に応じてノード201の色や形状,模様等を異ならせて表示してもよく、種々変形して実施することができる。色には彩度や明度を含んでもよい。
【0159】
また、上述した実施形態においては、ログ解析部102が、連続して実行された2つのAPIの当該実行順序で実行された回数に応じて、出力画面200の有向グラフにおけるAPIに対応するノード201間のエッジ202の線を太くするよう線種を変更しているが、これに限定されるものではない。
【0160】
すなわち、連続して実行された2つのAPIの当該実行順序で実行された回数に応じてノード201の色や形状,模様等を異ならせて表示してもよく、種々変形して実施することができる。色には彩度や明度を含んでもよい。
【0161】
グラフ作成・表示制御部103が、出力画面200の有向グラフにおいて、ノード201を、当該ノード201に対応するAPIの品質や開発コストに応じた位置に表示させているが、これに限定されるものではない。グラフ作成・表示制御部103は、APIの品質や開発コストに応じてノード201の色や形状,模様等を異ならせて表示してもよく、種々変形して実施することができる。
【0162】
また、上述した開示により本実施形態を当業者によって実施・製造することが可能である。
【符号の説明】
【0163】
1 コンピュータシステム
10 管理装置
11 プロセッサ
12 RAM
13 HDD
14 グラフィック処理装置
14a モニタ
15 入力インタフェース
15a キーボード
15b マウス
16 光学ドライブ装置
16a 光ディスク
17 機器接続インタフェース
17a メモリ装置
17b メモリリーダライタ
17c メモリカード
18 ネットワークインタフェース
18a ネットワーク
19 バス
20 コンピュータサービス
50 ネットワーク網
51 サービス提供サーバ
52 ユーザ端末
101 ログ収集部
102 ログ解析部
103 グラフ作成・表示制御部
104 ログ管理データベース
200 出力画面200
201-1~201-7,201 ノード
202-1~202-11,202 エッジ
203 無向エッジ