(58)【調査した分野】(Int.Cl.,DB名)
前記食材グループ設定部は、前記取得した食材の情報に含まれる食材毎の汎用性を示す情報を取得し、当該取得した汎用性を示す情報で示される値が相対的に高い食材が異なる食材グループに振り分けられるように食材グループを設定する
請求項1に記載の情報処理装置。
前記食材グループ設定部は、食材を分量単位で各食材グループに振り分けて食材グループを設定するとともに、設定した各食材グループについて前記数量条件を満たせなくなる場合は、各食材グループに振り分ける食材の分量の再設定を行う
請求項1又は請求項2に記載の情報処理装置。
各食材グループについて特定されたレシピ数又は各食材グループについて特定されたレシピにおける料理種別の数の偏りについての前記数量条件が、食材グループの数に応じて設定される
請求項1乃至請求項4のいずれかに記載の情報処理装置。
各食材グループについて特定されたレシピ数又は各食材グループについて特定されたレシピにおける料理種別の数の最小値としての前記数量条件が、食材グループの数に応じて設定される
請求項1乃至請求項4のいずれかに記載の情報処理装置。
【発明を実施するための形態】
【0017】
以下、実施の形態を次の順序で説明する。
<1.全体構成>
<2.ハードウェア構成>
<3.DB>
<4.端末とサーバ間の処理の流れ>
<5.第1の実施の形態>
<6.第2の実施の形態>
<7.第3の実施の形態>
<8.まとめ>
<9.プログラム及び記憶媒体>
【0018】
<1.全体構成>
実施の形態におけるシステム全体構成を
図1により説明する。実施の形態のシステムはユーザに対して料理レシピ(以降では単にレシピという)を提供するサービスを実現するシステムとしている。
本例のシステムは
図1に示すように、レシピ管理サーバ1、ユーザ端末3、EC(electronic commerce:電子商取引)サーバ4が、通信ネットワーク2を介して相互に通信可能な状態で接続されている。
レシピ管理サーバ1は、レシピデータベース50、ユーザデータベース51、検索データベース52、格納履歴データベース53、食材データベース55、提示設定データベース56にアクセス可能とされている。
ECサーバ4はユーザデータベース51、格納履歴データベース53、商品データベース54にアクセス可能とされている。
また格納履歴データベース53Aとして示すように、ユーザ端末3に格納履歴データベースが構築され、レシピ管理サーバ1がユーザ端末3から格納履歴データベース53Aの情報を取得するようにしてもよい。以下の説明において、格納履歴データベース53に対するアクセスが発生する処理は、格納履歴データベース53Aを対象とする処理と考えてもよい。
なお、以下「データベース」については「DB」と表記する。
【0019】
レシピ管理サーバ1は、ユーザ(レシピ提供者)から投稿されるレシピを管理し、またユーザからの要求に応じてレシピを提供する(ユーザ端末3において提示させる)処理を行う情報処理装置である。具体的な構成に関しては後述する。
このレシピ管理サーバ1が、本発明請求項の情報処理装置の実施の形態に相当する。
【0020】
通信ネットワーク2の構成は特に限定されるものではなく、例えば、インターネット、イントラネット、エキストラネット、LAN(Local Area Network)、CATV(Community Antenna TeleVision)通信網、VPN(Virtual Private Network:仮想専用網)、電話回線網、移動体通信網、衛星通信網などが想定される。
また通信ネットワーク2の全部又は一部を構成する伝送媒体についても多様な例が想定される。例えばIEEE(Institute of Electrical and Electronics Engineers)1394、USB(Universal Serial Bus)、電力線搬送、電話線などの有線でも、IrDA(Infrared Data Association)のような赤外線、ブルートゥース(登録商標)、802.11無線、携帯電話網、衛星回線、地上波デジタル網などの無線でも利用可能である。
【0021】
ユーザ端末3は、レシピをレシピ管理サーバ1に投稿するユーザ(レシピ提供者)や、レシピ管理サーバ1が管理するレシピ情報を検索し閲覧するユーザ(レシピ利用者)などが使用する端末である。
なお、本実施の形態のサービスを利用する「ユーザ」はレシピ提供者、レシピ利用者のいずれにもなり得るが、以下では特に断らない限り、「ユーザ」はレシピ利用者として行動しているユーザ、もしくはレシピ利用者となる可能性を有するユーザを指すものとする。
【0022】
ユーザ端末3では、必要に応じて各種の送受信処理や表示処理などが実行される。また、ユーザ端末3は、例えば、通信機能を備えたPC(Personal Computer)やフィーチャーフォンやPDA(Personal Digital Assistant)、或いは、スマートフォンやタブレット端末などのスマートデバイスなどである。
【0023】
ECサーバ4は、商品の取引に関する各種サービスを提供する情報処理装置である。各種サービスとしては、例えば、電子商取引で扱っている商品群の中からユーザが所望する商品を検索して提示する商品検索サービスや、商品提供者が販売したい商品を管理する商品管理サービスがある。また例えば、ユーザ情報を管理し必要に応じて提示するユーザ情報管理サービスや、商品提供者の情報を管理し必要に応じて提示する商品提供者情報管理サービスや、商品の売買が成立した際の代金のやりとりを仲介する決済処理サービスなどもある。
ECサーバ4は、ユーザ端末3へ各種サービスを実現するためのウェブページデータを生成し、送信する処理を行う。
更に、ECサーバ4は、レシピ管理サーバ1からの要求に応じて各種情報をレシピ管理サーバ1へ送信する処理を行う。
またECサーバ4はユーザの食材の購入情報などに応じて格納履歴DB53の更新を行う。
【0024】
図2は、1又は複数の情報処理装置で構成されるレシピ管理サーバ1としての機能構成、およびレシピ管理サーバ1がアクセスするDBを示している。
レシピ管理サーバ1は、食材情報取得部1a、提供回数特定部1b、食材グループ設定部1c、レシピ特定部1d、提示制御部1e、レシピ管理部1fを備えている。
なお食材情報取得部1a、提供回数特定部1b、食材グループ設定部1c、レシピ特定部1d、提示制御部1e、レシピ管理部1fとしての各機能は、情報処理装置においてCPU(例えば後述する
図3のCPU101)でプログラムに応じて実行される処理により実現される機能である。但し以下説明する全部又は一部の各構成の処理をハードウエアにより実現してもよい。
また各機能をソフトウエアで実現する場合に、各機能がそれぞれ独立したプログラムで実現される必要はない。1つのプログラムにより複数の機能の処理が実行されてもよいし、1つの機能が複数のプログラムモジュールの連携で実現されてもよい。
【0025】
レシピ管理部1fは、レシピ提供サービスとして必要な情報管理を行う機能である。
例えばレシピ管理部1fは、レシピ提供者が投稿したレシピについてレシピDB50の登録を行い、また登録したレシピについては、レシピが属するカテゴリ情報やレシピに使用する食材情報等とを紐付けて管理する。具体的には、あるレシピ提供者が投稿した「野菜カレー」のレシピは、料理種別「カレー」に属するレシピであり、使用食材情報として、「じゃがいも」、「人参」、「タマネギ」、「ブロッコリー」、「トマト」、「ほうれん草」が紐付けられる。
【0026】
なお、料理種別としてはカテゴリのレベルが複数段階に設定される。例えば「和食」「洋食」などの種別、「日本料理」「中華料理」「イタリア料理」「フランス料理」「タイ料理」という地域レベルの種別、「カレー」「ハンバーグ」「ラーメン」などの料理名に応じたレベルの種別、さらには「ビーフカレー」「チキンカレー」「キーマカレー」などの細かいレベルの種別などがある。
以下では説明上、あくまで一例ではあるが、次のように料理種別のレベル(分類の階層)が設定されているとする。
大分類レベル:「日本料理」「中華料理」などの地域別のレベル
中分類レベル:「カレー」「ハンバーグ」等の料理名単位のレベル
細分類レベル:「ビーフカレー」「チキンカレー」等の料理名内の詳細なレベル
レシピ管理部1fは、各レシピについて、このような各レベルでの種別管理も行う。
【0027】
なお、料理種別のレベルは多様であり、例えば下記(A)に示すように中分類は肉料理、魚料理、野菜料理のような主たる食材の分類としてもよいし、下記(B)のように、大分類は「主食」「おかず」「副菜」などとしてもよい。
(A)大分類:和食(その他:洋食など)
中分類:肉料理
細分類:肉じゃが/牛肉のしぐれ煮など
中分類:魚料理
細分類:鯖の味噌煮/鮭のちゃんちゃん焼きなど
中分類:野菜料理
細分類:焼き野菜のロースト/きんぴらごぼうなど
(B)大分類:主食(その他:おかず/副菜など)
中分類:肉料理
細分類:ハンバーグ/コロッケなど
中分類:魚料理
細分類:タコのフリット/タラのムニエルなど
中分類:野菜料理
細分類:ポトフ/野菜のトマト煮など
【0028】
また、レシピ管理部1fは、食材毎に、その食材が用いられるレシピの数を管理する。例えば登録している全てのレシピを対象とし、各食材が、それぞれいくつのレシピで使用されるかをカウントし、食材DB55に登録して管理する。
またレシピ管理部1fは、例えばカテゴリ(料理種別)ごとに使用頻度の高い通常食材を管理する。具体的には、「カレーライス」のカテゴリに対して、同カテゴリに属するレシピの使用食材に頻出する「じゃがいも」、「人参」、「タマネギ」、「牛肉」、「豚肉」、「チキン」を通常食材として設定する。尚、食材に加えて調味料(「塩」や「胡椒」など)やそれに準ずるもの(例えば「カレールー」など)を、通常食材として設定してもよい。
また、レシピ管理部1fは、食材毎に、組み合わされて使用されやすい食材を管理する。例えば各種のレシピにおいて「じゃがいも」と「にんじん」が同時に用いられている例が多い場合、「じゃがいも」と「にんじん」を組み合わせられやすい食材として管理する。
【0029】
またレシピ管理部1fは、レシピごとに投稿された作成レポートを管理する。作成レポートは、ユーザが実際にレシピを利用して料理を行った際に感じた料理のおいしさや手軽さなどを記したレポートである。作成レポートは、レシピDB50の各レシピに紐付けられて管理される。
【0030】
食材情報取得部1aは、食材の格納履歴を記憶する記憶装置である格納履歴DB53から所定の条件を満たす食材の情報を取得する処理を行う。
格納履歴DB53については後述するが、これはユーザ毎に購入した食材の情報や使用した食材の情報が登録されているものである。
食材情報取得部1aは所定のタイミングで、各ユーザや特定のユーザについての格納履歴DB53の情報を取得する。レシピ管理サーバ1は食材情報取得部1aが取得する食材の情報に基づいて後述するレシピ提示設定のための処理を行う。
特には食材情報取得部1aは、ユーザの食材購入に合わせて、格納履歴DB53の内容から、そのユーザの食材在庫を確認し、所定の条件(例えば在庫量や消費期限に関する条件)を満たした食材の情報を取得する。
【0031】
提供回数特定部1bは、格納履歴DB53に記憶された格納履歴に基づいて、特定のユーザの食材が追加される周期を判定し、判定した周期に基づいてレシピ提供回数を特定する処理を行う機能である。
【0032】
食材グループ設定部1cは、食材情報取得部1aが取得した食材の情報、この場合は特定のユーザが現在所有する食材(在庫食材)のうちで例えば在庫量や消費期限に関する条件に応じて取得した食材の種類や量の情報を用いて、各食材を振り分け、レシピ提供回数に応じた数の食材グループを設定する処理を行う機能である。
【0033】
レシピ特定部1dは、食材グループ設定部1cが設定した食材グループ毎に、割り当てられた食材に基づいてレシピを特定する処理を行う機能である。即ち食材グループ毎に、そのグループに割り当てられた食材で料理可能なレシピを、レシピDB50に登録されているレシピの中から検索する。そして各食材グループについて対応するレシピを特定し、そのユーザに提示するレシピとして管理する。特定したレシピは提示設定DB56を用いて管理する。
【0034】
提示制御部1eは、レシピ特定部1dが特定したレシピについてユーザ端末3において提示されるようにする提示制御を行う。
具体的には、或るユーザが、レシピ提供サービスのウェブサイトにログインした際に、そのユーザに薦める料理のレシピを一覧表示するウェブページデータを生成し、ユーザ端末3に送信して、提示されるようにする。
後述するが、食材グループ設定部1c及びレシピ特定部1dによって、対象のユーザに対して、複数回の食事(料理機会)に対応させて上記の食材グループが設定され、それぞれの食材グループに対応して1又は複数のレシピを特定している。提示制御部1eはユーザのログインに応じて、対応するレシピを推奨すべく、提示制御を行う。
また、提示制御部1cは、ユーザの操作に応じた種々のウェブページデータを送信する処理を実行する。種々のウェブページデータとしては、例えばログイン画面のウェブページデータやレシピ詳細ページのウェブページデータや作成レポート投稿ページのウェブページデータなどである。
これらのウェブページのデータは、例えば、HTML(Hyper Text Markup Language)やXHTML(Extensible HyperText Markup Language)などの構造化文書ファイルである。構造化文書ファイルには、レシピ名や使用食材、或いは調理手順としてのテキストデータや料理画像等の画像データと、それらの配置や表示態様(文字色やフォントや大きさや装飾など)が記述されている。
【0035】
レシピ管理サーバ1には、他にも、各種情報を送受信する機能や、ユーザのログイン操作に対する認証処理などを実現するために必要な各部が設けられている。認証処理は、ユーザ端末3から送信されたログイン情報としてのユーザID(Identification)とパスワードを、ユーザDB51に記憶された認証情報と照合する処理である。
【0036】
<2.ハードウェア構成>
図3は、
図1に示したレシピ管理サーバ1、ユーザ端末3、ECサーバ4のハードウエア、及び、レシピDB50、ユーザDB51、検索DB52、格納履歴DB53、商品DB54、食材DB55、提示設定DB56のハードウェアを例示する図である。
それぞれのサーバや端末、DBにおけるコンピュータ装置のCPU(Central Processing Unit)101は、ROM(Read Only Memory)102に記憶されているプログラム、または記憶部108からRAM(Random Access Memory)103にロードされたプログラムに従って各種の処理を実行する。RAM103にはまた、CPU101が各種の処理を実行する上において必要なデータなども適宜記憶される。
【0037】
CPU101、ROM102、およびRAM103は、バス104を介して相互に接続されている。このバス104には、入出力インターフェース105も接続されている。
入出力インターフェース105には、入力部106、出力部107、記憶部108、通信部109が接続されている。
入力部106はキーボード、マウス、タッチパネルなどにより構成される。
出力部107はLCD(Liquid Crystal Display)、CRT(Cathode Ray Tube)、有機EL(Electroluminescence)パネルなどよりなるディスプレイ、並びにスピーカなどにより構成される。
記憶部108はHDD(Hard Disk Drive)やフラッシュメモリ装置などにより構成される。
通信部109はネットワーク1を介しての通信処理や機器間通信を行う。
入出力インターフェース105にはまた、必要に応じてメディアドライブ110が接続され、磁気ディスク、光ディスク、光磁気ディスク、或いは半導体メモリなどのリムーバブルメディア111が適宜装着され、リムーバブルメディア111に対する情報の書込や読出が行われる。
【0038】
このようなコンピュータ装置では、通信部109による通信によりデータやプログラムのアップロード、ダウンロードが行われる。またリムーバブルメディア111を介したデータやプログラムの受け渡しが可能である。
CPU101が各種のプログラムに基づいて処理動作を行うことで、レシピ管理サーバ1、ユーザ端末3、ECサーバ4等としての必要な情報処理や通信が実行される。
なお、レシピ管理サーバ1等を構成する情報処理装置は、
図3のようなコンピュータ装置が単一で構成されることに限らず、複数のコンピュータ装置がシステム化されて構成されてもよい。複数のコンピュータ装置は、LAN等によりシステム化されていてもよいし、インターネット等を利用したVPN等により遠隔地に配置されたものでもよい。
【0039】
<3.DB>
各DBについて説明する。
レシピDB50は、レシピ提供者から投稿されたレシピの情報が記憶されるDBである。具体的には、
図4に示すように、それぞれのレシピを識別可能なレシピIDに対して、レシピを投稿したレシピ提供者を特定するユーザIDと、投稿日時情報と、レシピが属するカテゴリ(料理種別)情報と、レシピの使用食材情報と、レシピの調理手順と、料理画像(完成した料理の画像や調理途中の料理の画像)などの画像情報と、レシピを実際に利用した(料理を作成した)他のユーザによって投稿された作成レポートを特定する作成レポートIDと、が紐付けられて記憶される。
また、レシピの詳細ページのURL(Uniform Resource Locator)情報がレシピIDに紐付けられて記憶されてもよい。
【0040】
更に、レシピDB50には、各レシピに対して投稿された作成レポートの情報が記憶される。作成レポートの情報としては、レポート内容を示すテキストデータや投稿者を識別可能なユーザIDや投稿日時情報などが記憶される。
【0041】
ユーザDB51は、ユーザのログイン情報が記憶されるDBである。具体的には、それぞれのユーザを識別可能なユーザIDとログインパスワードが紐付けられて記憶される。また、ログイン履歴などの各種履歴情報が記憶されてもよい。
また、ユーザDB51には、ユーザごとの購入履歴情報が記憶される。例えば各種食材を電子商取引により購入した際の履歴情報が蓄積されている。
またユーザDB51には、ユーザ毎のレシピ閲覧履歴、レシピ投稿履歴なども記憶される。
【0042】
検索DB52は、検索キーワードと対応した検索結果が記憶されるDBである。具体的には、「カレー」や「ハンバーグ」などの料理名や「きのこ」や「トマト」などの材料名などの検索キーワードに応じて、複数のレシピが検索結果として紐付けられて記憶される。
例えばユーザの検索要求に応じて検索処理が実行され、その結果抽出された検索結果が検索キーワードに紐付けられて検索DB52に記憶される。このように紐付けが行われることで、検索要求があった際に新たな検索処理を実行せずに済む機会が増える。
なお、予め定期的に検索キーワードを用いた検索処理を実行しておき、その結果抽出された検索結果が検索キーワードに紐付けられて検索DB52に記憶されるようにしてもよい。
【0043】
格納履歴DB53(又は53A)は、ユーザ毎の食材の購入履歴や使用履歴が記憶されるDBである。
図5Aに一例を示す。例えばユーザIDが“U001”のユーザについて例示しているように、一人のユーザに対して、「じゃがいも」「タマネギ」「にんじん」・・・等の各食材について、購入履歴や使用履歴が記憶されている。例えば購入や使用の情報がデータナンバ毎の情報として随時追加されていく。
購入データとしては、追加日時や追加量が記憶される。
使用データとしては、使用日時や使用量が記憶される。
サーバ側が構築する格納履歴DB53としては、図示のように各ユーザ、例えばユーザIDでいうと“U001”“U002”“U003”・・・毎に、このように購入履歴や使用履歴が記憶される。各ユーザとは例えばレシピ提供サービスに登録してログイン可能なユーザである。
なお、ユーザ端末3において格納履歴DB53Aを構成する場合は、そのユーザ端末3の使用者で或るユーザのみについて購入履歴や使用履歴が記憶され、それをレシピ管理サーバ1が参照可能とされていればよい。
【0044】
格納履歴DB53は、レシピ管理サーバ1やECサーバ4がデータを追加していく。例えばECサーバ4は各ユーザの電子商取引の情報のうちで食材購入の情報を取得することに応じて購入データを追加する。特に本実施の形態ではユーザによる定期的な購入を想定するため、例えばECサーバ4が提供するマーケットにおいてユーザが定期的な食材に購入を行っていれば、その情報を格納履歴DB53に反映することができる。
またユーザが協同組合や食材配達サービスなどを利用している場合、ユーザ毎の購入履歴情報はそれらの業者で管理されているため、例えばレシピ管理サーバ1が、その業者の管理端末から各ユーザの食材購入履歴情報を取得し、格納履歴DB53を更新してもよい。
さらに、ユーザが実店舗で購入を行っている場合に、ユーザ端末3に接続したリーダー装置によりレシートを読み込ませることで、購入した食材の情報をレシピ管理サーバ1に提供することもできる。また実店舗のPOSシステム(Point of sale system)のデータを例えばユーザの会員情報とリンクさせて収集し、購入食材の情報として反映させてもよい。レシピ管理サーバ1は、例えばこれらの手法で取得した購入データを、逐次格納履歴DB53に登録する。
【0045】
使用データに関しては、ユーザが使用したレシピの推定に基づいて記憶することが考えられる。レシピの「使用」とは、ここではレシピを参照して料理を作ったという意味である。
例えば或る1つのレシピを使用したと推定した場合に、そのレシピで用いられる食材と量を確認し、それらを使用履歴として登録する。
使用したレシピの推定手法としては、次のような例が考えられる。
・ユーザがレシピ詳細ページ(以下、「詳細ページ」と略称することもある)の要求を1回行った場合は、その詳細ページが要求されたレシピを使用したと推定する。レシピ詳細ページとは、食材や実際の調理手順等が記載されているウェブページである。ユーザは一般に、一覧提示されたレシピの中から選んで詳細ページを要求し、閲覧して調理を行う。
・ユーザがレシピ詳細ページの要求を複数のレシピについて行った場合は、最後の要求に係るレシピを使用したと推定する。ユーザは、複数の詳細ページで各レシピの詳しい調理手順等を確認してから作る料理(使用レシピ)を決めることも多い。従って、最後に詳細ページを見たレシピが、各種レシピを確認した上で決めたものと推定することができる。
・ユーザが詳細ページのプリントを行った場合、そのレシピを使用したと推定する。プリントは、実際の調理の際に、調理手順を確認しやすくするためと考えられるためである。
・詳細ページの閲覧時間が或る程度の時間以上、長い場合に、そのレシピの使用と推定する。画面上で詳細ページを見ながら実際の調理を行っていると想定されるためである。
例えば以上のような手法で使用レシピを推定することで、使用データを追加できる。
もちろん、推定以外にも、実際にユーザに使用レシピの入力を求め、それによって使用データを追加してもよい。またユーザが或るレシピに対して調理のレポートや料理の写真を投稿した場合に、上述の推定処理を確定させたり修正してもよい。
【0046】
いずれにしても格納履歴DB53は、ユーザ毎に、食材購入と食材使用の履歴が登録され、現在のユーザの食材在庫が把握できるものとされれば良い。食材在庫の把握は厳しい正確性を要求するものではなく、少なくとも現在ユーザの自宅にある食材の種類と量が大まかにわかればよい。もちろん冷蔵庫やストッカ等とネットワーク通信により連携して、食材在庫が正確にわかるようなシステムを構築してもよい。
なお
図5では食材単位で追加データ、使用データが記憶される例を示しているが、特に食材単位で分けることなく、追加データとして食材名、追加日時、追加量が記憶され、使用データとして食材名、使用日時、使用量が逐次記憶されていくような形態でよいことはいうまでもない。
【0047】
商品DB54は、ECサーバ4が電子商取引において扱う各種商品の情報が記憶されている。例えば各仮想店舗の商品についての価格、在庫、商品画像等の各種情報が登録されている。
【0048】
食材DB55はレシピに用いられる食材に関する情報が記憶されるDBである。
図5Bに例を示すが、各食材が、それぞれいくつのレシピで使用されるかをカウントした値が登録されている。レシピ数が多い食材は、各種の料理で使われやすい食材、つまり
汎用性が高い食材と考えられる。
なお図示していないが、食材DB55としては、組み合わせられやすい食材の情報や、各種の料理種別毎に使用されやすい食材の情報を登録しても良い。組み合わせられやすい食材の情報や、料理種別毎で使われやすい食材の情報は、レシピDB50に登録されているレシピに基づいて生成すればよい。例えば「じゃがいも」を対象とした場合に、登録されているレシピの中で、じゃがいもとともに使われている食材のうちで、該当レシピ数が上位となる食材を「組み合わせられやすい食材」と判定して登録すればよい。また使用されやすい食材の情報は、例えば「カレー」については、料理種別(中分類レベル)が「カレー」とされているレシピを収集し、それらの中で各食材の使用頻度(使用しているレシピ数)を確認し、上位となる食材を「使用されやすい食材」と判定すればよい。
もちろん登録されているレシピに限らず、一般的な認識に基づいてこのような情報を生成し、登録しておくものでも良い。
【0049】
提示設定DB56はユーザ毎に現在設定中のレシピの情報が登録される。
図6に示すように、ユーザIDに対応して、n個の食材グループGP1〜GPn(ユーザ:U001についてはn=7としている)の設定、食材グループ毎に振り分けられた食材の情報、食材グループ毎に対応するレシピの情報が登録される。各食材グループGP1〜GP7に対応しては、ユーザに提示すべき日時の情報も記憶されている。
また提示設定DB56には、そのユーザが実際に使用したレシピを推定するために用いる情報も記憶される。例えば詳細ページの閲覧履歴や印刷等の情報である。一例としては、この推定情報に基づいて、使用レシピが推定され、推定された使用レシピに基づいて、上述の格納履歴DB53において食材の使用データの記憶が行われる。
これらの提示設定DB56に記憶される情報の詳細については後述する。
【0050】
以上の各DB(50〜56)は、レシピ管理サーバ1又はECサーバ4がアクセス可能とされていればどのような形態で実現されていてもよい。例えばレシピ管理サーバ1と同一システム内の記憶部に各DB(レシピDB50、ユーザDB51、検索DB52、格納履歴DB53、食材DB55、提示設定DB56)のすべてが形成されていてもよいし、これら各DBの一部又は全部が別体、遠隔地等のコンピュータシステムに設けられていてもよい。もちろん各DBが一つの装置(例えば一つのHDD等)内に形成されている必要はない。また各DBのそれぞれが、それぞれ1つのDBとして構成される必要もない。例えばユーザDB51として記憶される情報が、複数のユーザDB(例えばログイン用のユーザDBと取引用のユーザDBなど)により記憶管理されてもよい。上記した各DBは、実施の形態の処理に関連する情報の記憶部を、それぞれ1つのDBの形態で例示したものに過ぎない。
【0051】
<4.端末とサーバ間の処理の流れ>
レシピ管理サーバ1とユーザ端末3が実行する処理の流れの一例について、
図7を参照して説明する。
ここでは、レシピ管理サーバ1が提供する各種サービスを受けるために、ユーザがユーザ端末3を用いてログイン操作を行い、レシピ提供を受ける例を説明する。なお、この
図7の流れはあくまで説明上のモデルとなる一例である。実際の処理が必ずしも常にこの順序で行われるわけではない。
【0052】
ユーザ端末3はステップS101において、ユーザによるログイン画面表示操作に応じたログイン画面情報要求処理を実行する。
ログイン画面情報要求処理によりユーザ端末3からレシピ管理サーバ1へログイン画面情報要求が送信されると、レシピ管理サーバ1はステップS201において、ログイン画面情報送信処理を実行する。
これにより、例えば、レシピ管理サーバ1から受信したレシピサイトのログイン画面情報(ウェブページデータ)に応じたウェブページがユーザ端末3上に表示される。
【0053】
次に、ユーザ端末3はステップS102において、ユーザの入力操作に応じたログイン情報(ユーザIDとログインパスワード)をレシピ管理サーバ1へ送信するログイン情報送信処理を実行する。
【0054】
ユーザ端末3からレシピ管理サーバ1へログイン情報が送信されると、レシピ管理サーバ1はステップS202において認証処理を実行し、続くステップS203において認証結果通知処理を実行する。
具体的には、レシピ管理サーバ1は、ユーザ端末3上で入力されたユーザIDとパスワードをユーザDB51に記憶された情報と比較して当該ユーザのログイン可否を判定し、当該ログイン可否情報を認証結果としてユーザ端末3へ通知する。
尚、
図7に示す一連の流れは、ステップS202の認証処理においてログイン可と判定された場合を示している。ステップS202においてログイン不可と判定した場合は、ユーザ端末3は再度ステップS102の処理を実行し、これに応じてレシピ管理サーバ1はステップS202の処理を実行する。
【0055】
ユーザが認証できた場合、レシピ管理サーバ1は、当該ユーザに対して、レシピの提案(推奨レシピの提示)を行う。例えばレシピサイトのトップページにおいて「本日のお勧めレシピ」などとして提示するとよい。もちろん、ユーザが特に推奨レシピを見たいときに要求するウェブページにおいて提示しても良いが、ここではトップページにおいて表示する例で説明していく。
このような推奨レシピ提示を含むトップページを表示させるために、レシピ管理サーバ1はステップS204,S205,S206を行う。
ここでいう推奨レシピは、一般的に評判のいいレシピなどの不特定ユーザへのお勧めレシピではなく、ログインユーザに特化し、そのユーザの食材在庫に基づいて設定した、n回分の推奨レシピのうちの今回分である。
【0056】
図8で提示する推奨レシピの提示設定の概要を説明する。
例えば或るユーザについて、図示するような食材情報が取得できたとする。これは、当該ユーザについての格納履歴DB53を参照して取得する、ユーザの現在の食材在庫である。例えばユーザが1週間に一度、食材をまとめて購入する生活習慣を有しているとしたときに、食材情報は、購入直後の食材在庫を示す情報と考えればよい。
食材情報として図示する食材F1,F2,F3・・・とは、具体的な食材を表している。例えばF1は「豚肉」、F2は「牛肉」、F3は「じゃがいも」などである。食材情報は、これらの食材の種類とともに、食材の量の情報も有するようにする。
レシピ管理サーバ1は、この食材情報を、n回分の食事に用いることを想定して、n個(
図8ではn=7としている)の食材グループGP1〜GPn(GP7)を設定する。n回分の“n”は、レシピを参考にして料理を行う回数であり、具体的にはn回の食事に相当する。例えば1週間に一度食材を購入するユーザが、毎夕食の料理を行うという場合、1週間分の毎日の夕食という意味で、n=7とされる。“n”の値はユーザ毎に、ユーザの事情に応じて設定される。例えば格納履歴DB53の情報から把握できるユーザの購入周期などに基づいて設定される。
【0057】
この食材グループGP1〜GP7は、食材情報として取得した食材を振り分けてグループ化したものである。
振り分け方としては、1つの手法として、食材単位で振り分けることが考えられる。例えば1つの種類の食材は1つのグループに割り当てるとする。例えば食材F1は600g全部を1つの食材グループに含めるような振り分け手法である。
また単体毎に振り分けてもよい。例えばじゃがいもが3個の場合、食材グループGP1に1個、食材グループGP2に2個などとしてもよい。
もちろん量で分割して振り分けても良い。例えば豚肉が400gある場合に、100gを食材グループGP1に割り当て、300gを食材グループGP2に割り当てるなどである。
また、これらを組み合わせ、或る食材F1は食材単位、食材F2は単体単位、食材F3は量で分割することも考えられる。
図8の例では、食材情報で示される食材F1,F2・・・を、単体毎や量で分割して食材グループGP1〜GP7に振り分けた例を示している。
【0058】
各食材グループGP1〜GP7については、割り当てられた食材で料理が可能なレシピが検索され、それらが食材グループに対応するレシピとして特定される。図では、例えば食材グループGP1の対応レシピとして、レシピRP1,RP5,RP25,RP31,RP45が特定された例を示している。
なお、これら対応レシピとして特定されたレシピは、その食材グループに割り当てられた食材を使い切るものである必要はなく、割り当てられた食材で調理可能であればよい。従って、異なる食材グループに同じレシピが対応することもある。例えば
図8においてレシピRP1は食材グループGP1、GP2に対応している。
【0059】
各食材グループGP1〜GP7に対応するものとして特定されたレシピが、ユーザに対して各回の推奨レシピとして提示するレシピとなる。
例えば当該設定を行った後、当該ログインユーザへの1回目の推奨レシピ提示の際(例えば1月25日(月)の提示)には、例えばトップページの一部において
図9Aのようにレシピ提示が行われる。これらは
図8に食材グループGP1に対応するものとして示すレシピRP1,RP5,RP25,RP31,RP45についての画像やテキストとなる。
またその後の当該ログインユーザへの2回目の推奨レシピ提示の際(例えば1月26日(火)の提示)には、
図9Bのようにレシピ提示が行われる。これらは
図8に食材グループGP2に対応するものとして示すレシピRP1,RP15,RP43,RP51,RP61,RP80についての画像やテキストとなる。
【0060】
図8のように、特定のユーザ毎に、現在の食材在庫に応じて、食材グループGP1〜GPnを設定し、今後n回の食事において推奨提示するレシピを特定することを説明上、「提示設定」と呼ぶ。そしてその設定内容は、
図6の提示設定DB56に登録される。つまり例えば食材グループGP1〜GP7とされた食材の情報や、それぞれの対応レシピが登録される。
レシピ管理サーバ1は、このような提示設定の処理を、例えばバッチ処理として所定時間おきに、各ユーザに対応して実行し、各ユーザについて、提示設定を提示設定DB56に登録しておく。
【0061】
図7の処理においてレシピ管理サーバ1は、ログインユーザについて
図8のような推奨レシピについての提示設定を確認して、提示制御を行うことになる。
ステップS205でレシピ管理サーバ1は、提示設定DB56を参照して、ログインユーザについての提示設定内容を取得する。
ステップS206でレシピ管理サーバ1は、今回、推奨するものとして提示するレシピを特定する。即ち今回が、設定後の2回目の食事の前のタイミング(例えば
図6の例での1月26日の夕食前の時間帯)での提示機会であれば、食材グループGP2に対応するレシピRP1,RP15,RP43,RP51,RP61,RP80を推奨提示レシピとして特定する。
そしてステップS206で提示制御を行う。レシピ管理サーバ1は、そのユーザについて今回分のお勧めレシピの表示を組み込んだトップページデータを生成し、そのウェブページデータをユーザ端末3に送信する。
尚、認証結果をユーザ端末3へ返すと共に、レシピサイトのトップページのウェブページデータを送信してもよい。即ち、ログイン認証OKの場合には、ステップS206の段階で、認証結果送信とともにトップページデータの送信を行うものとしてもよい。
【0062】
以上のレシピ管理サーバ1の処理により、ユーザ端末3では、レシピサイトのトップページが表示される。このときに、トップページの一部には
図9Bに示したような今回の推奨レシピの一覧が表示されることになり、ユーザは、その中でレシピを選ぶこととすれば、それは、そのときのユーザの食材在庫で調理可能なレシピとなっている。
【0063】
ユーザがユーザ端末3上で推奨レシピを閲覧し、任意のレシピを選択する操作を行うと、ユーザ端末3はステップS103において、レシピ選択処理を実行する。即ちユーザ端末3は、ユーザが選択したレシピが何れのレシピであるかを選択レシピ情報としてレシピ管理サーバ1に通知する。尚、この処理は、選択したレシピの詳細情報ページのウェブページデータを要求する処理である。
【0064】
選択レシピ情報を受信したレシピ管理サーバ1は、ステップS207において、レシピの詳細ページの閲覧履歴を提示設定DB56に、使用レシピの推定のための推定情報として記憶する処理を行う。例えば今回、ユーザ“U001”としてのユーザに対して2回目の推奨レシピ提示を行っているのであれば、食材グループGP2に対応した推定情報として、詳細ページの閲覧履歴を記憶する。
そしてレシピ管理サーバ1はステップS208において、選択されたレシピの詳細情報が記載されたウェブページのデータをユーザ端末3に送信する。
この処理によって、ユーザ端末3上に、当該ユーザが選択したレシピに関する詳細情報が提示される。詳細情報とは、例えば、レシピに使用する食材情報や調理手順、調理器具情報などの情報である。他にも、選択されたレシピに対して投稿された作成レポートの情報などを含んでいてもよい。
ユーザは詳細ページを閲覧しながら調理を行うことができるし、もし詳細ページを閲覧して、その料理に気が進まなければ、他の推奨レシピを選択すればよい。その場合もステップS103,S207,S208の処理により、ユーザは選択したレシピの詳細ページの閲覧をすることができる。
【0065】
ユーザ端末3上に詳細情報が表示されたレシピに対し、ユーザが使用したことを推定可能な操作を行った場合、利用したことを推定可能な操作に関する情報がレシピ管理サーバ1に対して送信される。
例えば、レシピ使用が推定される操作として、レシピの詳細情報を印刷するための操作を行った場合、ユーザ端末3はステップS104において、印刷操作に関する情報をレシピ管理サーバ1に送信する処理を実行する。印刷操作に関する情報とは、操作を行ったユーザのユーザIDと印刷対象とされたレシピのレシピIDなどである。
印刷操作情報を受信したレシピ管理サーバ1は、ステップS209において、提示設定DB56に使用レシピの推定情報として、レシピの印刷履歴を記憶する。
尚、レシピ使用が推定される操作の他の例としては、例えば、作成レポートの投稿操作や、お気に入りレシピに登録する操作や、レシピ詳細情報の所定時間(例えば、調理時間の8割の時間)以上の閲覧操作などを挙げることができる。
何れの操作も、ユーザによるレシピの使用(即ち実際に調理を行ったこと)が推測される操作である。
【0066】
<5.第1の実施の形態>
以上は、ユーザ端末3とレシピ管理サーバ1の処理の流れの一例であるが、結局ユーザにとっては、例えば食材の購入間隔に合わせて、次の購入までの料理の回数に応じて、毎回適切な推奨レシピが提示されることになる。
例えばインターネット通販、生活協同組合による一括購入、生鮮食料品配達サービス、週一でのマーケットでの大量購入をしている人などにとっては、次回の購入までの食材の配分も面倒なものであるが、本実施の形態によれば、次の購入までの毎回の食事について、食材が自動的に振り分けられ、かつ振り分けられた状態で調理可能なレシピが毎回提示されることになる。
【0067】
このようなサービスを適切に実現するためのレシピ管理サーバ1の処理を説明していく。
まず、以上のようなサービスを実現するには、ユーザ毎に毎回の推奨レシピが特定された提示設定が行われ、
図6の提示設定DB56に登録されている状態とすることが望ましい。そこでレシピ管理サーバ1は、例えば毎日午前零時としての24時間おきなどの所定時間毎のバッチ処理として、各ユーザに対して必要に応じて提示設定を行うようにする。
【0068】
提示設定のためのバッチ処理例を
図10に示す。
レシピ管理サーバ1は、例えば本実施の形態のサービスを利用するものとして登録している各ユーザを順次対象にして
図10の処理を行う。
レシピ管理サーバ1はまずステップS301で或る一人のユーザを処理対象として選択する。そしてステップS302で当該ユーザの提示設定DB56の登録内容を確認する。この場合は、現在有効な提示設定が登録されているか否かを確認することになる。現在有効であるとは、次回の提示機会に提示すべき推奨レシピが設定されているという意味である。例えば
図6のユーザ“U001”の例でいえば、現在が1月25日から1月31日のいずれかであって、まだ最後の食材グループGP7に対応する推奨レシピの提示が行われていない場合は、有効な提示設定があるということになる。
有効な提示設定が存在すれば、今回は当該ユーザについては処理不要とし、ステップS303からS306に進む。そして他に未処理のユーザが残っていれば、ステップS301に戻って、次のユーザに対して処理を行う。
【0069】
現在有効な提示設定が存在しない場合は、レシピ管理サーバ1はステップS303からS304に進み、現在が対象のユーザにとっての食材追加タイミング又は提示設定タイミングのいずれかであるかを確認する。
食材追加タイミングとは、例えば定期的な食材購入を行っているユーザについての食材を取得したタイミングであるか否かである。例えばインターネット通販により、毎週日曜日に食材が届けられるユーザについては、その直後のバッチ処理タイミングが、食材追加タイミングとなる。このような食材追加タイミングは、格納履歴DB53を参照して、ユーザの購入周期を確認し、バッチ処理を行っている現在が最新の購入時期の直後であるか否かを判定することによってもよい。
また実際にユーザの格納履歴DB53を参照して、最新の購入データが、前回のバッチ処理以降である場合に、食材追加タイミングと判定してもよい。
また、ユーザが予め提示設定タイミングを指定しておいてもよい。例えば毎週日曜日時点の食材により、月曜から日曜までについての提示設定を行うように予めユーザが指定しておく。その場合、現在が該当のタイミングであれば、設定タイミングであると判定すればよい。
【0070】
ステップS304で現在が処理対象のユーザにとっての食材追加タイミング又は設定タイミングであればステップS305に進む。
なお、ステップS304の処理は省略して、対象のユーザに現在有効な提示設定が存在しなければ、常にステップS303からS305に進むようにしてもよい。
ステップS304の処理を加えるのは、レシピ管理サーバ1の処理負担の削減などの事情で、提示設定のための最適なタイミングである場合にのみステップS305に進むこととしたい場合でよい。
【0071】
ステップS305では、当該ユーザについての提示設定を行う。
そして提示設定を行ったら、ステップS306で残りのユーザを確認し、他に未処理のユーザが残っていれば、ステップS301に戻って、次のユーザに対して処理を行う。
レシピ管理サーバ1は全ユーザに対して処理を終えたら、
図10の処理を終える。
【0072】
図10のステップS305の提示設定処理を
図11に詳細に示す。レシピ管理サーバ1は主に
図2に示した食材情報取得部1a、提供回数特定部1b、食材グループ設定部1c、レシピ特定部1dの機能により
図11の提示設定処理を実行する。
【0073】
或る処理対象のユーザについて提示設定を行う場合は、レシピ管理サーバ1はまず
図11のステップS401で、そのユーザの食材情報を取得する。
この食材情報とは、例えば
図8に示したような食材の種類と量の情報である。つまり各食材グループGP1〜GPnに振り分ける前の食材の在庫の情報である。
レシピ管理サーバ1は当該ユーザについての格納履歴DB53を参照し、現在、ユーザが所有(在庫)している食材を判定する。例えば各食材について、最新のものから購入データや使用データを溯っていくことで、現在のユーザの在庫量を判定する。
図10のステップS304で食材追加タイミングの直後のバッチ処理であると判定されているときは、最新の購入データの情報を集めることとしても良い。
但し、ここで取得する食材の情報は、ユーザが在庫している食材の全てではなく、料理への使用に適した食材であるという条件を課すことが望ましい。例えば、
・食材毎に設定された最小使用量、又は平均使用量以上の在庫量を有する食材
・食材毎に設定された消費期限が期限内の食材
ということを、食材情報に含める条件とする。これらに適しない食材については、食材情報に含めない。このような条件を課すことで、使えない食材を排除して適切なレシピ検索が行えるようになるためである。
【0074】
続いてステップS402でレシピ管理サーバ1は、格納履歴DB53の情報から食材の追加周期を判定する。例えば処理対象のユーザについては、週1回のペースで食材購入が行われていることが確認されたら、食材追加周期は7日となる。また3日毎に食材購入のデータが存在すれば食材追加周期は3日となる。毎日買い物を行っているユーザであれば食材追加周期は1日である。
もちろんユーザは、常に規則的に食材購入を行っているとは限らないので、例えば最新の食材購入からその前回の食材購入までの間隔を食材追加周期としたり、過去の平均的な購入間隔を算出して食材追加周期としてもよい。
但し、本実施の形態の処理は、食材を週一度まとめて購入するようなユーザを主なサービス対象としているため、食材追加周期は、ある程度安定していることが想定される。
【0075】
食材追加周期を判定したらレシピ管理サーバ1はステップS403でレシピ提供回数を特定する。上述したn回分の食事のためのレシピ提供を行うとした場合の“n”の値である。レシピ提供については、1日につき3食、2食、1食のいずれを希望するかを、ユーザが予め選択しておけば良い。例えば夕食についてのみレシピ提供サービスを受けたいユーザは、その旨を予め指定しておく。レシピ管理サーバ1は例えばユーザDB51に、そのようなユーザの設定情報を登録しておく。当該ユーザの食材追加周期が7日であれば、レシピ提供回数を7回とすればよい。また、1日2回のレシピ提供を希望するユーザの食材追加周期が5日であれば、レシピ提供回数は10回となる。
【0076】
ステップS404でレシピ管理サーバ1は、食材の振り分け単位の設定を行う。振り分け単位とは、或る食材グループに割り当てる1単位である。
例えば
図12Aは食材種別をそのまま振り分け単位とする例である。食材F1〜Fmについて、各食材については分割しないで、食材F1,F2・・・をそれぞれその単位で振り分ける例である。
図12Bは、食材に応じて、分量単位で振り分けるようにする例である。例えば食材F1はF1−1〜F1−4に分割して、4つの食材グループに振り分けるようにする。食材F3はF3−1〜F3−3に分割して、3つの食材グループに振り分けるようにする。
このような振り分けの単位を設定する。振り分けの単位は、毎回ランダムに決定することが考えられる。但し分量単位の場合、その分量は、食材毎に最低量が決められていることが適切となる。
【0077】
食材を分量単位で割り当てる場合には、その分量単位は、食材毎に設定された利用量、例えば基準利用量、平均的な利用量、最小利用量などとする例が考えられる。
また利用量は登録されているレシピ情報に基づいて設定することもできる。
さらにユーザの食材の使用履歴に基づいて利用量を特定するようにしてもよい。
また分量単位は、振り分けが必要な数に応じた量としてもよい。
【0078】
ステップS405でレシピ管理サーバ1は、レシピ提供回数の値を変数nに代入する。変数nは、食材グループGP1〜GP(n)として、設定する食材グループの数を決める値となる。
またステップS406でレシピ管理サーバ1は振り分け条件を選択する。振り分け条件とは、食材グループGP1〜GP(n)に振り分け単位の食材を振り分ける際の振り分け方を規定する各種条件のことを総称している。
例えば振り分け処理のアルゴリズムとして、
・ランダム振り分け
・食材使用頻度(汎用性)を考慮した振り分け
・消費期限を考慮した振り分け(消費期限までの期間が短いものを、推奨レシピが早く提示される食材グループに入れるようなアルゴリズム)
・食材種別を考慮した振り分け(例えば鮮度の落ち具合が早い食材を、推奨レシピが早く提示される食材グループに入れるようなアルゴリズム)
・全食材グループに葉物野菜を含めるアルゴリズム
・肉類と魚類を交互に振り分けるアルゴリズム
などがある。
例えばこれらのような振り分けアルゴリズムを複数用意しておき、ステップS406では今回実行する処理を選択するようにする。これは特にユーザ個人に対応するものではなく、どのアルゴリズムを用いるかは毎回不規則に選択するとよい。それによって食材グループGP1〜GPnに割り当てられる食材の組み合わせも多様化するためである。つまり同じような食材を毎回購入するようなユーザに対しても、多様なレシピ提示を行う可能性を高めることができるためである。
なお振り分け処理のアルゴリズム以外にも、例えば振り分ける食材の最小分量、振り分け単位の選択、振り分ける順序が優先される食材の設定なども、振り分け条件の1つとすることができる。
【0079】
ステップS407でレシピ管理サーバ1は、実際の振り分け処理を行って、食材グループGP1〜GPnを設定する。即ちステップS406で選択した振り分けアルゴリズムを用いて、食材情報で示される食材について、ステップS404で設定した振り分け単位で、n個のグループに振り分けを行う。
振り分けアルゴリズムは上記のように各種考えられるが、ここでは食材の汎用性を考慮した振り分け処理の一例を示しておく。
【0080】
今、仮に、食材F1,F2・・・Fmが、この数字の順序で汎用性が高いものであるとする。汎用性が高いとは、多くのレシピで使用されているという意味である。レシピ管理サーバ1は食材DB55を参照することで、食材情報に挙げられた各食材の汎用性の高い順序を判別することができる。
図13では、n=7として、汎用性を考慮した振り分けの例を示している。最も汎用性が高い食材F1が、4つのグループに振り分けるように振り分け単位設定されている場合、例えば7個の食材グループGP1〜GP7のうちの4つに食材F1を割り当てる。ここでは一つおきの食材グループGP1,GP3,GP5,GP7に割り当てている。
なお、本実施の形態では食材グループGP1〜GPnは、その数字の順番が提示順として説明している。従って、一つおきの食材グループに、食材F1を割り当てるということは。食材F1を用いる料理のレシピが、連続してユーザに提示されることはないということになる。
【0081】
次に2番目に汎用性が高い食材F2を、まだ食材割り当てのない食材グループGP2に割り当てる。
さらに3番目に汎用性が高い食材F3は、3つのグループに振り分けるように振り分け単位設定されている場合、まず食材割り当てがない食材グループGP4,GP6に割り当てる。ここまでの割り当てで、比較的汎用性が高い食材が、全ての食材グループに含まれたことになる。そこで、残りの食材F3の一部及び食材F4〜Fmを順次、例えば
図13に示すように割り当てていく。
図14はこのような汎用性を考慮した振り分け処理を示している。
レシピ管理サーバ1はまずステップS501で汎用性1位食材を割り当てる。この時点で、ステップS511で全食材グループGP1〜GPnが1以上の食材を含むものとなったか否かを確認する。まだ食材割り当てのない食材グループが存在する場合、次にレシピ管理サーバ1はステップS502で汎用性2位食材を、食材無しのグループに割り当てる。そしてステップS512で全食材グループGP1〜GPnが1以上の食材を含むものとなったか否かを確認する。まだ食材割り当てのない食材グループが存在する場合、次にレシピ管理サーバ1はステップS503で汎用性3位食材を、食材無しのグループに割り当てる。そしてステップS513で全食材グループGP1〜GPnが1以上の食材を含むものとなったか否かを確認する。
【0082】
以上のように、全食材グループGP1〜GPnが1以上の食材を含むまで、汎用性が高い順に食材の割り当てを行っていく。
そして全食材グループGP1〜GPnが1以上の食材を含む状態となったら、ステップS520に進み、未割り当ての食材を選択して、或る食材グループに割り当てる。これをステップS521で全食材の振り分けが完了したとされるまで繰り返す。全食材F1〜Fmについて割り当てを行った時点で食材グループGP1〜GPnへの食材の振り分けが完了する。
なお、ステップS50mで汎用性m位、つまり最も汎用性のない食材を割り当てても、全食材グループGP1〜GPnが1以上の食材を含むものとならなかった場合は、振り分ける食材の数(振り分け単位で数えた数)よりも食材グループ数(n)が多い場合である。このような場合は、適切な振り分けが不可能であるため、ステップS51mからステップS530のエラー処理に進む。この場合については図示していないが、
図17のステップS404の食材の振り分け設定をやり直すか、或いは
図16における当該ユーザについての処理として提示設定エラーとして終了させることが考えられる。
【0083】
以上の
図14のような処理により、汎用性が高い食材が各食材グループGP1〜GP7にまんべんなく振り分けられる。これは、各食材グループGP1〜GP7に対応するレシピ数を増加させる効果を生ずる。
【0084】
なお、著しく汎用性の低い食材、つまりレシピに登場することが極めてまれな食材というものもある。食材DB55においてレシピ数が極端に少ない食材である。
そのような食材については、各食材グループGP1〜GPnのうちの複数に振り分けることで、その食材を用いたレシピを抽出しやすくすることも考えられる。
例えば食材Fxが、汎用性が極めて低い食材とする。この食材Fxを用いるレシピRPxは、食材F1、F5、Fxを用いるとする。すると、食材Fxを各グループに割り当てることで、食材F1,F5を有するグループが発生する確率を高くでき、レシピRPxを抽出できる可能性を高めることができる。
【0085】
以上は食材グループGP1〜GPnへの食材の振り分け処理の一例である。上述した各種アルゴリズムにより多様な振り分け処理が想定される。
このステップS407により、例えば
図8に示したように食材が振り分けられた食材グループGP1〜GPnが設定されることになる。
【0086】
食材グループGP1〜GPnを設定したら、続いてレシピ管理サーバ1はステップS408〜S412により、各食材グループGP1〜GPnに対応するレシピを特定する処理を行う。
レシピ管理サーバ1はまずステップS408で変数x=1とする。変数xは処理対象の食材グループを指定する変数である。
【0087】
次にレシピ管理サーバ1はステップS409で、食材グループGP(x)についてレシピ検索を行う。これは食材グループGP(x)に割り当てられた食材を検索キーとして、レシピDB50を検索し、その食材の範囲で調理が可能なレシピを抽出する処理となる。なお、食材グループGP(x)に割り当てられた食材を全て使うレシピである必要はなく、その割り当てられた食材の範囲内で調理可能なレシピであればよい。
もちろん、割り当てられた食材を使い切るようなレシピを抽出することも考えられる。
但し、食材の種別や賞味期限の事情によっては検索条件を変更することが望ましい。例えば食材グループ内で、肉や魚など、賞味期限までが短い食材が含まれている場合、必ずその食材が使用されるようなレシピに絞って抽出するという処理を行うとよい。
【0088】
最初は変数x=1であるため、レシピ管理サーバ1はまずステップS409で食材グループGP1についてレシピ検索を行う。そしてステップS410で、検索結果として抽出された1又は複数のレシピを食材グループGP1に対応するレシピとして特定する。
【0089】
ステップS411では変数xが変数nに達しているか否かを確認し、達していなければステップS412に進む。つまり全食材グループGP1〜GPnについてレシピ特定の処理を終了していなければ、ステップS412で変数xをインクリメントしてステップS409に戻る。従って次に食材グループGP2について同様に対応するレシピの特定を行う。
このような処理を全食材グループGP1〜GPnについて実行することで、
図8に示すように、各食材グループGP1〜GPnにそれぞれ対応するレシピが特定されたことになる。
【0090】
変数xが変数nに達した時点で、食材グループGP1〜GPnにそれぞれ対応するレシピが特定されたことになり、レシピ管理サーバ1はステップS411からS413に進んで数量条件チェックを行う。
数量条件チェックとは、例えば各食材グループGP1〜GPnについて特定されたレシピの数または料理種別が、ある程度均等化されているか否かをチェックする処理である。或いは、毎回、ある程度十分な選択肢を確保できているか否かをチェックする処理としてもよい。
【0091】
本実施の形態では、n回分のレシピ提供機会に分けて、推奨するレシピを提案するわけであるが、毎回、ユーザに多様なレシピを提案できると良い。例えば1回目は20個のレシピを提案し、2回目は1個のレシピを提案するというような状態では、ユーザにとっての満足度が低下することが想定される。毎回ある程度多様なレシピを選ぶことができつつ、n回先までの食事が在庫食材でまかなえるようにするものであることで、ユーザが本サービスを利用する満足度が上昇すると考えられる。
そこで、各食材グループGP1〜GPnのそれぞれに対応するレシピの数や種類が、あまり偏っていないか、もしくは少なすぎる回がないかをチェックする。
【0092】
この数量条件チェックの処理例として、レシピ数又は料理種別の均等化を条件とする例を
図15A、
図15Bで説明する。
まず
図15Aはレシピ数が略均等であるか否かをチェックする処理例である。
図15Aの処理例では、レシピ管理サーバ1はステップS600で食材グループGP1〜GPnのそれぞれについて対応するものとされたレシピの数を、レシピ数NR1〜NRnとして取得する。
レシピ数NR1はステップS410で食材グループGP1に対応するとされたレシピの数であり、
図8の例でいえばNR1=5である。
レシピ数NR2はステップS410で食材グループGP2に対応するとされたレシピの数であり、
図8の例でいえばNR1=6である。
【0093】
次にステップS601でレシピ管理サーバ1は、条件判定のための閾値thNRの設定を行う。この閾値thNRは固定値とすることも考えられるが、可変値とすることも適切である。ここでは、食材グループGP1〜GPnの数“n”に応じた値に設定するものとする。例えば食材グループ数nが多いほど厳しい値(閾値thNRを小さい値)とし、食材グループ数nが小さい少ないほど緩い値(閾値thNRを大きい値)とすることが考えられる。
【0094】
次にステップS602でレシピ管理サーバ1は、レシピ数NR1〜NRnの内で、最大値を変数NRmaxに代入し、最小値を変数NRminに代入する。そしてステップS603で、NRmax−NRminの演算で差分値ΔNRを求める。
ステップS604でレシピ管理サーバ1は、差分値ΔNRを、所定の閾値thNRと比較する。そしてΔNR≦thRNであれば、各回に提示するレシピ数が略均等であるためステップS605で数量条件OKとし、ΔNR≦thRNでなければステップS606で非均等であるため数量条件を満たしていないと判定する。
つまり差分値ΔNRが閾値thNRより大きい場合は、提案するレシピ数が一番多い回と一番少ない回の差が大きいため、望ましい状態ではないとする。そして各回のレシピ数の差がある程度小さければ、略均等であると判定するものである。
また食材グループ数nが多い場合ほど、食材の種類数の差が顕著になり、レシピ数のばらつきが多くなり、結果としてレシピ数が不均一になりやすいことが想定される。そこで上述のように閾値thNRを食材グループ数nに応じて設定することで、より均等な状況が維持されやすくするようにしている。
【0095】
なお閾値thNRは、対応するとされたレシピ数の総数に応じて可変とされるものとしてもよい。
例えば対応レシピ総数GNR=NR1+NR2+・・・+NRnとし、閾値thNRは、thNR=(GNR/n)×kとする。k=0.3とすれば、1回に提示する平均レシピ数の3割を越える差がある場合に、略均等ではないと判定することになる。
もちろん閾値thNRは固定値でもよい。
【0096】
このようなレシピ数の均等をチェックする数量条件チェックの手法としては、他にも考えられる。例えば提示するレシピ数の平均値に対して所定以上の差がある回の有無を調べて、存在したら非均等であると判定しても良い。
【0097】
図15Bは、各食材グループGP1〜GPnに対応するレシピの料理種別の種類数が略均等化することを条件とする例である。
レシピ管理サーバ1は、ステップS620で料理種別のレベルを設定する。料理種別のレベルとは、例えば上述した大分類レベル、中分類レベル、細分類レベルの別である。
このステップS620での料理種別のレベルの設定は、固定的でもよいし、ユーザが指定したレベルでもよい。またユーザの嗜好に応じたレベル設定や、各食材グループGP1〜GPnについて特定された対応レシピに応じたレベル設定でもよい。
固定的なレベル設定とは、ステップS620で設定されるレベルが「日本料理」「中華料理」というような大分類レベルに固定するとか、「カレー」「ハンバーグ」という中分類レベルに固定する例である。毎回、ランダムに大分類、中分類、細分類を選択するという例も考えられる。
ユーザに応じたレベル設定とは、当該処理対象としているユーザのレシピ閲覧履歴、レシピ投稿履歴などに基づいて、そのユーザに合わせたレベルを用いるとする例である。例えば多様な料理のレシピを使用したり、検索したり、投稿しているユーザについてステップS620で大分類レベル或いは中分類レベルを設定する。一方、常にカレーレシピの閲覧や投稿を行っているようなユーザに対しては「ビーフカレー」「チキンカレー」といったような、「カレー」の下の階層の細分類レベルを設定する。これによりユーザのレシピ検索の傾向に合わせた料理種別の数の判定が可能となる。
各食材グループGP1〜GPnについて特定された対応レシピに応じたレベル設定とは、対応レシピとされた各レシピの料理種別の存在傾向に応じて種別レベルを設定する例である。例えば各食材グループGP1〜GPnに対応するとされた全ての対応レシピにおいて大分類レベルで複数の料理種別が含まれていたら大分類レベルとしたり、中分類レベルが1種類しかなければ細分類レベルに設定するなどの例である。ユーザの食材購入傾向によっては、対応レシピが或る大分類レベルの料理(例えばベトナム料理)に偏る場合もあり、逆にそれは、そのユーザが、頻繁にベトナム料理を食べるため、それに合った食材を購入していると考えられるためである。そのような場合、ベトナム料理下での中分類レベルが料理種別のレベルとして好適となる。
【0098】
ステップS621でレシピ管理サーバ1は、食材グループGP1〜GPnのそれぞれの対応レシピについて、料理種別の情報を取得する。この場合の料理種別の情報はステップS620で選択した種別レベルに相当する情報でよい。
そしてレシピ管理サーバ1はステップS622で、食材グループGP1〜GPnのそれぞれに対応するものとされたレシピにおける料理種別の数をカウントし、料理種別数VNR1〜VNRnとする。
料理種別数VNR1はステップS410で食材グループGP1に対応するとされたレシピのグループ内の料理種別の数である。料理種別数VNR2はステップS410で食材グループGP2に対応するとされたレシピのグループ内の料理種別の数である。
【0099】
ステップS623でレシピ管理サーバ1は、条件判定のための閾値thVNRの設定を行う。この閾値thVNRは固定値とすることも考えられるが、可変値とすることも適切である。ここでは、食材グループGP1〜GPnの数“n”に応じた値に設定するものとする。例えば食材グループ数nが多いほど厳しい値(閾値thVNRを小さい値)とし、食材グループ数nが小さい少ないほど緩い値(閾値thVNRを大きい値)とすることが考えられる。
【0100】
次にステップS624でレシピ管理サーバ1は、料理種別数VNR1〜VNRnの内で、最大値を変数VNRmaxに代入し、最小値を変数VNRminに代入する。そしてステップS625で、VNRmax−VNRminの演算で差分値ΔVNRを求める。
ステップS626でレシピ管理サーバ1は、差分値ΔVNRを、所定の閾値thVNRと比較する。そしてΔVNR≦thVRNであれば、各回に提示するレシピの料理種別の種類数が略均等であるためステップS627で数量条件OKとし、ΔVNR≦thVRNでなければステップS628で非均等であるため数量条件を満たしていないと判定する。
つまり差分値ΔVNRが閾値thNRより大きい場合は、1回の提案にかかるレシピの料理種別の数が一番多い回と一番少ない回の差が大きいため、望ましい状態ではないとする。そして各回のレシピの料理種別数の差がある程度小さければ、略均等であると判定するものである。
また食材グループ数nが多い場合ほど、料理種別数の偏りが不均一になりやすいことが想定されるため、上述のように閾値thVNRを食材グループ数nに応じて設定することで、より均等な状況が維持されやすくするようにしている。
【0101】
なお閾値thVNRは、対応するとされた全レシピにおける料理種別の種別数に応じて可変されるようにしてもよい。
例えば料理種別の数をGVNRとしたときに、閾値thVNRは、thVNR=(GVNR/n)×kとする。k=0.3とすれば、1回に提示するレシピにおける料理種別の数の3割を越える差がある場合に、略均等ではないと判定することになる。
もちろん閾値thVNRは固定値でもよい。
【0102】
このようなレシピの料理種別数の均等をチェックする数量条件チェックの手法としては、他にも考えられる。例えば提示するレシピの料理種別数の平均値に対して所定以上の差がある回の有無を調べて、存在したら非均等であると判定しても良い。
【0103】
次に
図16Aの処理例は、毎回、少なくとも所定数以上のレシピの選択肢をユーザに提供できるようにする処理例である。
レシピ管理サーバ1はステップS610で食材グループGP1〜GPnのそれぞれについて対応するものとされたレシピの数を、レシピ数NR1〜NRnとして取得する。
【0104】
ステップS611でレシピ管理サーバ1は、条件判定のための閾値thNRminの設定を行う。この閾値thNRminは固定値とすることも考えられるが、可変値とすることも適切である。ここでは、食材グループGP1〜GPnの数“n”に応じた値に設定するものとする。例えば食材グループ数nが多いほど厳しい値(閾値thNRminを大きい値)とし、食材グループ数nが小さい少ないほど緩い値(閾値thNRminを小さい値)とすることが考えられる。
ステップS612でレシピ管理サーバ1は、レシピ数NR1〜NRnの内で、最小値を変数NRminに代入する。
ステップS613でレシピ管理サーバ1は、最小値である変数NRminを、所定の閾値thNRminと比較する。そしてNRmin≧thRNminであれば、ステップS614で数量条件OKとし、NRmin≧thRNminでなければステップS615で数量条件を満たしていないと判定する。
つまり1回に提示するレシピの最低数を閾値thNRminとして設定し、少なくともその数以上あれば、数量条件を満たしているというものである。この場合、極端にレシピ数が多くなる場合があっても許容されてしまうが、ユーザに対して毎回、少なくともある程度の数の選択肢を用意できるという意味で、数量条件OKとする。
また食材グループ数nが多い場合ほど、食材の種類数の差が顕著になり、レシピ数のばらつきが多くなり、結果としてレシピ数が不均一になりやすいことが想定される。そこで上述のように閾値thNRminを食材グループ数nに応じて設定することで、より均等な状況が維持されやすくするようにしている。
【0105】
もちろん閾値thNRminは固定値としてもよい。
また購入した食材の事情によって、食材グループGP1〜GPnについて対応されるとされたレシピ数が少なくなっている場合、固定の閾値thNRminであると、条件を満たすことができない事態が生ずることがある。そこで、各食材グループGP1〜GPnについての対応レシピ数の平均値に基づいて閾値thNRminを可変設定するとよい。
例えば対応レシピ総数GNR=NR1+NR2+・・・+NRnとし、閾値thNRminは、thNRmin=(GNR/n)×kとする。k=0.3とすれば、1回に提示するレシピ数が、平均レシピ数の3割以下の数となることが発生する場合に、数量条件を満たしていないと判定することになる。
【0106】
図16Bは、各食材グループGP1〜GPnに対応するレシピの料理種別の種類数が所定数以上あることを条件とする例である。
レシピ管理サーバ1は、ステップS630で料理種別のレベルを選択し、ステップS631で食材グループGP1〜GPnのそれぞれの対応レシピについて、料理種別の情報を取得する。またレシピ管理サーバ1はステップS632で食材グループGP1〜GPnのそれぞれについて、対応するレシピにおける料理種別の数をカウントし、料理種別数VNR1〜VNRnとして取得する。以上は
図15BのステップS621,S622,S623と同様である。
またレシピ管理サーバ1はステップS633で条件判定のための閾値thVNRminの設定を行う。ここでは、食材グループGP1〜GPnの数“n”に応じた値に設定するものとする。例えば食材グループ数nが多いほど厳しい値(閾値thVNRminを大きい値)とし、食材グループ数nが小さい少ないほど緩い値(閾値thVNRminを小さい値)とすることが考えられる。
【0107】
ステップS634でレシピ管理サーバ1は、料理種別数VNR1〜VNRnの内で、最小値を変数VNRminに代入する。
ステップS635でレシピ管理サーバ1は、最小値である変数VNRminを、所定の閾値thVNRminと比較する。そしてVNRmin≧thVRNminであれば、ステップS636で数量条件OKとし、VNRmin≧thVRNminでなければステップS637で数量条件を満たしていないと判定する。
つまり1回に提示するレシピの料理種別の最低数を閾値thVNRminとして設定し、少なくともその数以上あれば、数量条件を満たしているというものである。このため、ユーザに対して毎回、少なくともある程度の数以上の料理種別の選択肢を用意できるという意味で、数量条件OKとする。
また食材グループ数nが多い場合ほど、料理種別数が不均一になりやすいことが想定されるため、上述のように閾値thVNRを食材グループ数nに応じて設定することで、より均等な状況が維持されやすくするようにしている。
【0108】
この場合閾値thNRminは固定値としてよい。但し、購入した食材の事情によって、食材グループGP1〜GPnに対応されるレシピにおける料理種別の数が少なくなっている場合、固定の閾値thVNRminであると、条件を満たすことができない事態が生ずることがある。そこで、各食材グループGP1〜GPnについての料理種別数の平均値に基づいて閾値thVNRminを可変設定するとよい。
例えば対応するレシピ全体での料理種別の数をGVNRとしたときに、閾値thVNRは、thVNR=(GVNR/n)×kとする。k=0.3とすれば、1回に提示するレシピにおける料理種別の数が平均値の3割未満の回があるときに、数量条件を満たしていないと判定することになる。
【0109】
図11に戻って、ステップS413で以上のような数量条件チェックが行われたら、レシピ管理サーバ1はステップS414で、数量条件を満足したか否かで処理を分岐する。
数量条件を満足していたら、今回の設定、つまり食材グループGP1〜GPn及びそれぞれの対応レシピの設定を確定され、ステップS416で提示設定DB56に記憶する。つまり、或るユーザに対して、今後n回の料理機会に推奨提示するレシピが決まったことになる。
ところが、数量条件が充足していないと判定されたときは、レシピ管理サーバ1はステップS414からS415に進み、振り分け条件等を変更したうえで、ステップS407からの処理をやりなおす。例えば食材グループGP1〜GPnの生成のための振り分け処理のアルゴリズムを、前回使用したものとは別のアルゴリズムを選択してステップS407の処理を行う。
或いは、このステップS415の際に、振り分ける食材の最小分量、振り分け単位の選択、振り分ける順序が優先される食材の設定などを変更してもよい。特にはステップS404で行った食材の振り分け単位の設定を新たにやり直したり調整することが考えられる。例えば対応するレシピの数が少ない食材グループについて、割り当てる食材の分量を増加し、その分を他の食材グループから引くことが考えられる。もちろん減少させる食材グループは、対応するレシピ数が多かったレシピであることが望ましい。
【0110】
このような
図11の提示設定処理は、一人のユーザに対して、今後n回の料理機会にそれぞれ提案する推奨レシピを設定するが、それら提示されるレシピの数や料理種別のバリエーションが、ある程度充実するように、推奨提示するレシピの設定が行われる。
【0111】
この
図11のような提示設定処理が
図10のステップS305で行われることで、現在処理対象のユーザについての推奨レシピの提示設定が完了し、提示設定DBに登録される。
レシピ管理サーバ1は
図10のステップS306で未処理の残りのユーザの有無を確認し、残りのユーザが存在すればステップS301に戻って、次のユーザに対して同様の処理を行う。従って、レシピ管理サーバ1が提供する本例のサービスを受けるユーザについて、有効な提示設定が存在しなければ提示設定が行われ、サービスを受けることができるようにされる。
【0112】
以上の
図10〜
図16で説明した処理がバッチ処理で行われて、提示設定DBに提示設定が登録された状態となったユーザに対しては、
図7で示したユーザ端末3とレシピ管理サーバ1のやりとりで、推奨レシピ提示が行われることになる。
図7の処理を実現するためのレシピ管理サーバ1の処理を
図17に示す。レシピ管理サーバ1は主に
図2に示した提示制御部1e、レシピ管理部1fの機能により
図17の処理を実行する。
【0113】
レシピ管理サーバ1は、ステップS701,S711,S721を順に実行することにより、各種処理を継続的に行う。
具体的には、ステップS701においてログイン情報を受信したか否かを判定する処理を実行し、ステップS711においてウェブページデータの要求を受信したか否かを判定する処理を実行し、ステップS721で使用推定情報を受信したか否かを判定する処理を実行する。
なお、これら以外にもレシピ管理サーバ1では、作成レポートの投稿やレシピの投稿を受信した場合の処理、レシピ検索条件を受信したときのレシピ検索処理等も行われるが、本実施の形態に直接関係しないため、それらの処理についての記載は省略している。
【0114】
ログイン情報は、ユーザがユーザ端末3を用いてログイン操作を行った場合に、ユーザ端末3からレシピ管理サーバ1へ送信される。
ステップS701において、ログイン情報を受信したと判定した場合、レシピ管理サーバ1はステップS702において認証処理を実行し、ステップS703において認証結果をユーザ端末3に通知する処理を実行する。
認証処理においては、ユーザ端末3から送られたログイン情報とユーザDB51に記憶されたユーザ情報(例えば、ユーザIDとログインパスワード)を照合し、ログインの可否を決定する。
【0115】
レシピ管理サーバ1は、認証OKでなければ、ステップS701,D711,S721のループに戻るが、認証OKであれば、そのユーザのユーザ端末3においてレシピサイトのトップページ送信を行う。例えばこの場合に、当該ユーザに対して今回の推奨レシピ提示を行う。
まずレシピ管理サーバ1はステップS704で、ログインユーザの提示設定の情報を提示設定DB56から取得する。そしてステップS705で、今回の提示が何回目か、もしくは現在の日時に基づいて、今回提示すべきレシピを特定する。
ステップS706でレシピ管理サーバ1は、今回推奨提示するレシピを含むトップページデータを生成し、ステップS707でそのトップページデータをユーザ端末3に送信する。これにより
図7のステップS206で説明したように、ユーザ端末3において今回の推奨レシピが例えば
図9Aや
図9Bのように提示される。
【0116】
レシピ管理サーバ1は、ステップS711においては、ウェブページデータ要求を受信したか否かを判定する処理を実行する。
ウェブページデータ要求を受信したと判定した場合、レシピ管理サーバ1はステップS712において、要求のあったウェブページデータをDBから取得する処理を実行する。具体的には、ユーザページのウェブページデータや、レシピ詳細ページのウェブページデータや、特集ページのウェブページデータなどを取得する。
続いて、レシピ管理サーバ1はステップS713において、当該ウェブページデータをユーザ端末3へ送信する処理を実行する。これにより、ユーザ端末3上にユーザが所望したウェブページが表示される。
【0117】
レシピ管理サーバ1はステップS721において使用推定情報を取得した場合は、ステップS723で、提示設定DB56に推定情報又は使用レシピの記憶を行う。
上述のように、例えば詳細ページのリクエストや、プリント操作の情報、あるいは詳細ページの閲覧時間の情報などは、使用したレシピを特定するための推定情報となる。これらの情報を取得した場合、提示設定DB56におけるログインユーザの今回のレシピ提示に対応する推定情報として記憶する。
また推定情報を取得したことに応じて、ステップS724で使用レシピの推定を行う。推定手法は上述したとおりである。そして使用レシピの推定確度が高いと判定できた場合は、そのレシピに含まれる食材の情報や使用日時を使用データとして格納履歴DB53に記憶する。
なお、必ずしもユーザは推奨提示したレシピを使用するわけではない。推奨提示とは全く別のレシピをユーザが検索してしようする場合もある。ステップS724では、使用推定情報から、他のレシピが推定された場合も、そのレシピで用いられる食材が使用されたと推定し、食材の使用データとして格納履歴DB53に記憶させればよい。
また、推定情報ではなく、ユーザが、自分が使用したレシピを示す情報をレシピ管理サーバ1に送信できるようにしてもよい。例えば詳細ページの閲覧時に、「このレシピで料理を始めますか?」というような質問を表示し、ユーザにイエス・ノーの回答を入力させてもよい。そのような回答情報も、推定情報と同様に扱って、推定情報の記憶や使用データの記憶を行うことが適切である。
なおレシピ管理サーバ1はステップS724の時点で、推定した使用レシピ自体を示す情報を、例えば推定情報に対応させて提示設定DB56に記憶させるようにしてもよい。
【0118】
以上の処理によれば、ログインユーザに対して、その日時に応じて、これから開始する料理の推奨レシピが、複数、提示されることになる。それらは毎回、ユーザが購入した食材で料理可能なものとなる。
【0119】
<6.第2の実施の形態>
第2の実施の形態について説明する。
なお、以降第2、第3の実施の形態の説明においては、第1の実施の形態と異なる処理についてのみ説明する。言及していない処理については第1の実施の形態と同様である。
【0120】
図18は第2の実施の形態の提示設定処理を示している。つまり
図10のステップS305で行われる処理例である。
図11と同一処理は同一のステップ番号を付し、重複説明を避ける。
図18において
図11と異なるのは、ステップS420,S421の処理である。
【0121】
ステップS413での数量条件チェックにおいて数量条件を満たさないと判定された場合は、レシピ管理サーバ1はステップS420で、レシピ自体として食材の分量を変更可能なレシピが存在するか否かを判定する。例えばレシピ管理サーバ1は、レシピに含まれる或る食材の分量を多少減らしても調理可能であるレシピが存在するか否かを判定する。
レシピDB50に登録されている各レシピについては、予め、分量を変更できる食材を設定しておく。例えばレシピ作成者に依頼し、材料不足の場合の分量などとして、分量の異なる情報を送信してもらい、それを取得して登録しておくようにしてもよい。
【0122】
そしてレシピDB50に分量変更可能なレシピが存在しなければ、レシピ管理サーバ1はステップS420からS415に進む。つまり第1の実施の形態と同様に、振り分け条件を変更して食材グループGP1〜GPnの再設定からやり直す。
一方、分量変更可能なレシピが存在すれば、ステップS421で、その分量変更後のレシピを対象とするようにレシピ検索設定を変更する。そしてステップS408以降の処理で、各食材グループGP1〜GPnのそれぞれに対応するレシピを、分量設定を変更したレシピを対象として行う。
これにより、食材グループに対応するものとして抽出できるレシピの数を増加させることが期待できる。
従ってこの処理で対応レシピを特定したら、ステップS413の数量条件チェックでOKとなる可能性が得られる。
【0123】
このように第2の実施の形態では、数量条件を満たせなくなる場合に、レシピに設定されている食材の分量を変更することで、数量条件を満たすか否かを試行するものである。
【0124】
<7.第3の実施の形態>
第3の実施の形態のレシピ管理サーバ1の処理を
図19、
図20で説明する。なお
図19において
図10と同一の処理は同一のステップ番号を付し説明を省略する。
図19は、
図10の処理にステップS310,S311を加えたものである。
図10の例では、現在有効な提示設定が存在するユーザについては、提示設定処理をスキップしたが、
図19の例では、このようなユーザについてステップS310の確認を行う。
【0125】
即ちレシピ管理サーバはステップS310で、処理対象となっているユーザに対して、初回の推奨レシピ提示をすでに終えているか否か、又は格納履歴DB53の情報を参照して、追加食材があるか否かを確認する。
【0126】
すでに1回以上、推奨レシピの提示を行ったユーザでは、使用レシピによっては、その食材グループのうちで使われなかった食材がある可能性がある。例えば食材グループGP1に対応するレシピは、全てが食材グループGP1の食材を全て使い切るレシピではなく、食材グループGP1の食材で調理可能なレシピが選ばれているためである。
また、ユーザが不定期に食材を購入した場合に、追加食材の情報を取得できる場合もある。
つまり提示設定が有効な期間も、新たに使用すべき食材が発生する。そこで
図19の例では、そのような場合にステップS311で再提示設定処理を行うようにしている。
再提示設定処理とは、先にステップS305で行った提示設定処理で特定された推奨レシピの情報は有効としたまま、追加のレシピを特定する処理である。
【0127】
再提示設定処理を
図20に示す。
レシピ管理サーバ1はステップS801で、処理対象のユーザの格納履歴DB53を参照して、追加食材の有無を判定する。即ち先にステップS305で提示設定処理を行った後の時点において購入した食材の情報である。
レシピ管理サーバ1は、そのような食材が存在する場合はステップS802で、その食材の種類や量を追加食材情報として取得する。
【0128】
ステップS803でレシピ管理サーバ1は、現時点で初回の推奨レシピの提示が終えているか、つまり食材グループGP1に対応するレシピの提示は過去に行い、現在は、次に、食材グループGP2〜GPnのいずれかの対応レシピを提示する時点であるか否かを判定する。
1回以上でも推奨レシピの提示が行われていたら、その提示の際の実際の使用レシピによって、その食材グループにおける余った食材が存在する可能性がある。
そこで初回提示済みであればレシピ管理サーバ1はステップS804で、まず格納履歴DB53を参照して、それまでの使用食材を特定する。つまり食材の使用データとして該当する日時のデータを抽出する。
ステップS805でレシピ管理サーバ1は、抽出した使用データから食材毎の使用量を算出する。
そしてステップS806でレシピ管理サーバ1は、食材毎の使用量と、対応する食材グループに元々振り分けられた食材及び量の情報を用いて、対応レシピ既提示の食材グループに振り分けられた食材のうちで、余った食材の種類と量を算出する。
【0129】
ステップS807でレシピ管理サーバ1は、次回、対応レシピを提示する食材グループのナンバを変数xに代入する。例えば現在が、食材グループGP1、GP2までの対応レシピを提示済みであって、次回は3回目の提示であるなら、x=3とする。
そしてステップS808で、食材グループGP(x)〜GPn(なおx=nの場合もある)に、残り食材や追加食材を振り分ける処理を行う。
【0130】
今後の提示にかかる食材グループGP(x)〜GPnに食材を追加したら、続いてレシピ管理サーバ1はステップS809〜S812により、各食材グループGP(x)〜GPnに対応するレシピを特定する処理を行う。
即ちレシピ管理サーバ1はステップS809で、食材グループGP(x)についてレシピ検索を行う。これは食材グループGP(x)に、最初の提示設定処理で割り当てられた食材と、今回追加的に割り当てられた食材を含めて検索キーとして、レシピDB50を検索し、その食材の範囲で調理が可能なレシピを抽出する処理となる。
そしてステップS810で、食材グループGP(x)の追加レシピを特定する。この場合、食材が増えることで、最初の提示設定の際のレシピを含んで、追加的に該当するレシピが抽出されることが予想される。従って、追加レシピとは、今回抽出されたレシピの中で、最初の提示設定時に抽出された中に含まれていないレシピとなる。
【0131】
レシピ管理サーバ1はステップS811で変数x=nとなるまで、ステップS812で変数xをインクリメントしながら、ステップS809、S810を行う。従って、今後の時点で対応レシピを提示する食材グループについて、対応レシピが追加されていくことになる。
食材グループGPnについてまでの処理を終えたら、ステップS813に進み、提示設定DB56の内容を更新する。つまり今後の時点で対応レシピを提示する食材グループについて、対応レシピを追加する記憶を行う。
従って上述の
図17の処理で推奨レシピの提示が行われる場合、残りの食材や追加購入した食材が考慮されて推奨レシピが提示されることになる。
【0132】
なお、この再提示設定の際には、数量条件チェックは不要としてもよいし、この場合も数量条件チェックを実行してもよい。
例えば
図16のような最低数の選択肢を提供するという考え方に則れば、すでに数量条件チェックは満たされているため、例えば
図20の処理で行う必要は無い。
一方、
図15のような均一性を考慮する場合、残りの回で、レシピ数や料理種別数の均一性を保つようにするのであれば、
図15A又は
図15Bのような処理で数量条件チェックを行い、満たされなければステップS808からやり直すことも考えられる。
もちろん、一旦均一性が確保されていることを考えれば、追加レシピによって多少均一性が崩れてもよしとする考え方もあるため、数量条件チェックを行なわなくてもよい。
再提示設定処理の際には数量条件チェックを省くことで、レシピ管理サーバ1の処理負担を削減できる。
【0133】
<8.まとめ>
以上、実施の形態について説明してきたが、実施の形態では以下の効果が得られる。
第1〜第3の実施の形態のレシピ管理サーバ1(情報処理装置)は、食材の格納履歴を記憶する記憶装置(格納履歴DB53)から少なくとも在庫情報を含む食材の情報を取得する食材情報取得部1a(
図11のS401参照)を備える。またレシピ管理サーバ1は、格納履歴DB53に記憶された格納履歴に基づいて判定された食材が追加される周期に応じてレシピ提供回数を特定する提供回数特定部1b(S402,S403参照)と、取得した食材の情報と特定されたレシピ提供回数に基づいて、当該食材の情報に含まれる各食材を、当該レシピ提供回数に応じた数の食材グループGP1〜GPnに振り分ける食材グループ設定部1c(S407参照)と、食材グループGP1〜GPn毎に、振り分けられた食材に基づいてレシピを特定するレシピ特定部1d(S408〜S412参照)を備える。さらにレシピ管理サーバ1は、食材グループGP1〜GPn毎に特定されたレシピの提示制御を行う提示制御部1e(
図17のS704〜S707参照)を備える。そして食材グループ設定部1cは、レシピ特定部1dが各食材グループについて特定するレシピの数または料理種別が所定の数量条件を満たすように食材の振り分けを行う(
図11のS413、S414、S415等参照)。
【0134】
例えばユーザが一週間に一度、食材をまとめて購入することなどを想定する。この購入した食材を、レシピ提供回数(例えば一週間の毎日の夕食用とすると7回)に振り分けて食材グループGP1〜GPnを設定する。そして食材グループGP1〜GPn毎に、その食材グループ内の食材で調理可能なレシピを特定する。そして食材グループ毎、例えば毎日の夕食毎に、いくつかのレシピをユーザに提示する。
【0135】
これにより、食材を必要な回数に振り分けた上で、毎回の食事について適切(つまり現在ある食材で調理可能)なレシピがユーザに提供されることになる。ユーザにとっては、毎回提示されるレシピのうちで任意のレシピを選択して料理をおこなっていけば、例えば1週間分などとしてまとめて購入した食材を、うまく毎日の食事に振り分けて利用できることになる。従って、ユーザは食材の配分を気にしていなくてもよい。
【0136】
また、毎回の食事毎に予め配分された食材で提示されるレシピが特定されるため、毎回多様なレシピが提供される。特にレシピの数または種別が数量条件を満たすような食材グループ設定が行われることで、毎回提示されるレシピの数、或いは料理種別の種類の数が、適度に多く、バリエーションに富んだものにできる。このためユーザの選択肢が豊富で満足度の高いレシピ提供サービスを実現できる。
そして毎回ある程度多様なレシピを選ぶことができつつ、n回先までの食事を在庫の食材でまかなえることで、ユーザが本サービスを利用する満足度が上昇する。
特にインターネット通販による定期購入、生活協同組合による一括購入、生鮮食料品配達サービスを利用した購入、週一でのマーケットでの大量購入などを実行しているユーザにとって好適である。
【0137】
またユーザが短時間で容易に望みのレシピを発見できるような使用性の良いレシピ提供システムを実現できる。現状で調理可能なレシピが充実した選択肢で提示されるためである。
またこれによって、検索のし直しなども減少することが見込まれるため、ネットワークシステムでの総通信量の削減や、それによる通信トラフィックの有効利用を促進できる。
更に、ユーザの利用するユーザ端末3における限られた(例えば、モニタなどの)提示領域において、価値のある情報(レシピ)を提示することにより、ユーザ端末3の資源を有効活用することができる。
【0138】
実施の形態では、食材グループGP1〜GPnの設定に関し、取得した食材の情報に含まれる食材毎の汎用性を示す情報を取得し、取得した汎用性を示す情報で示される値が相対的に高い食材が異なる食材グループに振り分けられるように食材グループを設定する例を示した(
図13,
図14参照)。
ある食材グループに汎用性が高い食材ばかり集められると、その食材グループについては対応するレシピ数が多くなるが、他の食材グループでは対応するレシピ数が少なくなってしまうことが想定される。そこで、汎用性が高い食材があるグループに集中しないようにする。これにより、各食材グループに対応するレシピの数や種類をある程度均等化でき、毎回の提示の際のユーザの選択肢を確保しやすくなる。
またこのアルゴリズムを用いて食材グループGP1〜GPnの設定を行うことで、数量条件をクリアできる可能性も高くなり、設定のやり直しが減少することが見込まれる。従ってレシピ管理サーバ1の処理負担も低減できる。
【0139】
実施の形態では、食材を分量単位で各食材グループGP1〜GPnに振り分けて食材グループGP1〜GPnを設定する例を述べた(
図8、
図12B参照)。
これにより、各食材グループGP1〜GPnにおいて共通の食材を用いたレシピも対応可能であり、各食材グループGP1〜GPnに対応するレシピの数や料理種別数を確保しやすいものとすることができる。
また実施の形態としての
図11の処理では、食材を、食材毎に設定された分量単位で各食材グループに振り分けたことにより数量条件を満たせなくなる場合は、各食材グループに振り分ける食材の分量の調整を行う例を述べた(S415)。
これは1つの食材を特定の分量毎に振り分けると、場合によっては対応するレシピ数が極端に減少してしまうこともあるため、数量条件を満たすように振り分ける分量を調整するものである。これにより、1つの食材を柔軟に各食材グループに振り分け、もって各食材グループに対応するレシピの数や料理種別数を確保しやすいものとすることができる。
【0140】
また第2の実施の形態としての
図18の処理では、食材を分量単位で各食材グループGP1〜GPnに振り分けたことにより数量条件を満たせなくなる場合において、レシピに設定されている食材の分量を変更することで、数量条件を満たすか否かを確認するようにしている(S420,S421参照)。
食材の分量が足りなくて、あるレシピがある食材グループに対応できないとされる場合がある。その場合に、そのレシピに設定されている分量を変更することで、当該レシピを食材グループに対応するレシピとすることができる。
これにより、1つの食材グループに対応するレシピの数や料理種別数を確保しやすいものとすることができる。
またこの手法で数量条件をクリアできる場合、食材グループGP1〜GPnについての設定はやり直さなくてよいためレシピ管理サーバ1の処理負担が軽減される。
【0141】
実施の形態では、各食材グループに対応したレシピを特定した後において、追加可能な食材の情報を取得した場合、食材の再割り当て、再割り当ての状態での追加レシピの特定、及び追加レシピを追加した状態でのレシピの提示制御を行う例を挙げた。
即ち第3の実施の形態においては、各食材グループGP1〜GPnに対応したレシピを特定した後において、2回目以降のレシピ提供の際には、前回以前のレシピ提供にかかる余剰食材の再割り当てをおこない、再割り当ての状態で追加レシピを特定する(
図19のS311参照)。そして追加レシピを追加した状態でのレシピの提示制御を行う。
例えば1回目の提示は、1回目として1回目用の食材グループGP1とされた食材で調理可能なレシピが提示される。しかし、ユーザがその中でどのレシピを選択して料理を行うかに応じて余剰食材が生ずる。そこで2回目以降の提示の時点では、余剰食材を残りの各食材グループGP2〜GPnに振り分けた上で、調理可能なレシピを特定し、これを追加レシピとして提示する。
これにより、2回目以降のレシピ提示の際には、それまでに余った食材が有効利用されて多様なレシピが表示できる。ユーザの選択によっては、余剰食材を有効利用できることになる。またユーザにとっては、なるべく余剰食材を生じないようなレシピ選択の機会が与えられる。
また、この第3の実施の形態においては、食材の追加情報を取得した場合も追加食材の再割り当てをおこない、再割り当ての状態で追加レシピを特定する(
図19のS311参照)。そして追加レシピを追加した状態でのレシピの提示制御を行う。
例えば1週間分の食材の割り当てとレシピの特定を行った後に、食材が追加された場合、以降のレシピ提示としては、追加食材を反映させたレシピも追加提示されるようにする。
これにより追加食材が有効利用されて多様なレシピが表示できる。
【0142】
実施の形態では、数量条件として、各食材グループGP1〜GPnについて特定されたレシピ数の差、又は各食材グループGP1〜GPnについて特定されたレシピにおける料理種別の数の差が所定範囲内とする例を述べた(
図15A、
図15B参照)。
これにより毎回提示するレシピのうち、あるときだけ極端にレシピ数が少なくなってしまったり、あるときは過大となるような不均一な状態を避けられ、安定した数の選択肢をユーザに提供できる。
ここで、各食材グループGP1〜GPnについて特定されたレシピ数又は各食材グループについて特定されたレシピにおける料理種別の数の偏りについての数量条件が、食材グループの数に応じて設定されるものとした(
図15AのS601,
図15BのS623参照)。
例えば食材グループ数が多いほど、条件を厳しくすることで、不均一な状態を避け、安定した数の選択肢をユーザに提供できる状態を維持できる。
【0143】
なお、食材が余ること自体は、本実施の形態では問題としていない。つまり余ってもよい。例えば結果的に一週間後に余った食材が存在しても、それは次の提示設定に反映させればよいためである。また余った食材はユーザが自由に使用すればよいためでもある。本実施の形態は、ある複数回の調理機会において、それぞれ食材を分配し、バリエーション豊かなレシピを提案することを主眼としている。従って、第3の実施の形態のような追加レシピ設定を行わない第1の実施の形態も十分に有効である。
【0144】
また実施の形態では、数量条件として、各食材グループGP1〜GPnについて特定されたレシピの数、又は各食材グループGP1〜GPnについて特定されたレシピにおける料理種別の数が、所定の最小値以上であるとする例を述べた(
図16A、
図16B参照)。
これにより毎回提示するレシピのうち、あるときだけ極端に少ないレシピ数や料理種別数で提示が行われることを避けられ、毎回十分な選択肢をユーザに提供できる。
ここで、各食材グループGP1〜GPnについて特定されたレシピ数又は各食材グループについて特定されたレシピにおける料理種別の数の最小値としての数量条件が、食材グループの数に応じて設定されるものとした(
図16AのS611,
図16BのS623参照)。
例えば食材グループ数が多いほど、最小値の条件を厳しくすることで、不均一な状態を避け、安定した数の選択肢をユーザに提供できる状態を維持できる。
【0145】
なお本発明の情報処理装置の構成や処理は上記実施の形態で言及した物に限定されず、さらに多様な変形例が想定される。
毎回提供する推奨レシピとしては、例えば主菜のみとしたり、或いは、主菜、副菜のセット、さらには1食分の全てのセットとして複数レシピの組で提示してもよい。例えばメインディッシュのレシピ、スープのレシピ、サラダのレシピを1組の推奨レシピとしてもよい。
【0146】
実施の形態では、毎回の提示機会にユーザに対して、その回の推奨レシピの提示を行う例としたが、例えば残りの回の全てをユーザが閲覧できるようにしてもよい。
例えばあるユーザについて1週間分の推奨レシピを特定したら、そのユーザがレシピサイトを訪問した際に、その1週間分の推奨レシピを提示する。これによってユーザは献立の計画を立てやすくなる。
【0147】
また実施の形態では言及していないが、複数人分のレシピ設定を予め入力することで、
それに応じて食材グループ設定、レシピ特定が行われることは当然に考えられる。
例えば家族4人のユーザに対しては、食材グループGP1〜GPnの食材は、それぞれ4人分の食材ということで調理可能なレシピ検索が行われればよい。
【0148】
図10〜
図16で説明した処理は、必ずしもバッチ処理でおこなわれるようにする必要は無い。上記処理が十分に高速に実現できるのであれば、ユーザがログインしたときに、そのログインユーザについて
図10の処理を行い、必要に応じて提示設定処理を行うようにすることもできる。
【0149】
推奨レシピを提示するのはレシピサイトのトップページでなくてもよい。
その場合、ユーザ端末3からの推奨レシピの提示の要求に応じてレシピ管理サーバ1は
図17のステップS704〜S707の処理を行えばよい。
【0150】
実施の形態では、食材情報を格納履歴DB53で把握できる実際の追加の履歴から取得するものとしたが、食材追加の推定を行って未来の時点での追加食材情報を取得することも考えられる。
例えば過去の食材情報の格納履歴に基づいて、ある時点での追加量を推定することができる。
また食材の残余の量に基づいて追加量を推定することもできる。
またまだ購入前であるが生活協同組合やネットスーパーなどの注文情報に基づいて、未来のある時点での食材追加量を特定することもできる。
このような食材の追加の推定に基づいて、未来の時点での提示設定を行ったり、再提示設定を行って推奨レシピを追加することもできる。
また食材の追加可能性を、例えば食材の残余の量に基づいて推定したり、食材の現在価格に基づいて推定することもできる。特にユーザ毎の購入価格の相場を判定し、それを考慮して、ある食材が安くなったら、そろそろ購入しそうだという推定を行い、それを提示設定処理や再提示設定処理で反映させてもよい。
【0151】
<9.プログラム及び記憶媒体>
本発明の実施の形態のプログラムは、レシピ管理サーバ1における食材情報取得部1a、提供回数特定部1b、食材グループ設定部1c、レシピ特定部1d、提示制御部1eの機能による処理を情報処理装置(CPU等)に実行させるプログラムである。
【0152】
実施の形態のプログラムは、食材の格納履歴を記憶する記憶装置から所定の条件を満たす食材の情報を取得する食材情報取得手順(S401)と、記憶装置(格納履歴DB53)に記憶された格納履歴に基づいて、食材が追加される周期を判定し、判定した周期に基づいてレシピ提供回数を特定する提供回数特定手順(S402,S403)と、食材情報取得手順で取得した食材の情報に含まれる各食材を振り分けて、レシピ提供回数に応じた数の食材グループGP1〜GPnを設定する食材グループ設定手順(S407)と、食材グループ毎に、割り当てられた食材に基づいてレシピを特定するレシピ特定手順(S410)と、食材グループGP1〜GPn毎に特定されたレシピの提示制御を行う提示制御手順(S704〜S707)とを情報処理装置に実行させる。さらに、食材グループ設定手順では、レシピ特定手順で各食材グループについて特定するレシピの数または料理種別が所定の数量条件を満たすことになる食材の振り分けを情報処理装置に実行させる(S407〜S415)。
【0153】
このようなプログラムにより、上述したレシピ管理サーバ1はとしての情報処理装置を実現できる。
そしてこのようなプログラムはコンピュータ装置等の機器に内蔵されている記憶媒体としてのHDDや、CPUを有するマイクロコンピュータ内のROM等に予め記憶しておくことができる。あるいはまた、半導体メモリ、メモリカード、光ディスク、光磁気ディスク、磁気ディスクなどのリムーバブル記憶媒体に、一時的あるいは永続的に格納(記憶)しておくことができる。またこのようなリムーバブル記憶媒体は、いわゆるパッケージソフトウェアとして提供することができる。
また、このようなプログラムは、リムーバブル記憶媒体からパーソナルコンピュータ等にインストールする他、ダウンロードサイトから、LAN、インターネットなどのネットワークを介してダウンロードすることもできる。
食材をユーザの複数回の食事に振り分けるとともに、毎回、ユーザに対して多様なレシピの提案ができるようにする。そこで食材の格納履歴を記憶する記憶装置から所定の条件を満たす食材の情報を取得し、食材が追加される周期を判定し、判定した周期に基づいてレシピ提供回数を特定する。そして取得した食材の情報に含まれる各食材を振り分けて、レシピ提供回数に応じた数の食材グループを設定する。この食材グループ毎に、割り当てられた食材に基づいてレシピを特定し、レシピの提示制御を行う。この場合に、各食材グループについて特定されるレシピの数または料理種別が所定の数量条件を満たすことになるように食材の振り分けを行うようにする。