以下、本発明の好適な実施の形態について、添付の図面を参照しつつ、詳細に説明する。ただし、以下の説明において特に断らない限り、方向や向きに関する記述は、当該説明の便宜上、図面に対応するものであり、例えば実施品、製品または権利範囲等を限定するものではない。
<1. 第1の実施の形態>
図1は、第1の実施の形態におけるコンピュータシステム1のブロック図である。コンピュータシステム1は、ホストコンピュータ2とメモリシステム3とを備えている。
なお、以下の説明では、特に断らない限り、コンピュータシステム1において提供されるアプリケーションプログラム311がゲームプログラムである例について説明する。このようなコンピュータシステム1としては、例えば、家庭用のゲーム機などを想定することができる。ただし、コンピュータシステム1によって提供されるアプリケーションはゲームに限定されるものではない。アプリケーションとしては、例えば、ユーザの健康を管理するものや、道案内を提供するものなどが想定される。ユーザは、アプリケーションプログラム311を変更することにより、コンピュータシステム1において様々なアプリケーションを動作させることが可能である。
ホストコンピュータ2は、CPU20、記憶装置21、操作部22および表示部23を備えている。
図1に示す起動プログラム210は、ホストコンピュータ2の起動時にCPU20によって実行されるプログラムである。
収集情報211は、ホストコンピュータ2において要求情報312に従って収集(記録)される情報であり、かつ、メモリシステム3に向けて転送される情報である。ホストコンピュータ2では、収集タイミングが到来するたびに、後述する様々なハードウェアを制御することにより情報を収集し、収集情報211を作成する。以下の説明では、特に断らない限り、収集タイミングは、所定の周期で到来するように設定されているものとする。収集タイミングは、例えば、アプリケーションプログラム311に定義しておくことができる。なお、収集情報211の詳細は、後述する。
アプリケーションプログラム311は、メモリシステム3に記憶されているプログラムであるが、ホストコンピュータ2に向けてロード(転送)されて、記憶装置21に記憶される。アプリケーションプログラム311は、要求情報312を含んでいる。
要求情報312は、ホストコンピュータ2が収集可能な情報のうち、どのような情報をメモリシステム3(アプリケーションプログラム311)が収集情報211(入力情報314)として要求するかを示す情報である。
CPU20は、起動プログラム210や、メモリシステム3からロードされたアプリケーションプログラム311を適宜読み取りつつ実行する。これにより、CPU20は、各種データの演算や制御信号の生成等を行う。すなわち、CPU20は、ホストコンピュータ2が備える各構成を制御するとともに、各種データを演算し作成する機能を有している。したがって、ホストコンピュータ2は、一般的なコンピュータを構成している。
なお、図1に示すように、メモリシステム3に記憶されているアプリケーションプログラム311は要求情報312を含んでいる。したがって、アプリケーションプログラム311がホストコンピュータ2に向けてロードされるときに、要求情報312もホストコンピュータ2に向けて転送されて記憶装置21に記憶される。
このように、アプリケーションプログラム311が要求情報312を含んでいることにより、アプリケーションプログラム311ごとに専用の要求情報312を準備することができる。ただし、要求情報312は、必ずしもアプリケーションプログラム311に含まれていなければならないわけではない。記憶装置31内において、アプリケーションプログラム311と要求情報312とは別に記憶されていてもよい。例えば、アプリケーションプログラム311が記憶装置31内のROMに記憶され、要求情報312が記憶装置内の読み書き可能な記憶領域に記憶されていてもよい。すなわち、アプリケーションプログラム311が、当該アプリケーションプログラム311用の要求情報312と互いに対応付けられていればよい。
記憶装置21は、ホストコンピュータ2において各種データを記憶する機能を提供する。言い換えれば、記憶装置21がホストコンピュータ2において電子的に固定された情報を保存する。
記憶装置21としては、CPU20の一時的なワーキングエリアとして使用されるRAMやバッファ、読み取り専用のROM、不揮発性のメモリ(例えばNANDメモリなど)、比較的大容量のデータを記憶するハードディスク、専用の読み取り装置に装着された可搬性の記憶媒体(CD−ROM、DVD−ROM、BD−ROM、PCカード、SDカード、USBメモリなど)等が該当する。図1においては、記憶装置21を、あたかも1つの構造物であるかのように図示している。しかし、通常、記憶装置21は、上記例示した各種装置(あるいは媒体)のうち、必要に応じて採用される複数種類の装置から構成されるものである。すなわち、記憶装置21は、データを記憶する機能を有する装置群の総称である。
また、現実のCPU20は高速にアクセス可能なRAMを内部に備えた電子回路である。しかし、このようなCPU20が備える記憶装置も、説明の都合上、記憶装置21に含めて説明する。すなわち、厳密にはCPU20自体が記憶するデータも、記憶装置21が記憶するとして説明する。
図1に示すように、記憶装置21は、収集情報211および要求情報312を記憶するために使用される。ただし、記憶装置21が記憶する情報は、収集情報211および要求情報312に限定されるものではない。記憶装置21に記憶される情報としては、例えば、CPU20の起動プログラム210、メモリシステム3からロードされたアプリケーションプログラム311、後述する調整用コンテンツ情報320(図3参照)、表示部23に表示される情報、あるいは、スピーカ27に再生される音声情報なども記憶される。
操作部22は、ホストコンピュータ2に対して、コンピュータシステム1のユーザが指示を入力するために操作するハードウェアである。操作部22としては、例えば、各種キーやボタン類、スイッチ、タッチパネル、ポインティングデバイス、あるいは、ジョグダイヤルなどが該当する。操作部22がユーザによって操作されると、操作に応じて、様々な情報が入力される。このようにして入力された情報はCPU20に伝達される。
CPU20は、要求情報312を参照して、操作部22から入力された情報を取捨選択し、その一部または全部を収集情報211として記憶装置21に記憶させる。すなわち、収集情報211は、ユーザが操作部22を操作することによって入力された情報を含む。ただし、収集情報211に含まれる情報は要求情報312によって決定されるため、収集情報211は必ずしも操作部22から入力された情報を含まなければならないわけではない。
このように、要求情報312を参照することによって、ホストコンピュータ2(CPU20)は効率よく収集情報211を収集することができる。ただし、要求情報312は、本発明を実施するための必須の要件ではない。要求情報312が存在しなくても、ホストコンピュータ2が収集情報211を収集することは可能である。例えば、操作部22から入力される情報を、CPU20が全て収集情報211としてもよい。
表示部23は、各種データを表示することによりユーザ等に対して出力する機能を有するハードウェアである。表示部23としては、例えば、ランプやLED、CRT、液晶ディスプレイや液晶パネルなどが該当する。
また、ホストコンピュータ2は、センサ24、カメラ25、マイク26、スピーカ27およびインタフェース部28を備えている。
センサ24は、周囲の環境を計測して数値化(情報化)し、電気信号としてCPU20に伝達する。センサ24としては、例えば、加速度センサ、ジャイロセンサ、磁気センサ、GPS(位置センサ)、振動センサ、温度センサ、あるいは、湿度センサなどが該当する。ただし、このようなセンサに限定されるものではないし、ここに例示したセンサを全て備えていなければならないわけでもない。
CPU20は、要求情報312を参照して、センサ24から入力された各種情報を取捨選択し、その一部または全部を収集情報211として記憶装置21に記憶させる。すなわち、収集情報211は、センサ24によって取得された情報を含む。
なお、図1においては、センサ24を、あたかも1つの構造物であるかのように図示している。しかし、通常、センサ24は、各種装置のうち、必要に応じて採用される1以上の装置から構成されるものである。すなわち、センサ24は、周囲の環境を計測して情報化(数値化)する機能を有する装置群の総称である。
また、CPU20は、予め要求情報312を参照して、必要なセンサ24にのみ情報を要求してもよい。あるいは、例えば、要求情報312において地磁気に関する情報が要求されていない場合には、CPU20は、磁気センサをスリープ状態(磁気の検出を停止した状態)にしてもよい。このように、CPU20が必要のないセンサ24を停止させることにより、コンピュータシステム1の負荷を軽減することができる。
さらに、すでに説明したように、収集情報211に含まれる情報は、要求情報312によって決定されるため、収集情報211は必ずしもセンサ24から入力された情報を含まなければならないわけではない。
カメラ25は、図示しない光学系および光電変換素子などを備えており、一般的なデジタルカメラを構成している。カメラ25は、周囲における撮像範囲内の被写体を撮像することにより撮像情報(画像情報)を取得し、CPU20に伝達する。CPU20は、要求情報312を参照して、カメラ25から入力された情報を取捨選択し、その一部または全部を収集情報211として記憶装置21に記憶させる。すなわち、収集情報211は、カメラ25によって取得された画像情報を含む。ただし、すでに説明したように、収集情報211に含まれる情報は要求情報312によって決定されるため、収集情報211は必ずしもカメラ25から入力された情報を含まなければならないわけではない。
マイク26は、周囲の環境における音(空気振動)を電気信号(音声情報)に変換し、CPU20に伝達する。CPU20は、要求情報312を参照して、マイク26から入力された音声情報を取捨選択し、その一部または全部を収集情報211として記憶装置21に記憶させる。すなわち、収集情報211は、マイク26によって取得された音声情報を含む。さらに、すでに説明したように、収集情報211に含まれる情報は要求情報312によって決定されるため、収集情報211は必ずしもマイク26から入力された情報を含まなければならないわけではない。
スピーカ27は、音声情報に基づいて音を再生し出力する機能を有するハードウェアである。スピーカ27は、CPU20からの制御に従って、例えば、ゲーム音楽や効果音、あるいは、人物の声などを再生する。
インタフェース部28は、メモリシステム3のインタフェース部38との間で情報通信が可能な状態で、かつ、着脱自在に接続する機能を有している。すなわち、メモリシステム3のインタフェース部38がインタフェース部28に装着されることにより、ホストコンピュータとメモリシステムとの間で情報通信が可能となる。この状態で、電力もメモリシステム3に供給される。すなわち、メモリシステム3はインタフェース28に装着されることによりホストコンピュータ2側から電力の供給を受ける。さらに、ユーザは、装着されているメモリシステム3を抜き取って別のメモリシステム3を装着することにより、メモリシステム3を交換することが可能である。
なお、ホストコンピュータ2は、図1に示す構成以外にも、例えば、通信部を備え、インターネットなどに接続する機能を有していてもよい。例えば、インターネットを介して外部のサーバ装置から様々な情報をダウンロードするように構成してもよい。あるいは、ホストコンピュータ2は、バイブレータを備えていてもよい。アプリケーションプログラム311の実行状況などに応じてバイブレータを振動させることにより、例えば、ユーザの臨場感を増大させることができる。
ホストコンピュータ2に接続されるメモリシステム3は、図1に示すように、コントローラ30と、記憶装置31と、インタフェース部38とを備えている。先述のように、メモリシステム3は着脱自在に構成されている。したがって、ユーザはメモリシステム3を交換することができる。ただし、メモリシステム3は、必ずしも着脱自在でなければならないわけではない。
以下の説明では、コントローラ30は、FPGA(Field-Programmable Gate Array)として説明する。FPGAは、プログラム可能な論理コンポーネント(論理ブロック)を備えており、これらの論理ブロックを相互接続する再構成可能な配線階層を備えている。これによりFPGAは、製造後に構成を設定することができる集積回路である。FPGAは、並列演算や畳み込み演算に威力を発揮するハードウェアである。ただし、コントローラ30は、DSPや、比較的汎用性の高いCPUなどの処理装置であってもよい。
コントローラ30は、各種データの演算を行う。これにより、コントローラ30は、各種データを作成する機能を有している。このようにメモリシステム3は一種のコンピュータとして構成されている。
記憶装置31は、メモリシステム3において各種データを記憶する機能を提供する。言い換えれば、記憶装置31がメモリシステム3において電子的に固定された情報を保存する。
記憶装置31としては、コントローラ30の一時的なワーキングエリアとして使用されるRAMやバッファ、読み取り専用のROM、不揮発性のメモリ(例えばNANDメモリなど)等が該当する。図1においては、記憶装置31を、あたかも1つの構造物であるかのように図示している。しかし、通常、記憶装置31は、上記例示した各種装置(あるいは媒体)のうち、必要に応じて採用される複数種類の装置から構成されるものである。すなわち、記憶装置31は、データを記憶する機能を有する装置群の総称である。
また、FPGAであるコントローラ30は、現実には、高速にアクセス可能なメモリや不揮発性のメモリを内部に備えた電子回路である。しかし、このようなコントローラ30が備える記憶装置も、説明の都合上、記憶装置31に含めて説明する。すなわち、厳密にはコントローラ30自体が記憶するデータも、記憶装置31が記憶するとして説明する。図1に示すように、記憶装置31は、プログラム310、アプリケーションプログラム311、学習結果情報313、入力情報314、実行情報315およびコンテンツデータベース316を記憶するために使用される。ただし、記憶装置31に記憶される情報はこれらに限定されるものではない。
プログラム310は、必要に応じてコントローラ30を再構成するための情報である。FPGAであるコントローラ30は、出荷前に、論理ブロックやそれらを相互接続する配線階層の状態などを決定することにより、コントローラ30における演算アルゴリズムを一旦固定する(以下の説明では、この状態のコントローラ30を「構成後のコントローラ30」と称する。)。一方で、構成後のコントローラ30は、プログラム310に基づいて再構成も可能(演算アルゴリズムを変更可能)である。ただし、以下の説明では、プログラム310によるコントローラ30の再構成については詳細な説明を省略する。なお、CPUやMPU(Micro Processing Unit)のように動作時にソフトウェアを必要とする演算回路としてコントローラ30を構成した場合には、プログラム310は動作中にコントローラ30によって実行されるプログラムである。
アプリケーションプログラム311は、ホストコンピュータ2によって実行されるプログラムである。アプリケーションプログラム311は、メモリシステム3から転送されて、ホストコンピュータ2の記憶装置21にロードされ(図示せず)、逐次、CPU20により読み出されて実行される。すでに説明したように、アプリケーションプログラム311は、要求情報312を含んでいる。
なお、詳細は後述するが、アプリケーションプログラム311は、「状況」に応じて、当該アプリケーションプログラム311が使用可能なコンテンツを表現した情報を変更することによって、「調整」が可能である。厳密には、アプリケーションが調整されるのは、変更されたコンテンツを表現した情報が実際にアプリケーションにおいて使用されたときである。しかし、以下の説明では、ホストコンピュータ2において使用可能なコンテンツを表現した情報の少なくとも一部が調整用コンテンツ情報320(図3参照)によって変更されることも、便宜上、「調整」と呼ぶものとする。一方で、アプリケーションプログラム311によって使用可能なコンテンツを表現した情報には、例えば、セーブデータなども想定される。しかし、セーブデータが変更されたとしても、これは調整用コンテンツ情報320によって変更されたものではないので、以下の説明における「調整」には該当しない。
また、アプリケーションプログラム311は、調整に関わりなく(全ての調整に共通して)使用されるコンテンツを表現した情報(例えば、タイトル画面の情報)や、調整されるまでの間だけ初期的に使用されるコンテンツを表現した情報(例えば、調整後には削除されて出現しないキャラクタの情報や、調整後には書き替えられる情報)などを含んでいる。したがって、結果的に、何らの調整も行われなかったとしても、アプリケーションプログラム311は、ゲームを支障なく提供することができる。
学習結果情報313は、後述するコントローラ30によって実現される人工知能による推論処理のときに使用される情報である。学習結果情報313は、例えば、推論処理に使用される演算係数や閾値などから構成されている。学習結果情報313は予め外部の装置などで実行された学習処理の結果作成された情報であり、記憶装置31に記憶されている。
学習結果情報313の作成手法としては、例えば、遺伝的アルゴリズムによる学習や、教師なし学習で用いられるクラスタリング、教師あり学習で用いられるサポートベクターマシン、あるいは、多層ニューラルネットに用いられるディープラーニング(深層学習)などが知られている。つまり、学習結果情報313には、採用する人工知能アルゴリズムに関連した情報、例えば、採用する学習済みのネットワークモデル(層数、各層の種類、ノード/ユニット数、重み、活性化関数など)や、推論を行う際に必要とする入力情報314の種類、ビット/チャネル数などを含んだ情報である。ただし、採用する人工知能アルゴリズムによって学習結果情報313の内容や構造は異なる。
説明の便宜上、学習結果情報313が記憶装置31に格納されているかのように説明した。しかし、コントローラ30がFPGAである本実施の形態では、より厳密には、学習結果情報313を反映した状態でコントローラ30が構成されている。ただし、コントローラ30にCPUなどのハードウェアを採用した場合、学習結果情報313は、記憶装置31上のパラメータ情報などとしてコントローラ30に与えられる。
以下の説明では、学習結果情報313は、固定の情報として説明する。ただし、学習結果情報313は、出荷後の学習処理によって更新され、適宜コントローラ30によって参照されてもよい。あるいは、サーバへアップロードして、サーバ側でより最適化された学習結果情報313を生成してからダウンロードしてもよい。このようにして更新された学習結果情報313によってコントローラ30が再構成されてもよい。
入力情報314は、ホストコンピュータ2からメモリシステム3に対して入力される収集情報211である。ホストコンピュータ2において収集(記録)された収集情報211は、メモリシステム3に転送されて、入力情報314として記憶装置31に記憶される。
実行情報315は、入力情報314をコントローラ30が分析した結果として得られる情報である。コントローラ30は、ホストコンピュータ2から入力される入力情報314(収集情報211)を分析して実行情報315を作成して記憶装置31に記憶させる。詳細は後述するが、コントローラ30は、実行情報315に応じて適切な調整を推論(人工知能による推論演算を実行)する。
なお、先述のように、実行情報315は、入力情報314に応じて作成される情報である。したがって、コントローラ30が実行情報315に応じて推論することは、間接的には、コントローラ30が入力情報314に応じて推論することに相当する。
図1に示すコンテンツデータベース316は、様々な情報を互いに関連づけたテーブル構造のデータベースである。
図2は、コンテンツデータベース316を示す図である。コンテンツデータベース316は、複数のレコードから構成されている。また、各レコードは、2つの項目(データ格納領域)を有している。
各レコードの第1項目には、調整候補識別情報317が格納されている。したがって、記憶装置31は、コンテンツデータベース316を記憶することによって、複数の調整候補識別情報317を記憶する。複数の調整候補識別情報317は、それぞれが互いに重複することのない固有の値である。これにより、コンテンツデータベース316には、値の異なる調整候補識別情報317ごとに1つのレコードが作成されることになる。
アプリケーションプログラム311の設計者(以下、単に「設計者」と称する。)は、アプリケーションプログラム311の実行中に想定される複数の状況に応じて、それぞれの状況に適した調整を決定し、予め準備する。すなわち、設計者は、想定される状況ごとに、適切な調整を設計する。これにより、準備される複数の調整はそれぞれ互いに異なる調整となる。
具体的には、例えば、ロールプレイングゲームにおいて、ユーザの「プレイヤーレベル」を「状況」として定義した場合、複数の状況としては、「低級者」、「中級者」あるいは「上級者」を想定することができる。そして、「低級者」、「中級者」、「上級者」といったそれぞれのプレイヤーレベルには、それぞれのプレイヤーレベルに適した調整が準備される。
例えば、「低級者」に対しては、「敵の動きを遅くする」、「敵の出現数を減らす」、「敵の武装を弱くする」、あるいは、「味方のキャラクタを出現させる」といった「低級者用の調整」が準備される。一方、「上級者」に対しては、「敵の動きを速くする」、「敵の出現数を増やす」、「敵の武装を強くする」、あるいは、「味方のキャラクタを出現させない」といった「上級者用の調整」が準備される。
このようにして準備されるそれぞれの調整は、コンピュータシステム1において提供されると決定されるまでは調整候補である。設計者は、1つの調整候補に、1つの調整候補識別情報317を対応付ける。これにより、それぞれの調整候補識別情報317は、準備された複数の調整候補に一対一で対応付けされる。したがって、調整候補識別情報317を特定すれば、複数の調整候補のうちから所望の調整候補を特定することができる。すなわち、調整候補識別情報317は、準備された複数の調整候補の中から特定の調整候補を識別するための識別子である。
先述の例で説明すると、「低級者用の調整」に対応する調整候補識別情報317として「1」を割り当て、「上級者用の調整」に対応する調整候補識別情報317として「3」を割り当てる。これにより、調整候補識別情報317が「1」であれば「低級者用の調整候補」、調整候補識別情報317が「3」であれば「上級者用の調整候補」であることがそれぞれ識別できる。
なお、定義する状況としては、ゲーム(アプリケーション)を調整することが適当と考えられる事象に応じて定義することが望ましい。例えば、プレイ環境(屋内、屋外、車内、コントローラの種類など)、ユーザのプレイ履歴情報(回数、時間、選択履歴など)、ユーザの心理状況(イライラしているか、楽しんでいるかなど)、あるいは、ユーザの個人情報(年令、性別、国籍、居所、癖、好みなど)などが状況として想定される。ただし、これらに限定されるものではなく、また、これらの全てを想定しなければならないわけでもない。
また、想定し得る複数の状況を組み合わせて、より総合的な1つの状況を定義してもよい。例えば、「プレイ回数が少ない」状況で、かつ、ユーザの操作の状況からユーザが「低級者」である状況を「初心者」という状況として定義してもよい。この場合、例えば、ゲームの背景(ストーリーなど)や操作方法の説明を詳細に表示するとともに、弱い敵キャラクタを出現させるように調整候補を設計する。一方で、同じく「低級者」であっても「プレイ回数が多い」状況のときは「初心者」ではなく別の状況として定義し、敵キャラクタは相変わらず弱いままとしつつも、「プレイ回数が多い」ことからゲームの背景や操作方法の説明は既に知っているものとして簡略化して表示するように調整候補を設計する。
図2に示すように、コンテンツデータベース316の各レコードの第2項目には、コンテンツ候補情報318が格納される。
コンテンツ候補情報318は、設計者によって調整用に準備された情報であって、様々なコンテンツを表現するための情報である。準備され、コンテンツデータベース316に格納されている各コンテンツは、必ずしも全てが実際にアプリケーションプログラム311によって使用されるわけではない。例えば、状況(調整)に応じて択一的に使用されるコンテンツは、一方が使用されると他方は使用されない。また、アプリケーションプログラム311が使用するのではなく、ホストコンピュータ2において実行される他のプログラムが使用するものも含まれる。したがって、少なくとも使用されることが決定されるまでは、準備されただけの状態のコンテンツ(コンテンツデータベース316に収録されただけのコンテンツ)は、ホストコンピュータ2が使用可能なコンテンツの「候補」である。
コンテンツ候補情報318の具体例は、画像情報(登場人物や物体、風景など)、音声情報(効果音やBGM、登場人物の声など)、その他の出力情報(バイブレーションなど)、あるいは、パラメータ情報(キャラクタの行動パターンやスピード、強さなど)などである。もちろんここに列挙した情報に限定されるものではない。
また、異なるゲームにおいては、通常、異なるキャラクタが登場する。すなわち、アプリケーションプログラム311がどのようなコンテンツ候補情報318を必要とするかは、アプリケーションプログラム311ごとに異なっている。したがって、コンテンツ候補情報318は、アプリケーションプログラム311ごとに準備される情報である。
同一のレコードに格納された調整候補識別情報317およびコンテンツ候補情報318は、互いに同一のレコードに格納されることにより、コンテンツデータベース316において互いに関連づけされている。すなわち、記憶装置31に記憶されるコンテンツデータベース316は、ホストコンピュータ2によって使用可能なコンテンツを表す情報(コンテンツ候補情報318)を複数の調整候補識別情報317のうちのいずれかと関連づけた情報である。
コンテンツ候補情報318は、アプリケーションプログラム311に使用される情報以外の情報を含んでいてもよい。例えば、コンテンツ候補情報318は、アプリケーションプログラム311と直接関係の薄い「広告」を表現した情報であってもよい。広告は、例えば、アプリケーションプログラム311が実行されていないとき(例えば、別のアプリケーションプログラムが実行されているとき)に提供されてもよい。具体的には、ユーザがスポーツ体験型のゲーム(アプリケーションプログラム311)を頻繁にプレイするという状況に備えて、ゲームのプレイ中以外のときにスポーツ用品の広告を提供するといった調整が考えられる。アプリケーションプログラム311の実行中(ゲームのプレイ中)に広告が表示されても、注目度が低下するおそれがあるが、ユーザが注目しやすい状況を検出して、そのタイミングで広告を表示すれば効果的な広告を提供できる。したがって、このような広告を表現したコンテンツ候補情報318は、ホストコンピュータ2によって使用可能な情報ではあるが、アプリケーションプログラム311によって使用される情報ではない。
通常は、特定の調整を実現するために変更されるコンテンツは複数存在する。したがって、特定の調整候補識別情報317に関連づけされるコンテンツ候補情報318は、当該調整候補識別情報317によって識別される調整を実現するために必要となるコンテンツを表現した情報の集合体となる。例えば、1つの調整候補識別情報317に関連づけられているコンテンツ候補情報318が、キャラクタA(1つのコンテンツ)の画像情報、および、キャラクタAとは異なるキャラクタB(もう1つのコンテンツ)の画像情報を含んでいる。ただし、調整ごとに変更されるコンテンツは複数でなくてもよい。すなわち、各調整において変更(調整)されるコンテンツが1つであってもよい。
なお、異なる調整候補識別情報317にそれぞれ関連づけられるコンテンツ候補情報318において、一部の情報が共通していてもよい。先述の例で説明すれば、「低級者」に関連づけられたコンテンツ候補情報318には「味方のキャラクタA」および「味方のキャラクタB」を表現した情報がいずれも含まれており、「中級者」に関連づけられたコンテンツ候補情報318には「味方のキャラクタA」を表現した情報が含まれている一方で、「味方のキャラクタB」を表現した情報は含まれていなくてもよい。このような場合、「低級者」および「中級者」に対しては、いずれも「キャラクタA」が味方として登場するが、「中級者」に対しては「キャラクタB」は味方として登場することはない。すなわち、異なる調整候補識別情報317(異なる調整に対応する)に関連づけられるコンテンツ候補情報318は互いに完全に同一でさえなければ、これによって互いに異なる調整を実現することができる。
また、調整の対象となっていないコンテンツ(異なる調整において変更されないコンテンツ)を表現した情報を、全てのコンテンツ候補情報318に共通して含めるようにしてもよい。
本実施の形態では、すでに説明したように、調整の対象となっていないコンテンツを表現した情報はアプリケーションプログラム311とみなしてアプリケーションプログラム311に含める。このような場合、アプリケーションプログラム311に含まれるコンテンツを表現した情報は、コンテンツデータベース316から除外される。すなわち、コンテンツデータベース316は、アプリケーションプログラム311が使用する全てのコンテンツを含んでいなければならないわけではない。
すでに説明したように、各調整候補識別情報317は、それぞれが互いに重複することのない固有の値である。したがって、調整候補識別情報317が特定されれば、特定された調整候補識別情報317を検索キーとしてコンテンツデータベース316を検索することができる。詳細は後述するが、このような検索を実行することにより、メモリシステム3は、検索キーとして使用された調整候補識別情報317に関連づけられたコンテンツ候補情報318をコンテンツデータベース316から選択(抽出)することができる。
インタフェース部38は、ホストコンピュータ2との間でデータ通信が可能な状態でメモリシステム3を着脱自在に接続する機能を有している。すなわち、インタフェース部38とインタフェース部28とは、いわゆるコネクタを構成している。これにより、ホストコンピュータ2から入力される情報は、インタフェース部38により受信される。また、インタフェース部38は、コントローラ30から伝達された情報をホストコンピュータ2に向けて送信する。
なお、図1では、ホストコンピュータ2とメモリシステム3の記憶装置31との間の情報の入力および出力を、すべてコントローラ30が制御するように図示している。ただし、記憶装置31へのアクセスを専門的に行うコントローラを、コントローラ30とは別構成として設けてもよい。
図3は、第1の実施の形態における構成後のコントローラ30が備える機能ブロックをデータの流れとともに示す図である。図3に示す推論部300、分析部301、および、選択部302は、コントローラ30によって実現される機能ブロックである。
推論部300は、学習結果情報313を用いて人工知能アルゴリズムによる推論を実行することにより、入力情報314に応じて、複数の調整候補識別情報317のうちから特定の調整候補識別情報317を調整識別情報319として推論する。より詳細には、推論部300は、実行情報315に応じて調整識別情報319を推論することにより、入力情報314に応じて調整識別情報319を推論する。
言い換えれば、推論部300に入力される実行情報315に応じて、最適な調整識別情報319が推論されるように人工知能アルゴリズムおよび学習結果情報313が設計されている。そして、当該設計に応じてコントローラ30が構成される。なお、このような推論を実行するための人工知能アルゴリズムは、従来の技術を適宜採用することにより実現可能である。したがって、推論部300が実行する人工知能アルゴリズムについての詳細な説明は省略する。
実行情報315は、ホストコンピュータ2において観測され収集された収集情報211に基づいて作成される。したがって、実行情報315は、収集情報211が収集されたときの状況を表現した情報である。すなわち、推論部300による推論は、収集情報211に表現されている現実の状況が設計者によって想定された複数の状況のうちのいずれであるかを判定して、準備された複数の調整候補のうちから特定の調整候補を、最適な調整として推論するものである。
これにより、設計者によって準備された複数の調整候補(調整候補識別情報317によって識別される各調整)の中から、実際に提供される調整(調整識別情報319によって識別される調整)が決定される。なお、推論部300は、調整識別情報319を記憶装置31に記憶させる機能も有している。
分析部301は、ホストコンピュータ2から入力される入力情報314を分析して、その分析結果を実行情報315として記憶装置31に記憶させる。
すでに説明したように、入力情報314は、収集情報211と等価な情報である。そして、収集情報211は、ホストコンピュータ2において、操作部22、センサ24、カメラ25およびマイク26によって検出された情報である。収集情報211(入力情報314)は、要求情報312によって取捨選択されている。とはいえ、入力情報314は、センサ24からの生のバイナリ情報や、カメラ25からの画像情報などを含んでいる場合があり、依然として情報の項目や容量が膨大な情報である。
分析部301は、入力情報314に対して、圧縮、分類といった処理を施すことにより、推論部300による推論処理に対する入力として、より適した実行情報315を作成する。
例えば、分析部301は、入力情報314に含まれる画像情報や音声情報に、単純な間引き処理を行って実行情報315とすることにより、入力情報314を圧縮してもよい。入力情報314に含まれる画像情報や音声情報などは、カメラ25やマイク26の性能に従ったサンプリングレートで作成されている。このような情報を予め分析部301が間引くことによって、推論部300の負荷が軽減される。
また、分析部301は、ユーザを撮像した画像情報と、ユーザの音声を含む音声情報とが入力情報314に含まれている場合に、これらの情報に基づいて認識処理を実行してユーザの心理状態を判定して実行情報315としてもよい。このような認識処理は、推論部300による推論処理に類似した処理も採用可能である。推論部300による推論処理に類似した認識処理を採用して当該推論処理の前段に実行することによっても、直接、入力情報314に対して推論部300が推論処理を行う場合に比べてコントローラ30の負荷が軽減される場合がある。
また、分析部301は、入力情報314に含まれる画像情報にエッジ処理を施して、検出したエッジに関する情報を実行情報315としてもよい。すなわち、画素情報をエッジ情報に変換することにより、入力情報314を圧縮してもよい。
ゲームにおいて年令が1つ違うだけで調整する必要はあまりないと想定される。したがって、分析部301は、ユーザの年令が入力情報314に含まれていた場合に、単純に適当な閾値と比較することによって、ユーザの年令を、例えば、10才未満、10代前半、10代後半、20代、30代、40代以上のように分類して実行情報315としてもよい。あるいは、日付を示す入力情報314を分析して、季節を示す実行情報315としてもよい。
また、分析部301は、一度入力されれば一定期間変更されないような入力情報314については、入力情報314から一定期間削除してもよい。このような情報としては、例えば、ユーザの個人情報やハードウェア構成情報、日付情報などが想定される。このような情報は、ゲーム中に頻繁に変更されるものではない。
また、分析部301は、操作部22によって収集された操作部22に対する物理的な操作量を、アプリケーションにおける操作量に変換して実行情報315としてもよい。例えば、カーレーシングゲームが提供されているときに得られた入力情報314に、操作部22の現実の操作量が含まれている場合に、この現実の操作量を、当該カーレーシングゲームにおけるハンドルの操作量に変換するといったことが想定される。
ここに示した分析は、あくまでも分析部301による分析の例示であって、上記の例に限定されるものではない。ただし、分析部301による分析は、当該分析を実行することによって、推論部300が直接入力情報314に対する推論を実行する場合に比べて全体としてコントローラ30の負荷が軽減されるとともに、推論結果に大きな影響がでないような分析であることが好ましい。
選択部302は、調整識別情報319に対応する調整候補識別情報317に関連づけられたコンテンツ候補情報318をコンテンツデータベース316から選択して調整用コンテンツ情報320とする機能を有している。
より詳細には、選択部302は、調整識別情報319(推論処理により特定された調整候補識別情報317)を検索キーとしてコンテンツデータベース316を検索する。これにより、選択部302は、検索キーとして使用した調整候補識別情報317に関連づけられたコンテンツ候補情報318をコンテンツデータベース316から選択(抽出)する。さらに、選択部302は、抽出したコンテンツ候補情報318を調整用コンテンツ情報320とする。すなわち、調整用コンテンツ情報320は、調整識別情報319(特定された調整候補識別情報317)に関連づけられたコンテンツ候補情報318に相当する。
調整候補識別情報317に関連づけられたコンテンツ候補情報318は、当該調整候補識別情報317によって識別される調整を実現するために必要となるコンテンツを表現した情報である。したがって、調整用コンテンツ情報320は、調整識別情報319によって識別される調整を実現するために必要なコンテンツを表現した情報である。
このように、選択部302により選択された調整用コンテンツ情報320をホストコンピュータ2が使用することによって、入力情報314(実行情報315)により表現された状況に応じた最適な調整(そのように準備された調整)が実現される。これにより、コンピュータシステム1は、ユーザに意識(例えば、選択操作)させることなく、状況に応じて、最適な状態にアプリケーション(ゲーム)を調整することができる。
また、第1の実施の形態における選択部302は、インタフェース部38がホストコンピュータ2に対して出力すべき調整用コンテンツ情報320の出力タイミングを決定する機能も有している。すなわち、選択部302は、タイミング決定手段としても構成されている。
第1の実施の形態における選択部302は、入力情報314を監視しつつ、入力情報314に示される情報(例えば、時刻、ユーザによる選択操作、進捗状況など)に応じて出力タイミングを決定する。選択部302は、決定した出力タイミングが到来したときに、調整識別情報319を参照して、調整用コンテンツ情報320を作成する。インタフェース部38は、調整用コンテンツ情報320が作成されたタイミングで、当該調整用コンテンツ情報320をホストコンピュータ2に向けて転送する。すなわち、第1の実施の形態では、調整用コンテンツ情報320の作成タイミングが実質的に出力タイミングに相当する。
想定される状況に応じて準備される調整は、当該状況が生じたときに直ちに提供されなければならないとは限らない。例えば、所定の時間が経過した後に提供されるべき場合や、次回の起動時に提供されるべき場合などもあり得る。しかし、選択部302が出力タイミングを決定し、決定された出力タイミングに応じて調整が実現されるタイミングが実質的に決定されることにより、コンピュータシステム1は、効果的なタイミングで調整することができる。
ただし、出力タイミングを決定する手法は、このような手法に限定されるものではない。例えば、選択部302は、出力タイミングにかかわらず、調整用コンテンツ情報320を作成し、別途、入力情報314に応じて決定した出力タイミングが到来したときに、インタフェース部38に対して制御信号(出力タイミングが到来したことを示す信号)を伝達してもよい。インタフェース部38は、この制御信号が伝達されたタイミングで、調整用コンテンツ情報320をホストコンピュータ2に向けて転送することができる。このように構成することによっても、調整用コンテンツ情報320の出力タイミングを適切に制御することができる。
コンテンツ候補情報318は、様々なコンテンツを表現した情報の集合体である。これらの情報による調整は、必ずしも、同時に提供されなければならないわけではない。例えば、ゲームの強さを調整するコンテンツはゲーム中に使用される必要があるが、先述の例における広告を表現したコンテンツはゲーム中に使用されない方が好ましい。したがって、選択部302は、調整識別情報319に応じて選択されるコンテンツ候補情報318に含まれるコンテンツごとに、出力タイミングを決定する。
ここで、メモリシステム3においてセキュリティレベルが向上する原理について説明する。
アプリケーションプログラム311を複製しただけでは、アプリケーションプログラム311によるアプリケーションを再現することはできない。アプリケーションを再現するためには、アプリケーションプログラム311だけでなく、全てのコンテンツ候補情報318(コンテンツデータベース316)を複製することが必要である。これらを不正に複製しようとする者(以下、「悪意者」と称する。)は、これらの情報がメモリシステム3からホストコンピュータ2に向けて読み出される(転送される)ときに、インタフェース部38などに接続した装置などで不正にモニターして複製する。
メモリシステム3は、アプリケーションプログラム311については、例えば、起動時にホストコンピュータ2から与えられるコマンド等により一挙にホストコンピュータ2に転送する。しかし、メモリシステム3は、コンテンツ候補情報318を、一挙に転送することはない(通常、そのようなコマンドは存在しない。)。各コンテンツ候補情報318は、それぞれについて想定された状況を表現した入力情報314がインタフェース部38に入力されない限り、記憶装置31から読み出されることはない。しかも、どのような状況がどれだけの数だけ想定されているか(コンテンツデータベース316内のレコードの数)、あるいは、各状況を表現する入力情報314がどのようなものか(どのような入力情報314を再現すれば、調整用コンテンツ情報320が読み出されるのか)について、悪意者は全く知ることができない。
したがって、準備されている複数のコンテンツ候補情報318を、悪意者が不正に複製しようとしても、各コンテンツ候補情報318を読み出すコマンドはなく、再現が困難な入力情報314を入力としなければ読み出すことができない。したがって、コンテンツ候補情報318のうちの1つすらもメモリシステム3から読み出すことは容易ではない。
あるいは、でたらめな入力情報314によって何らかのコンテンツ候補情報318が読み出せたとしても、それがどのような状況に対応して提供されるものかを知ることも困難である。すなわち、入力情報314とコンテンツ候補情報318は、読み出しコマンドとその対象情報のような一対一の対応ではなく、多対一の対応である。したがって、ある入力情報314から特定のコンテンツ候補情報318が読み出せたとしても、当該コンテンツ候補情報318から、これを読み出す入力情報314(ある意味では無限に存在する)を特定することはできない。すなわち、例え、1つのコンテンツ候補情報318が複製できたとしても、コンテンツデータベース316のレコードを構築することはできない。
さらに、コンテンツ候補情報318は、出力タイミングが制御されていて、単に状況を再現した入力情報314を入力しただけでは直ちに出力されないものまで存在する。このような状態で、全てのコンテンツ候補情報318を完全に読み出して複製することは相当困難である。
このような原理により、メモリシステム3は、不正な複製に対するセキュリティレベルを高めることができる。
以上が、コンピュータシステム1の構成および機能の説明である。次に、コンピュータシステム1を用いて情報を保護する方法について説明する。
図4は、コンピュータシステム1を用いた情報保護方法を示す流れ図である。なお、図4に示す各工程が開始されるまでに、すでにコントローラ30は構成後の状態であるものとする。さらに、記憶装置31には、プログラム310、アプリケーションプログラム311、学習結果情報313、および、コンテンツデータベース316が格納されているものとする。すなわち、各情報を記憶装置31に記憶させる工程は、すでに完了しているものとする。
図4に示す工程が開始されると、コンピュータシステム1が起動する(ステップS1)。これにより、少なくともホストコンピュータ2に電源が投入され、ホストコンピュータ2が起動する。このとき、CPU20は、起動用プログラム210の実行を開始する。なお、ステップS1が実行されたときにメモリシステム3がすでに装着されている場合には、メモリシステム3に対する電力供給が開始される。この場合、メモリシステム3も起動する。
次に、CPU20は、インタフェース部28を監視し、メモリシステム3が装着されているか否かを判定する(ステップS2)。メモリシステム3が装着されていない場合(ステップS2においてNo。)、コンピュータシステム1はステップS2を繰り返しながら待機する。
メモリシステム3が装着されていると判定すると(ステップS2においてYes。)、CPU20は、アプリケーションプログラム311を転送するようにメモリシステム3に要求する。コンピュータシステム1が起動しており、かつ、メモリシステム3が装着されている場合には、通常、メモリシステム3は起動している。なお、メモリシステム3が、例えば、スリープモードであることも想定されるが、その場合であっても、CPU20からの要求によって復帰する。
したがって、CPU20からの要求に応じて、メモリシステム3からアプリケーションプログラム311がロード(転送)される(ステップS3)。すでに説明したように、このときロードされるアプリケーションプログラム311には要求情報312が含まれている。要求情報312は、記憶装置21に記憶される。
アプリケーションプログラム311がロードされると、コンピュータシステム1は、図4に示すアプリケーション実行処理(ステップS4)を実行する。ステップS4を実行することにより、ホストコンピュータ2は、ロードされたアプリケーションプログラム311の実行を開始するが、詳細は後述する。
アプリケーション実行処理を終了すると、CPU20は、アプリケーションを終了するか否かを判定する(ステップS5)。ステップS5における判定は、例えば、ユーザが操作部22を操作するなどして、アプリケーションを終了させる指示を入力したか否かに応じて判定することができる。ただし、ユーザ操作に限定されるものではなく、例えば、アプリケーションプログラム311自体がアプリケーションを終了させてもよい。
ステップS5においてアプリケーションを終了すると判定すると(ステップS5においてYes。)、CPU20はアプリケーションを終了する(ステップS7)。すなわち、アプリケーションプログラム311の実行を停止する。ステップS5における判定は、例えば、ユーザが操作部22を操作することにより入力される情報などに基づいて判定することができる。
一方、ステップS5においてアプリケーションを終了しないと判定すると(ステップS5においてNo。)、CPU20は、さらに、メモリシステム3が装着されているか否かを判定する(ステップS6)。そして、メモリシステム3が装着されていない場合(ステップS6においてNo。)、CPU20はステップS7を実行する。すなわち、何らかの理由でメモリシステム3が抜き取られた場合にも、CPU20はアプリケーションを終了させる。
ステップS6においてYesと判定すると、コンピュータシステム1はステップS4に戻って処理を継続する。このように、コンピュータシステム1は、ステップS5においてYesと判定するか、あるいは、ステップS6においてNoと判定するまで、アプリケーションを提供し続ける。
ステップS7が実行されてアプリケーションが終了すると、CPU20は、コンピュータシステム1による処理を終了するか否かを判定する(ステップS8)。
ステップS8においてNoと判定すると、コンピュータシステム1は、ステップS2の処理に戻って、新たなメモリシステム3が装着されるまで待機する。図4において図示をしていないが、ホストコンピュータ2は、この待機期間に調整してもよい。この期間は、アプリケーションプログラム311が実行されておらず、アプリケーションは提供されていないので、例えば、調整用コンテンツ情報320を使用して広告を表示するように調整すれば、ユーザの注目度を向上させることが期待できる。なお、広告を表現した調整用コンテンツ情報320は、先述のように、アプリケーションプログラム311によって使用されなくてもよいコンテンツを表現した情報として構成できる。
一方、ステップS8においてYesと判定すると、コンピュータシステム1は処理を終了する。このとき、ホストコンピュータ2およびメモリシステム3は動作を停止する。
次に、ステップS4に示すアプリケーション実行処理におけるホストコンピュータ2の動作について説明する。
図5は、アプリケーション実行処理において、第1の実施の形態におけるホストコンピュータ2が実行する処理を示す流れ図である。
アプリケーション実行処理が開始されると、CPU20は、アプリケーションプログラム311を実行する(ステップS11)。ステップS11が実行されるまでに、図4のステップS1,S3が実行されている。したがって、ステップS11を実行するとき、すでにCPU20がアプリケーションプログラム311を実行する準備は整っている。
なお、アプリケーションプログラム311がロード(ステップS3)されてから初めてステップS11が実行されるときとは、アプリケーションが開始されるときに相当する。その後は、ステップS7を実行することによりアプリケーションを終了するまで、ステップS4を繰り返し実行する。ステップS4が実行されるたびにステップS11が実行されることにより、アプリケーションプログラム311が逐次実行され、アプリケーションが進行する。
ステップS11を実行すると、CPU20は、収集タイミングが到来しているか否かを判定する(ステップS12)。すでに説明したように、収集タイミングとは、収集情報211を収集するタイミングであり、周期的に到来するように定義されている。
収集タイミングが到来している場合(ステップS12においてYes。)、CPU20は、要求情報312に要求されている情報を収集するために必要なハードウェアを特定し、それらのハードウェアがすべて正常に作動しているか(情報収集が可能な状態か)否かを判定する(ステップS13)。ステップS13において判定の対象となるハードウェアとは、操作部22、センサ24、カメラ25、および、マイク26のうち、要求情報312において要求されている情報の収集に必要なハードウェアである。
必要なハードウェアが作動していない場合(ステップS13においてNo。)、CPU20は、該当するハードウェアを作動させる(ステップS14)。したがって、ステップS14を実行した後、CPU20は、必要な情報の収集(操作部22によるユーザ操作の記録、センサ24によるセンシング、カメラ25による撮像、および、マイク26による収録のうちの必要な収集)が可能な状態となる。一方で、CPU20は、ステップS13において、必要のないハードウェアを停止させてもよい。なお、必要な全てのハードウェアが作動している場合(ステップS13においてYes。)、CPU20は、ステップS14をスキップする。
ステップS13,S14が実行されて、情報の収集に必要な全てのハードウェアが作動している状態となると、CPU20は、これらのハードウェアからの入力信号に基づいて、収集情報211を作成する(ステップS15)。このとき、CPU20は、再び要求情報312を参照して、得られた入力信号の要否を判定しつつ収集情報211を作成する。したがって、収集情報211は要求情報312に従って収集された情報となる。
ステップS15を実行するときには、すでにCPU20は、要求情報312を参照して、収集情報211を作成するために必要なハードウェアのみを作動させている。しかし、ハードウェアを取捨選択しただけでは、要求情報312に従った収集情報211が作成できない場合がある。例えば、白黒画像情報を要求されているために、CPU20がカメラ25を作動させたが、カメラ25はカラー画像情報を取得する場合が考えられる。このような場合、CPU20は、カメラ25から得られたカラー画像情報を、要求情報312に従って白黒画像情報に変換して収集情報211を作成する。
なお、上記の説明では、便宜上、CPU20がすべての情報をほぼ同時に収集して、ほぼ同時に収集情報211とすると説明した。しかし、各ハードウェアごとに収集タイミングが異なっていてもよい。
すでに説明したように、メモリシステム3に向けて送信された収集情報211は、メモリシステム3において入力情報314として記憶される。したがって、CPU20がステップS15を実行して収集情報211を作成することは、メモリシステム3に向けてホストコンピュータ2から入力される入力情報314を、ホストコンピュータ2が作成することに相当する。すなわち、ステップS15は、ホストコンピュータ2が入力情報314を作成する処理ともいえる。
ステップS15を実行することにより、新しい収集情報211を作成すると、CPU20は、作成した収集情報211をメモリシステム3に向けて送信する(ステップS16)。
なお、ステップS12において収集タイミングが到来していない場合(ステップS12においてNo。)、CPU20は、ステップS13ないしS16をスキップする。これにより、収集タイミングが到来していないとき、収集情報211は作成されない。
ステップS12においてNoと判定されるか、または、ステップS16が実行されると、CPU20は、調整用コンテンツ情報320を受信した否かを判定する(ステップS17)。
調整用コンテンツ情報320を受信した場合(ステップS17においてYes。)、CPU20は、受信した調整用コンテンツ情報320を記憶装置21に記憶させる。このようにして、コンピュータシステム1は、ホストコンピュータ2により使用可能なコンテンツを表現した情報を調整用コンテンツ情報320によって調整する(ステップS18)。ステップS18においてCPU20は、ステップS18が実行されるときまで記憶装置21に記憶されていたコンテンツを表現した情報(調整前の情報)を新たに受信した調整用コンテンツ情報320によって書き替える。ただし、すでに説明したように、調整前の情報は存置しつつ、調整用コンテンツ情報320を追加してもよい。あるいは、単に、調整前の情報に使用不可を示す識別子(調整用コンテンツ情報320)を付加した状態にしてもよい。さらには、調整前の情報を削除してもよいが、その場合は、調整用コンテンツ情報320は記憶されない。
ステップS18を実行するか、あるいは、ステップ17においてNoと判定すると、ホストコンピュータ2はアプリケーション実行処理(図4:ステップS4)を終了する。
以上がアプリケーション実行処理におけるホストコンピュータ2の動作の説明である。
次に、ステップS4に示すアプリケーション実行処理におけるメモリシステム3の動作について説明する。
図6は、アプリケーション実行処理において、第1の実施の形態におけるメモリシステム3が実行する処理を示す流れ図である。なお、図6に示す各工程が開始されるまでに、メモリシステム3は、ホストコンピュータ2からのロード要求に応じて、アプリケーションプログラム311の送信を完了している。
アプリケーション実行処理が開始されると、メモリシステム3は、ホストコンピュータ2から入力情報314(収集情報211)を受信したか否かを判定する(ステップS21)。
入力情報314を受信した場合(ステップS21においてYes。)、メモリシステム3は、当該入力情報314を記憶装置31に記憶する(ステップS22)。
また、選択部302が入力情報314を参照して、入力情報314に応じて、調整用コンテンツ情報320の出力タイミングを決定する(ステップS23)。
例えば、入力情報314に所定の操作がされたことが示されており、それによって出力タイミングが到来したことを検出すると、選択部302はステップS23において、出力タイミングが到来したことを示すフラグ(以下、「タイミングフラグ」と称する。)を直ちにオンにする。出力するタイミングを制御しない調整用コンテンツ情報320についても、選択部302は同様に直ちにタイミングフラグをオンにする。一方、例えば、所定の時間経過後に出力タイミングが到来することを検出した場合、選択部302は、当該所定の時間をタイマ(図示せず)にセットし、所定の時間が経過した後にタイミングフラグがオンに切り替わるようにタイマを制御する。ただし、ここに示す例に限定されるものではない。
また、分析部301が入力情報314の分析により実行情報315を作成し(ステップS24)、記憶装置31に記憶させる。なお、分析部301による分析については、すでに説明したのでここでは省略する。
ステップS24が実行されて実行情報315が作成されると、推論部300が、人工知能アルゴリズムにより、実行情報315に対して推論処理を実行する(ステップS25)。ステップS25において、推論部300は、複数の調整候補識別情報317の中から、推論により決定した特定の調整候補識別情報317を調整識別情報319とする。
なお、ステップS21においてNoと判定すると、メモリシステム3は、ステップS22ないしS25の処理をスキップする。
ステップS21においてNoと判定するか、または、ステップS25を実行すると、メモリシステム3は、調整用コンテンツ情報320の出力タイミングが到来しているか否かを判定する(ステップS26)。ステップS26における判定は、例えば、選択部302がタイミングフラグがオンであるか否かを判定することにより判定できる。
出力タイミングが到来している場合(ステップS26においてYes。)、選択部302は、調整識別情報319に対応する調整候補識別情報317に関連づけられたコンテンツ候補情報318をコンテンツデータベース316から選択して調整用コンテンツ情報320とする(ステップS27)。このとき、選択部302は、選択したコンテンツ候補情報318の中から、出力タイミングが到来した情報のみを選択して、調整用コンテンツ情報320とする。すなわち、選択部302は、未だ出力タイミングが到来していない情報は調整用コンテンツ情報320に含めることはない。
ステップS27が実行され、新たな調整用コンテンツ情報320が作成されると、インタフェース部38が当該調整用コンテンツ情報320をホストコンピュータ2に向けて送信する(ステップS28)。
ステップS26においてNoと判定すると、メモリシステム3はステップS27およびS28の処理をスキップする。
なお、ステップS26においてNoと判定するか、または、ステップS28を実行すると、メモリシステム3はアプリケーション実行処理(図4:ステップS4)を終了して図4に示す処理にもどる。
以上のように、第1の実施の形態におけるメモリシステム3は、入力情報314(収集情報211)を作成するホストコンピュータ2に接続される。そして、メモリシステム3は、ホストコンピュータ2によって実行されるアプリケーションプログラム311と、ホストコンピュータ2において使用可能な様々なコンテンツ候補情報318を複数の調整候補識別情報317のうちのいずれかと関連づけたコンテンツデータベース316と、ホストコンピュータ2から入力される入力情報314とを記憶する記憶装置31と、コントローラ30とを備える。さらに、コントローラ30は、人工知能アルゴリズムによる推論を実行することにより、入力情報314に応じて、複数の調整候補識別情報317のうちから特定の調整候補識別情報317を調整識別情報319として推論する推論部300と、調整識別情報319に対応する調整候補識別情報317に関連づけられたコンテンツ候補情報318をコンテンツデータベース316から選択して調整用コンテンツ情報320とする選択部302と、調整用コンテンツ情報320をホストコンピュータ2に出力するインタフェース部38とを備える。これにより、複数のコンテンツ候補情報318のうちから選択された一部の調整用コンテンツ情報320しかホストコンピュータ2に出力しない。したがって、例えば、すべてのコンテンツ候補情報318をホストコンピュータ2に出力し、ホストコンピュータ2側で推論して実際に使用する調整用コンテンツ情報320を選択する場合に比べて、コンテンツ候補情報318を不正に抜き取られる危険性が低下する。
また、コントローラ30は、ホストコンピュータ2から入力される入力情報314を分析して実行情報315として記憶装置31に記憶させる分析部301をさらに備え、推論部300は、実行情報315に応じて調整識別情報319を推論することにより、入力情報314に応じて調整識別情報319を推論する。これにより、入力情報314から直接推論する場合に比べて推論処理を軽減することができる。
また、アプリケーションプログラム311は、ホストコンピュータが入力情報314を特定するための要求情報312を含み、入力情報314は、要求情報312に従って収集された情報である。アプリケーションプログラム311に応じて必要となる入力情報314に絞り込んでホストコンピュータ2に要求することができる。したがって、アプリケーション毎に必要な情報のみが入力情報314として入力されるので、不要な入力情報314がメモリシステム3に入力されることを抑制できる。
また、コントローラ30は、インタフェース部38がホストコンピュータ2に対して出力すべき調整用コンテンツ情報320の出力タイミングを決定する選択部302をさらに備え、インタフェース部38は、選択部302により決定された出力タイミングに応じて、選択部302により選択された調整用コンテンツ情報320をホストコンピュータ2に出力する。これにより、リアルタイムに調整するだけでなく、任意のタイミングで調整することができる。例えば、次回以降の起動時に調整することなどもできる。
<2. 第2の実施の形態>
第1の実施の形態では、メモリシステム3において入力情報314(収集情報211)を分析して実行情報315を作成すると説明した。しかし、このような構成に限定されるものではない。例えば、実行情報315に相当する情報の作成が、ホストコンピュータ2において実行されてもよい。
図7は、第2の実施の形態におけるコンピュータシステム1aを示す図である。コンピュータシステム1aは、ホストコンピュータ2の代わりにホストコンピュータ2aを備える点と、メモリシステム3の代わりにメモリシステム3aを備える点がコンピュータシステム1と異なっている。
なお、以下の説明では、第2の実施の形態におけるコンピュータシステム1aにおいて、第1の実施の形態におけるコンピュータシステム1と異なる点について説明し、共通する点については適宜説明を省略する。
ホストコンピュータ2aは、CPU20の代わりにCPU20aを備えている点がホストコンピュータ2と異なっている。また、ホストコンピュータ2aの記憶装置21は、要求情報312の代わりに要求情報312aを記憶する点と、実行情報215を記憶する点がホストコンピュータ2と異なっている。
要求情報312aは、メモリシステム3aの記憶装置31に記憶される要求情報312aである。要求情報312aは、要求情報312と同様に、どのような情報に基づいて収集情報211を作成するかを示す情報を含んでいる。ただし、要求情報312aは、収集情報211に応じて、どのような実行情報215を作成するかを示す情報も含まれている点が要求情報312と異なっている。
実行情報215は、ホストコンピュータ2aで作成される情報であって、実行情報315と等価な情報である。実行情報215は、メモリシステム3aに向けて転送され、入力情報314aとして記憶装置31に記憶される。
図8は、第2の実施の形態におけるホストコンピュータ2aが備える機能ブロックをデータの流れとともに示す図である。図8に示す分析部200aは、アプリケーションプログラム311をCPU20aが実行することにより実現される機能ブロックである。
第1の実施の形態における分析部301は、収集情報211(入力情報314)に対する分析を行って、その分析結果として実行情報315を作成した。一方、分析部200aは、収集情報211に対する分析を行い、分析結果として実行情報215を作成する機能を有している。すなわち、分析部200aは、分析部301と同様の機能を有している。
分析部200aによって作成された実行情報215は、インタフェース部28を介して、メモリシステム3aに向けて送信される。
図7に戻って、メモリシステム3aは、コントローラ30の代わりにコントローラ30aを備えている点がメモリシステム3と異なっている。また、メモリシステム3aの記憶装置31は、アプリケーションプログラム311の代わりに要求情報312aを含んだアプリケーションプログラム311aを記憶する点と、入力情報314の代わりに入力情報314aを記憶する記憶する点がメモリシステム3と異なっている。なお、メモリシステム3aの記憶装置31は、実行情報315を記憶することはない。
図9は、第2の実施の形態における構成後のコントローラ30aが備える機能ブロックをデータの流れとともに示す図である。図9に示す推論部300a、および、選択部302aは、コントローラ30aによって実現される機能ブロックである。
コントローラ30aは、推論部300および選択部302の代わりに、推論部300aおよび選択部302aを備えている点がコントローラ30と異なっている。また、コントローラ30aは、分析部301を備えていない点がコントローラ30と異なっている。
推論部300aは、入力情報314aに対する推論処理を実行し、推論結果として調整識別情報319を作成する。
すでに説明したように、ホストコンピュータ2aは、収集情報211の代わりに、収集情報211を分析することにより作成された実行情報215をメモリシステム3aに向けて送信する。これにより、メモリシステム3aは、収集情報211ではなく、実行情報215を入力情報314aとして記憶する。また、実行情報215は実行情報315と等価な情報である。したがって、推論部300aに入力される入力情報314aは実行情報315と等価な情報である。すなわち、推論部300aは、推論部300が実行する推論処理と等価な推論処理を実行することにより、推論結果として、調整識別情報319を作成することができる。
選択部302aは、入力情報314(収集情報211)の代わりに、入力情報314a(収集情報211を分析して作成される実行情報215)を参照して出力タイミングを決定する点が選択部302と異なっている。
以上のように構成したコンピュータシステム1aにおいても、コンテンツデータベース316をホストコンピュータ2aに向けて送信する必要はない。したがって、コンピュータシステム1と同様にメモリシステム3aのセキュリティレベルが向上する。
また、コンピュータシステム1aは、収集情報211に対する分析を、ホストコンピュータ2aが行う。これにより、メモリシステム3aは、分析部301に相当する機能ブロックを備える必要がない。したがって、ホストコンピュータ2aのCPU20aに比べて、演算能力の低いメモリシステム3aのコントローラ30aの負担を軽減することができる。
<3. 変形例>
以上、本発明の実施の形態について説明してきたが、本発明は上記実施の形態に限定されるものではなく様々な変形が可能である。
例えば、上記実施の形態に示した各工程は、あくまでも例示であって、上記に示した順序や内容に限定されるものではない。すなわち、同様の効果が得られるならば、適宜、順序や内容が変更されてもよい。例えば、図6に示すステップS23とステップS24の順序は入れ替わってもよいし、並行的に実行してもよい。
上記実施の形態では、選択部302がタイミング決定手段としての機能を有する例について説明した。しかし、インタフェース部38がタイミング決定手段としての機能を有していてもよい。例えば、インタフェース部38が、入力情報314に示される情報を監視し、調整用コンテンツ情報320の出力タイミングを決定してもよい。インタフェース部38は、ホストコンピュータ2から受信した収集情報211に基づいて入力情報314を記憶させるときに、当該入力情報314に示される情報を監視することができる。
また、上記実施の形態に示した機能ブロック(例えば、分析部200a)は、CPU20aがアプリケーションプログラム311aに従って動作することにより、ソフトウェア的に実現されると説明した。しかし、このような機能ブロックの一部または全部を専用の論理回路で構成し、ハードウェア的に実現してもよい。