(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023183969
(43)【公開日】2023-12-28
(54)【発明の名称】計算資源の効率的な制御及び使用のためのシステム、方法、プログラム及び情報処理装置
(51)【国際特許分類】
G06F 11/36 20060101AFI20231221BHJP
G06F 9/455 20180101ALI20231221BHJP
【FI】
G06F11/36 164
G06F9/455 150
【審査請求】有
【請求項の数】11
【出願形態】OL
(21)【出願番号】P 2022097815
(22)【出願日】2022-06-17
(11)【特許番号】
(45)【特許公報発行日】2023-08-18
(71)【出願人】
【識別番号】511249637
【氏名又は名称】株式会社Cygames
(74)【代理人】
【識別番号】100094569
【弁理士】
【氏名又は名称】田中 伸一郎
(74)【代理人】
【識別番号】100109070
【弁理士】
【氏名又は名称】須田 洋之
(74)【代理人】
【識別番号】100067013
【弁理士】
【氏名又は名称】大塚 文昭
(74)【代理人】
【識別番号】100086771
【弁理士】
【氏名又は名称】西島 孝喜
(74)【代理人】
【識別番号】100120525
【弁理士】
【氏名又は名称】近藤 直樹
(74)【代理人】
【識別番号】100139712
【弁理士】
【氏名又は名称】那須 威夫
(72)【発明者】
【氏名】倉林 修一
【テーマコード(参考)】
5B042
【Fターム(参考)】
5B042GA22
5B042HH11
(57)【要約】
【課題】システム内の計算資源の効率的な制御及び使用のためのシステム等を提供すること。
【解決手段】冪等参照透過性式を示す文字列の識別情報及び当該冪等参照透過性式のデータ型に対応付けて、当該冪等参照透過性式に基づく処理の実行結果としての計算資源の識別情報を記憶し、システムに対する実行命令に基づいて実行対象とされた冪等参照透過性式を示す文字列の識別情報及び当該冪等参照透過性式のデータ型を決定し、実行対象の冪等参照透過性式を示す文字列の識別情報及び当該冪等参照透過性式のデータ型に対応付けられた計算資源の識別情報を記憶された計算資源の識別情報から検索し、検索によって前記記憶された計算資源の識別情報から計算資源の識別情報が特定された場合、当該特定された識別情報によって識別される計算資源を実行対象の冪等参照透過性式に基づく処理の実行結果として用いることを決定する、ことを特徴とするシステム。
【選択図】
図1
【特許請求の範囲】
【請求項1】
冪等性及び参照透過性を有する冪等参照透過性式に基づく処理を実行するシステムであって、
冪等参照透過性式を示す文字列の識別情報及び当該冪等参照透過性式のデータ型に対応付けて、当該冪等参照透過性式に基づく処理の実行結果としての計算資源の識別情報を記憶し、
前記システムに対する実行命令に基づいて実行対象とされた冪等参照透過性式を示す文字列の識別情報及び当該冪等参照透過性式のデータ型を決定し、
前記実行対象の冪等参照透過性式を示す文字列の識別情報及び当該冪等参照透過性式のデータ型に対応付けられた計算資源の識別情報を前記記憶された計算資源の識別情報から検索し、
前記検索によって前記記憶された計算資源の識別情報から計算資源の識別情報が特定された場合、当該特定された識別情報によって識別される計算資源を前記実行対象の冪等参照透過性式に基づく処理の実行結果として用いることを決定する、
ことを特徴とするシステム。
【請求項2】
前記実行対象の冪等参照透過性式及び他の実行対象の冪等参照透過性式の組に基づく処理を実行する場合、前記検索によって前記記憶された計算資源の識別情報から計算資源の識別情報が特定されると、前記実行対象の冪等参照透過性式に基づく処理の実行結果として当該特定された識別情報によって識別される計算資源を用いて、他の冪等参照透過性式に基づく処理を実行する、ことを特徴とする請求項1に記載のシステム。
【請求項3】
前記実行対象の冪等参照透過性式を示す文字列の識別情報及び当該冪等参照透過性式のデータ型に対応付けられた計算資源の識別情報が前記記憶された計算資源の識別情報から特定されなかった場合、
前記実行対象の冪等参照透過性式に基づく処理を実行し、
前記実行対象の冪等参照透過性式を示す文字列の識別情報及び当該冪等参照透過性式のデータ型に前記決定された計算資源の識別情報を対応付けて記憶する、
ことを特徴とする、請求項1に記載のシステム。
【請求項4】
前記冪等参照透過性式を示す文字列の識別情報は、当該冪等参照透過性式の正規化された文字列に基づいて決定されることを特徴とする、請求項1に記載のシステム。
【請求項5】
前記冪等参照透過性式を示す文字列の識別情報は当該文字列のハッシュ値であることを特徴とする、請求項1に記載のシステム。
【請求項6】
前記冪等参照透過性式に基づく処理は、仮想マシンイメージ作成処理、仮想マシンインスタンス起動処理、仮想マシンイメージ修正処理、仮想マシンイメージ複製処理、コンテナ起動処理、及び、アプリケーションによる記憶装置への非破壊的なデータ書き込み処理のうちの少なくとも一つを含むことを特徴とする請求項1に記載のシステム。
【請求項7】
前記計算資源は、前記システムにおいて動作中のプロセス、当該プロセスを実行中のプロセッサ、当該プロセスに関連する情報を記憶するメモリ、及び実行処理の結果を記憶したメモリの少なくとも一つを含むことを特徴とする請求項1に記載のシステム。
【請求項8】
前記プロセスは仮想マシンインスタンスのプロセス及びコンテナのためのプロセスのうちの少なくとも一つを含むことを特徴とする請求項7項に記載のシステム。
【請求項9】
冪等参照透過性式に基づく処理をコンピュータによって実行する方法であって、
冪等参照透過性式を示す文字列の識別情報及び当該冪等参照透過性式のデータ型に対応付けて、当該冪等参照透過性式に基づく処理の実行結果としての計算資源の識別情報を記憶する段階と、
前記システムに対する実行命令に基づいて実行対象とされた冪等参照透過性式を示す文字列の識別情報及び当該冪等参照透過性式のデータ型を決定する段階と、
前記実行対象の冪等参照透過性式を示す文字列の識別情報及び当該冪等参照透過性式のデータ型に対応付けられた計算資源の識別情報を前記記憶された計算資源の識別情報から検索する段階と、
前記検索によって前記記憶された計算資源の識別情報から計算資源の識別情報が特定された場合、当該特定された識別情報によって識別される計算資源を前記実行対象の冪等参照透過性式に基づく処理の実行結果として用いることを決定する段階と、
を含むことを特徴とする方法。
【請求項10】
前記請求項9に記載の方法をコンピュータによって実行させるためのプログラム。
【請求項11】
冪等参照透過性式に基づく処理を実行する情報処理装置であって、
冪等参照透過性式を示す文字列の識別情報及び当該冪等参照透過性式のデータ型に対応付けて、当該冪等参照透過性式に基づく処理の実行結果としての計算資源の識別情報を記憶し、
前記システムに対する実行命令に基づいて実行対象とされた冪等参照透過性式を示す文字列の識別情報及び当該冪等参照透過性式のデータ型を決定し、
前記実行対象の冪等参照透過性式を示す文字列の識別情報及び当該冪等参照透過性式のデータ型に対応付けられた計算資源の識別情報を前記記憶された計算資源の識別情報から検索し、
前記検索によって前記記憶された計算資源の識別情報から計算資源の識別情報が特定された場合、当該特定された識別情報によって識別される計算資源を前記実行対象の冪等参照透過性式に基づく処理の実行結果として用いることを決定する、情報処理装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、システム内の計算資源の効率的な制御及び使用のためのシステム、方法、プログラム及び情報処理装置に関する。
【背景技術】
【0002】
近年、スマートフォンやPC等の汎用的な電子装置上で動作し、オープンなネットワークを通じてサーバと通信するオンラインゲームを含む多種多様なサービスを提供するシステムが広く普及している。このようなシステムの開発においては、システムを機能させるためのプログラム等の挙動を検証する必要がある。他のユーザとのバトルによる対戦のようなゲームを楽しませるオンラインゲームにおいて、カードのようなゲーム媒体が多数用意され、そこからプレイヤによって選択された複数のゲーム媒体を含むデッキを用いてバトルを行う形式が知られている。バトルにおいて用いられるデッキの組合せによって、不具合が発生したり、勝率が偏ったりする可能性があるため、デッキの組合せを考慮したソフトウェアとしてのゲームプログラム及びシステムの挙動を検証する必要がある。
【0003】
しかしながら、カードの種類が多数に及ぶ場合はその組み合わせによるデッキの種類は膨大な数となる。さらに、ゲームサービスを継続的に提供し続けるオンラインゲームは、ユーザの好趣性を維持させるために新たなカードが追加されていくことがある。このような場合には、新たなカードを追加することによるゲームプログラム及びシステムの挙動への影響等を検証するために大量の計算資源を用いて長時間にわたる試験を行う必要がある。
【先行技術文献】
【特許文献】
【0004】
【発明の概要】
【発明が解決しようとする課題】
【0005】
特許文献1は、ゲームプログラム(アプリ)を実環境に近い状態で、多数のデッキの組合せに基づくゲームプログラムの挙動の妥当性を網羅的に、サーバサイドで高速・並列に検証する仮想化技術を開示する。しかしながら、特許文献1は、ゲームプログラム挙動の検証試験を行う度に、検証システムにおいてゲームプログラムの試験環境を構築する必要があり、計算資源の効率的な制御及び利用が図れているとはいえない場合があった。
【課題を解決するための手段】
【0006】
1.本発明は上記の課題に鑑みてなされたものであり、以下のような特徴を有している。すなわち、本発明の一実施態様におけるシステムは、冪等性及び参照透過性を有する冪等参照透過性式に基づく処理を実行するシステムであって、冪等参照透過性式を示す文字列の識別情報及び当該冪等参照透過性式のデータ型に対応付けて、当該冪等参照透過性式に基づく処理の実行結果としての計算資源の識別情報を記憶し、前記システムに対する実行命令に基づいて実行対象とされた冪等参照透過性式を示す文字列の識別情報及び当該冪等参照透過性式のデータ型を決定し、前記実行対象の冪等参照透過性式を示す文字列の識別情報及び当該冪等参照透過性式のデータ型に対応付けられた計算資源の識別情報を前記記憶された計算資源の識別情報から検索し、前記検索によって前記記憶された計算資源の識別情報から計算資源の識別情報が特定された場合、当該特定された識別情報によって識別される計算資源を前記実行対象の冪等参照透過性式に基づく処理の実行結果として用いることを決定する。
【0007】
2.1項のシステムにおいて、前記実行対象の冪等参照透過性式及び他の実行対象の冪等参照透過性式の組に基づく処理を実行する場合、前記検索によって前記記憶された計算資源の識別情報から計算資源の識別情報が特定されると、前記実行対象の冪等参照透過性式に基づく処理の実行結果として当該特定された識別情報によって識別される計算資源を用いて、他の冪等参照透過性式に基づく処理を実行するようにしてもよい。
【0008】
3.1項又は2項のシステムにおいて、前記実行対象の冪等参照透過性式を示す文字列の識別情報及び当該冪等参照透過性式のデータ型に対応付けられた計算資源の識別情報が前記記憶された計算資源の識別情報から特定されなかった場合、前記実行対象の冪等参照透過性式に基づく処理を実行し、前記実行対象の冪等参照透過性式を示す文字列の識別情報及び当該冪等参照透過性式のデータ型に前記決定された計算資源の識別情報を対応付けて記憶するようにしてもよい。
【0009】
4.1~3項のいずれかのシステムにおいて、前記冪等参照透過性式を示す文字列の識別情報は、当該冪等参照透過性式の正規化された文字列に基づいて決定されるようにすることができる。
【0010】
5.1~4項のいずれかのシステムにおいて、前記冪等参照透過性式を示す文字列の識別情報は当該文字列のハッシュ値としてもよい。
【0011】
6.1~5項のいずれかのシステムにおいて、前記冪等参照透過性式に基づく処理は、仮想マシンイメージ作成処理、仮想マシンインスタンス起動処理、仮想マシンイメージ修正処理、仮想マシンイメージ複製処理、コンテナ起動処理、及び、アプリケーションによる記憶装置への非破壊的なデータ書き込み処理のうちの少なくとも一つを含むことができる。
【0012】
7.1~6項のいずれかのシステムにおいて、前記計算資源は、前記システムにおいて動作中のプロセス、当該プロセスを実行中のプロセッサ、当該プロセスに関連する情報を記憶するメモリ、及び実行処理の結果を記憶したメモリの少なくとも一つを含むことができる。
【0013】
8.7項のいずれかのシステムにおいて、プロセスは仮想マシンインスタンスのプロセス及びコンテナのプロセスのうちの少なくとも一つを含むようにしてもよい。
【0014】
9.本発明の一実施態様における方法は、冪等参照透過性式に基づく処理をコンピュータによって実行する方法であって、冪等参照透過性式を示す文字列の識別情報及び当該冪等参照透過性式のデータ型に対応付けて、当該冪等参照透過性式に基づく処理の実行結果としての計算資源の識別情報を記憶する段階と、前記システムに対する実行命令に基づいて実行対象とされた冪等参照透過性式を示す文字列の識別情報及び当該冪等参照透過性式のデータ型を決定する段階と、前記実行対象の冪等参照透過性式を示す文字列の識別情報及び当該冪等参照透過性式のデータ型に対応付けられた計算資源の識別情報を前記記憶された計算資源の識別情報から検索する段階と、前記検索によって前記記憶された計算資源の識別情報から計算資源の識別情報が特定された場合、当該特定された識別情報によって識別される計算資源を前記実行対象の冪等参照透過性式に基づく処理の実行結果として用いることを決定する段階と、を含む。
【0015】
10.本発明の一実施態様におけるプログラムは、9項に記載の方法をコンピュータによって実行させるものとすることができる。
【0016】
11.本発明の一実施態様における情報処理装置は、冪等参照透過性式に基づく処理を実行する情報処理装置であって、冪等参照透過性式を示す文字列の識別情報及び当該冪等参照透過性式のデータ型に対応付けて、当該冪等参照透過性式に基づく処理の実行結果としての計算資源の識別情報を記憶し、前記システムに対する実行命令に基づいて実行対象とされた冪等参照透過性式を示す文字列の識別情報及び当該冪等参照透過性式のデータ型を決定し、前記実行対象の冪等参照透過性式を示す文字列の識別情報及び当該冪等参照透過性式のデータ型に対応付けられた計算資源の識別情報を前記記憶された計算資源の識別情報から検索し、前記検索によって前記記憶された計算資源の識別情報から計算資源の識別情報が特定された場合、当該特定された識別情報によって識別される計算資源を前記実行対象の冪等参照透過性式に基づく処理の実行結果として用いることを決定する。
【発明の効果】
【0017】
本発明によれば、プログラムやシステムの検証を行うためにシステム内の計算資源を効率的に制御及び利用することが可能となる。
【図面の簡単な説明】
【0018】
【
図1】本発明の一実施形態に係るシステムの全体構成である。
【
図2】本発明の一実施形態に係るシステムのハードウェア構成図である。
【
図3】本発明の一実施形態に係るシステムの機能ブロック図である。
【
図4】本発明の一実施形態に係る情報処理を示すフローチャートである。
【
図5】本発明の一実施形態に係るシステムの動作概念図である。
【
図6】本発明の第1の実施例の計算資源の再利用を示す概念図である。
【
図7】本発明の第2の実施例の計算資源の再利用を示す概念図である。
【
図8】本発明の第3の実施例の計算資源の再利用を示す概念図である。
【
図9】本発明の第4の実施例の計算資源の再利用を示す概念図である。
【発明を実施するための形態】
【0019】
本発明の一つの実施形態においては、クライアント・アプリを含めたゲームサービス全体の複製環境としてのシステムを作成し、その複製環境システムを用いたシミュレーションによりアプリの自動デバッグやKPI(Key Performance Indicator)算出を行うシステムを用いることとする。ゲームシステムに限らず、検証が必要ないかなるシステムにおいても用いることができる。本実施形態においては、クラウド上の仮想マシン、コンテナ、ゲームアプリ及び分散ストレージのそれぞれを制御する処理を、冪等参照透過性式によって記述されたプログラムを用いて実装する。
【0020】
冪等参照透過性式とは、所定の式を繰り返し評価(実行)しても、必ず等しい結果となる冪等性、及び、所定の式に同じ引数を与えた場合、必ず同じ結果を返すという参照透過性の二つの特徴を有する式である。例えば、関数型言語式は冪等参照透過性式の一例である。本明細書においては、冪等参照透過性式の意味で関数型言語式ということがある。本実施形態においては、関数型言語式を用いて記述される関数型プログラミング言語によって記載されたプログラムを用いることとする。
【0021】
式とは、システムにおいて実行される機能を示す最小単位である関数を呼び出す式とする。関数は予め定められた名称を持つ。後述するとおり、本実施形態においては、例えば、define関数、instantiate関数、launch関数、apply関数、preprocess関数、postprocess関数などが定義されている。apply関数は、その内部でゲームにおける特定のプレイの実行を行うexec関数を実行しており、このexec関数も関数として扱われるものとする。
【0022】
関数型プログラミング言語は、参照透過性と冪等性を持つ演算の繰り返しとしてデバッグを含む自動検証のプロセスをモデル化し、ゲームシステムの挙動を「関数適用の列」として定義できるため、任意の関数適用の際にゲーム環境全体や一部を一時停止し、検証用スナップショットとして保存し、デバッグやKPI産出に用いることができる。
【0023】
通常のプログラミング言語処理系では、プログラミング言語の自由度が高いため、同値性を持つ式を見つけ出すためにはデータフロー解析を行う必要があり、高コストであった。大域的値番号付けは比較的低コストに式の同値性を検出することができるため、広くコンパイラに採用されているが、仮想マシン生成やクラウドリソースの管理などの大きな粒度の式の同値性を判定することはできない。従って、従来技術では、クラウドの資源管理は、コンパイラのデータフロー解析に頼らずに、プログラマが独自のキャッシュ機構を実装することが一般的であった。
【0024】
本実施形態においては、クラウドの構成管理を関数型言語のパラダイムで指定するプログラミング言語において、当該プログラミング言語を条件分岐・再帰・繰り返し等の制御構造を一切含まない、関数の定義と呼び出しのみのツリー構造としてモデル化しており、作成された計算資源が変更されずに保持されるものであることを前提として、1)等価な演算式に同一の文字列表現を与えること、2)クラウドを構成するためのプログラムの式の文字列表現の識別情報と、式のデータ型、そして、クラウド上のリソースの識別子の三つ組を一意に紐づける機能を提供すること、3)複数のプログラム(クラウドを構成するためのプログラム)が、同じ識別情報の式を含む場合、「参照透過性」の原理により、その式の値が過去に評価されている場合は再利用すること、により、クラウドにおける大局的な計算資源(リソース)の再利用を実現する。
【0025】
本実施形態においては一度生成されたクラウド上のリソースに対しては、明示的なリソースの削除/更新操作といった破壊的操作は存在せず、全てのリソースを都度作成し、不要になったときに削除する。すなわち、クラウド上の計算資源は作成されて以降、不可変の(イミュータブルな)リソースとして扱われる。これにより、クラウド資源の状態変化を考慮することなく、クラウド上での仮想マシンの複製、修正、起動、コンテナのデプロイ、クライアント・アプリの実行などの結果としてのリソース(計算資源)を、識別情報(ID)として参照できる。
【0026】
等価な演算式に同一の文字列表現を与えるために、プログラムの関数呼び出しのツリー構造上のプログラム記述順序を正規化することができる。また、等価の演算式に同一の識別情報を与えるためにプログラムを表現する文字列のハッシュ値を算出して、これを識別情報として用いることができる。
【0027】
以下、図面を参照して本実施形態を説明する。本実施形態に係るシステム100は、
図1に示すように、ネットワーク150を介して接続された制御サーバ110、1以上の処理実行サーバ120、1以上のストレージ130及び1以上の式入力端末140を備えるシステムによって実現することができる。本実施形態において、制御サーバ110、処理実行サーバ120及びストレージ130はクラウド型のサーバ及び分散型ストレージとし、式入力端末140からインターネットであるネットワーク150を介してアクセス可能とするが、オンプレミス型のサーバ及びストレージとしてもよい。
【0028】
本実施形態における制御サーバ110、処理実行サーバ120及び式入力端末140のハードウェア構成を
図2に示す。ストレージ130は一般的なストレージのハードウェア構成を備えるものでよいから図示しない。ストレージ130はファイルサーバ機能やデータベース機能の両方を備えてもよいし、これらの一方の機能を実現するものであってもよい。制御サーバ110や処理実行サーバ120の一部として構成されてもよいし、クラウドストレージとして、制御サーバ110等からの問い合わせに応答してデータを送信するようにしてもよい。
【0029】
制御サーバ110は、ネットワーク150を介して式入力端末140からの冪等参照透過性式の実行命令を受信して、処理実行サーバ120及びストレージ130と通信しつつ冪等参照透過性式に基づく実行処理全体を制御し、実行結果を生成する情報処理装置であり、例えば、サーバ等の電子装置である。制御サーバ110は、
図2に示したとおり、プロセッサ211、出力装置212、入力装置213、記憶装置216、通信装置217及びバス218を備えることができる。記憶装置216は冪等参照透過性式実行制御プログラム等のプログラム219を格納する。
【0030】
処理実行サーバ120は、プログラム229、入力装置223からの入力データまたは通信装置207から受信したデータ等に基づいて各種の処理を行う情報処理装置である。処理実行サーバ120は
図2においては単一の処理実行サーバのみを記載したが複数とすることが好ましい。またクラウドサーバとして、ネットワーク150を介して制御サーバ110等からの命令に基づいて処理を実行するようにしてもよい。
【0031】
式入力端末140は、冪等参照透過性式を作成し、制御サーバ110へ実行命令を送信するための情報処理装置である。式入力端末140の一例はコンピュータであるが、タブレット端末等のその他の電子装置とすることもできる。式入力端末140は、プロセッサ241、出力装置242、入力装置243、記憶装置246、通信装置247及びバス248を備えることができる。記憶装置246は冪等参照透過性式作成プログラム等のプログラム249を格納する。
【0032】
プロセッサ211、221、241はそれぞれ、制御サーバ110、処理実行サーバ120及び式入力端末140全体の動作を制御するものであり、例えばCPUである。なお、プロセッサ211、221、241としては、MPU等の電子回路が用いられてもよい。プロセッサ211、221、241は、記憶装置216、226、246に格納されているプログラムやデータを読み込んで実行することにより、様々な処理を実行する。1つの例では、プロセッサ211、221、241は、複数のプロセッサから構成される。
【0033】
出力装置212、222、242は、プロセッサの制御に従って、アプリケーション画面などを各情報処理装置のユーザに表示する。液晶ディスプレイ、有機ELを用いたディスプレイやプラズマディスプレイ等とすることができる。入力装置213、223、243は、各情報処理装置に対するユーザからの入力を受け付けるユーザインタフェースであり、例えば、キーボード、マウス、タッチパネルやタッチパッド等である。
【0034】
記憶装置216、226、246は、各情報処理装置において使用するためのプログラムやデータ等を格納する装置であり、一つの例では、揮発性メモリであるRAM及び不揮発性メモリであるeMMC、UFS、SSDのようなフラッシュメモリを用いた記憶装置及び磁気記憶装置等を含む、一般的なスマートフォン及びコンピュータが備える記憶装置である。また、記憶装置として、各情報処理装置から物理的に分離された外部メモリや、ファイルサーバ、データベースを用いることもできる。
【0035】
通信装置217、227、247は、ネットワーク150(
図2においては省略)を介して他の装置との間でデータの授受を行う。例えば各通信装置は、イーサネット(登録商標)ケーブル等を用いた有線通信や移動体通信や無線LAN等の無線通信を行い、ネットワーク150へ接続する。
【0036】
図3は本発明のシステム100の機能ブロック図の一例を示す。制御サーバ110は式解析部311、計算資源検索部312、実行処理制御部313及び計算資源削除部314を備える。処理実行サーバ120は各制御部320、330、340、350、仮想マシン(VM)イメージ321、仮想マシン(VM)インスタンス331、及び、コンテナ341を備える。ストレージ130は本システムにおいて用いる各種のデータを記憶する機能を備える。式入力端末140は式作成部391及び式実行命令部392を備える。
【0037】
式入力端末140のユーザは、式作成部391を用いて冪等参照透過性式を作成し、作成した冪等参照透過性式を含む実行命令を制御サーバ110へ式実行命令部392を用いて送信することにより、システムに対して実行対象となる冪等参照透過性式を入力する。ここでは、式入力端末140のユーザは、ゲームシステムの開発者であり、ゲームシステム用プログラムの機能検証を行うための冪等参照透過性式としての関数型言語式を作成する者とするが、システム検証を行うために冪等参照透過性式を含む実行命令を送信する者であればどのような者であっても構わないし、システムはゲームシステムでなくともよい。
【0038】
制御サーバ110の制御部310は、式入力端末140から受信した実行命令に基づいて、式解析部311に、当該実行命令に含まれる冪等参照透過性式を示す文字列の識別情報及び当該冪等参照透過性式のデータ型を決定させる。冪等参照透過性式を示す文字列の識別情報は、当該冪等参照透過性式の正規化された文字列に基づいて決定してもよい。冪等参照透過性式を示す文字列の識別情報の一意性を確保することができる。また、冪等参照透過性式を示す文字列の識別情報の一例は、当該文字列のハッシュ値である。
【0039】
式入力端末140からの実行命令に含まれる冪等参照透過性式が複数の冪等参照透過性式の組によって構成されている場合には、各冪等参照透過性式に分割し、分割された冪等参照透過性式ごとに計算資源検索又は実行処理を実行する。各式の実行結果を用いて他の式の計算資源検索又は実行処理を行うことができる。
【0040】
例えば、一つの式の計算資源検索又は実行処理を実行する場合、検索によって記憶された計算資源の識別情報から計算資源の識別情報が特定されると、当該式を参照する他の式の処理に際しては、参照された式の結果を計算資源識別情報で置換することにより、当該計算資源を用いた処理を実行することができる。
【0041】
式解析部311が制御部310より受信した冪等参照透過性式を部分式に分解するものとする。部分式の分解は計算資源の効率的な制御及び運用を実現するために適した分解方法を適宜選択することができる。例えば、スクリプトに含まれる関数型言語式の関数ごとに部分式として分解してもよいし、管理対象とすべき計算資源と対応する部分ごとに部分式として分解してもよい。仮想マシンイメージを定義するdefine関数が配列を含み配列の各要素が仮想マシンイメージを定義する場合には、配列の各要素を部分式として分解することができる。本明細書において、冪等参照透過性式との用語は分解された部分式を意味する場合がある。
【0042】
計算資源検索部312は、式解析部311によって決定された実行対象の冪等参照透過性式を示す文字列の識別情報及び当該冪等参照透過性式のデータ型に対応付けられた計算資源を検索する。ここでは検索命令を処理実行サーバ120及びストレージ130に対して送信することにより実行するものとするが、計算資源検索部312が利用可能な計算資源の識別情報を冪等参照透過性式のハッシュ値とデータ型を計算資源の識別子と対応付けて記憶し、この対応表を参照して計算資源の検索を実行するようにしてもよい。型を用いずにハッシュ値と計算資源の識別情報との対応表だけで検索するようにしてもよい。
【0043】
そして、検索によって計算資源の識別情報が特定された場合、当該特定された識別情報によって識別される計算資源を前記実行対象の冪等参照透過性式に基づく処理の実行結果として用いることを決定し、制御部310へ送信する。
【0044】
実行処理制御部313は、計算資源検索部312によって計算資源が特定されなかった場合、実行対象の冪等参照透過性式に基づく処理を実行し、新たに生成された計算資源の識別情報を、実行対象の冪等参照透過性式を示す文字列の識別情報及び当該冪等参照透過性式のデータ型に対応付けて記憶する。ここでは、実行処理制御部313は、実行対象の冪等参照透過性式に基づく処理を実行するための処理実行命令を処理実行サーバ120へ送信して処理実行サーバに実行させるものとするが、制御サーバ110内で実行するようにしてもよい。
【0045】
実行対象の冪等参照透過性式を示す文字列の識別情報及び当該冪等参照透過性式のデータ型に決定された計算資源の識別情報を対応付けて記憶することは、一つのテーブルにおいて、これらの3つの情報を互いに対応付けて記憶するだけではなく、3つの情報が何らかの形態で対応付けられていればよい。例えば、本実施形態のように、式のデータ型に対応付けられた制御部に式のハッシュ値と当該式の実行結果としての計算資源の識別情報が対応付けて記憶されているような場合も、冪等参照透過性式を示す文字列の識別情報及び当該冪等参照透過性式のデータ型に決定された計算資源の識別情報を対応付けて記憶することにあたる。
【0046】
計算資源削除部314は、計算資源を削除するガーベージコレクタとして機能する。例えば、参照カウントや、クラウド上のexpiration timerの機能を用いて不要となった計算資源を削除することができる。本発明では、計算資源(リソース)間の参照関係は、冪等参照透過性式の関数間の参照関係(引数として渡されるか否か)として定義されるため、容易に参照グラフを生成できる。さらに、一般的なプログラミング言語と異なり、演算結果が他の演算結果を参照するような参照を定義できないため、循環参照を考慮する必要がない。そのため、本実施形態におけるガーベージコレクタは極めてシンプルに実現可能であり、クラウド上のexpiration timerの機能をそのまま用いても十分に効率的なものを実装することができる。
【0047】
処理実行サーバ120の各制御部はここでは、VMイメージ制御部320、VMインスタンス制御部330、コンテナ制御部340及びゲームアプリ制御部350とする。各制御部は処理実行サーバ120において実行される各制御部に対応するサブプログラムを実行することによって実現されるものとする。本実施形態においては、冪等参照透過性式の1つのデータ型に対応した1つの制御部を備えるものとするが、複数のデータ型に対して1つの制御部が備えられるようにしてもよい。
【0048】
制御サーバ110の計算資源検索部312からの検索命令及び実行処理制御部313からの処理実行命令は、制御サーバ110において式の型に対応するAPI(Application Programming Interface)を起動し、当該APIを介して対応する各制御部320、330、340、350に対して実行されるものとする。
【0049】
例えば、式が呼び出す関数がdefine関数の場合には当該式のデータ型は「VMImage」型であり、制御サーバ110において当該型に対応するAPIとしてイメージAPIが起動されて命令を送信し、VMイメージ制御部320が命令を実行する。関数がlaunch(インスタンスの起動又はコンテナの起動)の場合には、データ型は「VMInstance」又は「ContainerInstance」であり、これらに対応するVMインスタンスAPI及びコンテナAPIを起動し、VMインスタンス制御部330又はコンテナ制御部340が命令を実行する。式がexec関数の場合には、「PlayResult」型であり、ゲームアプリAPIが起動され、ゲームアプリ制御部350が命令を実行するものとする。
【0050】
本実施形態において検索命令は、処理実行サーバ120が検索命令を受信し、引数として与えられた実行対象の式の識別情報に基づいて、すでに作成されたVMイメージが保存されているか否かを判定する。例えば、VMイメージ制御部320において識別情報としてのハッシュ値対VMイメージ識別情報対応表を格納しておき、当該対応表に基づいて検索命令の引数として与えられたハッシュ値に対応するVMイメージが格納されているか否かを判定することができる。関数がlaunch(インスタンスの起動又はコンテナの起動)の場合には、データ型は「VMInstance」又は「ContainerInstance」であり、これらに対応するVMインスタンスAPI又はコンテナAPIを起動し、ハッシュ値に基づいて、実行対象となっている式の実行結果としてのVMインスタンスまたはコンテナがすでに利用可能であるか判定することができる。
【0051】
各制御部320、330、340、350は、制御サーバ110の実行処理制御部からの処理実行命令に基づいて、冪等参照透過性式に基づく処理を実行する。各制御部は冪等参照透過性式の実行処理が終了すると、生成された計算資源を利用可能な状態で保持するとともに、計算資源を特定するための情報を制御サーバ110へ送信する。
【0052】
冪等参照透過性式の実行処理は、仮想マシンイメージ作成処理、仮想マシンインスタンス起動処理、仮想マシンイメージ修正処理、仮想マシンイメージ複製処理、コンテナの起動処理、及び、アプリケーションによる記憶装置への非破壊的なデータ書き込み処理等を含む。仮想マシンインスタンス起動処理は仮想マシンインスタンス生成処理という場合がある。非破壊的なデータ書き込み処理とは、既存のデータを上書きや更新など、既に記憶されているデータに対する破壊的な処理をしないこと意味する。非破壊的なデータ書き込み処理の一例として、アプリケーション実行ログの記憶装置への書き込み処理があげられる。
【0053】
仮想マシンイメージは仮想マシンを起動するためのデータであり、仮想マシンのメモリやハードディスクの内容を全て保存したデータである。仮想マシンを起動するために仮想マシンイメージが作成され、その後の再利用等のために仮想マシンイメージを修正したり、複製したりすることができる。
【0054】
本明細書においては、仮想マシンイメージが、仮想マシンに読み込まれたときに生じる実体としての仮想マシンのことを仮想マシン(VM)インスタンスという。作成された仮想マシンイメージに基づいて仮想マシンインスタンス起動処理を実行することによって仮想化されたマシンを起動する、すなわち仮想マシンのためのインスタンスを生成することができる。例えばサーバ用のイメージファイルを仮想マシンに入力すると、仮想サーバを起動することができる。
【0055】
さらに、マシンにおいてコンテナを起動し、コンテナ型仮想化によって仮想化されたアプリを実行することができる。コンテナ型仮想化は仮想化の手法の一つであり、プロセス単位で仮想化を行うことができる。例えば、スマートフォンにおいて実行されるアプリそのものを仮想化するときにコンテナ型仮想化を使用することができる。本発明においては仮想マシンインスタンスによって仮想化される対象はサーバやユーザ端末とすることができ、これらの装置上で動作するアプリをコンテナ型仮想化によって仮想的に実行することができる。
【0056】
冪等参照透過性式の実行処理が仮想マシンイメージ作成処理である場合には、VMイメージ制御部320がVMイメージ321を生成し、処理実行サーバ120内で識別可能な識別情報と対応付けて当該VMイメージを保存する。例えば、作成されたVMイメージに計算資源識別情報(ID)を割り当てて保存するとともに、当該識別情報と冪等参照透過性式の識別情報とを対応付ける表をVMイメージ制御部320内に記憶する。そして、仮想マシンイメージ作成処理の実行結果として、生成されたVMイメージの計算資源識別情報を制御サーバ110へ送信する。この計算資源識別情報は、システム100において、VMイメージを一意に特定することができる情報である。
【0057】
冪等参照透過性式の実行処理が、仮想マシンのための仮想マシンインスタンス起動処理、仮想マシンイメージ修正処理や仮想マシンイメージ複製処理であれば、VMインスタンス制御部330が処理を実行し、実行結果として生成されたVMインスタンスを特定する計算資源識別情報を制御サーバ110へ送信する。冪等参照透過性式の実行処理が、VMインスタンス上で更に所定のアプリケーションを起動するためのコンテナを生成することであれば、コンテナを特定する識別情報が計算資源識別情報である。VMインスタンス上で実行されるコンテナの起動処理等である場合には、コンテナ制御部340が同様の処理を実行する。
【0058】
冪等参照透過性式の実行処理が、アプリケーションへ所定のパラメータを入力して計算結果を出力させる場合には、ゲームアプリ制御部350が処理を実行し、出力された計算結果をストレージ130に記憶させ、計算結果を特定する識別情報を計算資源識別情報として制御サーバ110へ送信する。計算結果そのもの及び識別情報と計算結果を制御サーバ110へ送信するようにしてもよい。
【0059】
本実施形態においては、VMイメージ321、VMインスタンス331、コンテナ341及び実行結果としてのデータ等が計算資源であるが、計算資源はシステム上の計算資源であればどのようなものであっても構わない。例えば、仮想インスタンスを実行するプロセスである仮想マシンインスタンスのプロセス、及びアプリケーションを実行するアプリケーションプロセス、起動されたコンテナのプロセス等の実行中のプロセスも計算資源であり、プロセスを実行する処理装置、当該プロセスを実行するために必要な情報や実行結果としてのデータを格納する記憶装置、記憶装置の記憶領域及び記憶装置もまた計算資源である。
【0060】
制御サーバ110の実行処理制御部313は処理実行命令に対する応答として処理実行サーバ120から受信した計算資源識別情報又は計算結果を実行結果として制御部310へ送信する。制御部310は、計算資源検索部312又は実行処理制御部313から受信した実行結果に基づいて、式入力端末140からの実行命令に対する応答を送信する。応答は実行結果及びその他の実行に関連するログ情報等の情報を含んでもよい。
【0061】
本実施形態において各機能部は、
図2に記載されたハードウェア構成に含まれるプログラムが処理装置によって実行され、出力装置、入力装置、記憶装置及び通信装置の各ハードウェアとソフトウェアとが協働して動作することによって実現されるが、各機能に対応する電子回路等を設けて実現されてもよい。
【0062】
本実施形態においては、多数の計算資源を有するシステム、好ましくはクラウドシステムの構成管理を関数型言語等の冪等参照透過性式のパラダイムで指定するプログラミング言語において、当該プログラミング言語を条件分岐・再帰・繰り返し等の制御構造を一切含まない、関数の定義と呼び出しのみのツリー構造としてモデル化する。1)プログラムの関数呼び出しのツリー構造上のプログラムの記述順序を正規化することにより、等価な演算式に同一の文字列表現を与えること、2)クラウドを構成するためのプログラムの式の文字列表現の識別情報(ハッシュ値)と、式のデータ型、そして、クラウド上のリソースの識別子の三つ組を一意に紐づける機能を提供すること、3)複数のプログラム(クラウドを構成するためのプログラム)が、同じ識別情報(ハッシュ値)の式を含む場合、「参照透過性」の原理により、その式の値が過去に評価されている場合は再利用すること、により計算資源の効率的な制御及び使用を実現することを可能とする。
【0063】
本実施形態において用いられる冪等参照透過性式としての関数型言語式によって記述されたスクリプトの一例を数1に示す。この実施例は、クラウドインフラを用いて実行されるゲームアプリの検証用に用いられるものである。スクリプトはクラウド構成情報を与えるとともに、ゲームの自動実行の情報を解析・実行する言語処理系として実装することができる。
【0064】
〔数1〕
{
"header":{
"type": "GameA,
"version"] "1.0.0"
},
"define":[
{
"reference_id": "$api-server",
"method": "create",
"region": "ap-northreast",
"maxwait": 1200000,
"ImageId": "ami-0123456789abcd",
"InstanceType": "c5.24xlarge",
"EbsOptimized": true,
"BlockDeviceMappings":
"IamInstanceProfile":
"NetworkInterfaces":
"TagSpecifications":
},
],
"instantiate":{
"aws_settings":
"addhost_fqdn": "dev.testcase.jp",
"polling_settings":
},
"launch":[
{
"num": 10,
"options": [ ]
"additionalOptions": { }
}
],
"apply": {
"app_version": "3.3.0",
"resource_version": "2311test11",
"s3bucket": "test_example",
"s3prefix": "replaylog/example",
"server_log_prefix": "server/log",
"region": "ap-northeast",
"repeat_count": 1,
"sequential_threashold": 0.9,
…
},
"preprocess": { }
"postprocess"
}
【0065】
数1に示すようなスクリプトはJSONにより与えられる式の集合として定義される。defineは仮想マシンのイメージを定義するための関数式である。定義は複数の定義を配列として含むことができる。instantiateは仮想マシンインスタンスの起動方法を定義するための関数式であり、launchは仮想マシンインスタンスの起動とコンテナの起動を指定する。applyは開発対象のゲームシステムの自動プレイ方法を定義する。自動プレイ用のパラメータ及び自動プレイ結果の格納先を指定することができる。このように、クラウド上の計算資源の制御を、関数定義と関数適用の列として定義することができる。
【0066】
次に、
図4に示すフローチャートに基づいて、本実施形態におけるシステム100において実行される処理について説明する。一つの実施例として、クラウドインフラの構築方法からゲームアプリで実行するべきプレイ内容、KPIの算出パラメータまでを宣言的に定義したスクリプトファイルであるJSONファイルが、システムに入力される場合を例にとって説明する。この実施例を用いた場合のシステムの動作の概念図を
図5に示した。
【0067】
まず、ゲームシステムの開発者である式入力端末140のユーザが、式入力端末140を用いてゲームアプリを検証するためのスクリプトとして、複数の関数型言語式を示す文字列を記載したJSONファイルを作成し、冪等参照透過性式の実行命令とともに制御サーバ110へ送信する。
【0068】
制御サーバ110はこれを受信すると、式解析部311が、JSONファイルにおけるスクリプトの文字列を正規化する(S401)。本実施形態においては受信したJSONファイルの全ての階層で属性名を、属性名の辞書順(例えば、Unicodeのコードポイント表の出現順)等の基準でソートし、スクリプトを正規化する。この手法は、決定論的なJSON化と呼ばれ、json-stable-stringifyやfast-json-stable-stringify等によって実現可能であることは当業者には明確に理解される。このように、JSONの全ての階層の属性名の出現順序を正規化することにより、同一の機能を実行するスクリプトファイルに、同一の文字列表現を与えることができる。
【0069】
さらに、正規化されたスクリプトが複数の部分式を含む場合には部分式に分解する(S402)。ここでは、
図5に示すように、仮想マシンのイメージを作成する式、仮想マシンのインスタンスを起動する式、仮想マシン内にコンテナを起動する式、コンテナ内のゲームアプリをプレイする式等に分解する。
【0070】
システムは分解された各部分式に対してS404~S416の処理を実行する。式解析部311は、部分式の識別情報及びデータ型を決定する(S404)。部分式の識別情報は文字列を一意に特定することができるものであればどのような方法で識別情報を算出しても構わないが、本実施形態においてはハッシュ関数(SHA256)を用いることとする。ゲームの1つのプレイを起動するexec関数を例にとると、一つのプレイ用のパラメータを正規化した文字列「103041020104021030104213010105241010106024010106041010108241020108241030110241010111041010111041020112011020112032010112211020112241030115013010115231010117023010117031010117211010118224010121021010121023010121031010121034010121041010121044010121211010121211020121211030121214010121221010121221020121224010121231010121234010121241010121241020800234030900041150」を、SHA256で「e841bd5de2c588aa8330ade0cb42c65cbce49979ef3e8c926f433f4f8b70b8ab」に変換したものをこのexec関数の識別情報としてのハッシュ値として用いる。
【0071】
データ型は各部分式の機能によって特定することができる。例えば、各部分式の関数ごとにルールベースにてデータ型を特定することができる。関数がdefineである場合にはデータ型は「VMImage」であり、関数がlaunchであればデータ型は「VMInstance」又は「ContainerInstance」であり、関数がexecであればデータ型は「PlayResult」というようにデータ型を特定することができる。
【0072】
計算資源検索部312は、部分式の算出された識別情報であるハッシュ値とデータ型に対応する計算資源を検索して(S406)、当該部分式が実行済みであり利用可能な計算資源として利用可能かを判定する(S408)。計算資源が利用可能であると判定された場合には、特定(発見)された利用可能な計算資源を取得する(S410)。
【0073】
計算資源を取得するとは、計算資源を利用可能な状態にすることである。例えば、部分式の関数が仮想マシンインスタンスを起動するためのlaunchである場合には、当該部分式によって起動されたVMインスタンスを利用可能にし、exec関数である場合にはその部分式のパラメータによって実行されたゲーム結果データを取得する。
【0074】
計算資源は、前記システムにおいて動作中のプロセス、当該プロセスを実行中のプロセッサであってもよい。この場合の計算資源を利用可能な状態にするとは例えば、動作中のプロセスや当該プロセスを実行中のプロセッサを識別する情報の付与及びこれらに対するアクセス権の付与であってもよい。計算資源はさらに記憶装置や記憶領域であってもよい。この場合は実行結果としてのデータが格納された記憶装置や記憶領域を識別する情報の付与及びこれらへのアクセス権の付与であってもよい。
【0075】
本実施形態においては、式の内部からは、他の式を名前で参照することができるため、式解析部311は、計算資源検索部312を介して、参照された式の結果を、計算資源の識別子として置換し、それ以降の部分式の処理を実行することができる。処理実行サーバ120によって新たに実行された場合も同様に新たに生成された計算資源情報で式を置換することができる。
【0076】
本実施形態において計算資源の検索は、データ型に対応するAPIを起動し、ハッシュ値をパラメータとして起動されたAPIを用いて検索命令を実行することにより実現する。各APIに対応する計算資源に対応する処理実行サーバ120の制御部が検索命令に基づいて、計算資源を検索する。部分式ための実行結果が特定された場合には、この部分式の実行結果として、計算資源の識別情報及び計算資源としての実行結果データそのもののうちの少なくとも一方を制御サーバ110は取得する。
【0077】
例えば、define関数の場合には「VMImage」型であり、当該型に対応するAPIとしてイメージAPI(Application Programming Interface)が起動され、実行対象のdefine関数のハッシュ値を引数として検索命令を実行する。本実施形態においては、処理実行サーバ120のVMイメージ制御部320が検索命令を受信し、引数として与えられたハッシュ値に基づいて、すでに作成されたVMイメージが保存されているか否かを判定する。ここでは、VMイメージ制御部320に格納されたハッシュ値対VMイメージ識別情報対応表に基づいてハッシュ値に対応するVMイメージが格納されているか否かを判定することができる。
【0078】
関数がlaunch(仮想マシンインスタンスの起動又はコンテナの起動)の場合には、それぞれ、データ型は「VMInstance」又は「ContainerInstance」であり、これらに対応するVMインスタンスAPI又はコンテナAPIを起動し、ハッシュ値に基づいて、実行対象となっている部分式の実行結果がすでに利用可能であるか検索することができる。この場合の実行結果は、処理実行サーバ120において起動されているVMインスタンス331又はコンテナ341である。「VMInstance」及び「ContainerInstance」のいずれの型であるかは、例えば、launch関数のパラメータに基づいて特定することができる。
【0079】
式のハッシュ値に対応するVMインスタンス331又はコンテナ341が検索によって発見された場合には、これを実行中のスクリプトにおいて利用可能な状態とする。ここでは、VMインスタンス331の使用権限をスクリプトを実行中のプロセスに対して与えて、他の部分式において用いることができるようにする。例えば、VMインスタンス331のアクセス権を与えるとともにVMインスタンス331の識別情報を制御サーバ110へ与え、受信したVMインスタンスの識別情報に基づいてスクリプトの他の部分式がこのVMインスタンス331の中でコンテナを起動することを可能とすることができる。
【0080】
関数がexecであればデータ型は「PlayResult」型であり、この場合には実行結果が格納されているストレージ130へアクセスするためのゲームアプリAPIが起動され、ストレージ130に実行結果データが格納されているかを検索する。ストレージ130にはハッシュ値と実行結果のデータとの対応表が記憶され、ゲームアプリAPIを介した検索命令に基づいて、ハッシュ値に対応する計算結果が格納されているか否かを判定する。すでに格納されている計算結果が特定された場合には、その計算結果そのものを部分式の実行結果として制御サーバ110へ返してもよいし、その計算結果を取得するために計算結果が格納されている記憶領域のアドレスを特定するための識別情報を返してもよい。
【0081】
利用可能な計算資源が特定できなかった場合には、実行対象となっている部分式に基づく処理を実行し(S412)、実行結果としての計算資源の識別情報を部分式の識別情報に対応付けて新たに登録する(S414)。
【0082】
本実施形態においては、実行対象となっている部分式の型に対応するAPIを起動して処理実行サーバ120のいずれかの制御部へ実行命令を送信し、実行命令を受信した制御部が部分式に基づく処理を実行する。例えば、部分式が仮想マシンのイメージを定義するためのdefine関数である場合には、イメージAPIを起動して、define関数のパラメータを引数としてVMイメージ生成命令を送信する。処理実行サーバ120のVMイメージ制御部320はVMイメージ生成命令を受信すると、VMイメージを生成し、作成したVMイメージの識別情報を部分式のハッシュ値に対応付けて記憶するとともに、作成したVMイメージを利用可能な状態にして識別情報を制御サーバ110へ送信する。
【0083】
実行対象の式が仮想マシンを起動する式であった場合、VMインスタンスAPIを用いてVMインスタンス起動命令を送信し、これを受信したVMインスタンス制御部330がVMインスタンスを起動し、当該インスタンスに式のハッシュ値を紐づけて記憶するとともに、起動したVMインスタンスを識別する情報を制御サーバ110へ送信する。例えば、VMインスタンスを起動するためのVMイメージの識別情報をインスタンス起動命令の引数として与えることにより、処理実行サーバ120にすでに格納されているVMイメージを用いてVMインスタンスを起動することができる。関数を実行するためのAPIは計算資源を検索するためのAPIと異なるものとしてもよい。
【0084】
実行対象の式がexec関数であり、ゲームアプリのプレイ結果を算出するための式である場合、ゲームアプリAPIを起動してゲームプレイのパラメータを引数として実行命令を送信すると、処理実行サーバ120のゲームアプリ制御部350がこれを受信してゲームプレイを実行して、実行結果をストレージ130へ部分式のハッシュ値に対応付けて格納するとともに、ゲームプレイ結果を制御サーバ110へ送信する。
【0085】
部分式に対する処理が終了するとスクリプト内に残りの部分式があるかを判定する(S416)。残りの部分式がある場合には、部分式がなくなるまでS404~S416を繰り返し実行する。残りの部分式がなくなるとスクリプトに対する実行処理を終了する。
【0086】
図5に示した例でいえば、スクリプトJSONファイルは、仮想マシンのイメージを作成する式、仮想マシンのインスタンスを起動する式、仮想マシン内にコンテナを起動する式、コンテナ内のゲームアプリをプレイする式等に分解される。そして、各部分式のハッシュ値を算出するとともに式の型を決定する。各部分式に対して、決定されたハッシュ値及び型に基づいて、各部分式に基づく計算資源の検索又は登録処理を実行する。
【0087】
検索及び登録処理は部分式のデータ型に基づいて検索先及び登録先が決定される。例えば、イメージの作成、VMインスタンスの起動及びコンテナの起動の場合には、それぞれ、イメージAPI、VMインスタンスAPI及びコンテナAPIを起動し、部分式のハッシュ値に基づいて、実行対象となっている部分式の実行結果がすでに利用可能であるか検索する。利用可能である場合には、各計算資源を利用可能な状態とする。利用可能でない場合には、実行サーバにおいて部分式を実行し、その結果を実行サーバのテーブルに部分式のハッシュ値と対応付けて登録する。
【0088】
部分式に基づく処理の実行結果がゲームアプリのプレイ結果のようなデータの場合には、ハッシュ値と対応付けられたゲーム結果データをストレージ内で検索する。ストレージ内にゲーム結果データが格納されていない場合には、利用可能でないから、実行サーバにおいて部分式を実行し、その結果としての計算資源の識別情報を部分式のハッシュ値と対応付けてストレージ内に登録する。
【0089】
本実施形態は、1)関数型言語の式の文字列表現の識別情報としてのハッシュ値(Hash)と、2)式のデータ型(Type)、そして、3)クラウド上のリソース(計算資源)の識別情報(ID)の三つ組を一意に紐づける、“Hash-Type-ID管理”により、複数のスクリプト間の共通処理を、その作成者、目的、実行順序に関わらず、自動的に抽出し再利用可能にする。
【0090】
冪等性参照透過性式を用いることにより、条件分岐・再帰・繰り返し等の制御構造を一切含まない、関数の定義と呼び出しのみのツリー構造としてモデル化し、さらに、ツリー構造上のプログラムの記述順序を正規化することにより、等価な演算式に同一の文字列表現を与えることが可能となる。この文字列表現を識別するハッシュ値のような識別情報を用いることにより一意に冪等参照透過性式を特定することができる。すなわち、スクリプトを記載するための文法と機能の両方に制約を持たせることにより、異なるユーザが記述したスクリプトの演算式でも、等価な演算式からは同じ識別情報が算出されることとなる。
【0091】
このような構成により、仮想マシンイメージの作成、仮想マシン(VM)インスタンスの起動、アプリの実行ログのクラウドへの書き込み等のクラウド上での演算の同値性を判定し、同値の演算結果を再利用することを可能とする。VMイメージを作成するために数分を要し、さらにVMインスタンスを起動するために数十分から数時間を要する場合に、まったく同じVMイメージに基づいて起動されたVMインスタンスを利用する他のスクリプトを実行する際には、すでに起動済みのVMインスタンスが利用可能であれば、そのVMインスタンスを利用することでVMイメージ作成時間及び起動時間を要することなく、VMインスタンスを用いた処理を実行することが可能となる。実行結果としてのデータそのものも再利用することができる。クラウド等のシステム環境構築及び運用における大局的に重複した演算を省略することが可能となる。
【0092】
次に、
図6~8を用いて、本発明を有効に利用可能な実施例について説明する。まず、第1の実施例として、最もシンプルな計算資源の利用効率化の例である共通部分式の演算結果共有の実施例について説明する。この実施例では、複数の開発プロジェクトが平行して進行している場合にプロジェクトそれぞれに対応する、異なるスクリプト間で共通する部分式の実行結果(評価結果)を共有する。
【0093】
図6に示した例では、3つのスクリプトファイルがあるときに、それぞれの共有する処理を抽出し、先に実行したスクリプトの結果を、後から実行したスクリプトが再利用することができる。スクリプト1~3は部分式601を共通して含み、スクリプト2及び3は部分式602を共通して含み、スクリプト1及び2は部分式604を共通して含む。スクリプト1が最初に実行され、その後にスクリプト2が実行され、スクリプト3が最後に実行された場合、スクリプト1の実行によって生成された共通部分式601の実行結果はスクリプト2及び3において再利用され、共通部分式604の実行結果はスクリプト2の実行において再利用される。さらにスクリプト2の実行によって生成された部分式602の実行結果がスクリプト3の実行において再利用される。
【0094】
図7に第2の実施例を示す。この実施例は、カスケード型演算結果共有の例であり、機械が自動実行するスクリプトの結果を人間が再利用する例である。この例では、24時間実行され続けるスクリプトの一部だけを変更してアドホックに実行したい処理がある場合、任意のタイミングで機械が実行した途中結果を再利用して人間が別の処理を実行できる。例えば、複数のカードを含むデッキを用いたバトルゲームを実行するためのゲームシステムの検証として、スクリプト1を用いて24時間の自動デバッグを実行している中で、特定のカードのみを再度検証する必要が生じると、カード定義のみを変更したスクリプト1'を投入する。共通部分が全て再利用されるから、すべての検証を再度実行する場合に比べて短時間で特定カードを用いた結果を得ることができるようになる。さらに別の開発者が異なるカード定義を用いて試験を継続したい場合にスクリプト1''が投入されても、共通部分が全て再利用され、特定カードの変更の影響のある部分だけの実行によって結果を得ることができるようになる。
【0095】
図8に示した第3の実施例は差分実行の例であり、インクリメンタルな実行の中で、仮想マシン構築や、既に実行したバトルのうち回数条件を満たしたものを、再利用(スキップ)してスクリプトを実行する例である。この例では、全ての組み合わせのバトルを最低3回実行するという式801を実行した後に、全ての組み合わせのバトルを最低10回実行するという式802を実行すると、先に実行した3回については式801の実行結果を再利用し、差分の7回だけ実行する(802’)。さらに、全ての組み合わせのバトルを最低20回実行するという式803を実行すると、これまでに実行した3回と7回については実行済みの結果を再利用し、差分の10回だけ実行する(804’)。このように、検証を厚くしたいカードやデッキのみを選択して、多重化した検証を行うことができるようになる。
【0096】
図9に示した第4の実施例は、ロジックと実行権限の分離をした場合の例である。この例は、ゲーム開発プロジェクトと自動検証プロジェクトとのクラウドアクセス権限が異なる状況においても、シームレスに検証を実行可能にする例である。この実施例は、ゲームサーバのクローンを作成するときに有益である。
図9では、クラウドシステムAは自動検証用クラウド環境であり、クラウドシステムBはゲーム開発及び運用のクラウド環境とする。このとき、ゲーム開発及び運用のクラウドシステムBに、直接、自動検証用クラウドシステムAがアクセス可能とすることは、セキュリティや情報管理の点から好ましくない一方で、ゲーム開発及び運用のクラウドシステムBから、必要な情報を自動検証用クラウドシステムAに書き込むことは問題がないものとする。
【0097】
この場合、クラウドシステムBの権限で実行可能な式を、クラウドシステムBの環境で実行し、その結果を検証用クラウドシステムAに書き込むようにすると、検証用プログラムには、権限管理の仕組みを一切含まず、そのままシームレスに検証用クラウドシステムAの中でも実行できる。そして、クラウドシステムBの環境で実行され、クラウドシステムAに書き込まれた実行結果は、クラウドシステムAにおいて後に実行されるスクリプトによって再利用することができる。これは、式の演算結果を、式の型と式のハッシュ値で識別しており、共通部分式の結果が存在さえしていれば、その式の結果がどのクラウド環境で実行されたかは問題としないからである。
【0098】
以上に説明した処理または動作において、矛盾が生じない限りにおいて、処理または動作を自由に変更することができる。また以上に説明してきた各実施形態は、本発明を説明するための例示であり、本発明はこれらの実施形態に限定されるものではない。いずれかの機能を実施形態に記載された情報処理装置と異なる情報処理装置で実現してもよい。本発明は、その要旨を逸脱しない限り、種々の形態で実施することができる。また、本実施形態に記載された効果は、本発明から生じる最も好適な効果を列挙したに過ぎず、本発明による効果は、本実施形態に記載されたものに限定されるものではない。
【符号の説明】
【0099】
100:システム、110:制御サーバ、120:処理実行サーバ、130:ストレージ、140:式入力端末、150:ネットワーク、207:通信装置、211:プロセッサ、212:出力装置、213:入力装置、216:記憶装置、217:通信装置、218:バス、219:プログラム、221:プロセッサ、222:出力装置、223:入力装置、226:記憶装置、227:通信装置、229:プログラム、241:プロセッサ、242:出力装置、243:入力装置、246:記憶装置、247:通信装置、248:バス、249:プログラム、310:制御部、311:式解析部、312:計算資源検索部、313:実行処理制御部、314:計算資源削除部、320:VMイメージ制御部、321:VMイメージ、330:VMインスタンス制御部、331:VMインスタンス、340:コンテナ制御部、341:コンテナ、350:ゲームアプリ制御部、391:式作成部、392:式実行命令部
【手続補正書】
【提出日】2023-03-07
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
冪等性及び参照透過性を有する冪等参照透過性式に基づく処理を実行するシステムであって、
冪等参照透過性式を示す文字列の識別情報及び当該冪等参照透過性式の機能を表す当該冪等参照透過性式のデータ型に対応付けて、当該冪等参照透過性式に基づく処理の実行結果としての計算資源の識別情報を記憶し、
前記システムに対する実行命令に基づいて実行対象とされた冪等参照透過性式を示す文字列の識別情報及び当該冪等参照透過性式のデータ型を決定し、
前記実行対象の冪等参照透過性式を示す文字列の識別情報及び当該冪等参照透過性式のデータ型に対応付けられた計算資源の識別情報を前記記憶された計算資源の識別情報から検索し、
前記検索によって前記記憶された計算資源の識別情報から計算資源の識別情報が特定された場合、当該特定された識別情報によって識別される計算資源を前記実行対象の冪等参照透過性式に基づく処理の実行結果として用いることを決定する、
ことを特徴とするシステム。
【請求項2】
前記実行対象の冪等参照透過性式及び他の実行対象の冪等参照透過性式の組に基づく処理を実行する場合、前記検索によって前記記憶された計算資源の識別情報から計算資源の識別情報が特定されると、前記実行対象の冪等参照透過性式に基づく処理の実行結果として当該特定された識別情報によって識別される計算資源を用いて、他の冪等参照透過性式に基づく処理を実行する、ことを特徴とする請求項1に記載のシステム。
【請求項3】
前記実行対象の冪等参照透過性式を示す文字列の識別情報及び当該冪等参照透過性式のデータ型に対応付けられた計算資源の識別情報が前記記憶された計算資源の識別情報から特定されなかった場合、
前記実行対象の冪等参照透過性式に基づく処理を実行し、
前記実行対象の冪等参照透過性式を示す文字列の識別情報及び当該冪等参照透過性式のデータ型に前記決定された計算資源の識別情報を対応付けて記憶する、
ことを特徴とする、請求項1に記載のシステム。
【請求項4】
前記冪等参照透過性式を示す文字列の識別情報は、当該冪等参照透過性式の正規化された文字列に基づいて決定されることを特徴とする、請求項1に記載のシステム。
【請求項5】
前記冪等参照透過性式を示す文字列の識別情報は当該文字列のハッシュ値であることを特徴とする、請求項1に記載のシステム。
【請求項6】
前記冪等参照透過性式に基づく処理は、仮想マシンイメージ作成処理、仮想マシンインスタンス起動処理、仮想マシンイメージ修正処理、仮想マシンイメージ複製処理、コンテナ起動処理、及び、アプリケーションによる記憶装置への非破壊的なデータ書き込み処理のうちの少なくとも一つを含むことを特徴とする請求項1に記載のシステム。
【請求項7】
前記計算資源は、前記システムにおいて動作中のプロセス、当該プロセスを実行中のプロセッサ、当該プロセスに関連する情報を記憶するメモリ、及び実行処理の結果を記憶したメモリの少なくとも一つを含むことを特徴とする請求項1に記載のシステム。
【請求項8】
前記プロセスは仮想マシンインスタンスのプロセス及びコンテナのためのプロセスのうちの少なくとも一つを含むことを特徴とする請求項7項に記載のシステム。
【請求項9】
冪等性及び参照透過性を有する冪等参照透過性式に基づく処理をコンピュータによって実行する方法であって、
冪等参照透過性式を示す文字列の識別情報及び当該冪等参照透過性式の機能を表す当該冪等参照透過性式のデータ型に対応付けて、当該冪等参照透過性式に基づく処理の実行結果としての計算資源の識別情報を記憶する段階と、
前記コンピュータに対する実行命令に基づいて実行対象とされた冪等参照透過性式を示す文字列の識別情報及び当該冪等参照透過性式のデータ型を決定する段階と、
前記実行対象の冪等参照透過性式を示す文字列の識別情報及び当該冪等参照透過性式のデータ型に対応付けられた計算資源の識別情報を前記記憶された計算資源の識別情報から検索する段階と、
前記検索によって前記記憶された計算資源の識別情報から計算資源の識別情報が特定された場合、当該特定された識別情報によって識別される計算資源を前記実行対象の冪等参照透過性式に基づく処理の実行結果として用いることを決定する段階と、
を含むことを特徴とする方法。
【請求項10】
前記請求項9に記載の方法をコンピュータによって実行させるためのプログラム。
【請求項11】
冪等性及び参照透過性を有する冪等参照透過性式に基づく処理を実行する情報処理装置であって、
冪等参照透過性式を示す文字列の識別情報及び当該冪等参照透過性式の機能を表す当該冪等参照透過性式のデータ型に対応付けて、当該冪等参照透過性式に基づく処理の実行結果としての計算資源の識別情報を記憶し、
前記情報処理装置に対する実行命令に基づいて実行対象とされた冪等参照透過性式を示す文字列の識別情報及び当該冪等参照透過性式のデータ型を決定し、
前記実行対象の冪等参照透過性式を示す文字列の識別情報及び当該冪等参照透過性式のデータ型に対応付けられた計算資源の識別情報を前記記憶された計算資源の識別情報から検索し、
前記検索によって前記記憶された計算資源の識別情報から計算資源の識別情報が特定された場合、当該特定された識別情報によって識別される計算資源を前記実行対象の冪等参照透過性式に基づく処理の実行結果として用いることを決定する、情報処理装置。