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