以下、本発明の好適な実施の形態(以下「実施形態」という)について、図面を用いて詳細に説明する。
[第1の実施形態]
<システム構成>
図1は、本実施形態に係るスケジュール管理システム1の構成例を示す図である。
図1には、情報処理装置100と複数の情報端末2001〜200n(以降総称する場合「情報端末200」という)とが、インターネットなどのデータ伝送路I(外部ネットワーク)で接続されるシステム構成例が示されている。
情報端末200は、データ通信を含む情報処理機能を有する機器である。情報端末200は、タブレット端末などであり、Webブラウザなどのアプリケーションを介して、情報処理装置100にアクセスし、各種情報の閲覧や操作を行う。
情報処理装置100は、スケジュール管理機能を有する機器であり、スケジュール管理サーバにあたる。情報処理装置100は、PC(Personal Computer)などであり、所定の記憶領域に、利用者のスケジュール(行動計画)に関する情報(以下「スケジュール情報」という)、イベントに関する情報(以下「イベント情報」という)、及びイベントへの参加に関する情報(以下「参加情報」という)を保持する。情報処理装置100は、これらの情報に基づき、開催予定のイベントで紐付く関係者全てのスケジュールを調整し、最適化する。また、情報処理装置100は、情報端末200から、イベントや該イベントへの参加予定の編集操作要求を受け付けたり、スケジュールの調整結果などを、情報端末200に応答したりする。
また、図1には、外部サービス提供サーバ300(情報処理装置)が、データ伝送路Iに接続されている例が示されている。外部サービス提供サーバ300は、情報処理装置100が有するスケジュール管理機能と連携する各種外部サービスを提供する機器の総称である。外部サービスには、イベントの開催予定や該イベントの参加予定を登録可能なカレンダーサービスなどがある。このように、スケジュール管理システム1では、他の外部サービスと連携したスケジュール管理サービスを提供するように、システムを構成してもよい。
なお、以降の説明では、便宜上、上記2つのサーバを識別するため、スケジュール管理サーバを「情報処理装置100」とし、外部サービス提供サーバは、単に「外部サービス提供サーバ300」とする。
システム管理システム1は、上記システム構成により、次のようなサービスを提供する。利用者は、情報端末200から、Webブラウザを介して、イベントの開催予定及び/又は開催イベントへの参加予定などの設定データを情報処理装置100に送信し、イベント及び/又は参加予定の新規登録を要求する。これを受けて情報処理装置100では、受信データに基づき、当該装置で保持するイベント情報及び/又は参加情報を更新する。また、情報処理装置100では、予定変更に応じて、当該装置で保持するスケジュール情報、イベント情報、及び参加情報に基づき、該当イベントに参加予定の関係者全てのスケジュールを調整し、最適化する。
その結果、利用者は、例えば移動中や移動先から、情報端末200のWebブラウザを介して、自身のスケジュール情報の取得を情報処理装置100に要求すると、最適化されたスケジュール(調整結果)が、情報処理装置100から情報端末200に応答され、その内容を確認できる。
以上のように、本実施形態に係るスケジュール管理システム1では、上記システム構成により、利用者に対して最適なスケジュールを提案する環境を提供することができる。
<ハードウェア構成>
図2は、本実施形態に係る情報処理装置100(スケジュール管理サーバ)のハードウェア構成例を示す図である。なお、上記スケジュール管理システム1に含まれる外部サービス提供サーバ300は、以下に示す情報処理装置100と略同一の装置である。よって、情報処理装置100のハードウェア構成を説明することで、上記外部サービス提供サーバ300のハードウェア構成の説明を省略する。
図2に示すように、情報処理装置100は、入力装置101、表示装置102、外部I/F103、RAM(Random Access Memory)104、ROM(Read Only Memory)105、CPU(Central Processing Unit)106、通信I/F107、及びHDD(Hard Disk Drive)108などを備え、それぞれがバスBで相互に接続されている。
入力装置101は、キーボードやマウスなどを含み、情報処理装置100に各操作信号を入力するのに用いられる。表示装置102は、ディスプレイなどを含み、情報処理装置100による処理結果を表示する。
通信I/F107は、情報処理装置100をネットワークに接続するインタフェースである。これにより、情報処理装置100は、通信I/F107を介して、他の機器(「情報端末」や「外部サービス提供サーバ」)とデータ通信を行うことができる。
HDD108は、プログラムやデータを格納している不揮発性の記憶装置である。格納されるプログラムやデータには、装置全体を制御する基本ソフトウェアであるOS(Operating System)、及びOS上において各種機能を提供するアプリケーションソフトウェアなどがある。また、HDD108は、格納しているプログラムやデータを、所定のファイルシステム及び/又はDB(Data Base)により管理している。
外部I/F103は、外部装置とのインタフェースである。外部装置には、記録媒体103aなどがある。これにより、情報処理装置100は、外部I/F103を介して、記録媒体103aの読み取り及び/又は書き込みを行うことができる。記録媒体103aには、フロッピー(商標又は登録商標)ディスク、CD(Compact Disk)、及びDVD(Digital Versatile Disk)、ならびに、SDメモリカード(SD Memory card)やUSBメモリ(Universal Serial Bus memory)などがある。
ROM105は、電源を切っても内部データを保持することができる不揮発性の半導体メモリ(記憶装置)である。ROM105には、情報処理装置100の起動時に実行されるBIOS(Basic Input/Output System)、OS設定、及びネットワーク設定などのプログラムやデータが格納されている。RAM104は、プログラムやデータを一時保持する揮発性の半導体メモリ(記憶装置)である。CPU106は、上記記憶装置(例えば「HDD」や「ROM」など)から、プログラムやデータをRAM上に読み出し、処理を実行することで、装置全体の制御や搭載機能を実現する演算装置である。
以上のように、本実施形態に係る情報処理装置100は、上記ハードウェア構成により、各種情報処理サービスを提供することができる。
<スケジュール管理機能>
本実施形態に係るスケジュール管理機能について説明する。
本実施形態に係る情報処理装置100では、イベントの開催予定や該イベントへの参加予定の変更を検知すると、所定の条件に従って、開催予定のイベントと該イベントに参加する利用者のスケジュールを相互に調整し、関係者全てのスケジュールを最適化する。本実施形態に係る情報処理装置100は、このようなスケジュール管理機能を有している。
従来のスケジュール管理では、イベントの開催予定や該イベントへの参加予定の変更に応じて、関係者のスケジュールを最適化するものでないため、利用者に対して最適なスケジュールを提案するものではなかった。
そこで、本実施形態に係る情報処理装置100では、利用者個人やイベント単位でスケジュール調整を行うのではなく、イベントの開催予定や該イベントへの参加予定の変更に応じて、開催予定のイベントと該イベントに参加する利用者のスケジュールを相互に調整する仕組みとした。
これにより、本実施形態に係る情報処理装置100は、予定に変更が生じたイベントに参加予定の関係者全てのスケジュールが最適化される環境を提供する。その結果、本実施形態に係る情報処理装置100では、利用者に対して最適なスケジュールを提案できる。
以下に、本実施形態に係るスケジュール管理機能の構成とその動作について説明する。
図3は、本実施形態に係るスケジュール管理の機能構成例を示す図である。
図3に示すように、本実施形態に係るスケジュール管理機能は、編集部11、調整部12、情報提供部13、及び外部連携部21などを有している。
なお、以下の説明では、便宜上、スケジュール管理機能を利用する利用者を「主催者」と「参加者」とに分けて説明する。主催者とはイベントを主催する利用者にあたり、参加者とはイベントに参加予定の利用者(イベントへの参加が要求された利用者)にあたる。よって、情報処理装置100にアクセスする情報端末200についても、「主催者の情報端末200a」と「参加者の情報端末200b」とに分けて説明する。
《本機能で用いる情報》
スケジュール管理機能では、イベント情報、参加情報、及びスケジュール情報を用いる。
図4は、本実施形態に係るイベント情報80Dのデータ例を示す図である。
図4に示すように、イベント情報80Dは、イベント識別、イベント関連、及び主催者識別などの情報項目が対応付けられた1又は複数の情報セットを含み、これらの情報セットをイベント単位で管理している。イベント情報80Dは、イベント情報保持部80に記録・格納され保持される。
[イベント識別]項目は、イベントを識別する情報(以下「イベント識別情報」という)を保持する項目であり、項目値には、新規登録時にユニークに割り当てられた識別子(例えば「イベントID」)などがある。なお、識別子の値は、通し番号である必要はなく、イベントが一意に特定可能な値であればよい。
[イベント関連]項目は、イベントに関連する各種情報(以下「イベント関連情報」という)を保持する項目であり、開始日時、終了日時、開催場所、及び開催内容など詳細項目を含む。よって、項目値には、イベントの開始・終了日時(開催予定期間)を示す値(例えば「年月日と時刻の組み合わせ値」)、開催場所を示す値(例えば「事業所や会議室などを表す文字列(場所名)」)、開催内容を示す値(例えば「会議、打ち合わせ、セミナーなどを表す文字列(内容名)」)などがある。なお、終了日時は、開催時間(終了日時から開始日時の減算値)であってもよい。
[主催者識別]項目は、主催者を識別する利用者識別情報(以下「主催者識別情報」という)を保持する項目であり、項目値には、イベントを主催する利用者にユニークに割り当てられた識別子(例えば「利用者ID」)などがある。
図5は、本実施形態に係る参加情報70Dのデータ例を示す図である。
図5に示すように、参加情報70Dは、イベント識別、参加者識別、及び参加優先度などの情報項目が対応付けられた1又は複数の情報セットを含み、これらの情報セットをイベント単位で管理している。参加情報70Dは、参加情報保持部70に記録・格納され保持される。
[イベント識別]項目は、イベント識別情報を保持する項目である。よって、参加情報70Dとイベント情報80Dとは、イベント識別情報で紐付けられる。
[参加者識別]項目は、参加者を識別する利用者識別情報(以下「参加者識別情報」という)を保持する項目であり、項目値には、イベントに参加予定の利用者にユニークに割り当てられた識別子などがある。
[参加優先度]項目は、イベントへの参加要求の強さ(参加への要求度合い)/イベントの開催予定の重要度を示す情報(以下「参加優先度情報」という)を保持する項目であり、項目値には、優先度を比較可能な値(例えば「N段階の数値」)などがある。
参加優先度情報は、主催者と参加者といった立場の違いによって設定値が異なる。なぜなら、主催者は参加者に対して優先度を高めに設定するからである。参加優先度情報は、このような設定傾向を考慮すると、次のように設定できることが望ましい。例えば10段階の優先度値が設定可能な場合(数値の高さで優先度を設定可能な場合)、参加者は、自身に対して10段階の優先度設定を適用できる。これに対し、主催者は、「参加必須」(優先度"10")・「参加希望」(優先度"5")・「参加可能」(優先度"2")などの3つの選択肢を選択することで優先度を設定できる。なお、「参加必須」・「参加希望」・「参加可能」などの選択肢の種類や各選択肢に割り当てる優先度については、設定環境の利便性を考慮して予め決定しておけばよい。これにより、優先度を他の利用者より自身の方が細かく設定することができる。
図6は、本実施形態に係るスケジュール情報90Dのデータ例を示す図である。
図6に示すように、スケジュール情報90Dは、参加者識別及びスケジュール関連などの情報項目が対応付けられた1又は複数の情報セットを含み、これらの情報セットを参加者単位で管理している。スケジュール情報90Dは、スケジュール情報保持部90に記録・格納され保持される。
[参加者識別]項目は、参加者識別情報を保持する項目である。よって、スケジュール情報90Dと参加情報70Dとは、利用者識別情報で紐付けられる。
[スケジュール関連]項目は、スケジュールに関連する情報(以下「スケジュール関連情報」という)を保持する項目であり、行動日時、行動種別、イベント識別、及び移動先など詳細項目を含む。項目値には、予定される行動日時を示す値(例えば「年月日と時刻の組み合わせ値」)、行動種別を示す値(例えば「イベント参加/離脱、移動開始/完了などを表す文字列(種別名)」)、行動に対応するイベントの識別子(イベント識別情報)、行動による移動先を示す値(例えば「開催場所を表す文字列(場所名)」)などがある。よって、スケジュール情報90Dとイベント情報80Dとは、スケジュール関連情報のイベント識別情報で紐付けられる。
なお、上記各情報保持部70,80,90は、リレーショナルDB(Relational DB)などであり、情報処理装置100が備える記憶装置の所定の記憶領域にあたる。
《本機能が有する各機能部》
図3の説明に戻る。編集部11は、所定のデータ操作により、上記各情報70D,80D,90Dを編集する機能部である。ここで言う編集には、新規データの登録/既存データの更新/削除などがある。編集部11は、対話的なインタフェース(例えば「GUI:Graphical User Interface」)機能を有し、利用者からの入力/データ操作要求を受け付ける。例えば編集部11は、インタフェース機能を介して、主催者の情報端末200aからの入力/データ操作要求を受け付ける。また、編集部11は、データ操作要求に従って、情報保持部(上記各情報保持部70,80,90のいずれか)にアクセスし、所定の情報項目値である検索情報(検索キー)に基づき、編集対象情報(上記各情報70D,80D,90Dのいずれか)を検索する。編集部11は、検索結果として特定した情報セット(リレーション)に対して編集を行う。
例えば新規データを登録する場合、編集部11は、インタフェース機能を介して登録情報種別値や登録情報項目値などの入力を受け付ける。編集部11は、登録情報種別値に基づき、情報登録先の情報保持部にアクセスし、新規情報セットを生成し、生成した情報セットに登録情報項目値を記録・格納する。
また、既存データを更新する場合、編集部11は、インタフェース機能を介して更新情報種別値、検索キー、及び更新情報項目値などの入力を受け付ける。編集部11は、更新情報種別値に基づき、情報更新先の情報保持部にアクセスし、検索キーに基づき、更新対象情報を検索する。編集部11は、検索結果として特定した情報セットの該当情報項目値を更新情報項目値で更新する。
また、既存データを削除する場合、編集部11は、インタフェース機能を介して削除情報種別値及び検索キーなどの入力を受け付ける。編集部11は、削除情報種別値に基づき、情報削除先の情報保持部にアクセスし、検索キーに基づき、削除対象情報を検索する。編集部11は、検索結果として特定した情報セットを削除する。
調整部12は、所定の条件に従って、開催予定のイベントと該イベントの参加者のスケジュールを相互に調整し、関係者全てのスケジュールを最適化する機能部である。調整部12は、編集部11により、イベントの開催予定や該イベントへの参加予定が変更(新規データの登録/既存データの更新/削除)されたことを受けて上記調整を開始する。
(A)スケジュールの調整
調整部12は、イベントの開催予定や該イベントへの参加予定の変更を検知すると(編集部からの変更通知を受け付けると)、該当イベントの関係者全てのスケジュールを調整する。このとき調整部12は、スケジュール情報90Dの登録、更新、又は削除などを行う。
調整部12は、検知した変更がイベントの新規登録・該イベントへの参加登録であった場合(イベント情報と参加情報に新規データが登録された場合)、登録に対するスケジュールの調整を行う。また、調整部12は、検知した変更がイベントの登録更新・該イベントへの参加登録更新であった場合(イベント情報及び/又は参加情報の既存データが更新された場合)、更新に対するスケジュールの調整を行う。また、調整部12は、検知した変更がイベントの登録削除・該イベントへの参加登録削除であった場合(イベント情報及び/又は参加情報の既存データが削除された場合)、削除に対するスケジュールの調整を行う。
調整部12は、登録/更新時の調整を次のように行う。調整部12は、イベント情報保持部80と参加情報保持部70にアクセスし、検知時に受け取ったイベント識別情報に基づき、該当イベント情報80Dと該当参加情報70Dを取得する。調整部12は、スケジュール情報保持部90にアクセスし、取得したイベント情報80Dと参加情報70Dに基づき、変更されたイベントの参加者に対応する情報セットを生成し、スケジュール情報90Dを登録/更新する。
調整部12は、削除時の調整を次のように行う。調整部12は、スケジュール情報保持部90にアクセスし、検知時に受け取ったイベント識別情報に基づき、該当スケジュール情報90Dを削除する。
(A−1)調整が必要となったスケジュールの調整
調整部12は、上記登録/更新/削除に伴い調整が必要となった他のスケジュールがあるか否かを判断し、該当スケジュールがあった場合、所定の条件に従って、該当スケジュールを調整する。
このとき調整部12は、調整が必要となった他のスケジュールがあるか否かの判断を次のように行う。調整部12は、登録/更新/削除後のスケジュール情報90Dを参照し、参加者識別情報に基づき、同一参加者のスケジュール関連情報が複数存在するか否かを判断する。調整部12は、該当スケジュール関連情報が複数存在した場合、スケジュール関連情報に基づき、同時に2つ以上の行動(重複行動)が予定されているか否かを判断する。具体的には、調整部12は、行動日時、行動種別、及びイベント識別の各情報項目値に基づき、あるイベントへの参入から離脱までの間に、別のイベントの参入又は離脱の行動が予定されているか否かを判断する。また、調整部12は、行動日時、行動種別、及び移動先の各情報項目値に基づき、ある移動開始から移動終了までの間に、別の移動が予定されているか否かを判断する。
調整部12は、同時に2つ以上の行動(重複行動)が予定されていた場合、該当スケジュールを調整が必要なスケジュールと判断し、調整が必要な状態を解消するために、該当スケジュール情報90Dを更新又は削除する。このとき調整部12は、調整が必要な状態の解消を次のように行う。調整部12は、参加情報70Dを参照し、該当スケジュール情報90Dの参加者識別情報とスケジュール関連情報に含まれるイベント識別情報に基づき、イベントの参加者に対して設定されている参加優先度情報を特定する。調整部12は、特定した参加優先度情報に基づく優先度の比較結果から、優先度の低いイベントを特定する。調整部12は、特定したイベントのイベント識別情報を含むスケジュール情報90Dを削除する。また、調整部12は、特定したイベントの参加者に関する設定値(参加者識別子及び参加優先度値)を含む参加情報70Dを削除する。つまり、調整部12は、重複状態にあるスケジュールのうち、優先度の低いイベントに関するスケジュールを削除し、優先度の高いイベントに関連するスケジュールを残す。
(A−2)空き日時に対するスケジュールの調整
調整部12は、上記状態の解消を解消すると(該当スケジュールを削除すると)、スケジュールの削除により発生した空き日時に参加可能な(参加要求されている)イベントがあるか否かを判断し、該当イベントがあった場合、該当イベントに対するスケジュールの調整を行う(上記登録時の調整を行う)。
このとき調整部12は、空き日時に参加可能な(参加要求されている)イベントがあるか否かの判断を次のように行う。調整部12は、削除後の参加情報70Dを参照し、参加者識別情報とイベント識別情報との対応関係から、削除したスケジュールの参加者が参加予定のイベントを特定する。調整部12は、イベント情報80Dを参照し、特定したイベントのイベント識別情報に基づき、該当イベント関連情報の開始・終了日時を特定する。調整部12は、特定した開始・終了日時の間(開催予定)に、削除したスケジュール情報90Dの行動日時が含まれるか否かを判断する。
調整部12は、開始・終了日時の間に行動日時が含まれる場合、該当イベントが空き日時に参加可能なイベントと判断し、スケジュール情報保持部90にアクセスし、イベント情報80Dと参加情報70Dに基づき、該当イベントに対応するスケジュール情報90Dを登録する。つまり、調整部12は、スケジュールの削除により発生した空き日時に、参加可能なイベントのスケジュールを新たに登録する。
なお、調整部12は、対話的なインタフェース機能を有し、利用者からの入力/データ操作要求を受け付けるようにしてもよい。これにより、調整部12では、利用者操作に応じた上記調整処理を実行できる。また、以下に説明する「イベント参加の調整」についても同様である。
(B)イベント参加の調整
調整部12は、上述したようなスケジュールの変更を検知すると、変更されたスケジュールに関連するイベントと参加予定の全てを調整する。このとき調整部12は、イベント情報80Dと参加情報70Dの更新又は削除などを行う。
調整部12は、更新時の調整を次のように行う。調整部12は、イベント情報保持部80にアクセスし、変更されたスケジュール情報90Dに基づき、行動種別"イベント参入"の該当イベント情報80Dを取得する。調整部12は、取得したイベント情報80Dを更新するとともに、参加情報保持部70にアクセスし、更新したイベント情報80Dのイベント識別情報と同一の参加情報70Dを更新する。
調整部12は、削除時の調整を次のように行う。変更されたスケジュール情報90Dに基づき、行動種別"イベント参入"の該当イベント情報80Dを取得する。調整部12は、上記更新結果に基づき、取得したイベント情報80Dのうち、更新できなかったイベント情報80Dを削除する。
(B−1)開催条件に基づくイベント参加の調整
調整部12は、登録/更新/削除されたスケジュールに関連するイベントが、所定の開催条件を満たしているか否かを判断し、開催条件を満たしていない場合、決定した更新内容に従って、該当イベントと該当参加予定を調整する。
このとき調整部12は、イベントが開催条件を満たしているか否かの判断や更新内容の決定を次のように行う。調整部12は、参加情報保持部70にアクセスし、取得したイベント情報80Dのイベント識別情報に基づき、該当参加情報70Dを特定する。調整部12は、特定した参加情報70Dの参加優先度情報に基づき、優先度に「参加しない」を表す所定値が設定されているか否かを開催条件として判断する。調整部12は、優先度が「参加しない」と設定されている場合(「参加必須」/「参加可能」から「参加しない」に設定された場合)、該当イベントが開催条件を満たさないイベントと判断する。調整部12は、判断されたイベントのイベント関連情報に含まれる開始・終了日時に、別の日時を設定する内容を更新内容として決定する。また、調整部12は、判断されたイベントに対応する参加情報70Dの参加者識別に、更新イベントへの参加を要求する利用者(参加希望者)の利用者識別情報を設定する内容を更新内容として決定する。
なお、上記イベント情報80Dの更新内容の決定では、別の日時の候補として、例えばイベント情報80Dの登録時にイベント識別情報に対応付けて設定しておいた複数の日時情報を用いればよい。
また、次のような方法であってもよい。調整部12は、スケジュール情報保持部90にアクセスし、開催条件の判断時に用いた参加優先度情報に対応付けられた参加者識別情報に基づき、更新イベントの参加者のスケジュール情報90Dを特定する。調整部12は、特定したスケジュール情報90Dのスケジュール関連情報に含まれる行動日時に基づき、参加者の空き日時を特定し、特定した日時情報を用いる。
また、調整部12は、インタフェース機能を介して、参加者から開催予定(開始・終了日時)や開催場所などを受け付けて、受け付けた開催予定・開催場所の情報に基づき、更新イベントの開催可能性が最も高い日時を割り出し、割り出した日時情報を用いる。
また、上記開催条件の判断では、優先度設定の代わりに、イベントへの参加人数が所定数以上か否か開催条件として判断してもよい。この場合、開催条件の判断では、例えばイベント情報80Dの登録時にイベント識別情報に対応付けて設定しておいた開催人数情報を、開催条件の判断基準値(閾値)として用いればよい。
調整部12は、参加情報保持部70にアクセスし、取得したイベント情報80Dのイベント識別情報に基づき、該当参加情報70Dを特定する。調整部12は、特定した参加情報70Dの参加者識別情報に基づき、各イベントへの参加人数を特定する。調整部12は、特定した参加人数の値が、取得したイベント情報80Dの開催人数情報の値以上か否かを開催条件として判断する。調整部12は、参加人数が開催人数より少ない場合、開催条件を満たさなかったイベントのイベント情報80Dとイベント識別情報で紐付く参加情報70Dの更新内容を決定する。なお、参加人数に基づく開催条件の判断では、開催条件が満たされない場合、イベント開催の必要性が低いことから、該当イベント情報80Dを削除するとともに、削除イベントのイベント識別情報で紐付く該当参加情報70Dを削除するようにしてもよい。
また、上記参加情報70Dの更新内容の決定では、参加者が更新イベントに参加可能か否かを判断し、参加不可能な場合、参加情報70Dに代理参加する利用者(代理参加者)の利用者識別情報を設定する内容を更新内容として決定するようにしてもよい。
このとき調整部12は、参加者が更新イベントに参加可能か否かの判断を次のように行う。調整部12は、スケジュール情報保持部90にアクセスし、参加者識別情報に基づき、該当スケジュール関連情報を特定する。調整部12は、特定したスケジュール関連情報の行動日時と更新イベントのイベント関連情報に含まれる開始・終了日時とに基づき、スケジュールとイベントの重複を検証し、検証結果から、参加者の参加可否を判断する。
(C)スケジュールの調整とイベント参加の調整との相互処理
調整部12は、上述したようなイベント参加の変更を検知すると、編集部11からの変更通知を受け付けたときと同じように、該当イベントの関係者全てのスケジュールを調整する。
このように、調整部12では、各情報70D,80D,90Dの変更を検知することで、調整の必要性を判断し、判断結果に基づき、開催予定のイベントと該イベントに参加する利用者のスケジュールを相互に調整し、調整の必要性がなくなるまで(利用者がイベントに参加可能か、又は、イベントが削除されるか、のどちらかに該当するまで)調整処理を繰り返す。その結果、本実施形態に係るスケジュール管理機能では、イベント関係者全てのスケジュールが最適化される。
情報提供部13は、各情報70D,80D,90Dを利用者に提供する機能部である。情報提供部13は、例えば参加者の情報端末200bからの情報提供要求を受け付けると、要求時に受け付けた提供情報指定に基づき、情報保持部(上記各情報保持部70,80,90のいずれか)にアクセスする。情報提供部13は、要求時に受け付けた提供情報識別指定に基づき、指定された提供情報(上記各情報70D,80D,90Dのいずれか)を取得し、要求先に応答する。このとき情報提供部13は、取得した提供情報を、要求元の情報端末200bが表示可能なデータに変換し、応答するようにしてもよい。
図7は、本実施形態に係るスケジュールの表示例を示す図である。
図7には、情報提供部13から応答されたスケジュール情報90Dが情報端末200に表示された場合の例が示されている。
図7に示す表示例では、情報提供部13が、要求時に受け付けた提供情報指定"スケジュール情報"に基づき、スケジュール情報保持部90にアクセスする。情報提供部13が、要求時に受け付けた提供情報識別指定"User012"(参加者識別情報)に基づき、参加者"User012"のスケジュール情報90Dを取得し、要求先に応答する。その結果、参加者"User012"の情報端末200bには、自身のスケジュールが表示される。これにより、利用者には、自身が関わるイベントの開催予定や該イベントへの参加予定の変更が反映された具体的なスケジュール(最適化されたスケジュール)が表示される。
なお、上記情報提供は、情報端末200からの要求に対して情報処理装置100が応答するプル方式を用いた例であるが、これに限らない。例えば情報処理装置100から情報端末200に対して能動的に情報提供を行うプッシュ方式を用いてもよい。この場合、情報提供は次のように行えばよい。例えば情報提供部13は、調整部12による調整処理の終了を検知した(調整部からの終了通知を受け付けた)タイミングで提供情報を送信する。なおこの場合、情報提供部13は、情報提供対象である情報端末200のネットワーク識別情報(IPアドレス:Internet Protocol address)と情報端末200を所有する利用者の利用者情報を管理しているものとする。また、上記プル方式と上記プッシュ方式のどちらの方式を用いるかは、本サービスの運用方針や情報提供時の通信負荷などを考慮して決定すればよい。
図3の説明に戻る。外部連携部21は、本サービスと外部サービスとを連携する機能部である。外部連携部21は、情報処理装置100と外部サービス提供サーバ300との間の通信(接続)を制御し、両サービス間で情報連携を行う。つまり、外部連携部21は、外部サービス接続制御部である。外部サービス提供サーバ300は、外部ネットワークIを介した通信(データアクセス)をサポートするインタフェース機能を有している。よって、外部連携部21は、上記インタフェース機能を介して、外部サービス提供サーバ300にアクセスする。これにより、編集部11や調整部12は、外部連携部21に対して、情報設定や情報取得(情報参照)などを要求することで、外部サービス提供サーバ300が保持する情報を更新したり、取得(参照)したりすることができる。
以上のように、本実施形態に係るスケジュール管理機能は、上記各機能部が連携動作することにより実現される。なお、上記各機能部は、情報処理装置100に搭載(インストール)されるプログラム(スケジュール管理機能を実現するソフトウェア)が、演算装置(CPU)により、記憶装置(「HDD」や「ROM」)からメモリ(RAM)上に読み出され、以下の処理が実行されることで実現される。
本実施形態に係るスケジュール管理機能の詳細な動作(機能部群の連携動作)について、処理手順を示すフローチャートを用いて説明する。
《スケジュール調整の基本処理》
図8は、本実施形態に係るスケジュールの調整処理手順例(その1)を示すフローチャートである。
図8に示すように、情報処理装置100では、調整部12により、イベントの開催予定や該イベントへの参加予定の変更(イベント情報や参加情報の変更)を検知すると、検知した変更種別を判定する(ステップS101)。
調整部12は、検知した変更を登録と判定した場合(ステップS101:[登録])、イベント情報80D・参加情報70Dが新規登録されたとして、登録に対するスケジュールの調整処理を行う(ステップS102)。登録時の調整処理の詳細については図9を用いて後述する。
次に、調整部12は、上記調整処理により、イベント情報80D・参加情報70Dが削除されたか否かを判定する(ステップS103)。
調整部12は、イベント情報80D・参加情報70Dが削除されたと判定した場合(ステップS103:YES)、削除されたイベント情報80D・参加情報70Dのイベント識別情報と一致するスケジュール情報90Dが存在するか否かを判定する(ステップS104)。このとき調整部12は、スケジュール情報保持部90にアクセスし、削除されたイベント情報80D・参加情報70Dのイベント識別情報に基づき、スケジュール情報90Dのイベント識別情報を参照する。これにより、調整部12は、一致するイベント識別情報を含むスケジュール情報90Dの特定結果に基づき、該当情報の存在を判定する。
調整部12は、一致するスケジュール情報90Dが存在すると判定した場合(ステップS104:YES)、イベント情報80D・参加情報70Dの削除により調整が必要なスケジュールが存在するとして、削除に対するスケジュールの調整処理を行う(ステップS105)。登録時の調整処理の詳細については図10を用いて後述する。
なお、調整部12は、イベント情報80D・参加情報70Dが削除されていないと判定した場合(ステップS103:NO)、上記ステップS104(削除時の調整要否判定),S105(削除時の調整)の処理をスキップする。
また、調整部12は、一致するスケジュール情報90Dが存在しないと判定した場合(ステップS104:NO)、イベント情報80D・参加情報70Dの削除により調整が必要なスケジュールが存在しないとして、上記ステップS105(削除時の調整)の処理をスキップする。
また、調整部12は、検知した変更を更新と判定した場合(ステップS106:[更新])、上記ステップS107(更新時の調整要否判定)の処理に移行し、上記ステップS102(登録時の調整)からS105(削除時の調整)の処理をスキップする。
次に、調整部12は、上記調整処理により、イベント情報80D・参加情報70Dが更新されたか否かを判定する(ステップS106)。
調整部12は、イベント情報80D・参加情報70Dが更新されたと判定した場合(ステップS106:YES)、更新されたイベント情報80D・参加情報70Dのイベント識別情報と一致するスケジュール情報90Dが存在するか否かを判定する(ステップS107)。
調整部12は、一致するスケジュール情報90Dが存在すると判定した場合(ステップS107:YES)、イベント情報80D・参加情報70Dの更新により調整が必要なスケジュールが存在するとして、更新に対するスケジュールの調整処理を行う(ステップS108)。更新時の調整処理の詳細については図9を用いて後述する。
なお、調整部12は、イベント情報80D・参加情報70Dが更新されていないと判定した場合(ステップS106:NO)、上記ステップS107(更新時の調整要否判定),S108(更新時の調整)の処理をスキップする。
また、調整部12は、一致するスケジュール情報90Dが存在しないと判定した場合(ステップS107:NO)、イベント情報80D・参加情報70Dの更新により調整が必要なスケジュールが存在しないとして、上記ステップS108(更新時の調整)の処理をスキップする。
最後に、調整部12は、上記スケジュールの調整に伴うイベント参加(イベント情報及び/又は参加情報)の調整処理を行う(ステップS109)。イベント参加の調整処理の詳細については図11を用いて後述する。
《新規登録/更新時のスケジュール調整処理》
図9は、本実施形態に係るスケジュールの調整処理手順例(その2)を示すフローチャートである。図9には、上記登録/更新時の調整処理の詳細について、その処理手順例が示されている。
図9に示すように、情報処理装置100は、調整部12により、編集部11からイベント情報80D・参加情報70Dの登録/更新の変更通知を受け付ける。このとき、調整部12は、変更通知として編集部11から、変更されたイベントのイベント識別情報を受け付ける。
調整部12は、変更通知を受け付けると、イベント情報保持部80・参加情報保持部70にアクセスし、受け付けたイベント識別情報に基づき、該当する(登録/更新された)イベント情報80D・参加情報70Dを取得する(ステップS201)。
次に、調整部12は、スケジュール情報保持部90にアクセスし、先に取得したイベント情報80D・参加情報70Dに基づき、変更されたイベントに対応するスケジュール情報90Dを生成する(ステップS202,S203)。このとき調整部12は、スケジュール情報90Dを参照し、受け取ったイベント識別情報を含む情報セット(既に登録済みの該当スケジュール情報)があるか否かを判定する。調整部12は、該当情報が存在しない場合、新規情報セットを生成し、情報項目値を記録・格納する。一方、調整部12は、該当情報が存在する場合、既存情報セットの情報項目値を更新する。
スケジュール情報90Dの情報項目値は、次のような情報を基に記録・格納又は更新される。スケジュール情報90Dの[行動日時]項目の値は、イベント情報80Dのイベント関連情報に含まれる[開始日時]/[終了日時]項目の値を基に記録・格納又は更新される。スケジュール情報90Dの[行動種別]項目の値は、イベント情報80Dのイベント関連情報に含まれる[開始日時]/[終了日時]項目に対応した"イベント参加"/"イベント離脱"の値を基に記録・格納又は更新される。スケジュール情報90Dの[イベント識別]項目の値は、受け取ったイベント識別情報を基に記録・格納又は更新される。
次に、調整部12は、生成したスケジュールに対して、調整が必要な他のスケジュールがあるか否かを判定する(重複行動の調整要否判定:ステップS204)。つまり、上記登録/更新に伴い調整が必要となった他のスケジュールがあるか否かを判断し、該当スケジュールがあった場合、所定の条件に従って、該当スケジュールを調整する。このとき調整部12は、登録/更新後のスケジュール情報90Dを参照し、参加者識別情報に基づき、同一参加者のスケジュール関連情報が複数存在するか否かを判断する。調整部12は、該当スケジュール関連情報が複数存在した場合、スケジュール関連情報に基づき、同時に2つ以上の行動(重複行動)が予定されているか否かを判断する。なお、このときの重複行動の判断は、あるイベントへの参入から離脱までの間に別のイベントの参入又は離脱の行動が予定されているか否か、ある移動開始から移動終了までの間に別の移動が予定されているか否か、で判断する。調整部12は、同時に2つ以上の行動が予定されていた場合、調整が必要なスケジュールがあると判定する。
調整部12は、調整が必要な他のスケジュールがあると判定した場合(ステップS204:YES)、該当スケジュールの中から、調整が必要な状態を解消するために削除(調整)するスケジュールを選択する(ステップS205)。このとき調整部12は、参加情報70Dを参照し、該当スケジュール情報90Dの参加者識別情報とスケジュール関連情報に含まれるイベント識別情報に基づき、イベントの参加者に対して設定されている参加優先度情報を特定する。調整部12は、特定した参加優先度情報に基づき、スケジュールが重複したイベントの優先度を比較し、優先度の低いイベントを特定する。調整部12は、特定したイベントのスケジュールを選択する。
その結果、調整部12は、選択したスケジュールのスケジュール情報90Dを削除する(ステップS206)。なおこのとき行う削除処理は、図10に示す削除時の調整処理である。
なお、調整部12は、調整が必要な他のスケジュールがないと判定した場合(ステップS204:NO)、上記ステップS205(調整対象の選択),S206(削除時の調整)の処理をスキップする。
このように、情報処理装置100では、スケジュール登録/更新に伴い重複状態にあるスケジュールを、調整が必要となったスケジュールとして特定する。その結果、情報処理装置100では、該当スケジュールのうち、優先度の低いイベントに関するスケジュールを削除し、優先度の高いイベントに関連するスケジュールを残す。つまり、本実施形態では、相対的に参加要求の弱いイベントに関するスケジュールを削除する調整を行う。
《削除時のスケジュール調整処理》
図10は、本実施形態に係るスケジュールの調整処理手順例(その3)を示すフローチャートである。図10には、上記削除時の調整処理の詳細について、その処理手順例が示されている。
図10に示すように、情報処理装置100は、調整部12により、スケジュール情報保持部90にアクセスし、削除対象として特定された該当スケジュール情報90Dを削除する(ステップS301)。このとき調整部12は、該当スケジュール情報90の情報項目値を一時保持する。
次に、調整部12は、イベント情報保持部80・参加情報保持部70にアクセスし、登録されたイベント情報80D・参加情報70Dを取得する(ステップS302)。このとき調整部12は、削除したスケジュールのイベント識別情報に基づき、参加情報70Dから、スケジュールが削除された参加者の利用者識別情報を削除する(参加設定を削除する)。
次に、調整部12は、スケジュールの削除により発生した空き日時に参加可能な(参加要求されている)イベントがあるか否かを判定する(空き日時の調整要否判定:ステップS303)。このとき調整部12は、削除後の参加情報70Dを参照し、参加者識別情報とイベント識別情報との対応関係から、削除したスケジュールの参加者が参加予定のイベントを特定する。調整部12は、イベント情報80Dを参照し、特定したイベントの開始・終了日時を特定する。調整部12は、一時保持している削除スケジュール情報90Dの情報項目値に基づき、特定した開始・終了日時の間(開催予定)に削除したスケジュールの行動日時が含まれるか否かを判断する。調整部12は、開始・終了日時の間に行動日時が含まれる場合、空き日時に参加可能なイベントがあると判定する。
調整部12は、空き日時に参加可能なイベントがあると判定した場合(ステップS303:YES)、判定されたイベントに対応するスケジュール情報90Dを登録又は更新する(ステップS304)。なおこのとき行う登録又は更新処理は、上述した図9に示す登録/更新時の調整処理である。このとき調整部12は、スケジュール情報保持部90にアクセスし、イベント情報80Dと参加情報70Dに基づき、該当イベントに対応するスケジュール情報90Dを登録する。
なお、調整部12は、空き日時に参加可能なイベントがないと判定した場合(ステップS303:NO)、上記ステップS304(登録/更新時の調整)の処理をスキップする。
このように、情報処理装置100では、スケジュール削除に伴い発生した空き日時に開催予定のイベントを、参加可能なイベントとして特定する。その結果、情報処理装置100では、該当イベントに関するスケジュールを登録又は更新する。つまり、本実施形態では、空き日時に参加可能なイベントに関するスケジュールを登録又は更新する調整を行う。
《スケジュール調整後のイベント調整処理(相互処理)》
図11は、本実施形態に係るイベント参加の調整処理手順例を示すフローチャートである。図11には、上記イベント参加の調整処理の詳細について、その処理手順例が示されている。
図11に示すように、情報処理装置100は、調整部12により、登録/更新/削除されたスケジュール情報90Dの情報項目値を取得する(ステップS401)。
次に、調整部12は、取得した行動識別情報に基づき、取得したスケジュールをグルーピングする(ステップS402)。このとき調整部12は、[行動識別]項目の値が"イベント参加"であるスケジュール情報90Dのイベント識別情報でグルーピングし、同一識別情報ごとに分類する。
次に、調整部12は、イベント情報保持部80にアクセスし、グルーピング(分類)されたイベント識別情報に基づき、該当イベント(登録/更新/削除されたスケジュールに関連するイベント)のイベント情報80Dを取得する(ステップS403)。
次に、調整部12は、該当イベントが参加可否の開催条件を満たしているか否かを判定する(イベント参加の調整要否判定:ステップS404)。このとき調整部12は、参加情報保持部70にアクセスし、取得したイベント情報80Dのイベント識別情報に基づき、該当参加情報70Dを特定する。調整部12は、特定した参加情報70Dの参加優先度情報に基づき、優先度に「参加しない」を表す所定値が設定されているか否かを開催条件として判断する。
調整部12は、優先度が所定値以上の「参加必須」・「参加可能」設定でない場合(優先度が所定値未満の「参加しない」設定の場合)、該当イベントが開催条件を満たさないイベントと判定する。
調整部12は、開催条件を満たさないイベントと判定した場合(ステップS404:NO)、該当イベントのイベント情報80Dの更新内容を決定する(ステップS405)。このとき調整部12は、開催条件を満たさなかったイベントのイベント関連情報に含まれる開始・終了日時に、別の日時を設定する内容を更新内容として決定する。また、調整部12は、参加情報70Dの参加者識別に、更新イベントへの参加を要求する利用者(参加希望者)の利用者識別情報を設定する内容を更新内容として決定する。
次に、調整部12は、更新内容が決定できたか否かを判定する(ステップS406)。
その結果、調整部12は、更新内容が決定できたと判定した場合(ステップS406:YES)、決定した更新内容に従って、該当イベントのイベント情報80Dを更新する(ステップS407)。このとき調整部12は、イベント情報保持部80にアクセスし、開催条件判定時に特定したイベントのイベント識別情報に基づき、登録済みの該当イベント情報80Dを参照する。調整部12は、決定した更新内容(日時情報)に従って、イベント情報80Dの情報項目値([開始日時]/[終了日時]の項目値)を更新する。
次に、調整部12は、決定した更新内容に従って、該当イベントの参加情報70Dを更新する(ステップS408)。このとき調整部12は、参加情報保持部70にアクセスし、開催条件判定時に特定したイベントのイベント識別情報に基づき、登録済みの該当参加情報70Dを参照する。調整部12は、決定した更新内容(参加要求情報)に従って、参加情報70Dの情報項目値([参加者識別]の項目値)を更新する。
一方、調整部12は、更新内容が決定できなかったと判定した場合(ステップS406:NO)、該当イベントのイベント情報80Dを削除する(ステップS409)。このとき調整部12は、イベント情報保持部80にアクセスし、開催条件判定時に特定したイベントのイベント識別情報に基づき、登録済みの該当イベント情報80Dを削除する。
次に、調整部12は、該当イベントの参加情報70Dを削除する(ステップS410)。このとき調整部12は、参加情報保持部70にアクセスし、開催条件判定時に特定したイベントのイベント識別情報に基づき、登録済みの該当参加情報70Dを削除する。
なお、調整部12は、開催条件を満たすイベントと判定した場合(ステップS404:YES)、上記ステップS407,S408(イベント参加の更新)及びS409,S410(イベント参加の削除)の処理をスキップする。
最後に、調整部12は、グルーピングした全てのグループに対して上記処理を実行したか否かを判定し(ステップS411)、全てのグループに対して処理されるまで繰り返す(ステップS403の処理に移行する)。
このように、情報処理装置100では、所定の開催条件に従って、スケジュール登録/更新/削除に伴い調整が必要となったイベントを特定する。その結果、情報処理装置100では、該当イベントと該イベントに関する参加予定の更新内容を決定し、決定した更新内容に従って更新又は削除する。つまり、本実施形態では、スケジュール調整に連動して、関連するイベント及び参加予定についても調整を行う。
以上のように、情報処理装置100は、各情報70D,80D,90Dの変更を検知することで、調整の必要性を判断する。情報処理装置100は、判断結果に基づき、開催予定のイベントと該イベントに参加する利用者のスケジュールを相互に調整し、調整の必要性がなくなるまで(利用者がイベントに参加可能か、又は、イベントが削除されるか、のどちらかに該当するまで)調整処理を繰り返す。その結果、本実施形態能では、イベント関係者全てのスケジュールが最適化される。
《スケジュール調整の動作例》
図12,13は、本実施形態に係るスケジュールの調整動作例(その1,2)を示す図である。図12には、調整前の動作例、図13には、調整後の動作例が示されている。
図12(A)には、ある利用者のスケジュールが示されている。このとき、同図(B)に示すように、イベントF,Gの開催予定が新規登録され、これらのイベントを登録した主催者から当該利用者に対して参加が要求されたとする。
この場合、図13(A)に示すように、参加者(当該利用者)のスケジュールには、イベントF,Gの開催予定と重複するイベントA,Dが存在することになる。そこで、本実施形態では、イベントFとイベントAそれぞれに設定された優先度を比較し、優先度の高いイベントを特定する。また、イベントGとイベントDそれぞれに設定された優先度を比較し、優先度の高いイベントを特定する。その結果、イベントFとイベントAとの比較では、イベントAの方がイベントFより優先度が高い結果、また、イベントGとイベントDとの比較では、イベントGの方がイベントFより優先度が高い結果が得られたとする。
この場合、同図(B)に示すように、参加者のスケジュールには、優先度の高いイベントAの開催予定が残り、イベントDの開催予定が削除され、イベントGの開催予定が反映される。また、参加者のスケジュールから、イベントDの開催予定が削除されたことを受けて、削除による空き日時に参加可能なイベントEの開催予定がさらに反映される。
<まとめ>
以上のように、本実施形態に係る情報処理装置100によれば、編集部11が、イベントの開催予定や該イベントへの参加予定の変更を受け付ける。情報処理装置100は、調整部12が、イベントの開催予定や該イベントへの参加予定の変更を検知すると、所定の条件に従って、開催予定のイベントと該イベントに参加する利用者のスケジュールを相互に調整し、関係者全てのスケジュールを最適化する。その結果、情報処理装置100は、情報提供部13が、利用者からの情報提供要求に従って、最適化されたスケジュールを利用者に提供する。
これによって、本実施形態に係る情報処理装置100は、予定に変更が生じたイベントに参加予定の関係者全てのスケジュールが最適化される環境を提供できる。その結果、本実施形態に係る情報処理装置100では、利用者に対して最適なスケジュールを提案できる。
ここまで、上記実施形態の説明を行ってきたが、上記実施形態に係る「スケジュール管理機能」は、図を用いて説明を行った各処理手順を、動作環境(プラットフォーム)にあったプログラミング言語でコード化したプログラムが、情報処理装置100が備える演算装置(CPU)により実行されることで実現される。
上記プログラムは、コンピュータが読み取り可能な記録媒体103aに格納することができる。これにより、例えば上記プログラムは、外部I/F103を介して、情報処理装置100にインストールすることができる。また、情報処理装置100は、通信I/F107を備えていることから、電気通信回線を用いて上記プログラムをダウンロードし、インストールすることもできる。
[変形例]
また、上記実施形態では、情報処理装置100が各情報保持部90,80,70を有する構成例について説明を行ったが、この限りでない。
図14は、本変形例に係るスケジュール管理の機能構成例を示す図である。
例えば図14に示すような構成であってもよい。図14には、外部サービス提供サーバ300が各情報保持部90,80,70を有する構成例が示されている。この場合、情報処理装置100は、外部連携部21を介して、外部サービス提供サーバ300が有する各情報保持部90,80,70にアクセスし、各情報90D,80D,70Dの変更状況を確認し、確認結果に基づき、情報変更を検知する仕組みとすることで、上記実施形態で説明を行った調整処理を実現する。このように、本変形例では、例えば利用者が使い慣れた既存サービスとの連携が可能であり、利便性や汎用性の高いスケジュール管理サービスを提供することができる。
最後に、上記実施形態に挙げた形状や構成に、その他の要素との組み合わせなど、ここで示した要件に、本発明が限定されるものではない。これらの点に関しては、本発明の主旨をそこなわない範囲で変更することが可能であり、その応用形態に応じて適切に定めることができる。