(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-10-16
(45)【発行日】2023-10-24
(54)【発明の名称】サービス設計装置、サービス設計方法およびサービス設計プログラム
(51)【国際特許分類】
G06F 8/36 20180101AFI20231017BHJP
G06F 9/445 20180101ALI20231017BHJP
【FI】
G06F8/36
G06F9/445 130
(21)【出願番号】P 2021574389
(86)(22)【出願日】2020-01-30
(86)【国際出願番号】 JP2020003558
(87)【国際公開番号】W WO2021152802
(87)【国際公開日】2021-08-05
【審査請求日】2022-04-13
(73)【特許権者】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】100104190
【氏名又は名称】酒井 昭徳
(72)【発明者】
【氏名】藤田 壮吉
(72)【発明者】
【氏名】ジャヤラタゲー チャーミン ハンシ ラナウィーラ
(72)【発明者】
【氏名】大三島 仙知
【審査官】坂庭 剛史
(56)【参考文献】
【文献】国際公開第2010/113242(WO,A1)
【文献】特開2009-252011(JP,A)
【文献】特開2010-218344(JP,A)
【文献】特開2010-020537(JP,A)
【文献】国際公開第2004/061652(WO,A1)
【文献】特開2003-331043(JP,A)
【文献】特開2004-164313(JP,A)
【文献】特開2004-302790(JP,A)
【文献】特開2006-172165(JP,A)
【文献】特開2016-170548(JP,A)
【文献】福田直樹、肥塚八尋、和泉憲明、山口高平,オントロジーに基づくWebサービスの自動連携,電子情報通信学会技術研究報告,日本,社団法人電子情報通信学会,2004年05月10日,Vol.104,No.49,pp.13-18(KBSE2004-3),ISSN 0913-5685
(58)【調査した分野】(Int.Cl.,DB名)
G06F 8/36
G06F 9/44
G06F 9/445
(57)【特許請求の範囲】
【請求項1】
複数のAPIの選択を受け付ける受付部と、
選択された前記複数のAPIの各々のAPIの仕様および使用履歴の少なくともいずれかの情報に基づいて、前記複数のAPIに含まれるAPI間の呼び出しの順序関係を特定する特定部と、
前記特定部によって特定された前記API間の呼び出しの順序関係に基づいて、前記複数のAPIの実行順序を決定する決定部と、
を有
し、
前記決定部は、
前記特定部によって特定された前記API間の呼び出しの順序関係に基づいて、呼び出しの順序関係が特定されたAPI同士を異なるグループに分類しつつ、呼び出しの順序関係が特定されなかったAPI同士を同一グループに分類することにより、前記複数のAPIを複数のグループに分類するとともに、グループ間の順序関係を設定し、
分類した前記複数のグループのいずれかのグループ内のAPI数が、並列実行可能なAPIの上限数である最大多重度を超える場合、前記いずれかのグループ内のAPIを、各サブグループ内のAPI数が前記最大多重度を超えないように複数のサブグループに分類するとともに、サブグループ間の順序関係を設定し、
前記いずれかのグループ内の各々のAPIのエラー率に基づいて、当該エラー率が高いAPIほど順序が先となるように、前記複数のサブグループの各サブグループに属するAPIを更新し、
前記複数のサブグループのうちの先頭のサブグループ以外の他のサブグループ内の各々のAPIのレイテンシに基づいて、前記他のサブグループに属する各々のAPIのうちの最長のレイテンシによって決まる前記他のサブグループそれぞれのレイテンシを足した合計レイテンシが最短となるように、前記他のサブグループに属するAPIを更新し、
前記複数のグループと前記複数のサブグループとに基づいて、同一グループ内のAPIを並列に実行しつつ、前記複数のグループのグループ間の順序関係に従って異なるグループ内のAPIを直列に実行し、同一サブグループ内のAPIを並列に実行しつつ、前記複数のサブグループのサブグループ間の順序関係に従って異なるサブグループ内のAPIを直列に実行する順序を決定する、
ことを特徴とするサービス設計装置。
【請求項2】
前記決定部によって決定された前記複数のAPIの実行順序を出力する出力部をさらに有することを特徴とする請求項1に記載のサービス設計装置。
【請求項3】
前記出力部は、
前記複数のAPIにより実現される機能と対応付けて、決定された前記複数のAPIの実行順序を出力する、ことを特徴とする請求項2に記載のサービス設計装置。
【請求項4】
前記出力部は、
前記複数のAPIにより実現される機能と対応付けて、決定された前記複数のAPIの実行順序と、当該実行順序に従って前記複数のAPIを実行した場合の実行時間および実行結果の成否を出力する、ことを特徴とする請求項2に記載のサービス設計装置。
【請求項5】
複数のAPIの選択を受け付け、
選択された前記複数のAPIの各々のAPIの仕様および使用履歴の少なくともいずれかの情報に基づいて、前記複数のAPIに含まれるAPI間の呼び出しの順序関係を特定し、
特定された前記API間の呼び出しの順序関係に基づいて、呼び出しの順序関係が特定されたAPI同士を異なるグループに分類しつつ、呼び出しの順序関係が特定されなかったAPI同士を同一グループに分類することにより、前記複数のAPIを複数のグループに分類するとともに、グループ間の順序関係を設定し、
分類した前記複数のグループのいずれかのグループ内のAPI数が、並列実行可能なAPIの上限数である最大多重度を超える場合、前記いずれかのグループ内のAPIを、各サブグループ内のAPI数が前記最大多重度を超えないように複数のサブグループに分類するとともに、サブグループ間の順序関係を設定し、
前記いずれかのグループ内の各々のAPIのエラー率に基づいて、当該エラー率が高いAPIほど順序が先となるように、前記複数のサブグループの各サブグループに属するAPIを更新し、
前記複数のサブグループのうちの先頭のサブグループ以外の他のサブグループ内の各々のAPIのレイテンシに基づいて、前記他のサブグループに属する各々のAPIのうちの最長のレイテンシによって決まる前記他のサブグループそれぞれのレイテンシを足した合計レイテンシが最短となるように、前記他のサブグループに属するAPIを更新し、
前記複数のグループと前記複数のサブグループとに基づいて、同一グループ内のAPIを並列に実行しつつ、前記複数のグループのグループ間の順序関係に従って異なるグループ内のAPIを直列に実行し、同一サブグループ内のAPIを並列に実行しつつ、前記複数のサブグループのサブグループ間の順序関係に従って異なるサブグループ内のAPIを直列に実行する順序を決定することにより、前記複数のAPIの実行順序を決定する、
処理をコンピュータが実行することを特徴とするサービス設計方法。
【請求項6】
複数のAPIの選択を受け付け、
選択された前記複数のAPIの各々のAPIの仕様および使用履歴の少なくともいずれかの情報に基づいて、前記複数のAPIに含まれるAPI間の呼び出しの順序関係を特定し、
特定された前記API間の呼び出しの順序関係に基づいて、呼び出しの順序関係が特定されたAPI同士を異なるグループに分類しつつ、呼び出しの順序関係が特定されなかったAPI同士を同一グループに分類することにより、前記複数のAPIを複数のグループに分類するとともに、グループ間の順序関係を設定し、
分類した前記複数のグループのいずれかのグループ内のAPI数が、並列実行可能なAPIの上限数である最大多重度を超える場合、前記いずれかのグループ内のAPIを、各サブグループ内のAPI数が前記最大多重度を超えないように複数のサブグループに分類するとともに、サブグループ間の順序関係を設定し、
前記いずれかのグループ内の各々のAPIのエラー率に基づいて、当該エラー率が高いAPIほど順序が先となるように、前記複数のサブグループの各サブグループに属するAPIを更新し、
前記複数のサブグループのうちの先頭のサブグループ以外の他のサブグループ内の各々のAPIのレイテンシに基づいて、前記他のサブグループに属する各々のAPIのうちの最長のレイテンシによって決まる前記他のサブグループそれぞれのレイテンシを足した合計レイテンシが最短となるように、前記他のサブグループに属するAPIを更新し、
前記複数のグループと前記複数のサブグループとに基づいて、同一グループ内のAPIを並列に実行しつつ、前記複数のグループのグループ間の順序関係に従って異なるグループ内のAPIを直列に実行し、同一サブグループ内のAPIを並列に実行しつつ、前記複数のサブグループのサブグループ間の順序関係に従って異なるサブグループ内のAPIを直列に実行する順序を決定することにより、前記複数のAPIの実行順序を決定する、
処理をコンピュータに実行させることを特徴とするサービス設計プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、サービス設計装置、サービス設計方法およびサービス設計プログラムに関する。
【背景技術】
【0002】
従来、クラウドやオンプレミスの様々なアプリケーションを組み合わせて、業務システムを構築するクラウドサービスがある。また、複数のAPI(Application Programming Interface)を組み合わせて、新たなAPIを作成する場合がある。
【0003】
先行技術としては、1つのサービスのエラーにより生じる他のサービスの処理コストと、エラーの発生確率とを用いて正規化される正規化コストを、サービスの各々について算出し、算出した正規化コストに従って、サービスの実行順序を決定するものがある。また、デバイスとのユーザ対話を容易にし、ローカルサービスおよび/またはリモートサービスを使用しやすくするためのアシスタントシステムがある。
【0004】
また、複数のサービスの現在の順序列を更新するための条件が満足される場合、ユーザ端末の表示装置上に表示される複数のサービスの更新される順序列を決定する技術がある。また、プラント制御機能を提供するクラウドサービスの動作状態を検証し、検証された動作状態に基づき、クラウドサービスを選択し、選択されたクラウドサービスと利用装置との間でサービス情報を伝達する技術がある。
【先行技術文献】
【特許文献】
【0005】
【文献】特開2010-020537号公報
【文献】特開2014-222510号公報
【文献】特表2019-505032号公報
【文献】特開2018-112829号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
しかしながら、従来技術では、複数のAPIを組み合わせて新たなAPIを作成するにあたり、複数のAPIの適切な実行順序を判断するのに時間や手間がかかるという問題がある。
【0007】
一つの側面では、本発明は、複数のAPIを用いたサービスの設計を容易にすることを目的とする。
【課題を解決するための手段】
【0008】
一つの実施態様では、複数のAPIの選択を受け付ける受付部と、選択された前記複数のAPIの各々のAPIの仕様および使用履歴の少なくともいずれかの情報に基づいて、前記複数のAPIに含まれるAPI間の呼び出しの順序関係を特定する特定部と、前記特定部によって特定された前記API間の呼び出しの順序関係に基づいて、前記複数のAPIの実行順序を決定する決定部と、を有するサービス設計装置が提供される。
【発明の効果】
【0009】
本発明の一側面によれば、複数のAPIを用いたサービスの設計を容易にすることができるという効果を奏する。
【図面の簡単な説明】
【0010】
【
図1】
図1は、実施の形態にかかるサービス設計方法の一実施例を示す説明図である。
【
図2】
図2は、情報処理システム200のシステム構成例を示す説明図である。
【
図3】
図3は、サービス設計装置101のハードウェア構成例を示すブロック図である。
【
図4】
図4は、利用者端末201のハードウェア構成例を示すブロック図である。
【
図5】
図5は、APIリポジトリ220の記憶内容の一例を示す説明図である。
【
図6】
図6は、サービス設計装置101の機能的構成例を示すブロック図である。
【
図7】
図7は、複数のAPIの実行順序の第1の決定例を示す説明図(その1)である。
【
図8】
図8は、複数のAPIの実行順序の第1の決定例を示す説明図(その2)である。
【
図9】
図9は、複数のAPIの実行順序の第2の決定例を示す説明図(その1)である。
【
図10】
図10は、複数のAPIの実行順序の第2の決定例を示す説明図(その2)である。
【
図11】
図11は、複数のAPIの実行順序の出力例を示す説明図である。
【
図12】
図12は、実行履歴テーブル1200の記憶内容の一例を示す説明図である。
【
図13】
図13は、推奨結果情報の具体例を示す説明図である。
【
図14】
図14は、サービス設計装置101のサービス設計処理手順の一例を示すフローチャート(その1)である。
【
図15】
図15は、サービス設計装置101のサービス設計処理手順の一例を示すフローチャート(その2)である。
【発明を実施するための形態】
【0011】
以下に図面を参照して、本発明にかかるサービス設計装置、サービス設計方法およびサービス設計プログラムの実施の形態を詳細に説明する。
【0012】
(実施の形態)
図1は、実施の形態にかかるサービス設計方法の一実施例を示す説明図である。
図1において、サービス設計装置101は、複数のAPIの実行順序を決定するコンピュータである。APIは、ソフトウェア同士をつなげるインターフェースであり、例えば、OS(Operating System)やアプリケーションが、他のアプリケーションに対して、機能の一部を利用可能に提供する。
【0013】
APIとしては、例えば、Web APIが挙げられる。Web APIは、HTTP(Hypertext Transfer Protocol)プロトコルを用いて、ネットワークを介して呼び出すソフトウェア間のインターフェースである。APIは、例えば、一連の手続きや関数の集まりなどにより実現される。
【0014】
ここで、複数のAPIを組み合わせて、新たなAPIを作成する場合がある。例えば、投稿サービスに投稿された記事から特定のキーワードを含む記事を検索し、検索した記事を、あるサービスで分析したり、加工したりして、その結果を別のサービスに送信する機能を提供するとする。この場合、各サービスで提供されているAPIを組み合わせて新たなAPIを作成し、その機能を提供するアプリケーションやサービスを設計することになる。
【0015】
しかし、単純にAPIを直列に実行させると、実行時間やコストの増大を招いてしまう。例えば、アプリケーションの実行時間が増大すると、ユーザの待ち時間が増えるとともに、アプリケーションを動作させるインフラのコストが増える。そもそもどの順番で直列に実行すればよいのかを利用者が判断できない場合もある。
【0016】
一方、実行時間やコストを削減するために、複数のAPIの並列処理や順序関係を利用者にモデリングさせると、作業が複雑になり、ITに詳しくないビジネスユーザが使うことが難しくなる。また、ITスキルの高いユーザであっても、アプリケーションの実行時間が最短となるような設計を行うには時間や手間がかかり、生産性の低下につながるおそれがある。
【0017】
そこで、本実施の形態では、ユーザが組み合わせたい複数のAPIを選択するだけで、複数のAPIの適切な実行順序を特定して、高品質なAPIサービスの設計を支援するサービス設計方法について説明する。以下、サービス設計装置101の処理例について説明する。
【0018】
(1)サービス設計装置101は、複数のAPIの選択を受け付ける。具体的には、例えば、サービス設計装置101は、ユーザの操作入力により、APIリストから、任意のAPIの選択を受け付けることにより、複数のAPIの選択を受け付ける。APIリストは、選択可能なAPIをリスト化したものである。
【0019】
図1の例では、ユーザが組み合わせたい複数のAPIとして、API1,API2,API3,API4,API5が選択された場合を想定する。
【0020】
(2)サービス設計装置101は、記憶部110を参照して、選択された複数のAPIの各々のAPIの仕様および使用履歴の少なくともいずれかの情報に基づいて、複数のAPIに含まれるAPI間の呼び出しの順序関係を特定する。ここで、記憶部110は、APIの仕様および使用履歴の情報を記憶する。
【0021】
APIの仕様は、例えば、APIの名称、機能、目的、リクエストおよびレスポンスのフォーマットなどを表す情報である。また、APIの使用履歴は、APIが実行された際の履歴を表す情報であり、例えば、当該APIと組み合わせて実行された他のAPIや、そのときのAPIの実行順序などを表す。
【0022】
例えば、API1のリクエスト項目とレスポンス項目のフォーマットを「[In:*,Out:画像]」とする。「In:*」は、リクエスト項目として任意のデータを入力することを示す。「Out:画像」は、レスポンス項目として画像を出力することを示す。また、API5のリクエスト項目とレスポンス項目のフォーマットを「[In:画像,Out:*]」とする。「In:画像」は、リクエスト項目として画像を入力することを示す。「Out:*」は、レスポンス項目として任意のデータを出力することを示す。
【0023】
この場合、API1のレスポンス項目のフォーマット「画像」と、API5のリクエスト項目のフォーマット「画像」とが一致し、API1からのレスポンスが、API5のリクエストとして入力されるという入出力関係が存在し得る。このため、サービス設計装置101は、例えば、API1の仕様とAPI5の仕様に基づいて、API1,API5間の呼び出しの順序関係として、「API1→API5」を特定する。
【0024】
また、過去にAPI2とAPI4とが組み合わせて使用されており、API2の後にAPI4が実行された回数が最も多いとする。この場合、サービス設計装置101は、例えば、API2とAPI4の使用履歴に基づいて、API2,API4間の呼び出しの順序関係として、「API2→API4」を特定する。
【0025】
図1の例では、選択されたAPI1~API5に含まれるAPI1,API5間の呼び出しの順序関係として、「API1→API5」が特定された場合を想定する。また、API3,API5間の呼び出しの順序関係として、「API3→API5」が特定された場合を想定する。また、API2,API4間の呼び出しの順序関係として、「API2→API4」が特定された場合を想定する。
【0026】
(3)サービス設計装置101は、特定したAPI間の呼び出しの順序関係に基づいて、複数のAPIの実行順序を決定する。具体的には、例えば、サービス設計装置101は、呼び出しの順序関係があるAPI同士を、その関係に従って実行する順序に決定する。また、サービス設計装置101は、呼び出しの順序関係がないAPI同士を、並列に実行する順序に決定する。
【0027】
図1の例では、選択されたAPI1~API5のうち、API1,API5は、呼び出しの順序関係「API1→API5」があるため、その関係に従って実行する順序に決定される。また、API3,API5は、呼び出しの順序関係「API3→API5」があるため、その関係に従って実行する順序に決定される。また、API2,API4は、呼び出しの順序関係「API2→API4」があるため、その関係に従って実行する順序に決定される。
【0028】
また、API1,API2,API3は、呼び出しの順序関係がないため、並列に実行する順序に決定される。なお、API1は、API4とも並列に実行可能である。しかし、API4は、API1と並列に実行するAPI2との間で呼び出しの順序関係がある。このため、この例では、API1とAPI4は並列に実行しない順序とする。また、API4,API5は、呼び出しの順序関係がないため、並列に実行する順序に決定される。
【0029】
なお、2以上のAPIを並列に実行する順序に決定するとは、例えば、それらAPIを並列に実行可能なAPIとして設定することに相当する。
図1の例では、API1~API5を組み合わせた新たなAPIを実行する際には、API1~API3を並列に実行を開始した後、API1~API3の実行状況によっては、API4がAPI5よりも先に実行されることにしてもよい。
【0030】
このように、サービス設計装置101によれば、ユーザが組み合わせたい複数のAPIを選択するだけで、API間の呼び出しの順序関係や並列性を考慮したAPIの実行順序を導出することができる。これにより、複数のAPIを組み合わせて新たなAPIを作成するにあたり、複数のAPIの適切な実行順序を特定可能となり、容易に高品質なAPIサービスを設計することができる。
【0031】
図1の例では、API1,API2,API3を並列に実行した後、API4,API5を並列に実行する実行順序が決定される。なお、2以上のAPI(例えば、API4,API5)を並列に実行する順序に決定するとは、それらAPIを並列に実行可能なAPIとして設定することに相当する。例えば、API1~API5を組み合わせた新たなAPIを実行する際には、API1~API3を並列に実行を開始した後、API1~API3の実行状況によっては、API4がAPI5よりも先に実行されてもよい。
【0032】
(情報処理システム200のシステム構成例)
つぎに、
図1に示したサービス設計装置101を含む情報処理システム200のシステム構成例について説明する。情報処理システム200は、例えば、APIの実行環境を提供するコンピュータシステムに適用される。
【0033】
図2は、情報処理システム200のシステム構成例を示す説明図である。
図2において、情報処理システム200は、サービス設計装置101と、利用者端末201とを含む。情報処理システム200において、サービス設計装置101および利用者端末201は、有線または無線のネットワーク210を介して接続される。ネットワーク210は、例えば、インターネット、LAN(Local Area Network)、WAN(Wide Area Network)などである。
【0034】
ここで、サービス設計装置101は、APIリポジトリ220を有する。APIリポジトリ220は、APIの仕様および使用履歴の情報を記憶する。
図1に示した記憶部110は、例えば、APIリポジトリ220に相当する。APIリポジトリ220の記憶内容については、
図5を用いて後述する。サービス設計装置101は、例えば、クラウドコンピューティングのサーバである。
【0035】
利用者端末201は、情報処理システム200のユーザが使用するコンピュータである。ユーザは、例えば、複数のAPIを組み合わせて新たなAPIを作成する者や、新たなAPIを利用する者である。利用者端末201は、例えば、PC、タブレット型PC(Personal Computer)などである。
【0036】
なお、
図2の例では、サービス設計装置101と利用者端末201とを別体に設けることにしたが、これに限らない。例えば、サービス設計装置101は、利用者端末201により実現されることにしてもよい。
【0037】
(サービス設計装置101のハードウェア構成例)
図3は、サービス設計装置101のハードウェア構成例を示すブロック図である。
図3において、サービス設計装置101は、CPU(Central Processing Unit)301と、メモリ302と、ディスクドライブ303と、ディスク304と、通信I/F(Interface)305と、可搬型記録媒体I/F306と、可搬型記録媒体307と、を有する。また、各構成部は、バス300によってそれぞれ接続される。
【0038】
ここで、CPU301は、サービス設計装置101の全体の制御を司る。CPU301は、複数のコアを有していてもよい。メモリ302は、例えば、ROM(Read Only Memory)、RAM(Random Access Memory)およびフラッシュROMなどを有する。具体的には、例えば、フラッシュROMがOS(Operating System)のプログラムを記憶し、ROMがアプリケーションプログラムを記憶し、RAMがCPU301のワークエリアとして使用される。メモリ302に記憶されるプログラムは、CPU301にロードされることで、コーディングされている処理をCPU301に実行させる。
【0039】
ディスクドライブ303は、CPU301の制御に従ってディスク304に対するデータのリード/ライトを制御する。ディスク304は、ディスクドライブ303の制御で書き込まれたデータを記憶する。ディスク304としては、例えば、磁気ディスク、光ディスクなどが挙げられる。
【0040】
通信I/F305は、通信回線を通じてネットワーク210に接続され、ネットワーク210を介して外部のコンピュータ(例えば、
図2に示した利用者端末201)に接続される。そして、通信I/F305は、ネットワーク210と装置内部とのインターフェースを司り、外部のコンピュータからのデータの入出力を制御する。通信I/F305には、例えば、モデムやLANアダプタなどを採用することができる。
【0041】
可搬型記録媒体I/F306は、CPU301の制御に従って可搬型記録媒体307に対するデータのリード/ライトを制御する。可搬型記録媒体307は、可搬型記録媒体I/F306の制御で書き込まれたデータを記憶する。可搬型記録媒体307としては、例えば、CD(Compact Disc)-ROM、DVD(Digital Versatile Disk)、USB(Universal Serial Bus)メモリなどが挙げられる。
【0042】
なお、サービス設計装置101は、上述した構成部のほかに、例えば、SSD(Solid State Drive)、入力装置、ディスプレイ等を有することにしてもよい。また、サービス設計装置101は、上述した構成部のうち、例えば、ディスクドライブ303、ディスク304、可搬型記録媒体I/F306、可搬型記録媒体307を有していなくてもよい。
【0043】
(利用者端末201のハードウェア構成例)
図4は、利用者端末201のハードウェア構成例を示すブロック図である。
図4において、利用者端末201は、CPU401と、メモリ402と、ディスクドライブ403と、ディスク404と、通信I/F405と、ディスプレイ406と、入力装置407と、可搬型記録媒体I/F408と、可搬型記録媒体409と、を有する。また、各構成部はバス400によってそれぞれ接続される。
【0044】
ここで、CPU401は、利用者端末201の全体の制御を司る。CPU401は、複数のコアを有していてもよい。メモリ402は、例えば、ROM、RAMおよびフラッシュROMなどを有する記憶部である。具体的には、例えば、フラッシュROMやROMが各種プログラムを記憶し、RAMがCPU401のワークエリアとして使用される。メモリ402に記憶されるプログラムは、CPU401にロードされることで、コーディングされている処理をCPU401に実行させる。
【0045】
ディスクドライブ403は、CPU401の制御に従ってディスク404に対するデータのリード/ライトを制御する。ディスク404は、ディスクドライブ403の制御で書き込まれたデータを記憶する。
【0046】
通信I/F405は、通信回線を通じてネットワーク210に接続され、ネットワーク210を介して他のコンピュータ(例えば、サービス設計装置101)に接続される。そして、通信I/F405は、ネットワーク210と内部のインターフェースを司り、他のコンピュータからのデータの入出力を制御する。
【0047】
ディスプレイ406は、カーソル、アイコンあるいはツールボックスをはじめ、文書、画像、機能情報などのデータを表示する表示装置である。ディスプレイ406としては、例えば、液晶ディスプレイや有機EL(Electroluminescence)ディスプレイなどを採用することができる。
【0048】
入力装置407は、文字、数字、各種指示などの入力のためのキーを有し、データの入力を行う。入力装置407は、キーボードやマウスなどであってもよく、また、タッチパネル式の入力パッドやテンキーなどであってもよい。
【0049】
可搬型記録媒体I/F408は、CPU401の制御に従って可搬型記録媒体409に対するデータのリード/ライトを制御する。可搬型記録媒体409は、可搬型記録媒体I/F408の制御で書き込まれたデータを記憶する。
【0050】
なお、利用者端末201は、上述した構成部のうち、例えば、ディスクドライブ403、ディスク404、可搬型記録媒体I/F408、可搬型記録媒体409などを有さないことにしてもよい。
【0051】
(APIリポジトリ220の記憶内容)
つぎに、
図5を用いて、サービス設計装置101が有するAPIリポジトリ220の記憶内容について説明する。APIリポジトリ220は、例えば、
図3に示したメモリ302、ディスク304などの記憶装置により実現される。
【0052】
図5は、APIリポジトリ220の記憶内容の一例を示す説明図である。
図5において、APIリポジトリ220は、ID、名称、機能、操作対象、リクエスト仕様、レスポンス仕様、エラー率、レイテンシ、優先度および組み合わせ履歴のフィールドを有する。各フィールドに情報を設定することで、API管理情報(例えば、API管理情報500-1~500-3)がレコードとして記憶される。
【0053】
ここで、IDは、APIを一意に識別する識別子である。名称は、APIの名称である。機能は、APIにより実現される機能である。操作対象は、APIの操作対象である。リクエスト仕様は、APIのリクエストの仕様であり、例えば、リクエスト項目のフォーマット(項目名、型など)を示す。
【0054】
レスポンス仕様は、APIのレスポンスの仕様であり、例えば、レスポンス項目のフォーマット(項目名、型など)を示す。エラー率は、APIを実行した際にエラーが発生する割合を示す(単位:%)。レイテンシは、APIを実行した際の実行時間を示す(単位:ms)。優先度は、APIの実行優先度を示す。優先度が高いAPIほど、優先して実行すべきAPIであることを示す。組み合わせ履歴は、過去に組み合わせて使用された複数のAPIを示す。
【0055】
APIリポジトリ220内のフィールドのうち、例えば、ID、名称、機能、操作対象、リクエスト仕様、レスポンス仕様および優先度は、APIの仕様を表している。また、エラー率、レイテンシおよび組み合わせ履歴は、APIの使用履歴を表している。
【0056】
例えば、API管理情報500-1は、ID「1」のAPIの名称「API1」、機能「分析」、操作対象「テキスト」、リクエスト仕様「xxx項目、aa型、…」、レスポンス仕様「yyy項目、bb型、…」を示す。また、エラー率「0.2[%]」、レイテンシ「80[ms]」、優先度「2」および組み合わせ履歴「履歴1:[API1,API3,API4]、履歴2:[API4,API1,API5]、履歴3:[API10,API9,API5,API1]」を示す。例えば、履歴1:[API1,API3,API4]は、「API1→API3→API4」の順序で使用されたことを示す。
【0057】
なお、APIリポジトリ220には、APIの目的を示す目的項目が含まれていてもよい。目的項目としては、例えば、「画像の解析」、「画像の取得」などが設定される。ただし、APIの目的項目は、APIの機能や操作対象などから特定されてもよい。また、APIリポジトリ220には、APIの認証方式、提供者情報、呼び出し履歴、レイテンシ履歴などが含まれていてもよい。呼び出し履歴は、エラー率の算出元となる情報(例えば、APIの実行結果の成否、呼び出し時のリクエスト情報、レスポンス情報など)である。レイテンシ履歴は、レイテンシの算出元となる情報である。
【0058】
(サービス設計装置101の機能的構成例)
図6は、サービス設計装置101の機能的構成例を示すブロック図である。
図6において、サービス設計装置101は、受付部601と、特定部602と、決定部603と、出力部604と、実行部605と、を含む。具体的には、例えば、受付部601~実行部605は、
図3に示したメモリ302、ディスク304、可搬型記録媒体307などの記憶装置に記憶されたプログラムをCPU301に実行させることにより、または、通信I/F305により、その機能を実現する。各機能部の処理結果は、例えば、メモリ302、ディスク304などの記憶装置に記憶される。
【0059】
受付部601は、複数のAPIの選択を受け付ける。選択対象となるAPIは、複数のAPIを組み合わせて新たなAPIを作成するためのAPIであり、例えば、Web APIである。APIの選択は、例えば、
図2に示した利用者端末201のディスプレイ406(
図4参照)に表示される、不図示のAPI選択画面において行われる。API選択画面は、例えば、選択可能なAPIのリストから、ユーザが組み合わせたい複数のAPIを選択する操作画面である。
【0060】
より詳細に説明すると、例えば、利用者端末201は、API選択画面において、入力装置407(
図4参照)を用いたユーザの操作入力により、複数のAPIの選択を受け付ける。そして、利用者端末201は、サービス設計装置101にAPIの選択結果を送信する。この場合、受付部601は、利用者端末201からAPIの選択結果を受信することにより、複数のAPIの選択を受け付ける。
【0061】
また、受付部601は、自装置の入力装置(不図示)を用いたユーザの操作入力により、複数のAPIの選択を受け付けることにしてもよい。また、受付部601は、自装置の入力装置(不図示)を用いたユーザの操作入力により、APIの名称の入力を受け付けることにより、複数のAPIの選択を受け付けることにしてもよい。
【0062】
また、受付部601は、複数のAPIの選択を受け付けるとともに、複数のAPIにより実現する機能の指定を受け付けることにしてもよい。機能の指定は、例えば、利用者端末201に表示されるAPI選択画面において行われる。機能の指定は、例えば、機能名の選択または入力によって行われてもよく、また、機能の内容を表す文章の選択または入力によって行われてもよい。
【0063】
より詳細に説明すると、例えば、利用者端末201は、API選択画面において、ユーザの操作入力により、複数のAPIにより実現する機能の指定を受け付ける。そして、利用者端末201は、指定された機能を特定する情報を含む、APIの選択結果をサービス設計装置101に送信する。この場合、受付部601は、利用者端末201からAPIの選択結果を受信することにより、複数のAPIの選択を受け付けるとともに、複数のAPIにより実現する機能の指定を受け付ける。
【0064】
特定部602は、選択された複数のAPIの各々のAPIの仕様および使用履歴の少なくともいずれかの情報に基づいて、複数のAPIに含まれるAPI間の呼び出しの順序関係を特定する。APIの仕様は、例えば、APIの名称、機能、目的、リクエストやレスポンスのフォーマット、実行優先度などを表す情報である。
【0065】
また、APIの使用履歴は、例えば、APIの組み合わせ履歴、エラー率、レイテンシなどを表す情報である。APIの組み合わせ履歴は、過去に組み合わせて使用された複数のAPIと、複数のAPIの実行順序とを示す。エラー率は、APIを実行した際にエラーが発生する割合を示す。レイテンシは、APIを実行した際の実行時間を示す。
【0066】
APIの仕様および使用履歴は、例えば、
図5に示したAPIリポジトリ220から特定される。具体的には、例えば、特定部602は、APIリポジトリ220を参照して、選択された複数のAPIのうち、第1のAPIのレスポンス項目のフォーマットと、第2のAPIのリクエスト項目のフォーマットとが一致するか否かを判断する。ここで、第1のAPIのレスポンス項目のフォーマットと、第2のAPIのリクエスト項目のフォーマットとが一致する場合、特定部602は、第1のAPIから第2のAPIへの呼び出しの順序関係を特定する。
【0067】
また、特定部602は、APIリポジトリ220を参照して、第1のAPIの目的項目と第2のAPIの目的項目とを比較する。そして、特定部602は、比較した結果から第1のAPIと第2のAPIとに依存関係が存在すると判断した場合に、第1のAPIと第2のAPIとの呼び出しの順序関係を特定する。一例として、第1のAPIの目的項目を「画像またはテキストの解析」とし、第2のAPIの目的項目を「画像またはテキストの取得」とする。この場合、第2のAPIで取得した画像またはテキストを、第1のAPIで解析するという依存関係が存在するため、特定部602は、第2のAPIから第1のAPIへの呼び出しの順序関係を特定する。
【0068】
また、特定部602は、APIリポジトリ220を参照して、第1のAPIと第2のAPIとの組み合わせ履歴を特定する。そして、特定部602は、特定した第1のAPIと第2のAPIとの組み合わせ履歴に基づいて、第1のAPIと第2のAPIとの呼び出しの順序関係を特定する。一例として、第1のAPIと第2のAPIとが組み合わせて使用された履歴があり、第1のAPIの直後に第2のAPIが実行された回数を「100」とし、第2のAPIの直後に第1のAPIが実行された回数を「50」とする。この場合、特定部602は、使用頻度が高い第1のAPIから第2のAPIへの呼び出しの順序関係を特定する。
【0069】
また、API間の呼び出しの順序関係は、APIの提供者またはユーザによって指定されてもよい。この場合、特定部602は、APIの提供者またはユーザによって指定されたAPI間の呼び出しの順序関係を特定する。
【0070】
また、各々のAPIには、仕様として、あらかじめ実行優先度が設定されていてもよい。実行優先度は、優先度が高いAPIほど、優先して実行すべきAPIであることを示す。実行優先度は、例えば、APIリポジトリ220内の全てのAPIにおいて、統一的な価値基準をもとに設定される。この場合、特定部602は、選択された複数のAPIのうち、第1のAPIの実行優先度が、第2のAPIの実行優先度よりも高い場合、第1のAPIから第2のAPIへの呼び出しの順序関係を特定することにしてもよい。
【0071】
決定部603は、特定されたAPI間の呼び出しの順序関係に基づいて、選択された複数のAPIの実行順序を決定する。具体的には、例えば、決定部603は、呼び出しの順序関係が特定されたAPI同士を、その関係に従って実行する順序に決定する。また、決定部603は、呼び出しの順序関係が特定されなかったAPI同士を、並列に実行する順序に決定する。
【0072】
また、決定部603は、さらに、最大多重度に基づいて、複数のAPIの実行順序を決定することにしてもよい。ここで、最大多重度は、並列実行可能なAPIの上限数である。最大多重度は、例えば、あらかじめ設定されてメモリ302、ディスク304などの記憶装置に記憶されている。
【0073】
具体的には、例えば、決定部603は、呼び出しの順序関係が特定されなかったAPI同士を、最大多重度を超えないように並列に実行する順序を決定する。なお、最大多重度は、例えば、APIのプロトコルや、設計対象のサービス(複数のAPIを組み合わせて作成される新たなAPI)を実行するコンピュータ(例えば、サービス設計装置101)のハードウェアリソースに応じて設定される。
【0074】
また、決定部603は、さらに、各々のAPIを実行した際のエラー率に基づいて、複数のAPIの実行順序を決定することにしてもよい。具体的には、例えば、複数のAPIのうち、エラー率の高いAPIほど順序を先に決定してもよい。これにより、早い段階でエラーが発生しやすくなって、エラー発生時の無駄な時間やコストを抑えることができる。
【0075】
より詳細に説明すると、例えば、決定部603は、特定されたAPI間の呼び出しの順序関係に基づいて、複数のAPIを複数のグループに分類する。この際、決定部603は、呼び出しの順序関係が特定されたAPI同士を異なるグループに分類しつつ、呼び出しの順序関係が特定されなかったAPI同士を同一グループに分類する。また、決定部603は、API間の呼び出しの順序関係に従って、グループ間の順序関係を設定する。
【0076】
以下の説明では、複数のAPIを分類した複数のグループを「グループG1~Gn」と表記する場合がある(n:2以上の自然数)。また、グループG1~Gnのうちの任意のグループを「グループGi」と表記する場合がある(i=1,2,…,n)。
【0077】
つぎに、決定部603は、分類したグループG1~GnのいずれかのグループGi内のAPI数が最大多重度を超える場合、グループGi内の各々のAPIのエラー率に基づいて、グループGi内のAPIを複数のサブグループに分類する。ただし、決定部603は、各サブグループ内のAPI数が最大多重度を超えないように分類する。
【0078】
また、決定部603は、分類したグループG1~GnのいずれかのグループGi内のAPI数が最大多重度を超える場合、グループGi内の各々のAPIのエラー率およびレイテンシに基づいて、グループGi内のAPIを複数のサブグループに分類してもよい。この際、決定部603は、サブグループ間の順序関係を設定する。
【0079】
以下の説明では、グループGi内の複数のサブグループを「サブグループs1~sm」と表記する場合がある(m:2以上の自然数)。また、サブグループs1~smのうちの任意のサブグループを「サブグループsj」と表記する場合がある(j=1,2,…,m)。
【0080】
そして、決定部603は、グループG1~GnとグループGi内のサブグループs1~smとに基づいて、複数のAPIの実行順序を決定する。例えば、決定部603は、同一グループ内のAPIを並列に実行しつつ、グループ間の順序関係に従って異なるグループ内のAPIを直列に実行する順序を決定する。また、決定部603は、同一サブグループ内のAPIを並列に実行しつつ、サブグループ間の順序関係に従って異なるサブグループ内のAPIを直列に実行する順序を決定する。
【0081】
なお、複数のAPIの実行順序の決定例については、
図7~
図10を用いて後述する。
【0082】
出力部604は、決定された複数のAPIの実行順序を出力する。出力部604の出力形式としては、例えば、メモリ302、ディスク304などの記憶装置への記憶、通信I/F305による他のコンピュータ(例えば、利用者端末201)への送信、不図示のディスプレイへの表示、不図示のプリンタへの印刷出力などがある。
【0083】
なお、複数のAPIの実行順序の出力例については、
図11を用いて後述する。
【0084】
実行部605は、決定された複数のAPIの実行順序に従って、複数のAPIを実行する。すなわち、実行部605は、決定された複数のAPIの実行順序に基づいて、複数のAPIを組み合わせて作成される新たなAPIを実行する。
【0085】
具体的には、例えば、実行部605は、同一グループ内のAPIを並列に実行しつつ、グループ間の順序関係に従って異なるグループ内のAPIを直列に実行する。また、グループGi内にサブグループs1~smが存在する場合、実行部605は、同一サブグループ内のAPIを並列に実行しつつ、サブグループ間の順序関係に従って異なるサブグループ内のAPIを直列に実行する。
【0086】
なお、各APIの実行時に用いられる各種パラメータの値は、例えば、ユーザの操作入力により指定される。各APIの実行処理では、例えば、APIリクエストが作成され、作成されたAPIリクエストが、各APIを提供するウェブサーバに送信される。APIリクエストは、APIの実行を依頼するものであり、例えば、各種パラメータの値を含む。この結果、ウェブサーバにおいて、各種パラメータの値に基づきAPIが実行され、APIレスポンスがサービス設計装置101に送信される。
【0087】
また、出力部604は、実行された複数のAPIの実行結果を出力することにしてもよい。ここで、複数のAPIの実行結果は、複数のAPIを組み合わせて作成される新たなAPIの実行結果であり、例えば、新たなAPIにより要求された情報や、新たなAPIの実行結果の成否などである。
【0088】
また、出力部604は、選択された複数のAPIにより実現される機能と対応付けて、決定された複数のAPIの実行順序を出力することにしてもよい。これにより、機能と対応付けて、その機能を実現する複数のAPIと、複数のAPIの実行順序を記録することができる。
【0089】
例えば、サービス設計装置101は、機能の指定を受け付けたことに応じて、指定された機能に対応する複数のAPIの実行順序を特定する情報を出力することができる。これにより、ユーザは、ある機能を実現するにあたり、どのAPIを組み合わせて、どのような順番で実行すればよいのかを判断することができる。
【0090】
また、出力部604は、選択された複数のAPIにより実現される機能と対応付けて、決定された複数のAPIの実行順序と、当該実行順序に従って複数のAPIを実行した場合の実行時間および実行結果の成否を出力することにしてもよい。実行時間は、複数のAPI(複数のAPIを組み合わせて作成される新たなAPI)の実行を開始してから、複数のAPIの実行が終了するまでに要する時間である。
【0091】
実行結果の成否は、複数のAPIの実行が成功したか否かを示す。具体的には、例えば、出力部604は、複数のAPIにより実現される機能と対応付けて、複数のAPIの実行順序、実行時間および実行結果の成否を、後述の
図12に示すような実行履歴テーブル1200に記録する。
【0092】
これにより、機能と対応付けて、その機能を実現する複数のAPIと、複数のAPIの実行順序と、その実行順序で複数のAPIを実行した場合の実行時間および実行結果の成否を記録することができる。なお、複数のAPIにより実現される機能は、例えば、キーワードによって表現されてもよく、また、文章によって表現されてもよい。
【0093】
例えば、サービス設計装置101は、機能の指定を受け付けたことに応じて、指定された機能に対応する複数のAPIの実行順序と、当該実行順序に従って複数のAPIを実行した場合の実行時間および実行結果の成否を特定する情報を出力することができる。これにより、ユーザは、ある機能を実現するにあたり、どのAPIを組み合わせて、どのような順番で実行すればよいのかを判断することができる。
【0094】
なお、上述したサービス設計装置101の機能部のうち、実行部605は、サービス設計装置101とは異なる他のコンピュータにより実現されることにしてもよい。この場合、他のコンピュータにおいて、サービス設計装置101で決定された複数のAPIの実行順序に従って、複数のAPIを実行する。また、上述したサービス設計装置101の各機能部は、利用者端末201により実現されることにしてもよい。
【0095】
(複数のAPIの実行順序の決定例)
つぎに、
図7~
図10を用いて、複数のAPIの実行順序の決定例について説明する。まず、
図7および
図8を用いて、複数のAPIの実行順序の第1の決定例について説明する。
【0096】
図7および
図8は、複数のAPIの実行順序の第1の決定例を示す説明図である。
図7において、まず、受付部601は、複数のAPIの選択を受け付ける。ここでは、複数のAPIとして、API1,API2,API3,API4,API10,API11,API12,API100,API101が選択されている。
【0097】
つぎに、特定部602は、APIリポジトリ220を参照して、各々のAPIの仕様および使用履歴に基づいて、複数のAPIに含まれるAPI間の呼び出しの順序関係を特定する。ここでは、API1,API10間の呼び出しの順序関係として、「API1→API10」が特定されている。API2,API10間の呼び出しの順序関係として、「API2→API10」が特定されている。
【0098】
また、API3,API11間の呼び出しの順序関係として、「API3→API11」が特定されている。API4,API12間の呼び出しの順序関係として、「API4→API12」が特定されている。API10,API100間の呼び出しの順序関係として、「API10→API100」が特定されている。API11,API101間の呼び出しの順序関係として、「API11→API101」が特定されている。
【0099】
図8において、決定部603は、特定されたAPI間の呼び出しの順序関係に基づいて、複数のAPIをグループG1~Gnに分類する。具体的には、例えば、決定部603は、呼び出しの順序関係が特定されたAPI同士を異なるグループに分類しつつ、呼び出しの順序関係が特定されなかったAPI同士を同一グループに分類する。
【0100】
この際、決定部603は、例えば、グループ内のAPI数ができるだけ多くなるように、複数のAPIを複数のグループに分類してもよい。また、決定部603は、グループ数ができるだけ少なくなるように、複数のAPIを複数のグループに分類してもよい。
【0101】
例えば、API1とAPI10は、呼び出しの順序関係があるため、異なるグループに分類される。また、API10とAPI100は、呼び出しの順序関係があるため、異なるグループに分類される。また、API1とAPI2は、呼び出しの順序関係がないため、同一グループに分類される。
【0102】
ここでは、API1とAPI2とAPI3とAPI4がグループG1に分類され、API10とAPI11とAPI12がグループG2に分類され、API100とAPI101がグループG3に分類されている。また、グループG1~G3には、「グループG1→グループG2→グループG3」という順序関係が設定されている。
【0103】
なお、各グループG1~G3内のAPI数は最大多重度を超えていないものとする。
【0104】
そして、決定部603は、グループG1~G3のグループ間の順序関係に従って、同一グループ内のAPIを並列に実行しつつ、異なるグループ内のAPIを直列に実行する順序を決定する。ここでは、グループG1内のAPI1,API2,API3,API4を並列に実行した後、グループG2内のAPI10,API11,API12を並列に実行し、その後、グループG3内のAPI100,API101を並列に実行する実行順序が決定される。
【0105】
これにより、ユーザが選択した複数のAPI(API1~API4,API10~API12,API100,API101)について、API間の呼び出しの順序関係や並列性を考慮したAPIの実行順序を導出することができる。
【0106】
つぎに、
図9および
図10を用いて、複数のAPIの実行順序の第2の決定例について説明する。ここでは、複数のAPIを分類したグループG1~GnのうちのグループGi内のAPI数が最大多重度を超えていた場合について説明する。
【0107】
図9および
図10は、複数のAPIの実行順序の第2の決定例を示す説明図である。
図9において、API1~API8を含むグループG1が示されている。ここで、最大多重度を「3」とすると、グループG1内のAPI数「8」が最大多重度を超える。
【0108】
この場合、決定部603は、グループG1内のAPIを、各サブグループ内のAPI数が最大多重度を超えないように、サブグループs1~smに分類する。より詳細に説明すると、例えば、決定部603は、各サブグループ内のAPI数が、最大多重度を超えず、かつ、できるだけ多くなるように、グループG1内のAPIをサブグループs1~smに分類する。
【0109】
ここでは、API1とAPI2とAPI3がサブグループs1に分類され、API4とAPI5とAPI6がサブグループs2に分類され、API7とAPI8がサブグループs3に分類されている。また、サブグループs1~s3には、「サブグループs1→サブグループs2→サブグループs3」という順序関係が設定されている。
【0110】
図10において、決定部603は、グループG1内の各々のAPIのエラー率に基づいて、各サブグループs1~s3に属するAPIを更新する。具体的には、例えば、決定部603は、グループG1内のAPI1~API8のうち、エラー率が高いAPIほど順序が先となるように、各サブグループs1~s3に属するAPIを更新する。
【0111】
ここでは、エラー率が高いAPI2とAPI6とAPI8がサブグループs1に分類されている。また、エラー率がAPI2,API6,API8よりも低い、API1とAPI3とAPI4がサブグループs2に分類されている。また、エラー率がAPI2,API6,API8よりも低い、API5とAPI7がサブグループs3に分類されている。
【0112】
なお、サブグループs1(先頭のサブグループ)には、エラー率があらかじめ設定された閾値以上となるAPIのみ属するようにしてもよい。
【0113】
つぎに、決定部603は、サブグループs1以外のサブグループs2,s3内の各々のAPIのレイテンシに基づいて、各サブグループs2,s3に属するAPIを更新する。具体的には、例えば、決定部603は、サブグループs2のレイテンシとサブグループs3のレイテンシとを足した合計レイテンシが最短となるように、各サブグループs2,s3に属するAPIを更新する。この際、決定部603は、サブグループs3よりもサブグループs2のレイテンシが長くなるように、各サブグループs2,s3に属するAPIを更新してもよい。
【0114】
各サブグループs2,s3のレイテンシは、各サブグループs2,s3に属する各々のAPIのレイテンシのうちの最長のレイテンシによって決まる。例えば、サブグループs2に属するAPI1,API3,API4のうちAPI1のレイテンシが最も長い場合、サブグループs2のレイテンシは、API1のレイテンシによって決まる。
【0115】
ここでは、サブグループs2とサブグループs3の合計レイテンシが最短となるように、API3とAPI5とAPI7がサブグループs2に分類され、API1とAPI4がサブグループs3に分類されている。また、サブグループs2のレイテンシ(遅)は、サブグループs3のレイテンシ(速)よりも長くなっている。
【0116】
そして、決定部603は、グループG1について、サブグループs1~s3のサブグループ間の順序関係に従って、同一サブグループ内のAPIを並列に実行しつつ、異なるサブグループ内のAPIを直列に実行する順序を決定する。ここでは、グループG1について、サブグループs1内のAPI2,API6,API8を並列に実行した後、サブグループs2内のAPI3,API5,API7を並列に実行し、その後、サブグループs3内のAPI1,API4を並列に実行する実行順序が決定される。
【0117】
これにより、グループG1内のAPI数が最大多重度を超えている場合に、グループG1内の各々のAPIのエラー率およびレイテンシを考慮して、新たなAPIを効率的に実行可能な実行順序を決定することができる。
【0118】
例えば、グループG1内でエラー率が高いAPIほど順序を先にすることで、エラー発生時の無駄な時間やコストを抑えることができる。また、サブグループs2とサブグループs3の合計レイテンシが最短となるように、各サブグループs1,s2に属するAPIを調整することで、実行時間の短縮化を図ることができる。また、サブグループs3よりもサブグループs2のレイテンシが遅くなるように調整することで、エラー発生時の無駄な時間やコストを抑えることができる。
【0119】
(複数のAPIの実行順序の出力例)
つぎに、
図11を用いて、複数のAPIの実行順序の出力例について説明する。ここでは、利用者端末201のディスプレイ406に表示される設計支援画面を例に挙げて、複数のAPIの実行順序の出力例について説明する。
【0120】
図11は、複数のAPIの実行順序の出力例を示す説明図である。
図11において、設計支援画面1100は、ユーザによって選択された複数のAPI(API1~API8,API11~API17,API101~API106)の実行順序を示す操作画面の一例である。各APIは、各APIを模したブロック(例えば、ブロック1101)によって表現されている。
【0121】
設計支援画面1100には、ユーザによって選択された複数のAPIを分類したグループG1~G3が表示されている。また、グループG1内のAPI1~API8を分類したサブグループs1~s3が表示されている。また、グループG2内のAPI11~API17を分類したサブグループs4~s6が表示されている。また、グループG3内のAPI101~API106を分類したサブグループs7,s8が表示されている。
【0122】
設計支援画面1100によれば、ユーザは、複数のAPI(API1~API8,API11~API17,API101~API106)をどのような順序で実行すれば、時間やコストを抑えて効率的に実行できるのかを判断することができる。なお、
図11の例では、図示を省略したが、API間の呼び出しの順序関係を表示することにしてもよい。
【0123】
例えば、設計支援画面1100において、
図4に示した入力装置407を用いたユーザの操作入力により、ボタンB1を選択すると、API間の呼び出しの順序関係を示す記号(例えば、矢印)が表示される。これにより、ユーザは、どのAPIとどのAPIとが呼び出しの順序関係があるのかを把握することができる。
【0124】
また、ユーザは、各グループ内のサブグループ間でのエラー率やレイテンシの大小関係が表示されるため、エラー率やレイテンシを考慮して順序が決められていることを把握することができる。ただし、エラー率やレイテンシの大小関係を表す表示は行わないことにしてもよい。また、各グループ内のサブグループを表す表示についても行わないことにしてもよい。
【0125】
また、設計支援画面1100において、ユーザの操作入力により、APIの実行順序を変更可能であってもよい。例えば、ドラッグアンドドロップ等により、API7を表すブロック1101をサブグループs2からサブグループs3に移動させることで、API7の実行順序を変更することができる。
【0126】
(実行履歴テーブル1200の記憶内容)
つぎに、
図12を用いて、サービス設計装置101が有する実行履歴テーブル1200の記憶内容について説明する。実行履歴テーブル1200は、例えば、メモリ302、ディスク304などの記憶装置により実現される。
【0127】
図12は、実行履歴テーブル1200の記憶内容の一例を示す説明図である。
図12において、実行履歴テーブル1200は、機能、APIの組み合わせ、実行時間および実行結果の成否のフィールドを有し、各フィールドに情報を設定することで、実行履歴情報1200-1~1200-7をレコードとして記憶する。
【0128】
ここで、機能は、複数のAPIにより実現される機能を示す。機能は、例えば、キーワードや文章によって表現される。APIの組み合わせは、機能を実現するためのAPIの組み合わせおよび実行順序を示す。
図12中、大文字のアルファベット(A,Bなど)は、APIを示す。実行時間は、複数のAPIの実行を開始してから、複数のAPIの実行が終了するまでに要する時間である(単位:秒)。なお、複数のAPIが複数回実行された場合は、実行時間の統計値(例えば、平均実行時間)が設定される。
【0129】
実行結果の成否は、複数のAPIの実行が成功したか否かを示す。実行結果の成否「OK」は、実行に成功したことを示す。実行結果の成否「NG」は、実行に失敗したことを示す。なお、複数のAPIが複数回実行された場合は、実行結果の成否の統計値(例えば、OKまたはNGの多いほう)が設定される。
【0130】
例えば、実行履歴情報1200-1は、機能αを実現するためのAPIの組み合わせの実行順序「P→Q」、実行時間「2[秒]」および実行結果「NG」を示す。
【0131】
例えば、サービス設計装置101は、機能の指定を受け付けたことに応じて、実行履歴テーブル1200を参照して、指定された機能を実現する複数のAPIの推奨結果情報を出力する。
【0132】
ここで、
図13を用いて、推奨結果情報の具体例について説明する。ここでは、サービス設計装置101が、利用者端末201から機能の指定を受け付けた場合を想定する。この場合、サービス設計装置101から出力された推奨結果情報は、例えば、利用者端末201のディスプレイ406に表示される。
【0133】
図13は、推奨結果情報の具体例を示す説明図である。
図13において、推奨結果情報1300は、機能βを実現する複数のAPIの推奨結果1301を示す。推奨結果1301では、機能βを実現する複数種類のAPIの組み合わせのうち、実行時間が短く、実行結果の成否が「OK」のものが上位に表示されている。
【0134】
推奨結果情報1300によれば、機能βを実現するにあたり、どのAPIを組み合わせて、どのような順番で実行すればよいのかを推薦することができる。例えば、ユーザは、機能βを実現するにあたり、複数のAPI「A,B,C」を「A→B→C」の順序で実行すれば、最も短い時間で実行に成功する可能性が高いと判断することができる。
【0135】
これにより、APIを使い慣れていないビジネスユーザであっても、ある機能を実現するために、どのようなAPIを組み合わせて、どのような順序で実行すればよいのかを容易に判断することが可能となる。
【0136】
(サービス設計装置101のサービス設計処理手順)
つぎに、
図14および
図15を用いて、サービス設計装置101のサービス設計処理手順について説明する。
【0137】
図14および
図15は、サービス設計装置101のサービス設計処理手順の一例を示すフローチャートである。
図14のフローチャートにおいて、まず、サービス設計装置101は、複数のAPIの選択を受け付けたか否かを判断する(ステップS1401)。
【0138】
ここで、サービス設計装置101は複数のAPIの選択を受け付けるのを待つ(ステップS1401:No)。そして、サービス設計装置101は、複数のAPIの選択を受け付けた場合(ステップS1401:Yes)、選択された複数のAPIについて、APIの全ペア(順列)を作成する(ステップS1402)。
【0139】
なお、各ペアは、順序関係を有する2つのAPIである。例えば、「API1→API2」と「API2→API1」は異なるペアとして作成される。
【0140】
つぎに、サービス設計装置101は、作成した全ペアのうち選択されていない未選択のペアを選択する(ステップS1403)。そして、サービス設計装置101は、選択したペアについて、ユーザによって指定された呼び出しの順序関係があるか否かを判断する(ステップS1404)。
【0141】
ここで、呼び出しの順序関係がある場合(ステップS1404:Yes)、サービス設計装置101は、ステップS1407に移行する。一方、呼び出しの順序関係がない場合(ステップS1404:No)、サービス設計装置101は、APIリポジトリ220を参照して、選択したペアについて、APIの関係性分析を行う(ステップS1405)。
【0142】
なお、APIの関係性分析とは、APIの仕様および使用履歴の少なくともいずれかの情報に基づいて、API間の呼び出しの順序関係を特定する処理である。例えば、サービス設計装置101は、選択したペア(第1のAPI→第2のAPI)について、第1のAPIのレスポンス項目のフォーマットと、第2のAPIのリクエスト項目のフォーマットとが一致する場合、呼び出しの順序関係があると判断する。
【0143】
つぎに、サービス設計装置101は、選択したペアについて、ユーザによって指定された呼び出しの順序関係が特定されたか否かを判断する(ステップS1406)。ここで、呼び出しの順序関係が特定されなかった場合(ステップS1406:No)、サービス設計装置101は、ステップS1408に移行する。
【0144】
一方、呼び出しの順序関係が特定された場合(ステップS1406:Yes)、サービス設計装置101は、選択したペアを関係あり集合に登録する(ステップS1407)。そして、サービス設計装置101は、作成した全ペアのうち選択されていない未選択のペアがあるか否かを判断する(ステップS1408)。
【0145】
ここで、未選択のペアがある場合(ステップS1408:Yes)、サービス設計装置101は、ステップS1403に戻る。一方、未選択のペアがない場合には(ステップS1408:No)、サービス設計装置101は、
図15に示すステップS1501に移行する。
【0146】
図15のフローチャートにおいて、まず、サービス設計装置101は、関係あり集合に登録されたペアに基づいて、選択された複数のAPIをグループG1~Gnに分類する(ステップS1501)。例えば、サービス設計装置101は、呼び出しの順序関係があるAPI同士を異なるグループに分類しつつ、呼び出しの順序関係がないAPI同士を同一グループに分類する。
【0147】
つぎに、サービス設計装置101は、グループGiの「i」を「i=1」として(ステップS1502)、グループGiを選択する(ステップS1503)。そして、サービス設計装置101は、選択したグループGi内のAPI数が最大多重度を超えるか否かを判断する(ステップS1504)。
【0148】
ここで、最大多重度を超えない場合(ステップS1504:No)、サービス設計装置101は、ステップS1508に移行する。一方、最大多重度を超える場合(ステップS1504:Yes)、サービス設計装置101は、グループGi内のAPI数と最大多重度とに基づいて、サブグループの個数を決定する(ステップS1505)。
【0149】
なお、サブグループの個数は、例えば、グループGi内のAPI数を最大多重度で割った値(ただし、小数点切り上げ)とする。一例として、グループGi内のAPI数を「10」とし、最大多重度を「3」とすると、サブグループの個数は「4」となる。
【0150】
つぎに、サービス設計装置101は、APIリポジトリ220を参照して、グループGi内のAPIのうち、エラー率の高いAPIを、決定した個数分のサブグループの先頭のサブグループに入れる(ステップS1506)。この際、サービス設計装置101は、エラー率が閾値以上のAPIを先頭のサブグループに入れることにしてもよい。
【0151】
そして、サービス設計装置101は、APIリポジトリ220を参照して、グループGi内の残余のAPIについて、レイテンシの遅いAPIから順々に次のサブグループに入れる(ステップS1507)。この結果、グループGi内のAPIが、サブグループs1~smに分類される。
【0152】
つぎに、サービス設計装置101は、グループGiの「i」をインクリメントして(ステップS1508)、「i」が「n」よりも大きくなったか否かを判断する(ステップS1509)。ここで、「i」が「n」以下の場合(ステップS1509:No)、サービス設計装置101は、ステップS1503に戻る。
【0153】
一方、「i」が「n」より大きくなった場合(ステップS1509:Yes)、サービス設計装置101は、グループG1~GnとグループGi内のサブグループs1~smとに基づいて、複数のAPIの実行順序を決定する(ステップS1510)。そして、サービス設計装置101は、決定した複数のAPIの実行順序結果を出力して(ステップS1511)、本フローチャートによる一連の処理を終了する。
【0154】
これにより、複数のAPIを組み合わせて新たなサービス(新たなAPI)を設計するにあたり、複数のAPIをどのような順序で実行すれば、時間やコストを抑えて効率的に実行できるのかを判断可能な情報をユーザに提供することができる。
【0155】
なお、選択された複数のAPIのうち、いずれのAPIとも呼び出しの順序関係がないAPIが存在する場合がある。この場合、サービス設計装置101は、例えば、ステップS1501の処理に先立って、いずれのAPIとも呼び出しの順序関係がないAPIについて、他のAPIとの呼び出しの順序関係を、ユーザに問い合わせることにしてもよい。
【0156】
また、サービス設計装置101は、いずれのAPIとも呼び出しの順序関係がないAPIについて、グループG1~Gnよりも前(つまり、先頭)、あるいは、グループG1~Gnよりも後(つまり、末尾)に実行する順序に決定してもよい。また、いずれのAPIとも呼び出しの順序関係がないAPIが複数存在する場合は、サービス設計装置101は、あらかじめ設定された実行優先度に基づいて、それらAPIの実行順序を決定することにしてもよい。
【0157】
また、ステップS1404において、サービス設計装置101は、選択したペアについて、APIの提供者によって指定された呼び出しの順序関係があるか否かを判断することにしてもよい。
【0158】
以上説明したように、実施の形態にかかるサービス設計装置101によれば、複数のAPIの選択を受け付け、選択された複数のAPIの各々のAPIの仕様および使用履歴の少なくともいずれかの情報に基づいて、複数のAPIに含まれるAPI間の呼び出しの順序関係を特定することができる。APIは、例えば、Web APIである。そして、サービス設計装置101によれば、特定したAPI間の呼び出しの順序関係に基づいて、複数のAPIの実行順序を決定し、決定した複数のAPIの実行順序を出力することができる。
【0159】
これにより、複数のAPIを組み合わせて新たなAPIを作成するにあたり、API間の呼び出しの順序関係や並列性を考慮したAPIの実行順序を導出することができる。そのため、複数のAPIの適切な実行順序を容易に特定でき、サービスの設計作業にかかる作業時間や作業負荷を削減して、生産性の向上につなげることができる。
【0160】
また、サービス設計装置101によれば、さらに、並列実行可能なAPIの上限数である最大多重度に基づいて、複数のAPIの実行順序を決定することができる。
【0161】
これにより、APIのプロトコルやハードウェアリソースによって並列度に制限がある場合に、呼び出しの順序関係がないAPI同士を、並列実行可能なAPIの上限数を超えないように並列に実行する順序を決定することができる。
【0162】
また、サービス設計装置101によれば、さらに、各々のAPIのエラー率に基づいて、複数のAPIの実行順序を決定することができる。
【0163】
これにより、例えば、エラー率の高いAPIほど順序を先にして、エラー発生時の無駄な時間やコストを抑えることが可能な実行順序を導出することができる。
【0164】
また、サービス設計装置101によれば、複数のAPIにより実現される機能と対応付けて、決定した複数のAPIの実行順序を出力することができる。また、サービス設計装置101によれば、機能の指定を受け付けたことに応じて、指定された機能に対応する複数のAPIの実行順序を特定する情報を出力することができる。
【0165】
これにより、機能と対応付けて、その機能を実現する複数のAPIと、複数のAPIの実行順序を記録することができる。また、ユーザからの機能の指定に応じて、その機能を実現するにあたり、どのAPIを組み合わせて、どのような順番で実行すればよいのかを判断可能な情報を提供することができる。
【0166】
また、サービス設計装置101によれば、複数のAPIにより実現される機能と対応付けて、決定した複数のAPIの実行順序と、当該実行順序に従って複数のAPIを実行した場合の実行時間および実行結果の成否を出力することができる。また、サービス設計装置101によれば、機能の指定を受け付けたことに応じて、指定された機能に対応する複数のAPIの実行順序と、当該実行順序に従って複数のAPIを実行した場合の実行時間および実行結果の成否を特定する情報を出力することができる。
【0167】
これにより、機能と対応付けて、その機能を実現する複数のAPIと、複数のAPIの実行順序と、その実行順序で複数のAPIを実行した場合の実行時間および実行結果の成否を記録することができる。また、ユーザからの機能の指定に応じて、その機能を実現するにあたり、どのAPIを組み合わせて、どのような順番で実行すれば、時間やコストを抑えることができるのかを判断可能な情報を提供することができる。
【0168】
また、サービス設計装置101によれば、各々のAPIのリクエスト項目およびレスポンス項目のフォーマットに基づいて、複数のAPIに含まれるAPI間の呼び出しの順序関係を特定することができる。
【0169】
これにより、APIのリクエストとレスポンスの仕様から導出される関係性から、API間の呼び出しの順序関係を特定することができる。
【0170】
また、サービス設計装置101によれば、各々のAPIの目的項目に基づいて、複数のAPIに含まれるAPI間の呼び出しの順序関係を特定することができる。
【0171】
これにより、APIの目的から判断されるAPI同士の依存関係をもとに、API間の呼び出しの順序関係を特定することができる。
【0172】
また、サービス設計装置101によれば、複数のAPIのうち第1のAPIと第2のAPIとが組み合わせて使用された際の実行順序に基づいて、第1のAPIと第2のAPIとの呼び出しの順序関係を特定することができる。
【0173】
これにより、既存のサービスやアプリケーションなどで使用されているAPIの実行順序をもとに、API間の呼び出しの順序関係を特定することができる。
【0174】
また、サービス設計装置101によれば、特定したAPI間の呼び出しの順序関係に基づいて、複数のAPIをグループG1~Gnに分類することができる。また、サービス設計装置101によれば、分類したグループG1~GnのいずれかのグループGi内のAPI数が最大多重度を超える場合、グループGi内の各々のAPIのエラー率に基づいて、グループGi内のAPIを、各サブグループ内のAPI数が最大多重度を超えないように、サブグループs1~smに分類することができる。そして、サービス設計装置101によれば、分類したグループG1~GnとグループGi内のサブグループs1~smとに基づいて、複数のAPIの実行順序を決定することができる。
【0175】
これにより、グループGi内のAPI数が最大多重度を超えている場合に、グループGi内の各々のAPIのエラー率を考慮して、新たなAPIを効率的に実行可能な実行順序を決定することができる。
【0176】
また、サービス設計装置101によれば、グループGi内のAPI数が最大多重度を超える場合、グループGi内の各々のAPIのエラー率およびレイテンシに基づいて、前記いずれかのグループ内のAPIを、各サブグループ内のAPI数が最大多重度を超えないように、サブグループs1~smに分類することができる。
【0177】
これにより、グループGi内のAPI数が最大多重度を超えている場合に、グループGi内の各々のAPIのエラー率およびレイテンシを考慮して、サービス(新たなAPI)を効率的に実行可能な実行順序を決定することができる。
【0178】
これらのことから、サービス設計装置101によれば、ユーザが組み合わせたい複数のAPIを選択するだけで、複数のAPIの適切な実行順序を特定可能となり、容易に高品質なAPIサービスを設計することができる。
【0179】
なお、本実施の形態で説明したサービス設計方法は、あらかじめ用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本サービス設計プログラムは、ハードディスク、フレキシブルディスク、CD-ROM、DVD、USBメモリ等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また、本サービス設計プログラムは、インターネット等のネットワークを介して配布してもよい。
【0180】
また、本実施の形態で説明したサービス設計装置101は、スタンダードセルやストラクチャードASIC(Application Specific Integrated Circuit)などの特定用途向けICやFPGAなどのPLD(Programmable Logic Device)によっても実現することができる。
【0181】
上述した実施の形態に関し、さらに以下の付記を開示する。
【0182】
(付記1)複数のAPIの選択を受け付ける受付部と、
選択された前記複数のAPIの各々のAPIの仕様および使用履歴の少なくともいずれかの情報に基づいて、前記複数のAPIに含まれるAPI間の呼び出しの順序関係を特定する特定部と、
前記特定部によって特定された前記API間の呼び出しの順序関係に基づいて、前記複数のAPIの実行順序を決定する決定部と、
を有することを特徴とするサービス設計装置。
【0183】
(付記2)前記決定部は、
さらに、並列実行可能なAPIの上限数である最大多重度に基づいて、前記複数のAPIの実行順序を決定する、ことを特徴とする付記1に記載のサービス設計装置。
【0184】
(付記3)前記決定部は、
さらに、前記各々のAPIを実行した際のエラー率に基づいて、前記複数のAPIの実行順序を決定する、ことを特徴とする付記1に記載のサービス設計装置。
【0185】
(付記4)前記決定部によって決定された前記複数のAPIの実行順序を出力する出力部をさらに有することを特徴とする付記1に記載のサービス設計装置。
【0186】
(付記5)前記出力部は、
前記複数のAPIにより実現される機能と対応付けて、決定された前記複数のAPIの実行順序を出力する、ことを特徴とする付記4に記載のサービス設計装置。
【0187】
(付記6)前記出力部は、
前記複数のAPIにより実現される機能と対応付けて、決定された前記複数のAPIの実行順序と、当該実行順序に従って前記複数のAPIを実行した場合の実行時間および実行結果の成否を出力する、ことを特徴とする付記4に記載のサービス設計装置。
【0188】
(付記7)前記APIは、Web APIである、ことを特徴とする付記1に記載のサービス設計装置。
【0189】
(付記8)前記特定部は、
前記各々のAPIのリクエスト項目およびレスポンス項目のフォーマットに基づいて、前記複数のAPIに含まれるAPI間の呼び出しの順序関係を特定する、ことを特徴とする付記1に記載のサービス設計装置。
【0190】
(付記9)前記特定部は、
前記各々のAPIの目的項目に基づいて、前記複数のAPIに含まれるAPI間の呼び出しの順序関係を特定する、ことを特徴とする付記1に記載のサービス設計装置。
【0191】
(付記10)前記特定部は、
前記複数のAPIのうち第1のAPIと第2のAPIとが組み合わせて使用された際の実行順序に基づいて、前記第1のAPIと前記第2のAPIとの呼び出しの順序関係を特定する、ことを特徴とする付記1に記載のサービス設計装置。
【0192】
(付記11)前記決定部は、
特定された前記API間の呼び出しの順序関係に基づいて、前記複数のAPIを複数のグループに分類し、
分類した前記複数のグループのいずれかのグループ内のAPI数が、並列実行可能なAPIの上限数である最大多重度を超える場合、前記いずれかのグループ内の各々のAPIのエラー率に基づいて、前記いずれかのグループ内のAPIを、各サブグループ内のAPI数が前記最大多重度を超えないように複数のサブグループに分類し、
前記複数のグループと、前記複数のサブグループとに基づいて、前記複数のAPIの実行順序を決定する、ことを特徴とする付記1に記載のサービス設計装置。
【0193】
(付記12)前記決定部は、
分類した前記複数のグループのいずれかのグループ内のAPI数が前記最大多重度を超える場合、前記いずれかのグループ内の各々のAPIのエラー率およびレイテンシに基づいて、前記いずれかのグループ内のAPIを、各サブグループ内のAPI数が前記最大多重度を超えないように複数のサブグループに分類する、ことを特徴とする付記11に記載のサービス設計装置。
【0194】
(付記13)複数のAPIの選択を受け付け、
選択された前記複数のAPIの各々のAPIの仕様および使用履歴の少なくともいずれかの情報に基づいて、前記複数のAPIに含まれるAPI間の呼び出しの順序関係を特定し、
特定された前記API間の呼び出しの順序関係に基づいて、前記複数のAPIの実行順序を決定する、
処理をコンピュータが実行することを特徴とするサービス設計方法。
【0195】
(付記14)複数のAPIの選択を受け付け、
選択された前記複数のAPIの各々のAPIの仕様および使用履歴の少なくともいずれかの情報に基づいて、前記複数のAPIに含まれるAPI間の呼び出しの順序関係を特定し、
特定された前記API間の呼び出しの順序関係に基づいて、前記複数のAPIの実行順序を決定する、
処理をコンピュータに実行させることを特徴とするサービス設計プログラム。
【符号の説明】
【0196】
101 サービス設計装置
110 記憶部
200 情報処理システム
201 利用者端末
210 ネットワーク
220 APIリポジトリ
300,400 バス
301,401 CPU
302,402 メモリ
303,403 ディスクドライブ
304,404 ディスク
305,405 通信I/F
306,408 可搬型記録媒体I/F
307,409 可搬型記録媒体
406 ディスプレイ
407 入力装置
601 受付部
602 特定部
603 決定部
604 出力部
605 実行部
1100 設計支援画面
1200 実行履歴テーブル
1300 推奨結果情報