(57)【要約】【課題】プログラムのバグによる影響を限定し、プログラムのリリース間隔を短縮する情報制御プログラム、情報制御装置及び情報制御方法を提供する。【解決手段】記憶部に記憶された記憶情報の更新要求を受け付けたことに応じて、記憶情報のうちの一部の情報を差分情報として記憶する差分記憶部が存在するか否かを判定し、差分記憶部が存在しないと判定した場合、差分記憶部を作成して差分情報を移行し、差分情報に対し、更新要求に基づく更新を行い、記憶情報のうち記憶部に記憶された記憶情報と差分情報とのマージ要求を受け付けたことに応じて、差分情報を記憶情報の一部として記憶部に記憶する。【選択図】図９
2017033136.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータに、
記憶部に記憶された記憶情報の更新要求を受け付けたことに応じて、前記記憶情報のうちの一部の情報を差分情報として記憶する差分記憶部が存在するか否かを判定し、前記差分記憶部が存在しないと判定した場合、前記差分記憶部を作成して前記差分情報を移行し、
前記差分情報に対し、前記更新要求に基づく更新を行い、
前記記憶情報のうち前記記憶部に記憶された記憶情報と前記差分情報とのマージ要求を受け付けたことに応じて、前記差分情報を前記記憶情報の一部として前記記憶部に記憶する、
処理を実行させることを特徴とする情報制御プログラム。
【請求項２】
請求項１において、
前記差分情報を移行する処理では、前記記憶情報の一部である差分情報を前記記憶部に移行する旨の情報を含む管理情報を記憶部に記憶し、
前記差分情報を前記記憶部に記憶する処理では、前記管理情報を参照して、前記記憶部に記憶する前記差分情報を特定する、
ことを特徴とする情報制御プログラム。
【請求項３】
請求項１において、
前記記憶情報は、数値情報を含み、
前記更新要求は、前記差分情報が示す値を増加または減少させる要求である、
ことを特徴とする情報制御プログラム。
【請求項４】
請求項３において、さらに、
前記差分情報が所定の閾値を下回った場合、前記記憶部に記憶された記憶情報のうち、前記差分記憶部に移行していない情報の一部を、前記差分情報の一部として前記差分記憶部に移行する、
処理をコンピュータに実行させることを特徴とする情報制御プログラム。
【請求項５】
請求項１において、
前記差分情報を移行する処理では、前記記憶部に対する情報の追加記憶要求を受け付けたことに応じて、前記差分記憶部が存在するか否かを判定し、前記差分記憶部が存在しないと判定した場合、前記差分記憶部を作成し、
さらに、前記追加記憶要求に対応する情報を前記差分記憶部に記憶する、
処理をコンピュータに実行させることを特徴とする情報制御プログラム。
【請求項６】
請求項１において、さらに、
前記差分情報を移行する処理の前に、前記更新要求を受け付けたことに応じて、前記更新要求が第１処理部による更新要求であるか否かの判定を行い、前記更新要求が前記第１処理部による更新要求である場合、前記差分情報を移行する処理及び前記更新を行う処理を行い、前記更新要求が前記第１処理部以外の第２処理部による更新要求である場合、前記差分情報を移行する処理及び前記更新を行う処理に代えて、前記記憶情報に対し、前記第２処理部による更新要求に基づく更新を行う、
処理をコンピュータに実行させることを特徴とする情報制御プログラム。
【請求項７】
記憶部に記憶された記憶情報の更新要求を受け付けたことに応じて、前記記憶情報のうちの一部の情報を差分情報として記憶する差分記憶部が存在するか否かを判定し、前記差分記憶部が存在しないと判定した場合、前記差分記憶部を作成して前記差分情報を移行する情報管理部と、
前記差分情報に対し、前記更新要求に基づく更新を行う情報更新部と、
前記記憶情報のうち前記記憶部に記憶された記憶情報と前記差分情報とのマージ要求を受け付けたことに応じて、前記差分情報を前記記憶情報の一部として前記記憶部に記憶する情報マージ部と、を有する、
ことを特徴とする情報制御装置。
【請求項８】
記憶部に記憶された記憶情報の更新要求を受け付けたことに応じて、前記記憶情報のうちの一部の情報を差分情報として記憶する差分記憶部が存在するか否かを判定し、前記差分記憶部が存在しないと判定した場合、前記差分記憶部を作成して前記差分情報を移行し、
前記差分情報に対し、前記更新要求に基づく更新を行い、
前記記憶情報のうち前記記憶部に記憶された記憶情報と前記差分情報とのマージ要求を受け付けたことに応じて、前記差分情報を前記記憶情報の一部として前記記憶部に記憶する、
ことを特徴とする情報制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報制御プログラム、情報制御装置及び情報制御方法に関する。
【背景技術】
【０００２】
利用者に対してサービスを提供する事業者（以下、単に事業者とも呼ぶ）は、例えば、利用者に対してサービスを提供するための業務システム（以下、単に業務システムとも呼ぶ）を構築する。そして、事業者は、稼働中の業務システムに対し、必要に応じてセキュリティパッチの適用や新機能の導入等を行う。具体的に、事業者は、例えば、業務システムに対して新たなプログラムのリリースを行うことにより、セキュリティパッチの適用や新機能の導入等を行う。
【０００３】
ここで、業務システムに対してリリースするプログラムには、未知のバグが内在している可能性がある。そして、リリースしたプログラムに未知のバグが内在していた場合、事業者の意図しない形での情報の更新が行われる可能性がある（以下、これを情報の破壊とも呼ぶ）。そのため、事業者は、例えば、リリースされたプログラムに未知のバグが内在している場合であっても、情報の破壊が発生する範囲を限定することができる措置を行う。
【０００４】
具体的に、プログラムのリリースに伴う情報の破壊が発生する範囲を限定するためのリリース方法として、カナリアリリースが知られている。カナリアリリースは、例えば、リリースされたプログラムよって実現される新機能を、一部の利用者にのみ試験的に利用させ、リリースされたプログラムに未知のバグが内在しているか否かの検証を行うリリース方法である。そして、カナリアリリースでは、リリースされたプログラムに未知のバグが内在していないと判定した場合に、リリースされたプログラムよって実現される新機能を全ての利用者に利用させる。
【０００５】
そのため、事業者は、カナリアリリースを行う場合、リリースされたプログラムよって実現される新機能と、業務システムで既に動作している既存機能（新機能の旧版に該当する機能）とが同時に動作するようにリリースを行う。そして、事業者は、この場合、各利用者が既存機能及び新機能のいずれか一方のみを利用するように業務システムに対して設定を行う。さらに、事業者は、この場合、新機能のみがアクセスする情報を、既存機能がアクセスする情報から分離する（以下、新機能のみがアクセスする情報を分離情報とも呼び、既存機能がアクセスする情報を記憶情報とも呼ぶ）。
【０００６】
これにより、事業者は、リリースしたプログラムに内在していた未知のバグによって情報の破壊が発生した場合であっても、その未知のバグによる影響を分離情報のみに限定させることが可能になる。そのため、事業者は、カナリアリリースを行うことにより、リリースしたプログラムに未知のバグが内在していた場合における業務システムへの影響を抑えることが可能になる（例えば、特許文献１乃至３参照）。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２０１０−２２４７２８号公報
【特許文献２】国際公開第２０１２／０７３６８６号
【特許文献３】特開２００５−２５０８９２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
プログラムのリリースが行われる場合、事業者は、一般的に、所定の期間が経過してから次のプログラムのリリースを行う。すなわち、事業者は、リリースされたプログラムによる新機能が利用者にある程度利用され、リリースされたプログラムによる情報の破壊が発生するか否かを判定できるようになるまで、業務システムに対する次のリリースを行わない。
【０００９】
これにより、事業者は、リリースされたプログラムによる情報の破壊が発生した際に、プログラムのリリースが並行して複数回行われていたことにより、情報の破壊の原因となるプログラムを特定することができないといった事態の発生を防止することが可能になる。そのため、事業者は、この場合、発生した情報の破壊の原因の特定を早期に行うことが可能になる。
【００１０】
ここで、上記のようなカナリアリリースでは、リリースされたプログラムによる新機能を利用する利用者が限定される。そのため、カナリアリリースが行われた場合において、リリースされたプログラムによる新機能がある程度利用され、プログラムのリリースに伴う情報の破壊が発生するか否かを判定できるようになるまでに要する時間は、通常のリリースと比較して長くなる。したがって、カナリアリリースを行う場合、事業者は、プログラムのリリースを行う間隔を、通常のリリースを行う場合よりも長く設定する必要がある。
【００１１】
また、上記のように分離情報と記憶情報とを区別して管理する場合であっても、リリースされたプログラムによる新機能の処理内容によっては、新機能が記憶情報にアクセスを行う可能性がある。そのため、事業者は、この場合、未知のバグによる影響を分離情報のみに限定させることができない。
【００１２】
そこで、一つの側面では、プログラムのバグによる影響を限定し、プログラムのリリース間隔を短縮する情報制御プログラム、情報制御装置及び情報制御方法を提供することを目的とする。
【課題を解決するための手段】
【００１３】
実施の形態の一つの態様によれば、コンピュータに、記憶部に記憶された記憶情報の更新要求を受け付けたことに応じて、前記記憶情報のうちの一部の情報を差分情報として記憶する差分記憶部が存在するか否かを判定し、前記差分記憶部が存在しないと判定した場合、前記差分記憶部を作成して前記差分情報を移行し、前記差分情報に対し、前記更新要求に基づく更新を行い、前記記憶情報のうち前記記憶部に記憶された記憶情報と前記差分情報とのマージ要求を受け付けたことに応じて、前記差分情報を前記記憶情報の一部として前記記憶部に記憶する、処理を実行させる。
【発明の効果】
【００１４】
一つの側面によれば、プログラムのバグによる影響を限定し、プログラムのリリース間隔を短縮する。
【図面の簡単な説明】
【００１５】
【図１】情報処理システム１０の全体構成を示す図である。
【図２】カナリアリリースが行われる場合の情報処理装置１の具体例を説明する図である。
【図３】カナリアリリースが行われる場合の情報処理装置１の具体例を説明する図である。
【図４】カナリアリリースが行われる場合の情報処理装置１の具体例を説明する図である。
【図５】第１の実施の形態における情報制御処理の概略を説明する図である。
【図６】情報処理装置１のハードウエア構成を説明する図である。
【図７】情報処理装置１の各機能のブロック図である。
【図８】情報処理装置１の情報格納領域１３０に記憶された情報のブロック図である。
【図９】第１の実施の形態における情報制御処理の概略を説明するフローチャートである。
【図１０】第１の実施の形態における情報制御処理の概略を説明するフローチャートである。
【図１１】第１の実施の形態における情報制御処理の概略を説明する図である。
【図１２】第１の実施の形態における情報制御処理の詳細を説明するフローチャートである。
【図１３】第１の実施の形態における情報制御処理の詳細を説明するフローチャートである。
【図１４】第１の実施の形態における情報制御処理の詳細を説明するフローチャートである。
【図１５】第１の実施の形態における情報制御処理の詳細を説明するフローチャートである。
【図１６】第１の実施の形態における情報制御処理の詳細を説明するフローチャートである。
【図１７】記憶情報１３１の具体例を説明する図である。
【図１８】Ｓ５４の処理が行われた後の記憶情報１３１を説明する図である。
【図１９】Ｓ５５の処理で作成される差分情報１３４を説明する図である。
【図２０】Ｓ５６の処理で作成される管理情報１３２の具体例を説明する図である。
【図２１】Ｓ３２の処理が行われた後の差分情報１３４の具体例を説明する図である。
【図２２】Ｓ３２の処理が行われた後の差分情報１３４の具体例を説明する図である。
【図２３】Ｓ４１の処理が行われた後の記憶情報１３１の具体例を説明する図である。
【図２４】Ｓ４２の処理が行われた後の差分情報１３４の具体例を説明する図である。
【図２５】Ｓ４３の処理が行われた後の管理情報１３２の具体例を説明する図である。
【図２６】Ｓ６２の処理が行われる前の記憶情報１３１の具体例である。
【図２７】Ｓ６２の処理が行われる前の差分情報１３４の具体例である。
【図２８】Ｓ６２の処理が行われた後の記憶情報１３１の具体例である。
【図２９】第２の実施の形態における情報制御処理を説明するフローチャートである。
【図３０】第２の実施の形態における情報制御処理を説明するフローチャートである。
【図３１】第２の実施の形態における情報制御処理を説明するフローチャートである。
【図３２】第２差分情報１３５の具体例を説明する図である。
【図３３】Ｓ９２の処理が行われた後の記憶情報１３１の具体例を説明する図である。
【図３４】記憶数１３１ａが示す値に対応する数の情報を有する記憶情報１３１の具体例を説明する図である。
【発明を実施するための形態】
【００１６】
［情報処理システムの構成］
図１は、情報処理システム１０の全体構成を示す図である。図１に示す情報処理システム１０において、情報処理装置１（以下、情報制御装置１とも呼ぶ）がデータセンターＤＣ内に設けられている。図１に示す情報処理装置１には、例えば、利用者に対してサービスを提供するための業務システムが構築される。また、図１に示す例において、情報処理装置１は、記憶部２を有している。
【００１７】
利用者端末１１、１２及び１３は、例えば、インターネットやイントラネット等のネットワークを介して、データセンターＤＣとアクセス可能になっている。
【００１８】
情報処理装置１は、例えば、利用者端末１１、１２または１３から送信された処理要求を受信したことに応じて、例えば、記憶部２に記憶された情報に対して処理を行う。具体的に、情報処理装置１は、例えば、記憶部２に記憶された情報の更新や読み出しを行う。
【００１９】
［カナリアリリースが行われる場合の情報処理装置の具体例］
次に、カナリアリリースが行われる場合の情報処理装置１の具体例について説明を行う。図２から図４は、カナリアリリースが行われる場合の情報処理装置１の具体例を説明する図である。
【００２０】
図２に示す情報処理装置１のＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）は、過去にリリースされたプログラム（以下、プログラムＡとも呼ぶ）と協働することにより、既存機能を実現するための処理実行部１２１ａ（以下、第２処理部１２１ａとも呼ぶ）として動作する。また、図２に示す情報処理装置１のＣＰＵは、新たにリリースされたプログラム（以下、プログラムＢとも呼ぶ）と協働することにより、新機能を実現するための処理実行部１２１ｂ（以下、第１処理部１２１ｂとも呼ぶ）として動作する。
【００２１】
すなわち、図２に示す例において、既存機能は、例えば、利用者によってある程度利用されている機能である。そのため、プログラムＡは、例えば、事業者によって、未知のバグが存在しないと判定されたプログラムである。一方、図２に示す例において、新機能は、例えば、利用者による利用が開始されてから間もない機能である。そのため、プログラムＢは、例えば、未知のバグが存在しないとの判定が行われていないプログラムである。
【００２２】
また、図２に示す情報処理装置１のＣＰＵは、利用者端末１１、１２または１３から送信された処理要求を、処理実行部１２１ａと処理実行部１２１ｂとのいずれかに振り分ける要求振分部１２２として動作する。具体的に、要求振分部１２２は、図２に示す例において、既存機能を利用する利用者が使用する利用者端末１１または１２から送信された処理要求を、処理実行部１２１ａに振り分ける。また、要求振分部１２２は、図２に示す例において、新機能を利用する利用者が使用する利用者端末１３から送信された処理要求を、処理実行部１２１ｂに振り分ける。
【００２３】
そして、処理実行部１２１ｂは、要求振分部１２２に振り分けられた処理要求の内容に基づき、分離情報１３３（例えば、新機能を利用する利用者に関する情報）が記憶された第２記憶部１３０ｂにアクセスする。また、処理実行部１２１ａは、要求振分部１２２に振り分けられた処理要求の内容に基づき、記憶情報１３１が記憶された第１記憶部１３０ａにアクセスする。
【００２４】
すなわち、情報処理装置１にカナリアリリースを行う場合、事業者は、既存機能を実現するために動作する処理実行部１２１ａと、新機能を実現するために動作する処理実行部１２１ｂを並列して動作させる。そして、事業者は、図２に示す例において、利用者端末１３を介して送信された処理要求のみを処理実行部１２１ｂに処理させる。また、事業者は、処理実行部１２１ｂのみがアクセスする分離情報１３３を、記憶情報１３１から分離して第２記憶部１３０ｂに記憶する。
【００２５】
これにより、処理実行部１２１ｂが第２記憶部１３０ｂのみにアクセスを行う場合、新機能を実現するためのプログラム（リリースされたプログラム）に未知のバグが内在している場合であっても、その未知のバグによる影響を分離情報１３３に留めることが可能になる。そのため、事業者は、カナリアリリースを行うことにより、リリースしたプログラムに未知のバグが内在していた場合における業務システムへの影響を抑えることが可能になる。
【００２６】
ここで、プログラムのリリースが行われた場合、事業者は、一般的に、所定の期間が経過してから次のリリースを行う。すなわち、事業者は、情報処理装置１にリリースされたプログラムによる新機能が利用者にある程度利用され、プログラムのリリースに伴う情報の破壊が発生するか否かを判定できるようになるまで、情報処理装置１に対して次のリリースを行わない。
【００２７】
これにより、事業者は、リリースされたプログラムによる情報の破壊が発生した際に、プログラムのリリースが並行して複数回行われていたことにより、情報の破壊の原因となるプログラムを特定することができないといった事態の発生を防止することが可能になる。そのため、事業者は、この場合、発生した情報の破壊の原因の特定を早期に行うことが可能になる。
【００２８】
しかしながら、上記のようなカナリアリリースでは、リリースされたプログラムによる新機能を利用する利用者が限定される。そのため、カナリアリリースが行われた場合において、リリースされたプログラムによる新機能がある程度利用され、プログラムのリリースに伴う情報の破壊が発生するか否かが判定できるようになるまでに要する時間は、通常のリリースと比較して長くなる。以下、カナリアリリース及び通常のリリースをそれぞれ行う場合の具体例について説明を行う。
【００２９】
図３は、未知のバグが内在するプログラムについてカナリアリリース及び通常のリリースを行う場合の具体例を説明する図である。具体的に、図３（Ａ）は、通常のリリースの場合におけるリリースのタイミング、未知のバグの存在を検知可能なタイミング及び未知のバグへの対象が行われるタイミングの関係を説明するグラフである。また、図２（Ｂ）は、カナリアリリースの場合におけるリリースのタイミング、未知のバグの存在を検知可能なタイミング及び未知のバグへの対象が行われるタイミングの関係を説明するグラフである。
【００３０】
図３（Ａ）及び図３（Ｂ）において、横軸は時間を示しており、縦軸はリリースしたプログラムに内在する未知のプログラムが情報処理装置１等に与える影響範囲を示している。そして、図３（Ａ）及び図３（Ｂ）の横軸における「リリース」、「問題検知」及び「対処」は、それぞれカナリアリリースの場合におけるリリースのタイミング、未知のバグの存在を検知可能なタイミング及び未知のバグへの対象が行われるタイミングを示している。また、図３（Ａ）及び図３（Ｂ）の縦軸における「影響範囲Ａ」は、事業者がリリースしたプログラムに未知のバグが内在することを検知するために必要な影響範囲である。
【００３１】
カナリアリリースは、プログラムのリリース後、リリースされたプログラムによる新機能を限られた利用者にのみ利用させることにより、リリースしたプログラムに未知のバグが内在している場合であっても、その影響範囲を限定させるものである。そのため、カナリアリリースによってリリースされたプログラムによる新機能は、通常のリリースによってリリースされたプログラムによる新機能と比較して、利用者による利用頻度が低くなる。したがって、図３に示すように、図３（Ｂ）のグラフの縦軸が「影響範囲Ａ」に到達するまでに要する時間（グラフの縦軸が「リリース」から「問題検知」に到達するまでの時間）は、図３（Ａ）のグラフの縦軸が「影響範囲Ａ」に到達するまでに要する時間よりも長くなる。
【００３２】
そのため、事業者は、情報処理装置１に対してカナリアリリースを行う場合、情報処理装置１に対するプログラムのリリース間隔を、通常のリリースを行う場合よりも長く設定する必要がある。
【００３３】
また、図２に示すように、分離情報１３３と記憶情報１３１とが分けて管理される場合であっても、リリースされたプログラムによる新機能の処理内容によっては、図４に示すように、新機能が記憶情報１３１にアクセスを行う可能性がある。そのため、この場合、事業者は、未知のバグによる影響を第２記憶部１３０ｂに記憶された分離情報１３３のみに限定させることができない。
【００３４】
そこで、第１の実施の形態における情報処理装置１は、図５に示すように、記憶情報１３１の更新要求を受け付けた場合に、差分記憶部１３０ｃの差分情報１３４（第１記憶部１３０ａに記憶された記憶情報１３１の一部を移行した情報）を更新する。そして、情報処理装置１は、マージ要求を受け付けた場合に、差分記憶部１３０ｃに記憶された差分情報１３４を第１記憶部１３０ａに記憶する。以下、第１の実施の形態における情報制御処理について説明を行う。
【００３５】
図５は、第１の実施の形態における情報制御処理を説明する図である。第１の実施の形態における情報処理装置１は、図５に示すように、第１記憶部１３０ａに記憶された記憶情報１３１の一部を差分記憶部１３０ｃに移行した情報である差分情報１３４に対して更新を行う。すなわち、第１の実施の形態における情報処理装置１は、第１記憶部１３０ａに記憶された記憶情報１３１に対して更新を行わない。
【００３６】
これにより、情報処理装置１は、リリースされたプログラムに未知のバグが内在している場合であっても、その未知のバグによる影響を、差分記憶部１３０ｃに記憶された差分情報１３４に限定させることが可能になる。そのため、情報処理装置１は、リリースされたプログラムに未知のバグが内在している場合であっても、その未知のバグによる影響を第１記憶部１３０ａに記憶された記憶情報１３１に及ぶことを防止することが可能になる。
【００３７】
また、情報処理装置１が未知のバグによる影響を差分記憶部１３０ｃに記憶された差分情報１３４に限定させることにより、事業者は、カナリアリリースを行う間隔を短縮することが可能になる。
【００３８】
［情報処理装置のハードウエア構成］
次に、情報処理装置１のハードウエア構成について説明する。図６は、情報処理装置１のハードウエア構成を説明する図である。
【００３９】
情報処理装置１は、プロセッサであるＣＰＵ１０１と、メモリ１０２と、外部インターフェース（Ｉ／Ｏユニット）１０３と、記憶媒体（ストレージ）１０４とを有する。各部は、バス１０５を介して互いに接続される。
【００４０】
記憶媒体１０４は、記憶媒体１０４内のプログラム格納領域（図示しない）に、リリースされたプログラムによる新機能がアクセスする情報を制御する処理（以下、情報制御処理とも呼ぶ）を行うためのプログラム１１０を記憶する。
【００４１】
ＣＰＵ１０１は、図６に示すように、プログラム１１０の実行時に、プログラム１１０を記憶媒体１０４からメモリ１０２にロードし、プログラム１１０と協働して情報制御処理を行う。
【００４２】
記憶媒体１０４は、例えば、情報制御処理を行う際に用いられる情報を記憶する情報格納領域１３０を有する。また、外部インターフェース１０３は、利用者端末１１、１２及び１３と通信を行う。なお、情報格納領域１３０は、図１で説明した記憶部２に対応する。
【００４３】
[情報処理装置のソフトウエア構成]
次に、情報処理装置１のソフトウエア構成について説明する。図７は、情報処理装置１の各機能のブロック図である。ＣＰＵ１０１は、プログラム１１０と協働することにより、存在判定部１１１と、情報更新部１１２と、情報追加記憶部１１３として動作する。また、ＣＰＵ１０１は、プログラム１１０と協働することにより、情報読み出し部１１４と、情報管理部１１５と、情報マージ部１１６として動作する。なお、以下、図７に示す存在判定部１１１、情報更新部１１２、情報追加記憶部１１３、情報読出し部１１４及び情報管理部１１５は、要求振分部１２２が振り分けた処理要求を処理実行部１２１ｂが実行した場合に動作する。
【００４４】
また、図８は、情報処理装置１の情報格納領域１３０に記憶された情報のブロック図である。図８に示すように、情報格納領域１３０には、例えば、第１情報格納領域１３０ａ（以下、第１記憶部１３０ａまたは記憶部１３０ａとも呼ぶ）と、第２情報格納領域１３０ｂ（以下、第２記憶部１３０ｂ）と、第３情報格納領域１３０ｃ（以下、差分記憶部１３０ｃとも呼ぶ）とが存在する。
【００４５】
そして、第１記憶部１３０ａには、記憶情報１３１と、管理情報１３２とが記憶され、第２記憶部１３０ｂには、分離情報１３３が記憶される。また、差分記憶部１３０ｃには、差分情報１３４と第２差分情報１３５とが記憶される。
【００４６】
存在判定部１１１は、処理実行部１２１ｂによる処理要求の実行に伴って情報更新部１１２が記憶情報１３１に対する更新要求の実行を行う前に、差分記憶部１３０ｃが存在するか否かを判定する。その結果、差分記憶部１３０ｃが存在しないと判定した場合、情報管理部１１５は、差分記憶部１３０ｃを作成する。そして、情報管理部１１５は、差分記憶部１３０ｃを作成した後、記憶情報１３１のうちの一部の情報を差分情報１３４として差分記憶部１３０ｃに移行して記憶する。
【００４７】
また、存在判定部１１１は、処理実行部１２１ｂによる処理要求の実行に伴って情報追加記憶部１１３が追加記憶要求の実行を行う前に、差分記憶部１３０ｃが存在するか否かを判定する。その結果、差分記憶部１３０ｃが存在しないと判定した場合、情報管理部１１５は、差分記憶部１３０ｃを作成する。
【００４８】
なお、記憶情報１３１及び差分情報１３４は、例えば、数値情報を含むものであってよい。また、この場合、更新要求は、例えば、記憶情報１３１または差分情報１３４が示す値を増加または減少させる要求であってよい。
【００４９】
情報更新部１１２は、処理実行部１２１ｂから更新要求を受け付けた場合、差分記憶部１３０ｃに記憶された差分情報１３４の更新を行う。
【００５０】
情報追加記憶部１１３は、処理実行部１２１ｂから追加記憶要求を受け付けた場合、追加記憶要求に対応する情報を第２差分情報１３５の少なくとも一部として差分記憶部１３０ｃに記憶する。
【００５１】
情報読み出し部１１４は、処理実行部１２１ｂから読み出し要求を受け付けた場合、読み出し要求に基づく情報の読み出しを行う。
【００５２】
情報マージ部１１６は、例えば、事業者からマージ要求を受け付けた場合、差分記憶部１３０ｃに記憶された情報を第１記憶部１３０ａに記憶する。具体的に、情報マージ部１１６は、例えば、差分記憶部１３０ｃに差分情報１３４が記憶されている場合、差分情報１３４と、第１記憶部１３０ａに記憶された記憶情報１３１とのマージを行う。また、情報マージ部１１６は、例えば、差分記憶部１３０ｃに差分情報１３４及び第２差分情報１３５が記憶されている場合、差分情報１３４及び第２差分情報１３５と、第１記憶部１３０ａに記憶された記憶情報１３１とのマージを行う。なお、管理情報１３２については後述する。また、記憶情報１３１、管理情報１３２、差分情報１３４及び第２差分情報１３５の具体例については後述する。
【００５３】
[第１の実施の形態の概略］
次に、第１の実施の形態の概略について説明する。図９及び図１０は、第１の実施の形態における情報制御処理の概略を説明するフローチャートである。図１１は、第１の実施の形態における情報制御処理の概略を説明する図である。図１１を参照しながら、図９及び図１０の情報処理装置について説明を行う。
【００５４】
初めに、情報処理装置１は、記憶情報１３１の更新要求を受け付けるまで待機する（Ｓ１のＮＯ）。すなわち、情報処理装置１は、例えば、新機能を利用する利用者が利用者端末１３を介して送信した処理要求を実行した結果、記憶情報１３１の更新要求を実行する必要が生じるようになるまで待機する。そして、記憶情報１３１の更新要求を受け付けた場合（Ｓ１のＹＥＳ）、情報処理装置１は、差分記憶部１３０ｃが存在するか否かを判定する（Ｓ２）。
【００５５】
その結果、差分記憶部１３０ｃが存在しない場合（Ｓ２のＮＯ）、情報処理装置１は、差分記憶部１３０ｃを作成する（Ｓ３）。そして、情報処理装置１は、この場合、第１記憶部１３０ａに記憶された記憶情報１３１のうちの一部の情報を、差分情報１３４として差分記憶部１３０ｃに移行する（Ｓ４）。一方、差分記憶部１３０ｃが存在する場合（Ｓ２のＹＥＳ）、情報処理装置１は、Ｓ３及びＳ４の処理を実行しない。
【００５６】
そして、情報処理装置１は、差分記憶部１３０ｃに記憶された差分情報１３４に対し、Ｓ１の処理で受信した更新要求に基づく更新を行う（Ｓ５）。
【００５７】
すなわち、情報処理装置１は、更新要求に基づく更新が差分記憶部１３０ｃに記憶された差分情報１３４のみに対して行われるように情報の管理を行う。これにより、情報処理装置１は、リリースされたプログラムに未知のバグが内在している場合であっても、その未知のバグによる影響を受ける範囲を差分記憶部１３０ｃに記憶されている差分情報１３４に限定することが可能になる。そして、情報処理装置１は、未知のバグによる影響が、第１記憶部１３０ａに記憶された記憶情報１３１に及ぶことを防止することが可能になる。また、未知のバグによる影響が差分情報１３４に限定されることにより、事業者は、カナリアリリースを行う間隔を短縮することが可能になる。
【００５８】
その後、情報処理装置１は、図１０に示すように、例えば、事業者が使用する事業者端末（図示しない）から、第１記憶部１３０ａに記憶された記憶情報１３１と、差分記憶部１３０ｃに記憶された差分情報１３４とをマージするためのマージ要求を受信するまで待機する（Ｓ１１のＮＯ）。そして、マージ要求を受信した場合（Ｓ１１のＹＥＳ）、情報処理装置１は、差分記憶部１３０ｃに記憶された差分情報１３４を第１記憶部１３０ａに記憶する（Ｓ１２）。
【００５９】
すなわち、リリースされたプログラムによる新機能が利用者にある程度利用され、プログラムのリリースに伴うデータの破壊が発生するか否かが判定できるタイミングになった場合、事業者は、例えば、リリースされたプログラムに未知のバグが内在していないと判定する。そして、この場合、事業者は、事業者端末（図示しない）を介して情報処理装置１にマージ要求を送信し、第１記憶部１３０ａに記憶された記憶情報１３１と、差分記憶部１３０ｃに記憶された差分情報１３４とのマージを行う。これにより、事業者は、差分記憶部１３０ｃが作成される前と同じように、記憶情報１３１と差分情報１３４とを分離しない形での情報の管理を行うことが可能になる。
【００６０】
このように、情報処理装置１は、第１記憶部１３０ａに記憶された記憶情報１３１の更新要求を受け付けたことに応じて、記憶情報１３１のうちの一部の情報を差分情報１３４として記憶する差分記憶部１３０ｃが存在するか否かを判定する。そして、情報処理装置１は、差分記憶部１３０ｃが存在しないと判定した場合、差分記憶部１３０ｃを作成して差分情報１３４を差分記憶部１３０ｃに移行する。その後、情報処理装置１は、差分記憶部１３０ｃに記憶された差分情報１３４に対し、更新要求に基づく更新を行う。
【００６１】
一方、情報処理装置１は、第１記憶部１３０ａに記憶された記憶情報１３１と差分記憶部１３０ｃに記憶された差分情報１３４とのマージ要求を受け付けたことに応じて、差分情報１３４を記憶情報１３１の一部として第１記憶部１３０ａに記憶する。
【００６２】
これにより、情報処理装置１は、リリースされたプログラムによる新機能が記憶情報１３１の更新を行う場合、第１記憶部に記憶された情報の更新を直接行う必要がなくなる。そのため、情報処理装置１は、リリースされたプログラムに未知のバグが内在している場合であっても、その未知のバグによる影響を差分記憶部１３０ｃに記憶された差分情報１３４に限定させることが可能になる。そして、情報処理装置１は、リリースされたプログラムに未知のバグが内在している場合であっても、その未知のバグによる影響を第１記憶部１３０ａに記憶された記憶情報１３１に及ぶことを防止することが可能になる。
【００６３】
また、情報処理装置１は、プログラムのリリースを並行して複数回行った場合において、リリースしたプログラムのいずれかに未知のバグが内在していた場合であっても、その未知のバグによる影響を差分情報１３４に限定させることが可能になる。そのため、情報処理装置１は、先のプログラムのリリースに伴う情報の破壊が発生するか否かを判定できるタイミングになる前に、次のリリースを行うことが可能になる。
【００６４】
具体的に、図１１に示すように、事業者は、先のプログラムのリリースに伴う情報の破壊が発生するか否かを判定できるタイミング（「問題検知１」が示すタイミング）になる前のタイミング（「リリース２」のタイミング）に、次のプログラムのリリースを行うことが可能になる。したがって、事業者は、カナリアリリースを行う場合であっても、プログラムのリリースを行う頻度を高めることが可能になる。
【００６５】
なお、情報処理装置１は、プログラムのリリースを並行して複数回行う場合、リリースされたプログラムのそれぞれに対応する差分情報１３４を、複数作成するものであってもよい。これにより、情報処理装置１は、リリースされたプログラムのいずれかに未知のバグが内在していた場合であっても、その未知のバグによる影響を、複数の差分情報１３４のうちの未知のバグが内在していたプログラムに対応する差分情報１３４に限定することが可能になる。
【００６６】
[第１の実施の形態の詳細]
次に、第１の実施の形態の詳細について説明する。図１２から図１６は、第１の実施の形態における情報制御処理の詳細を説明するフローチャートである。また、図１７から図２８は、第１の実施の形態における情報制御処理の詳細を説明する図である。図１７から図２８を参照しながら、図１２から図１６の情報制御処理を説明する。なお、以下、情報処理装置１において、イベントのチケットの販売残数を管理する業務システムが稼働しているものとして説明を行う。
【００６７】
[情報更新処理及び情報読み出し処理]
初めに、情報制御処理のうち、情報の更新を行う処理（以下、情報更新処理とも呼ぶ）及び情報の読み出しを行う処理（以下、情報読み出し処理とも呼ぶ）について説明を行う。
【００６８】
要求振分部１２２は、利用者端末１１、１２及び１３から処理要求を受信するまで待機する（Ｓ２１のＮＯ）。そして、処理要求を受信した場合（Ｓ２１のＹＥＳ）、要求振分部１２２は、例えば、利用者端末１１、１２または１３から受信した処理要求を、処理実行部１２１ａと処理実行部１２１ｂとに振り分ける。具体的に、要求振分部１２２は、例えば、利用者端末１１または１２から受信した処理要求を処理実行部１２１ａに振り分け、利用者端末１３から受信した処理要求を処理実行部１２１ｂに振り分ける。
【００６９】
その後、処理要求が処理実行部１２１ｂに振り分けられた場合、処理実行部１２１ｂは、振り分けられた処理要求を実行する。そして、処理要求を実行した結果、記憶情報１３１の更新要求を実行する必要が生じた場合（Ｓ２２のＮＯ）、処理実行部１２１ｂは、存在判定部１１１に処理の指示を行う。具体的に、存在判定部１１１は、この場合、図１３に示すように、差分記憶部１３０ｃが存在するか否かの判定を行う（Ｓ３１）。その結果、差分記憶部１３０ｃが存在しない場合（Ｓ３１のＮＯ）、情報管理部１１５は、差分記憶部１３０ｃ及び管理情報１３２の作成を行う。管理情報１３２は、差分情報１３４として記憶情報１３１の一部を移行した差分記憶部１３０の情報を含む情報である。以下、差分記憶部１３０ｃ及び管理情報１３２の作成を行う際の具体的な処理について説明を行う。
【００７０】
情報管理部１１５は、図１５に示すように、事業者によって予め定められた値である要求上限数１３２ａを取得する（Ｓ５１）。要求上限数１３２ａは、第１記憶部１３０ａに記憶された記憶情報１３１のうち、差分情報１３４として差分記憶部１３０ｃに記憶することができる情報の数である。要求上限数１３２ａは、事業者によって情報格納領域１３０に予め記憶されているものであってよい。
【００７１】
すなわち、差分記憶部１３０ｃに記憶される差分情報１３４は、リリースしたプログラムに未知のバグが内在している場合、その未知のバグの影響を受ける情報である。そのため、事業者は、差分記憶部１３０ｃに記憶する差分情報１３４の情報量が可能な限り少なくように管理する必要がある。したがって、事業者は、例えば、要求上限数１３２ａを予め定めて、情報格納領域１３０に記憶する。これにより、情報管理部１１５は、要求上限数１３２ａに基づく情報の管理を行うことが可能になる。
【００７２】
さらに、情報管理部１１５は、取得した要求上限数１３２ａから、差分記憶部１３０ｃに移行する情報の数の単位である要求数１３２ｂを算出する（Ｓ５１）。情報管理部１１５は、例えば、取得した要求上限数１３２ａを「２」で除算した値を、要求数１３２ｂとして算出する。これにより、情報管理部１１５は、差分記憶部１３０ｃに記憶する差分情報１３４の情報量が少なくなるように管理することが可能になる。
【００７３】
また、情報管理部１１５は、取得した要求上限数１３２ａから、要求可能数１３２ｃを算出する（Ｓ５１）。要求可能数は、例えば、第１記憶部１３０ａに記憶された記憶情報１３１のうち、差分情報１３４としてさらに差分記憶部１３０ｃに移行することができる情報の数である。そのため、情報管理部１１５は、例えば、要求上限数１３２ａから要求数１３２ｂを減算した値を、要求可能数１３２ｃとして算出するものであってもよい。なお、以下、要求上限数１３２ａが「４００（枚）」であり、要求数１３２ｂが「２００（枚）」であり、要求可能数１３２ｃが「２００（枚）」であるものとして説明を行う。
【００７４】
次に、情報管理部１１５は、記憶情報１３１に含まれる記憶数１３１ａから要求数１３２ｂを減算した値が、「０」よりも大きいか否かを判定する（Ｓ５２）。以下、記憶情報１３１の具体例について説明を行う。
【００７５】
図１７は、記憶情報１３１の具体例を説明する図である。図１７に示す記憶情報１３１は、記憶情報１３１に含まれる各情報を識別する「情報ＩＤ」と、イベントの名称を設定する「イベント名」と、現在のチケットの残数を設定する「記憶数」とを項目として有する。具体的に、図１７に示す記憶情報１３１において、「情報ＩＤ」が「１」である情報の「イベント名」が「コンサートＡ」であり、「記憶数」が「３０００（枚）」である。図１７の他の情報については説明を省略する。なお、以下、情報管理部１１５は、図１７に示す記憶情報１３１のうちの「情報ＩＤ」が「１」である情報の一部を、差分情報１３４として差分記憶部１３０ｃに移行するものとして説明を行う。
【００７６】
図１７に示す記憶情報１３１に対してＳ５２の処理を行う場合、情報管理部１１５は、「情報ＩＤ」が「１」である情報の「記憶数」に記憶された情報である「３０００（枚）」を、記憶数１３１ａとして取得する。また、情報管理部１１５は、要求数１３２ｂとして「２００（枚）」を取得する。そして、記憶数１３１ａである「３０００（枚）」から要求数１３２ｂである「２００（枚）」を減算した値である「２８００（枚）」は、「０（枚）」よりも大きい。そのため、情報管理部１１５は、この場合、記憶数１３１ａから要求数１３２ｂを減算した値が、「０」よりも大きいか否かを判定する（Ｓ５２のＹＥＳ）。
【００７７】
図１５に戻り、情報管理部１１５は、記憶数１３１ａから要求数１３２ｂを減算した値が、「０」よりも大きい場合（Ｓ５２のＹＥＳ）、差分記憶部１３０ｃを作成する（Ｓ５３）。その後、情報管理部１１５は、記憶数１３１ａから要求数１３２ｂを減算した値を、記憶数１３１ａとして第１記憶部１３０ａに記憶する（Ｓ５４）。以下、Ｓ５４の処理が行われた後の記憶情報１３１について説明を行う。
【００７８】
図１８は、Ｓ５４の処理が行われた後の記憶情報１３１を説明する図である。情報管理部１１５は、図１７に示す記憶情報１３１のうちの「情報ＩＤ」が「１」である情報の「記憶数」に設定された値である「３０００（枚）」から、要求数１３２ｂである「２００（枚）」を減算した値である「２８００（枚）」を算出する。そして、情報管理部１１５は、図１８の下線部分に示すように、図１８に示す記憶情報のうちの「情報ＩＤ」が「１」である情報の「記憶数」に「２８００（枚）」を設定する。すなわち、情報管理部１１５は、現在の記憶数１３１ａから差分記憶部１３０ｃに移行する情報の数を減算した値を、新たな記憶数１３１ａとして記憶する。
【００７９】
図１５に戻り、情報管理部１１５は、要求数１３２ｂを差分数１３４ａとする差分情報１３４を作成する（Ｓ５５）。そして、情報管理部１１５は、作成した差分情報１３４を差分記憶部１３０ｃに記憶する。以下、Ｓ５５の処理で作成される差分情報１３４の具体例について説明を行う。
【００８０】
図１９は、Ｓ５５の処理で作成される差分情報１３４を説明する図である。図１９に示す差分情報１３４は、図１７等で説明した記憶情報１３１と同じ項目を有している。具体的に、情報管理部１１５は、図１９に示すように、「情報ＩＤ」に「１」を設定し、「イベント名」に「コンサートＡ」を設定し、「差分数」に要求数１３２ｂである「２００（枚）」を設定する。
【００８１】
すなわち、情報管理部１１５は、図１３のＳ３１の処理において、差分記憶部１３０ｃが存在しない場合、記憶情報１３１の記憶数１３１ａに設定された値の一部を差分数１３４ａに設定した差分情報１３４を作成する。これにより、情報管理部１１５は、リリースされたプログラム（未知のバグが内在している可能性があるプログラム）による新機能が更新する情報を、差分情報１３４の差分数１３４ａのみに限定することが可能になる。
【００８２】
図１５に戻り、情報管理部１１５は、管理情報１３２を作成する（Ｓ５６）。そして、情報管理部１１５は、作成した管理情報１３２を第１記憶部１３０ａに記憶する。以下、Ｓ５６の処理で作成される管理情報１３２の具体例について説明を行う。
【００８３】
図２０は、Ｓ５６の処理で作成される管理情報１３２の具体例を説明する図である。なお、以下、図１７等で説明した記憶情報１３１が記憶されたＤＢ（データベース）の名称が「ＤＢ１」であり、記憶情報１３１のテーブル名が「チケット管理テーブル」であるものとして説明を行う。
【００８４】
図２０に示す管理情報１３２は、管理情報１３２が管理する記憶情報１３１が記憶されたＤＢ（データベース）を識別する「ＤＢ名」と、管理情報１３２が管理する記憶情報１３１のテーブル名を識別する「テーブル名」とを項目として有する。また、図２０に示す管理情報１３２は、記憶情報１３１の「情報ＩＤ」に対応する「情報ＩＤ」を項目として有する。また、図２０に示す管理情報１３２は、要求数１３２ｂを設定する「要求数」と、要求可能数１３２ｃを設定する「要求可能数」と、要求上限数１３１ａを設定する「要求上限数」とを有する。
【００８５】
具体的に、図２０に示す管理情報１３２に示すように、情報管理部１１５は、例えば、「ＤＢ名」に「ＤＢ１」を設定し、「テーブル名」に「チケット管理テーブル」を設定し、「情報ＩＤ」に「１」を設定する。また、図２０に示す管理情報１３２に示すように、情報管理部１１５は、例えば、「要求数」に「２００（枚）」を設定し、「要求可能数」に「２００（枚）」を設定し、「要求上限数」に「４００（枚）」を設定する。これにより、情報管理部１１５は、差分情報１３４として移行した記憶情報１３１の移行先に関する情報を管理することが可能になる。
【００８６】
図１５に戻り、Ｓ５２の処理において、記憶数１３１ａから要求数１３２ｂを減算した値が「０」以下である場合（Ｓ５２のＮＯ）、情報管理部１１５は、現在の要求数１３２ｂを「２」で除算した値を、新たな要求数１３２ｂとして再算出する（Ｓ５７）。
【００８７】
すなわち、Ｓ５２の処理において、記憶数１３１ａから要求数１３２ｂを減算した値が「０」以下である場合とは、図２で説明した処理実行部１２１ａによる処理が頻繁に行われたことにより、記憶数１３１ａが減少した場合である。そのため、情報管理部１１５は、この場合、第１記憶部１３０ａから差分記憶部１３０ｃに移行する情報の数が少なくなるように、要求数１３２ｂを再算出する。これにより、情報管理部１１５は、現在の記憶数１３１ａに合わせた形で情報の管理を行うことが可能になる。
【００８８】
そして、Ｓ５７の処理で算出した要求数１３２ｂが「０」よりも大きい場合（Ｓ５８のＹＥＳ）、情報管理部１１５は、Ｓ５２以降の処理を行う。一方、Ｓ５７の処理で算出した要求数１３２ｂが「０」以下である場合（Ｓ５８のＮＯ）、情報管理部１１５は、情報制御処理を終了する。すなわち、この場合、情報管理部１１５は、記憶情報１３１のうち差分情報１３４として差分記憶部１３０ｃに移行することができる情報が存在しないと判定し、情報制御処理を終了する。なお、情報管理部１１５は、この場合、管理者に対してエラー通知を行うものであってもよい。
【００８９】
図１３に戻り、差分記憶部１３０ｃが存在する場合（Ｓ３１のＹＥＳ）、情報更新部１１２は、更新要求の内容に応じて、差分記憶部１３０ｃに記憶された差分情報１３４の差分数１３４ａを更新する（Ｓ３２）。以下、Ｓ３２の処理が行われた後の差分情報１３４の具体例について説明を行う。
【００９０】
図２１及び図２２は、Ｓ３２の処理が行われた後の差分情報１３４の具体例を説明する図である。例えば、処理実行部１２１ｂがコンサートＡのチケットの販売を２枚分要求する処理要求を受信した場合、情報更新部１１２は、図２１の下線部分に示すように、図２１に示す「差分数」に設定された値である「２００（枚）」を「１９８（枚）」に更新する。
【００９１】
すなわち、この場合、情報更新部１１２は、図１８に示す記憶情報１３１の記憶数１３１ａを更新せずに、差分情報１３４の差分数１３４ａのみを更新する。これにより、情報更新部１１２は、リリースしたプログラムに未知のバグが内在している場合であっても、その未知のバグによる影響を差分情報１３４の差分数１３４ａに限定することが可能になる。
【００９２】
図１３に戻り、情報管理部１１５は、差分情報１３４の差分数１３４ａが「０」よりも大きいか否かについて判定する（Ｓ３３）。そして、差分情報１３４の差分数１３４ａが「０」よりも大きい場合（Ｓ３３のＹＥＳ）、情報管理部１１５は、図１２のＳ２６以降の処理を行う。一方、図２２の下線部分に示すように、差分数１３４ａが「０」以下である場合（Ｓ３３のＮＯ）、管理情報１３２の要求可能数１３２ｃが「０」よりも大きいか否かについて判定する（Ｓ３４）。
【００９３】
その結果、管理情報１３２の要求可能数１３２ｃが「０」よりも大きい場合（Ｓ３４のＹＥＳ）、記憶数１３１ａから要求可能数１３２ｃを減算した値が「０」よりも大きいか否かを判定する（Ｓ３５）。一方、要求可能数１３２ｃが「０」以下である場合（Ｓ３４のＮＯ）、情報管理部１１５は、情報制御処理を終了する。すなわち、この場合、情報管理部１１５は、記憶情報１３１のうち差分情報１３４として差分記憶部１３０ｃに移行することができる情報が存在しないと判定し、情報制御処理を終了する。そして、情報管理部１１５は、この場合、管理者に対してエラー通知を行うものであってもよい。
【００９４】
なお、情報管理部１１５は、Ｓ３３の処理において、差分情報１３４の差分数１３４ａが、所定の閾値（「０」よりも大きい数）よりも大きいか否かについて判定するものであってもよい。そして、情報管理部１１５は、Ｓ３３の処理において、差分数１３４ａが所定の閾値を下回った場合に、Ｓ３４以降の処理を実行するものであってもよい。以下、Ｓ３４及びＳ３５の処理の具体例について説明を行う。
【００９５】
図２０に示す管理情報１３２において、「要求可能数」に設定された値は「２００（枚）」であるため、「０（枚）」よりも大きい値である（Ｓ３４のＹＥＳ）。また、図１８に示す記憶情報１３１において、「情報ＩＤ」が「１」である情報の「記憶数」には「２８００（枚）」が設定されている。そのため、「情報ＩＤ」が「１」である情報の「記憶数」に設定された「２８００（枚）」から、図２０に示す管理情報の「要求可能数」に設定された「２００（枚）」を減算した値である「２６００（枚）」は、「０（枚）」よりも大きい値である（Ｓ３５のＹＥＳ）。したがって、情報管理部１１５は、この場合、図１４のＳ４１以降の処理を行う。
【００９６】
図１３に戻り、記憶数１３１ａから要求可能数１３２ｃを減算した値が「０」以下である場合（Ｓ３５のＮＯ）、情報管理部１１５は、現在の要求可能数１３２ｃを「２」で除算した値を、新たな要求可能数１３２ｃとして第１記憶部１３０ａに記憶する（Ｓ３６）。
【００９７】
すなわち、図２で説明した処理実行部１２１ａが受信した処理要求の状況によっては、記憶数１３１ａが減少し、記憶数１３１ａから要求可能数１３２ｃを減算した値が「０」以下になる場合がある。そのため、情報管理部１１５は、この場合、Ｓ３６の処理において、要求可能数１３２ｃを減少させる。これにより、情報管理部１１５は、現在の記憶数１３１ａに合わせた形で情報の管理を行うことが可能になる。
【００９８】
図１３に戻り、記憶数１３１ａから要求可能数１３２ｃを減算した値が「０」よりも大きい場合（Ｓ３５のＹＥＳ）、情報管理部１１５は、図１４に示すように、現在の記憶数１３１ａから要求数１３２ｂを減算した値を、新たな記憶数１３１ａとして第１記憶部１３０ａに記憶する（Ｓ４１）。また、情報管理部１１５は、現在の差分数１３４ａに要求数１３２ｂを加算した値を、新たな差分数１３４ａとして差分記憶部１３０ｃに記憶する（Ｓ４２）。さらに、情報管理部１１５は、現在の要求可能数１３２ｃから要求数１３２ｂを減算した値を、新たな要求可能数１３３ｃとして差分記憶部１３０に記憶する（Ｓ４３）。その後、情報管理部１１５は、図１２のＳ２６以降の処理を行う。以下、Ｓ４１からＳ４３の処理の具体例について説明を行う。
【００９９】
図２３は、Ｓ４１の処理が行われた後の記憶情報１３１の具体例を説明する図である。また、図２４は、Ｓ４２の処理が行われた後の差分情報１３４の具体例を説明する図である。さらに、図２５は、Ｓ４３の処理が行われた後の管理情報１３２の具体例を説明する図である。
【０１００】
図１８に示す記憶情報１３１における「情報ＩＤ」が「１」である情報の「記憶数」に設定された値は、「２８００（枚）」である。また、図２０に示す管理情報１３２の「要求数」に設定された値は、「２００（枚）」である。そのため、情報管理部１１５は、図２３の下線部分に示すように、「２８００（枚）」から「２００（枚）」を減算した値である「２６００（枚）」を、「情報ＩＤ」が「１」である情報の「記憶数」として記憶する（Ｓ４１）。
【０１０１】
次に、図２２に示す差分情報１３４の「差分数」に設定された値は、「０（枚）」である。また、図２０に示す管理情報の「要求数」に設定された値は、「２００（枚）」である。そのため、情報管理部１１５は、図２４の下線部分に示すように、「０（枚）」から「２００（枚）」を加算した値である「２００（枚）」を、差分情報１３４の「差分数」として記憶する（Ｓ４２）。
【０１０２】
さらに、図２０に示す管理情報１３２の「更新可能数」に設定された値は、「２００（枚）」である。また、図２０に示す管理情報の「要求数」に設定された値は、「２００（枚）」である。そのため、情報管理部１１５は、図２５の下線部分に示すように、「２００（枚）」から「２００（枚）」を減算した値である「０（枚）」を、管理情報１３２の「要求可能数」として記憶する（Ｓ４３）。
【０１０３】
図１２に戻り、処理要求に基づく処理の実行した結果、記憶情報１３１の読み出し要求を実行する必要が生じた場合（Ｓ２２のＹＥＳ）、処理実行部１２１ｂは、存在判定部１１１に処理を指示する。具体的に、存在判定部１１１は、この場合、差分記憶部１３０ｃが存在するか否かの判定を行う（Ｓ２３）。
【０１０４】
その結果、差分記憶部１３０ｃが存在する場合（Ｓ２３のＹＥＳ）、情報読み出し部１１４は、差分記憶部１３０ｃを参照し、差分情報１３４のうちの読み出し要求に対応する情報の読み出しを行う（Ｓ２４）。一方、差分記憶部１３０ｃが存在しない場合（Ｓ２３のＮＯ）、情報読み出し部１１４は、第１記憶部１３０ａを参照し、記憶情報１３１のうちの読み出し要求に対応する情報の読み出しを行う（Ｓ２５）。
【０１０５】
すなわち、Ｓ２３の処理において、差分記憶部１３０ｃが存在しない場合、読み出し要求の対象となる情報は、第１記憶部１３０ａのみに存在していることになる。そのため、情報読出し部１１４は、この場合、第１記憶部１３０ａを参照することにより、読み出し要求に対応する情報の読み出しを行う。
【０１０６】
そして、例えば、事業者が情報制御処理を終了する旨の入力を行った場合（Ｓ２６のＹＥＳ）、情報処理装置１は、情報制御処理を終了する。一方、情報制御処理を終了する旨の入力が行われていない場合（Ｓ２６のＮＯ）、情報処理装置１は、Ｓ２１以降の処理を再度実行する。
【０１０７】
[処理実行部１２１ａによる処理]
要求振分部１２２は、図１２のＳ２１の処理において、利用者端末１１または１２から処理要求を受信した場合（Ｓ２１のＹＥＳ）、要求振分部１２２は、例えば、利用者端末１１または１２から受信した処理要求を処理実行部１２１ａに振り分ける。
【０１０８】
この場合、処理実行部１２１ａは、図５に示すように、例えば、Ｓ２２以降の処理を行わずに、要求振分部１２２によって振り分けられた処理要求の内容に応じて、第１記憶部１３０ａに記憶された記憶情報１３１に対して、情報の更新または情報の読み込みを行う。
【０１０９】
すなわち、処理実行部１２１ａが動作するためのプログラムは、処理実行部１２１ｂが動作するためのプログラムと異なり、利用者によって既にある程度利用されたプログラムである。そして、処理実行部１２１ａが動作するためのプログラムは、例えば、事業者によって、未知のバグが内在していないと判定されたプログラムである。したがって、処理実行部１２１ａは、例えば、要求振分部１２２から処理要求を振り分けられた場合、第１記憶部１３０ａに記憶された記憶情報１３１の更新等を行うものであってよい。
【０１１０】
[情報マージ処理]
次に、情報制御処理のうち、情報のマージを行う処理（以下、情報マージ処理とも呼ぶ）について説明を行う。
【０１１１】
情報マージ部１１６は、図１６に示すように、例えば、事業者端末等からマージ要求を受け付けるまで待機する（Ｓ６１のＮＯ）。そして、マージ要求を受け付けた場合（Ｓ６１のＹＥＳ）、情報マージ部１１６は、差分記憶部１３０ｃに記憶された差分情報１３４を第１記憶部１３０ａに記憶する（Ｓ６２）。その後、情報管理部１１５は、例えば、差分記憶部１３０ｃ及び管理情報１３２を削除する（Ｓ６３）。
【０１１２】
すなわち、例えば、リリースされたプログラムによる新機能が利用者にある程度利用され、リリースされたプログラムによる情報の破壊が発生しないと判定された場合、事業者は、記憶情報１３１と差分情報１３４とを分離して管理する必要がなくなる。そのため、事業者は、この場合、情報処理装置１にマージ要求を送信し、第１記憶部１３０ａに記憶されている記憶情報１３１と、差分記憶部１３０ｃに記憶されている差分情報１３４とをマージする。その後、事業者は、例えば、差分記憶部１３０ｃ及び管理情報１３２の削除を行う。これにより、事業者は、記憶情報１３１と差分情報１３４とを分離して管理することに伴う情報処理装置１の処理負担を抑制することが可能になる。以下、Ｓ６２の処理の具体例について説明する。
【０１１３】
図２６は、Ｓ６２の処理が行われる前の記憶情報１３１の具体例である。また、図２７は、Ｓ６２の処理が行われる前の差分情報１３４の具体例である。さらに、図２８は、Ｓ６２の処理が行われた後の記憶情報１３１の具体例である。
【０１１４】
図２６に示す記憶情報１３１において、「情報ＩＤ」が「１」である情報の「記憶数」には「１２４１（枚）」が設定されており、図２７に示す差分情報１３４において、「情報ＩＤ」が「１」である情報の「差分数」には「３２（枚）」が設定されている。
【０１１５】
そのため、情報マージ部１１６は、この場合、「１２４１（枚）」と「３２（枚）」とを加算して「１２７３（枚）」を算出する。そして、情報マージ部１１６は、図２８に下線部分に示すように、図２８に示す記憶情報１３１のうちの「情報ＩＤ」が「１」である情報の「記憶数」に「１２７３（枚）」を設定する。これにより、情報マージ部１１６は、記憶情報１３１と差分情報１３４とのマージを行うことが可能になる。
【０１１６】
なお、情報マージ部１１６は、例えば、記憶情報１３１が有する項目のうち、差分情報１３４とマージを行う必要がある情報が設定されている項目を特定するための情報（図示しない）を予め作成するものであってもよい。そして、情報マージ部１１６は、予め作成した情報を参照することにより、差分情報１３４とマージを行う必要がある情報が設定されている項目を特定し、記憶情報１３１と差分情報１３４とのマージを行うものであってもよい。
【０１１７】
[第２の実施の形態における情報制御処理]
次に、第２の実施の形態における情報制御処理について説明を行う。第１の実施の形態においては、図２等で説明した処理実行部１２１ｂが受信した処理要求の内容に基づき、情報更新部１１２による差分情報１３４の更新と、情報読み出し部１１３による情報の読み出しとが行われる場合について説明を行った。
【０１１８】
これに対し、第２の実施の形態における情報処理装置１は、情報更新部１１２による差分情報１３４の更新と、情報読み出し部１１４による情報の読み出しとに加え、情報追加記憶部１１３による新たな情報の追加記憶を行う。これにより、情報処理装置１は、リリースされたプログラムに未知のバグが内在している場合においても、情報追加記憶部１１３による新たな情報の追加記憶を行ったことによる影響を限定することが可能になる。以下、第２の実施の形態における情報制御処理の具体例について説明を行う。
【０１１９】
図２９から図３１は、第２の実施の形態における情報制御処理を説明するフローチャートである。図３２から図３４は、第２の実施の形態における情報制御処理を説明する図である。図３２から図３４を参照しながら、図２９から図３１の情報制御処理について説明を行う。なお、以下、第１の実施の形態の場合と異なる処理についてのみ説明を行う。
【０１２０】
[情報追加記憶処理]
初めに、第２の実施の形態における情報制御処理のうち、情報の追加記憶を行う処理（以下、情報追加記憶処理とも呼ぶ）について説明を行う。
【０１２１】
図２９に示すように、処理要求が処理実行部１２１ｂに振り分けられた場合、処理実行部１２１ｂは、振り分けられた処理要求に基づく処理を実行する。そして、処理要求に基づく処理の実行した結果、新たな情報の追加記憶要求を実行する必要が生じた場合（Ｓ７２のＮＯ、Ｓ７７のＮＯ）、存在判定部１１１は、図３０に示すように、差分記憶部１３０ｃが存在するか否かを判定する（Ｓ８１）。
【０１２２】
そして、差分記憶部１３０ｃが存在しない場合（Ｓ８１のＮＯ）、情報管理部１１５は、差分記憶部１３０ｃを作成する（Ｓ８２）。一方、差分記憶部１３０ｃが存在する場合（Ｓ８１のＹＥＳ）、情報管理部１１５は、Ｓ８２の処理を実行しない。
【０１２３】
その後、情報管理部１１５は、追加記憶要求に対応する情報を第２差分情報１３５として差分記憶部１３０ｃに記憶する（Ｓ８３）。第２差分情報１３５は、記憶情報１３１に対する追加情報である。具体的に、第２差分情報１３５は、例えば、記憶情報１３１に対した新たに追加する列に関する情報である。以下、第２差分情報１３５の具体例について説明を行う。
【０１２４】
図３２は、第２差分情報１３５の具体例を説明する図である。図３２に示す第２差分情報１３５は、図１７に示す記憶情報１３１の「情報ＩＤ」に対応する「情報ＩＤ」を項目として有する。また、図３２に示す第２差分情報１３５は、図１７に示す記憶情報１３１の「イベント名」によって識別されるイベントが中止になる可能性があるか否かを示す情報である「中止可能性」を有する。すなわち、図３２に示す第２差分情報１３５は、図１７に示す記憶情報１３１に対して追加を行う新たな情報（列）である「中止可能性」に関する情報である。
【０１２５】
具体的に、図３２に示す第２差分情報１３５において、「情報ＩＤ」が「３」及び「６」である情報の「中止可能性」として、イベントが中止になる可能性があることを示す「有」が設定されている。
【０１２６】
なお、第２差分情報１３５には、図３２に示すように、マージ対象の記憶情報１３１に含まれる各情報を一意に特定することができる情報（例えば、「情報ＩＤ」）を有する。これにより、情報マージ部１１６は、記憶情報１３１に含まれる各情報と第２差分情報１３５に含まれる各情報とを対応付けることが可能になり、記憶情報１３１と第２差分情報１３５とのマージを行うことが可能になる。
【０１２７】
[情報マージ処理]
次に、第２の実施の形態における情報制御処理のうち、情報のマージを行う処理（以下、情報マージ処理とも呼ぶ）について説明を行う。
【０１２８】
情報マージ部１１６は、マージ要求を受け付けた場合（Ｓ９１のＹＥＳ）、情報マージ部１１６は、図３１に示すように、差分記憶部１３０ｃに記憶された第２差分情報１３５を第１記憶部１３０ａに記憶する（Ｓ９２）。以下、Ｓ９２の処理を行った後の記憶情報１３１の具体例について説明を行う。
【０１２９】
図３３は、Ｓ９２の処理が行われた後の記憶情報１３１の具体例を説明する図である。図３３に示す記憶情報１３１は、図１７等で説明した記憶情報１３１が有する項目に加えて、図３２で説明した「中止可能性」を項目として有する。
【０１３０】
具体的に、図３３に示す記憶情報１３２において、「情報ＩＤ」が「３」及び「６」である情報の「中止可能性」に「有」が設定されている。また、図３３に示す記憶情報１３２において、「情報ＩＤ」が「１」、「２」、「４」及び「５」である情報の「中止可能性」にはブランクが設定されている。
【０１３１】
すなわち、情報マージ部１１６は、図３３に示す例において、図１７に示す記憶情報１３１に、図３２に示す第２差分情報１３５の「中止可能性」に対応する列を追加する。そして、情報マージ部１１６は、図３３に示すように、図３２に示す第２差分情報１３５に含まれる「中止可能性」に設定された情報を設定する。なお、差分記憶部１３０ｃに差分情報１３４及び第２差分情報１３５が存在する場合、情報マージ部１１６は、第１記憶部１３０ａに記憶された記憶情報１３１に対し、差分情報１３４及び第２差分情報１３５を記憶するものであってよい。
【０１３２】
このように、第２の実施の形態における情報処理装置１は、情報更新部１１２による差分情報１３４の更新と、情報読み出し部１１４による情報の読み出しとに加え、情報追加記憶部１１１３による新たな情報の追加記憶を行う。これにより、情報処理装置１は、リリースされたプログラムに未知のバグが内在している場合においても、情報追加記憶部１１３による新たな情報の追加記憶を行ったことによる影響を限定することが可能になる。
【０１３３】
なお、記憶情報１３１は、記憶数１３１ａを項目として有する代わりに、記憶数１３１ａが示す値に対応する数の情報を有するものであってもよい。以下、記憶数１３１ａが示す値に対応する数の情報を有する記憶情報１３１の具体例について説明を行う。
【０１３４】
図３４は、記憶数１３１ａが示す値に対応する数の情報を有する記憶情報１３１の具体例を説明する図である。図３４に示す記憶情報１３１は、図３３で説明した記憶情報１３１と異なり、「記憶数」を項目として有しない。一方、図３４に示す記憶情報１３１は、図３３で説明した記憶情報１３１の「記憶数」に設定されている値に対応する数の情報（行）を有している。
【０１３５】
具体的に、図３４に示す記憶情報１３１において、「情報ＩＤ」が「１」から「３０００」である情報には、「イベント名」として「コンサートＡ」が設定され、「中止可能性」にブランクが設定されている。すなわち、図３４に示す記憶情報１３１の「イベント名」が「コンサートＡ」である情報の数は、図３３で説明した記憶情報１３１の「イベント名」が「コンサートＡ」である情報の「記憶数」に設定された数である「３０００」に対応している。図３４の他の情報については説明を省略する。
【０１３６】
これにより、情報更新部１１２は、記憶数１３１ａを更新することなく、記憶情報１３１に含まれる情報そのものの移行を行うことにより、第１記憶部１３０ａに記憶された記憶情報１３１を差分情報１３４として差分記憶部１３０ｃに移行することが可能になる。
【０１３７】
以上の実施の形態をまとめると、以下の付記のとおりである。
【０１３８】
（付記１）
コンピュータに、
記憶部に記憶された記憶情報の更新要求を受け付けたことに応じて、前記記憶情報のうちの一部の情報を差分情報として記憶する差分記憶部が存在するか否かを判定し、前記差分記憶部が存在しないと判定した場合、前記差分記憶部を作成して前記差分情報を移行し、
前記差分情報に対し、前記更新要求に基づく更新を行い、
前記記憶情報のうち前記記憶部に記憶された記憶情報と前記差分情報とのマージ要求を受け付けたことに応じて、前記差分情報を前記記憶情報の一部として前記記憶部に記憶する、
処理を実行させることを特徴とする情報制御プログラム。
【０１３９】
（付記２）
付記１において、
前記差分情報を移行する処理では、前記記憶情報の一部である差分情報を前記記憶部に移行する旨の情報を含む管理情報を記憶部に記憶し、
前記差分情報を前記記憶部に記憶する処理では、前記管理情報を参照して、前記記憶部に記憶する前記差分情報を特定する、
ことを特徴とする情報制御プログラム。
【０１４０】
（付記３）
付記１において、さらに、
前記差分情報を前記記憶部に記憶した後、前記差分記憶部を削除する、
処理をコンピュータに実行させることを特徴とする情報制御プログラム。
【０１４１】
（付記４）
付記１において、
前記記憶情報は、数値情報を含み、
前記更新要求は、前記差分情報が示す値を増加または減少させる要求である、
ことを特徴とする情報制御プログラム。
【０１４２】
（付記５）
付記４において、さらに、
前記差分情報が所定の閾値を下回った場合、前記記憶部に記憶された記憶情報のうち、前記差分記憶部に移行していない情報の一部を、前記差分情報の一部として前記差分記憶部に移行する、
処理をコンピュータに実行させることを特徴とする情報制御プログラム。
【０１４３】
（付記６）
付記１において、
前記差分情報を移行する処理では、前記記憶部に対する情報の追加記憶要求を受け付けたことに応じて、前記差分記憶部が存在するか否かを判定し、前記差分記憶部が存在しないと判定した場合、前記差分記憶部を作成し、
さらに、前記追加記憶要求に対応する情報を前記差分記憶部に記憶する、
処理をコンピュータに実行させることを特徴とする情報制御プログラム。
【０１４４】
（付記７）
付記１において、さらに、
前記差分情報を移行する処理の前に、前記更新要求を受け付けたことに応じて、前記更新要求が第１処理部による更新要求であるか否かの判定を行い、前記更新要求が前記第１処理部による更新要求である場合、前記差分情報を移行する処理及び前記更新を行う処理を行い、前記更新要求が前記第１処理部以外の第２処理部による更新要求である場合、前記差分情報を移行する処理及び前記更新を行う処理に代えて、前記記憶情報に対し、前記第２処理部による更新要求に基づく更新を行う、
処理をコンピュータに実行させることを特徴とする情報制御プログラム。
【０１４５】
（付記８）
記憶部に記憶された記憶情報の更新要求を受け付けたことに応じて、前記記憶情報のうちの一部の情報を差分情報として記憶する差分記憶部が存在するか否かを判定し、前記差分記憶部が存在しないと判定した場合、前記差分記憶部を作成して前記差分情報を移行する情報管理部と、
前記差分情報に対し、前記更新要求に基づく更新を行う情報更新部と、
前記記憶情報のうち前記記憶部に記憶された記憶情報と前記差分情報とのマージ要求を受け付けたことに応じて、前記差分情報を前記記憶情報の一部として前記記憶部に記憶する情報マージ部と、を有する、
ことを特徴とする情報制御装置。
【０１４６】
（付記９）
付記８において、
情報管理部は、前記記憶部に対する情報の追加記憶要求を受け付けたことに応じて、前記差分記憶部が存在するか否かを判定し、前記差分記憶部が存在しないと判定した場合、前記差分記憶部を作成し、
さらに、前記追加記憶要求に対応する情報を前記差分記憶部に記憶する情報追加記憶部を有する、
ことを特徴とする情報制御装置。
【０１４７】
（付記１０）
記憶部に記憶された記憶情報の更新要求を受け付けたことに応じて、前記記憶情報のうちの一部の情報を差分情報として記憶する差分記憶部が存在するか否かを判定し、前記差分記憶部が存在しないと判定した場合、前記差分記憶部を作成して前記差分情報を移行し、
前記差分情報に対し、前記更新要求に基づく更新を行い、
前記記憶情報のうち前記記憶部に記憶された記憶情報と前記差分情報とのマージ要求を受け付けたことに応じて、前記差分情報を前記記憶情報の一部として前記記憶部に記憶する、
ことを特徴とする情報制御方法。
【０１４８】
（付記１１）
付記１０において、さらに、
前記差分情報を移行する工程では、前記記憶部に対する情報の追加記憶要求を受け付けたことに応じて、前記差分記憶部が存在するか否かを判定し、前記差分記憶部が存在しないと判定した場合、前記差分記憶部を作成し、
さらに、前記追加記憶要求に対応する情報を前記差分記憶部に記憶する、
ことを特徴とする情報制御方法。
【符号の説明】
【０１４９】
１：情報処理装置            ２：記憶部
１１：利用者端末            １２：利用者端末
１３：利用者端末
【図１】
2017033136.tif 000003
【図２】
2017033136.tif 000004
【図３】
2017033136.tif 000005
【図４】
2017033136.tif 000006
【図５】
2017033136.tif 000007
【図６】
2017033136.tif 000008
【図７】
2017033136.tif 000009
【図８】
2017033136.tif 000010
【図９】
2017033136.tif 000011
【図１０】
2017033136.tif 000012
【図１１】
2017033136.tif 000013
【図１２】
2017033136.tif 000014
【図１３】
2017033136.tif 000015
【図１４】
2017033136.tif 000016
【図１５】
2017033136.tif 000017
【図１６】
2017033136.tif 000018
【図１７】
2017033136.tif 000019
【図１８】
2017033136.tif 000020
【図１９】
2017033136.tif 000021
【図２０】
2017033136.tif 000022
【図２１】
2017033136.tif 000023
【図２２】
2017033136.tif 000024
【図２３】
2017033136.tif 000025
【図２４】
2017033136.tif 000026
【図２５】
2017033136.tif 000027
【図２６】
2017033136.tif 000028
【図２７】
2017033136.tif 000029
【図２８】
2017033136.tif 000030
【図２９】
2017033136.tif 000031
【図３０】
2017033136.tif 000032
【図３１】
2017033136.tif 000033
【図３２】
2017033136.tif 000034
【図３３】
2017033136.tif 000035
【図３４】
2017033136.tif 000036