(58)【調査した分野】(Int.Cl.,DB名)
前記リストを表示している前記端末からの問合せに応じて、該端末が前記リストを表示している間に該リストが他の端末により更新されたか否かを判定する状況判定部をさらに備え、
前記リストが前記他の端末により更新されたと判定された場合に、前記位置判定部が、更新後のリスト内で前記少なくとも一つの項目が移動できる位置を新たに判定し、
前記送信部が、前記更新後のリストと、前記位置判定部による新たな判定結果を示す新たな位置情報とを前記端末に送信する、
請求項1〜4のいずれか一項に記載のサーバ。
複数の項目の集合を含むリストを表示している端末上で少なくとも一つの前記項目が選択されたことを検知し、該少なくとも一つの項目を示す選択情報をサーバに送信する検知部と、
前記選択情報に応じて前記サーバから送信された位置情報を受信し、該位置情報に基づいて、前記リスト内で前記少なくとも一つの項目が移動できる位置と移動できない位置とを、該少なくとも一つの項目の移動が完了する前の任意の時点において区別して表示する表示制御部と、
としてコンピュータを機能させ、
前記サーバが、前記複数の項目の順序に関する制約を示す制約情報を記憶する記憶部であって、前記制約が、前記選択された少なくとも一つの項目と、前記リストに含まれかつ前記端末上で選択されていない前記項目との組合せに応じて定められる、項目の順序に関する制約を含む、該記憶部を参照して、前記リスト内で前記少なくとも一つの項目が移動できる位置を判定し、前記位置情報が前記判定の結果を示す、
表示制御プログラム。
【発明を実施するための形態】
【0011】
以下、添付図面を参照しながら本発明の実施形態を詳細に説明する。なお、図面の説明において同一又は同等の要素には同一の符号を付し、重複する説明を省略する。
【0012】
(第1実施形態)
本実施形態では、本発明に係るサーバをリスト管理システム1に適用する。
図1〜
図6を用いて、第1実施形態に係るリスト管理システム1の機能および構成を説明する。リスト管理システム1は、ユーザがリスト内の項目の順序を変更する操作を補助するコンピュータシステムである。本実施形態において、ユーザは、端末上に表示されたリストに含まれる複数の項目の順序を変更することができる。ただし、リストには項目の順序に関する制約が予め設定されているので、ユーザは項目の順序を全く自由に変えることはできず、制約を満たす場合にのみ項目の順序を変更することができる。順序変更の利便性を図るために、リスト管理システム1は、ユーザがある項目の順序を変更する操作を行おうとする際に、その項目をどこに動かすことができるかをリアルタイムにユーザに提示する。
【0013】
「ユーザ」とは、端末を操作して項目の順序を設定する人である。ユーザは端末の所有者であってもよいし所有者でなくてもよい。
【0014】
「リスト」とは、複数の項目の集合を含む情報またはデータである。「項目」とは、そのリスト内の個々の要素である。リスト内の個々の項目には順序の初期値が予め設定され、複数の項目はその順序に従ってリスト内で一列に並ぶ。ユーザはその順序を変更することができる。「順序」とは、リスト内における項目の並びを示す数値であり、順序の意味は限定されないが、例えば、表示順であったり、入力の受付の順序であったりし得る。
【0015】
「順序を変更する」とは、リスト内の項目を並べ替える処理である。順序を変更する操作の方法は限定されない。例えば、順序を変更しようとする項目を選択してその項目を移動先まで動かし、その移動先で選択操作を解除する操作であるドラッグ・アンド・ドロップを採用してもよい。あるいは、順序を変更しようとする項目を選択してその次に移動先の位置を選択する操作を採用してもよい。項目が移動できる位置は、リストの先頭の項目の前、リスト内の項目と項目との間、およびリストの最後尾の項目の後ろのうちのいずれかである。複数の項目はリスト内で一列に並ぶので、項目が移動できる位置は、リストの先頭から最後尾へと延びる一つの仮想的な軸に沿って設定される、ということもできる。
【0016】
図1は操作の補助の一例を示す。この例は、7個の項目A〜Gから成るリスト90で項目Eが選択されてドラッグされ始めたときに、その項目Eが移動可能な位置が所定の色の太線91で表示されることを示す(
図1の真ん中を参照)。この表示処理により、ユーザは項目Eを項目Cと項目Dとの間、項目Fと項目Gとの間、または項目Gの後ろに移せることを知ることができる。すなわち、ユーザは項目Eの順序を5番目から4番目、6番目、または7番目に変更できることを知ることができる。見方を変えれば、ユーザは項目Eの順序を1番目、2番目、および3番目に変更できないことを知ることができる。
図1は、ユーザが太線91の案内により項目Eを項目Gの後ろまでドラッグしてそこで選択を解除(ドロップ)したことで、項目Eが7番目の位置に移ったことを示す(
図1の右端を参照)。
【0017】
図2に示すように、リスト管理システム1は端末10、サーバ20、およびデータベース群30を備える。端末10とサーバ20とはインターネットやイントラネットなどの通信ネットワークを介して接続される。サーバ20はデータベース群30と通信接続する。
【0018】
端末10は、ユーザが操作するコンピュータである。端末10の種類は限定されず、例えば、端末10は据置型または携帯型のパーソナルコンピュータ(PC)でもよいし、高機能携帯電話機(スマートフォン)や携帯電話機、携帯情報端末(PDA)などの携帯端末でもよい。
図2では端末10を一つのみ示すが、リスト管理システム1は複数の端末10を備えてもよい。
【0019】
サーバ20は、項目が移動可能な位置を示す情報を端末10に提供するコンピュータである。サーバ20は一般に、端末10よりも高い処理能力を備え、また、複数台のコンピュータにより構成されることがあるが、サーバ20の性能および構成はこれに限定されるものではない。
【0020】
データベース群30は、リスト管理システム1での処理に必要なデータを記憶するデータベース(記憶装置)の集合である。
【0021】
端末10およびサーバ20として機能するコンピュータ100の一般的なハードウェア構成を
図3に示す。コンピュータ100は、オペレーティングシステムやアプリケーション・プログラムなどを実行するプロセッサ(例えばCPU)101と、ROMおよびRAMで構成される主記憶部102と、ハードディスクやフラッシュメモリなどで構成される補助記憶部103と、ネットワークカードあるいは無線通信モジュールで構成される通信制御部104と、キーボード、マウス、タッチパネルなどの入力装置105と、モニタやタッチパネルなどの出力装置106とを備える。当然ながら、搭載されるハードウェアモジュールはコンピュータ100の種類により異なる。例えば、据置型のPCは入力装置および出力装置としてキーボード、マウス、およびモニタを備えることが多いが、スマートフォンはタッチパネルが入力装置および出力装置として機能することが多い。
【0022】
後述するリスト管理システム1の各機能要素は、プロセッサ101または主記憶部102の上に所定のソフトウェアを読み込ませ、プロセッサ101の制御の下で通信制御部104や入力装置105、出力装置106などを動作させ、主記憶部102または補助記憶部103におけるデータの読み出し及び書き込みを行うことで実現される。処理に必要なデータやデータベースは主記憶部102または補助記憶部103内に格納される。
【0023】
端末10およびサーバ20の各機能要素を説明する前に、リスト管理システム1で参照されるデータベース群30について説明する。
図2に示すように、データベース群30はリストデータベース31および制約データベース32を含む。
【0024】
リストデータベース31は、リストデータを記憶するデータベースである。リストデータは、ユーザの操作の対象となるリストを示すデータである。少なくとも一つのリストについてのリストデータは、リスト管理システム1の管理者によりリストデータベース31に予め登録される。
【0025】
リストデータの例を
図4に示す。本実施形態では、リストデータの項目は、リストIDと、項目のID、内容、および順序と、更新日時とを含む。リストIDはリストの識別子である。項目IDは項目の識別子である。項目の内容とは、ユーザが何らかの意味を認識することができる情報である。項目の順序は、リスト内での順序を意味する。リストおよび項目が示す意味は何ら限定されないが、本実施形態では、一つのリストが一つのアンケートに対応し、リスト内の個々の項目がそのアンケートに含まれる質問に対応するものとする。更新日時は、リストデータが最後に更新された日時である。
図4から、リストID「01」で識別されるリスト(アンケート)が、項目ID「0101」〜「0108」で識別される8項目(8個の質問A1〜A8)から成り、2014年11月15日11時30分に更新されたことがわかる。また、その8個の質問が先頭から、質問A1、質問A2、質問A3、質問A4、質問A5、質問A6、質問A7、質問A8という順序で並ぶこともわかる。
【0026】
制約データベース32は、制約情報を記憶するデータベースである。制約情報は、リスト内の複数の項目の順序に関する制約を示す情報である。「順序に関する制約」とは、リスト内の個々の項目の順序を変更する条件であり、リスト内で項目を並び替える際に個々の項目をどこに移動できるか、またはどこに移動できないかを規定する。制約情報の項目は、リストIDと、順序に関する制約とを含み、一つのリストIDに対して1以上の制約が関連付けられる。制約情報は、リスト管理システム1の管理者により制約データベース32に予め登録される。
【0027】
制約情報の例を
図5に示す。
図5から、リストID「01」で識別されるリストが4個の制約を有し、リストID「02」で識別されるリストが2個の制約を有することがわかる。リスト「01」に関する制約の一つである「質問A4,A5,A6は一つのグループである」とは、これら質問A4,A5,A6が連続して並ばなければならないことを示すグループ制約である。ただし、グループ内(例えば、質問A4,A5,A6から成るグループ)での質問の順序関係は、これに関する追加の制約がない限り任意である。なお、制約の内容は
図5の例に限定されず、例えば、「質問Xは質問Yよりも前でなければならない」や「質問Zはどこにでも移動できる」というような制約が設定されてもよい。
【0028】
次に、端末10の機能構成を説明する。
図2に示すように、端末10は機能的構成要素としてリスト取得部11、検知部12、表示制御部13、およびリスト変更部14を備える。これらの機能要素は、端末10のプロセッサ101が、インストールまたはダウンロードされたクライアントプログラム(表示制御プログラム)P1を実行することで実現される。
【0029】
リスト取得部11は、ユーザの操作の対象となるリストデータをサーバ20から取得する機能要素である。リスト取得部11は、例えば、プロセッサ101がクライアントプログラムP1を実行して主記憶部102、通信制御部104、および出力装置106を制御することで実現される。
【0030】
ユーザが、リストを含む画面(例えばウェブページ)を端末10上に表示させるための操作を行うと、リスト取得部11は、リストデータを取得するためのリスト要求を生成してそのリスト要求をサーバ20に送信し、その要求に応じてサーバ20から送られてきたリストデータを受信する。そして、リスト取得部11はそのリストデータを端末10上に表示する。これにより、ユーザは各項目が指定の順番に従って並んだリストを視認できる。
図4に示す例を前提として、リスト取得部11はリストID「01」を含むリスト要求を生成および送信することで、質問A1〜A8を含むリストデータを取得し、その質問A1〜A8が指定された順序に従って並んだリストを表示する。
【0031】
検知部12は、端末10に表示されたリストのうちの少なくとも一つの項目が移動対象(すなわち、順番を変更する対象)として選択された場合に、該少なくとも一つの項目を特定する機能要素である。検知部12は、例えば、プロセッサ101がクライアントプログラムP1を実行して主記憶部102および入力装置105を制御することで実現される。本明細書では、移動対象として選択された項目を「被選択項目」ともいう。
【0032】
検知部12は、移動対象として選択された項目の項目IDを取得することで被選択項目を特定する。検知部12が被選択項目を特定(検知)するタイミングは限定されない。例えば、検知部12はユーザがドラッグ操作を開始した時点(ユーザが項目を選択した時点ではなくその項目を動かし始めた時点)で被選択項目を特定(検知)してもよい。あるいは、検知部12はユーザが項目を選択した時点で被選択項目を特定(検知)してもよいし、該選択後にユーザが「移動」というメニューを指定した時点で被選択項目を特定(検知)してもよい。
【0033】
検知部12は、少なくとも一つの被選択項目の項目IDを取得すると、その項目IDの集合とリストIDとを含む選択情報を生成し、この選択情報をサーバ20に送信する。選択情報は、リストを表示している端末10上で選択された少なくとも一つの項目を示す情報である。
【0034】
表示制御部13は、被選択項目の移動が完了する前の任意の時点において、被選択項目が移動可能な位置を端末10上に表示する機能要素である。表示制御部13は、例えば、プロセッサ101がクライアントプログラムP1を実行して主記憶部102、通信制御部104、および出力装置106を制御することで実現される。
【0035】
表示制御部13は、検知部12により送信された選択情報に応じてサーバ20から送られてきた位置情報を受信する。この位置情報は、被選択項目がどこに移動できるかの判定結果を示す情報であり、これにより、端末10は移動可能な位置と移動できない位置とを特定することができる。位置情報は、被選択項目が移動可能な位置を示してもよいし、被選択項目が移動できない位置を示してもよいし、これら2種類の位置の双方を示してもよい。本実施形態では、位置情報は被選択項目が移動可能な位置を示すものとする。被選択項目が移動可能な位置は、先頭の項目の前、項目と項目との間、および最後尾の項目の後ろのうちのどこかに設定され得る。例えば、
図6に示すように、リストID「01」に対応するリスト92(質問A1〜A8)が端末10上に表示されているならば、被選択項目の移動可能な位置は位置L
a0,L
a1,…,L
a8のどこかであり得る。
【0036】
表示制御部13は、被選択項目の移動が完了する前の任意の時点に、被選択項目が移動できる位置(可能な移動先)とそれが移動できない位置(不可能な移動先)とを区別して表示する。
【0037】
「区別して表示する」とは、被選択項目が移動できる位置の表示態様と、被選択項目が移動できない位置の表示態様とを異ならせることを意味する。あるいは、「区別して表示する」とは、ユーザが、被選択項目が移動できる位置と、被選択項目が移動できない位置とを認識できるように各位置を表示することを意味する。
【0038】
「被選択項目の移動が完了する前」とは、ユーザの操作により被選択項目の移動先が指定される前までの時間範囲を意味する。例えば、ユーザがドラッグ・アンド・ドロップで少なくとも一つの項目を移動させる場合には、ドロップ操作が行われる前までの時間範囲が、「被選択項目の移動が完了する前」を意味する。
【0039】
「任意の時点」とは、被選択項目が移動できる位置とそれが移動できない位置とを区別して表示する時間範囲が、被選択項目の移動が完了する前であればいつでもよいことを意味する。例えば、表示制御部13は被選択項目の移動が完了する前において間断なく、被選択項目が移動できる位置とそれが移動できない位置とを区別して表示してもよい。あるいは、表示制御部13は被選択項目の移動が完了する前までの時間範囲の一部でのみ、被選択項目が移動できる位置とそれが移動できない位置とを区別して表示してもよい。あるいは、表示制御部13は、ユーザが被選択項目を移動することなくその選択を解除した場合に、その解除操作の前までの任意の時点において、被選択項目が移動できる位置とそれが移動できない位置とを区別して表示してもよい。この「解除操作の前までの任意の時点」も、「被選択項目の移動が完了する前の任意の時点」という概念に含まれる。
【0040】
本実施形態では、表示制御部13は位置情報で示される位置(移動可能な位置)を所定の色の太線で表示し、位置情報で示されない位置(移動できない位置)の表示を初期状態のままに維持することで、これら2種類の位置を区別して表示する。
図6の例では、移動可能な位置L
a3,L
a4が太線91で表され、移動不可能な位置L
a0〜L
a2およびL
a5〜L
a8が、初期状態である、単なる区切り線で表されている。リスト92が
図6の状態である場合にユーザが被選択項目を位置L
a3,L
a4のいずれかに移した場合には、被選択項目がその移動先に移り、この移動に従って、他の項目の表示位置が変わる。これに対して、ユーザが被選択項目を位置L
a0〜L
a2およびL
a5〜L
a8のいずれかに移そうとした場合には、その移動が行われることなく、リストは項目が移動対象として選択される前の状態に戻る。
【0041】
なお、移動可能な位置および移動できない位置の表示方法は限定されない。例えば、表示制御部13は移動できない位置を太線で表示し、移動可能な位置の表示を初期状態のままに維持してもよい。あるいは、表示制御部13は文字または記号を用いてそれら2種類の位置の表示態様を異ならせてもよい。
【0042】
リスト変更部14は、ユーザの操作により項目が並び替えられたリストの情報を変更情報としてサーバ20に送信する機能要素である。この送信に応じてサーバ20がリストデータを更新することで、項目の並び替えが確定する。リスト変更部14は、例えば、プロセッサ101がクライアントプログラムP1を実行して主記憶部102および通信制御部104を制御することで実現される。
【0043】
変更情報は、リスト内の変更後の各項目の順序を示す情報である。例えば、リストID「01」のリストにおける変更後の並び順が先頭から質問A2,質問A1,質問A3,質問A4,質問A5,質問A6,質問A8,質問A7であるとする。この場合には、変更情報は、質問A1,質問A2,質問A3,質問A4,質問A5,質問A6,質問A7,質問A8の順序がそれぞれ2,1,3,4,5,6,8,7であることを示す。
【0044】
リスト変更部14が変更情報を送信するタイミングは限定されないが、一例として、リスト変更部14は一回の操作が完了する度に変更情報を送信してもよい。ここで、「一回の操作」とは、少なくとも一つの項目が移動対象として選択されて、その被選択項目の移動先(
図6の例では、位置L
a3およびL
a4のいずれか一つ)が指定される(すなわち、被選択項目が移動先に移る)ことを意味する。一回の操作が完了する度に変更情報を送信する場合には、リスト変更部14は変更情報に応じてサーバ20から送られてくる完了通知を受信することで、変更後の順序がリストデータベース31に登録されたことを認識し、変更後のリストをそのまま表示し続ける。完了通知は、ユーザの操作に従って実行された順序の変更が確定したことを示すデータである。
【0045】
次に、サーバ20の機能構成を説明する。
図2に示すように、サーバ20は機能的構成要素としてリスト提供部21、受信部22、位置判定部23、送信部24、およびリスト更新部25を備える。これらの機能要素は、サーバ20のプロセッサ101が、予めインストールされたサーバプログラムP2を実行することで実現される。
【0046】
リスト提供部21は、リストデータを端末10に提供する機能要素である。リスト提供部21は、例えば、プロセッサ101がサーバプログラムP2を実行して主記憶部102および通信制御部104を制御することで実現される。
【0047】
端末10からリスト要求を受信すると、リスト提供部21はその要求に含まれるリストIDに対応するリストデータをリストデータベース31から読み出し、そのリストデータを端末10に送信する。
図4に示す例を前提として、リストID「01」を含むリスト要求を受信した場合には、リスト提供部21は質問A1〜A8を含むリストデータを取得し、そのリストデータを端末10に送信する。
【0048】
受信部22は、選択情報を端末10から受信する機能要素である。受信部22は、例えば、プロセッサ101がサーバプログラムP2を実行して主記憶部102および通信制御部104を制御することで実現される。受信部22は選択情報を位置判定部23に出力する。
【0049】
位置判定部23は、制約データベース32を参照して、選択情報で示される被選択項目が移動できる位置を判定する機能要素である。受信部22は、例えば、プロセッサ101がサーバプログラムP2を実行して主記憶部102および通信制御部104を制御することで実現される。
【0050】
位置判定部23は制約データベース32にアクセスして、選択情報に含まれるリストIDに対応する制約情報を参照する。また、位置判定部23はリストデータベース31にアクセスして、そのリストIDに対応するリスト内の現在の順序を参照する。そして、位置判定部23はこれらの情報に基づいて、選択情報に含まれる各項目IDについて移動可能な位置を判定する。そして、位置判定部23はその判定結果(本実施形態では、移動可能な位置)を示す位置情報を生成し、その位置情報を送信部24に出力する。選択情報が一つの項目IDのみを含む場合には、位置判定部23はその項目IDに対応する移動可能な位置を示す位置情報を生成する。選択情報が少なくとも二つの項目IDを含む場合には、位置判定部23はそのすべての項目IDに共通の移動可能な位置を示す位置情報を生成する。もし、移動可能な位置が存在しない場合には、位置判定部23は空値(null)を位置情報として設定する。なお、被選択項目の境界に相当する位置に該項目を移動しても項目の順序は変わらないから、位置判定部23はそのような位置を移動可能な位置とは判定しない。位置判定部23は生成した位置情報を送信部24に出力する。
【0051】
図4および
図5の例と、
図6に示される質問の並び順および位置L
a0〜L
a8とを前提として、リストID「01」に対する位置情報の例を以下に示す。
【0052】
選択情報に含まれる項目IDが「0101」のみである場合、質問A1の移動に関する制約として、「質問A7は質問A1および質問A2よりも後ろでなければならない。」および「質問A4,A5,A6は一つのグループである。」が存在する。すなわち、質問A1は質問A7よりも前でなければならず、且つ質問A4〜A6の並びの間に入ることができない。したがって、位置判定部23は位置L
a2,L
a3,L
a6が移動可能な位置であると判定する。位置L
a0,L
a1は質問A1の境界に相当するから、位置判定部23はこの二つの位置を移動可能な位置とは判定しない(この判定は当然のことなので、以下では被選択項目の境界に相当する位置に関する説明を省略する)。
【0053】
選択情報に含まれる項目IDが「0102」のみである場合、質問A2の移動に関する制約として、「質問A3は質問A2よりも後ろでなければならない。」、「質問A7は質問A1および質問A2よりも後ろでなければならない。」および「質問A4,A5,A6は一つのグループである。」が存在する。すなわち、質問A2は質問A3よりも前でなければならず、質問A7よりも前でなければならず、且つ。質問A4〜A6の並びの間に入ることができない。したがって、位置判定部23は位置L
a0のみが移動可能な位置であると判定する。
【0054】
選択情報に含まれる項目IDが「0103」のみである場合、質問A3の移動に関する制約として、「質問A3は質問A2よりも後ろでなければならない。」、「質問A4は質問A3よりも後ろでなければならない。」、および「質問A4,A5,A6は一つのグループである。」が存在する。すなわち、質問A3は質問A2よりも後ろでなければならず、質問A4よりも前でなければならず、且つ質問A4〜A6の並びの間に入ることができない。したがって、位置判定部23は移動可能な位置が存在しないと判定する。
【0055】
選択情報に含まれる項目IDが「0104」のみである場合、質問A4の移動に関する制約として「質問A4は質問A3よりも後ろでなければならない。」および「質問A4,A5,A6は一つのグループである。」が存在する。すなわち、質問A4は質問A3よりも後ろでなければならず、且つ移動後も質問A5,A6と共に並ばなければならない。したがって、位置判定部23は位置L
a5,L
a6が移動可能な位置であると判定する。
【0056】
選択情報に含まれる項目IDが「0105」のみである場合、質問A5の移動に関する制約として「質問A4,A5,A6は一つのグループである。」が存在する。すなわち、質問A5は移動後も質問A4,A6と共に並ばなければならない。したがって、位置判定部23は位置L
a3,L
a6が移動可能な位置であると判定する。
【0057】
選択情報に含まれる項目IDが「0106」のみである場合、質問A6の移動に関する制約として「質問A4,A5,A6は一つのグループである。」が存在する。すなわち、質問A6は移動後も質問A4,A5と共に並ばなければならない。したがって、位置判定部23は位置L
a3,L
a4が移動可能な位置であると判定する。なお、この場合には、端末10上でリストが
図6に示すように表示される。
【0058】
選択情報に含まれる項目IDが「0107」のみである場合、質問A7の移動に関する制約として、「質問A7は質問A1および質問A2よりも後ろでなければならない。」および「質問A4,A5,A6は一つのグループである。」が存在する。すなわち、質問A7は質問A1および質問A2よりも後ろでなければならず、且つ質問A4〜A6の並びの間に入ることができない。したがって、位置判定部23は位置L
a2,L
a3,L
a8が移動可能な位置であると判定する。
【0059】
選択情報に含まれる項目IDが「0108」のみである場合、質問A8の移動に関する制約として「質問A4,A5,A6は一つのグループである。」が存在する。すなわち、質問A8は質問A4〜A6の並びの間に入ることができない。したがって、位置判定部23は位置L
a0〜L
a3,L
a6が移動可能な位置であると判定する。
【0060】
選択情報に含まれる項目IDが「0101」および「0102」である場合、上述した通り、質問A1は位置L
a2,L
a3,L
a6に移動可能であり、質問A2は位置L
a0にのみ移動可能である。したがって、位置判定部23は質問A1,A2に共通の移動可能な位置は存在しないと判定する。
【0061】
選択情報に含まれる項目IDが「0101」および「0107」である場合、質問A1は位置L
a2,L
a3,L
a6に移動可能であり、質問A7は位置L
a2,L
a3,L
a8に移動可能である。したがって、位置判定部23は質問A1,A7に共通の移動可能な位置が位置L
a2,L
a3であると判定する。ただし、質問A1,A7に関する制約として「質問A7は質問A1および質問A2よりも後ろでなければならない。」が存在する。したがって、位置判定部23は、移動可能な位置L
a2,L
a3において質問A7を質問A1よりも後ろに置くと判定する。すなわち、位置判定部23は複数の被選択項目の位置を少なくとも一つの共通の位置に変更できると判定した場合には、さらに、該共通の位置での該複数の被選択項目の順序を制約情報に基づいて判定する。
【0062】
選択情報に含まれる項目IDが「0101」および「0104」である場合、質問A1は位置L
a2,L
a3,L
a6に移動可能であり、質問A4は位置L
a5,L
a6に移動可能である。したがって、位置判定部23は質問A1,A4に共通の移動可能な位置が位置L
a6であると判定する。ただし、質問A1,A4に関する制約として「質問A4,A5,A6は一つのグループである。」が存在する。したがって、位置判定部23は、移動可能な位置L
a6において、質問A1が質問A4〜A6の並びの間に入らないように質問A1を質問A4よりも後ろに置くと判定する。
【0063】
このように、位置判定部23は、複数の被選択項目の位置を少なくとも一つの共通の位置に変更できると判定した場合には、さらに、該少なくとも一つの共通の位置のそれぞれにおける該複数の被選択項目の順序を制約情報を参照して判定する。位置判定部23は、選択情報が3個以上の項目IDを含む場合も、選択情報が2個の項目IDを含む場合と同様に、複数の被選択項目が移動可能な位置を判定し、その位置における該複数の被選択項目の順序を制約情報に基づいて判定する。
【0064】
送信部24は、被選択項目が移動できる位置と移動できない位置とを端末10上で区別して表示させるために、位置判定部23から入力された位置情報を端末10に送信する機能要素である。送信部24は、例えば、プロセッサ101がサーバプログラムP2を実行して主記憶部102および通信制御部104を制御することで実現される。位置情報は、端末10から送られてきた選択情報に対する応答であるといえる。上述したように、端末10の表示制御部13はその位置情報に基づいて、移動可能な位置に太線を描画する(
図1における太線91を参照)。
【0065】
リスト更新部25は、ユーザの操作による項目の並び替えを確定させる機能要素である。リスト更新部25は、例えば、プロセッサ101がサーバプログラムP2を実行して主記憶部102および通信制御部104を制御することで実現される。
【0066】
リスト更新部25は、端末10から受信した変更情報で示されるリストIDに対応する、リストデータベース31内のリストデータを更新する。この更新により、リスト内のいくつかの項目の順序が変わるとともに、更新日時が現在日時で上書きされる。ここで、「リストデータの更新」とは、リストデータベース31内の処理対象の値を新たな値で上書きする処理であり、この更新の前後で値が変わる場合もあれば変わらない場合もあり得る。例えば、リストID「01」のリストデータの初期値が
図4に示す通りであり、変更情報が、順序が「先頭から質問A2,質問A1,質問A3,質問A4,質問A5,質問A6,質問A8,質問A7」に変わったことを示すとする。この場合には、リスト更新部25の処理により、リストデータベース31内の項目ID「0101」の順序が1から2に変わり、項目ID「0102」の順序が2から1に変わり、項目ID「0107」の順序が7から8に変わり、項目ID「0108」の順序が8から7に変わる。他の項目IDの順序は結果的に変わらない。更新日時は「2014年11月15日11時30分」から、更新処理時点の日時に更新される。
【0067】
端末10が一回の操作の完了の度に変更情報をサーバ20に送信する場合には、リスト更新部25は制約データベース32(リストIDに対応する制約情報)を参照することなく、変更情報に基づいてリストデータベース31を更新し、更新の確定を示す完了通知を生成して端末10にその通知を送信する。
【0068】
次に、
図7を用いて、リスト管理システム1の動作を説明するとともに本実施形態に係る表示制御方法について説明する。この説明では、リスト取得部11およびリスト提供部21の連携によりリストが既に端末10上に表示されているものとする。
【0069】
ユーザが端末10上で移動対象の項目を少なくとも一つ選択すると、検知部12がその選択の操作を検知し(ステップS11)、被選択項目の項目IDとリストIDとを含む選択情報を生成し、その選択情報をサーバ20に送信する(ステップS12)。
【0070】
サーバ20では受信部22がその選択情報を受信する(ステップS12、受信ステップ)。続いて、位置判定部23がその選択情報(リストIDおよび1以上の項目ID)に基づいて制約データベース32を参照して、被選択項目が移動できる位置を判定し、その位置を示す位置情報を生成する(ステップS13、位置判定ステップ)。選択情報が一つの項目IDのみを含む場合には、位置判定部23はその項目IDに対応する移動可能な位置を示す位置情報を生成する。選択情報が複数の項目IDを含む場合には、位置判定部23はすべての項目IDに共通の移動可能な位置を示す位置情報を生成する。もし、移動可能な位置が存在しない場合には、位置判定部23は空値(null)を位置情報として設定する。そして、送信部24が生成された位置情報を端末10に送信する(ステップS14、送信ステップ)。
【0071】
端末10では、表示制御部13がその位置情報を受信し、この位置情報に基づいて、被選択項目が移動できる位置と移動できない位置とを区別して表示する(ステップS15)。その後、ユーザが被選択項目の移動を完了すると、リスト変更部14およびリスト更新部25の処理によりリストデータが更新される。
【0072】
なお、ステップS11〜S15の処理、およびその後のリストデータの更新は繰返し実行され得る。
【0073】
次に、
図8を用いて、リスト管理システム1を実現するためのリスト管理プログラムPを説明する。リスト管理プログラムPは、コンピュータ100を端末10として機能させるクライアントプログラム(表示制御プログラム)P1と、コンピュータ100をサーバ20として機能させるサーバプログラムP2とを含む。リスト管理プログラムPの言語は何ら限定されない。例えば、クライアントプログラムP1がJavaScript(登録商標)で作成され、サーバプログラムP2がJava(登録商標)で作成されてもよい。
【0074】
クライアントプログラムP1は、メインモジュールP10、リスト取得モジュールP11、検知モジュールP12、表示制御モジュールP13、およびリスト変更モジュールP14を備える。
【0075】
メインモジュールP10は、端末側の処理を統括的に制御する部分である。リスト取得モジュールP11、検知モジュールP12、表示制御モジュールP13、およびリスト変更モジュールP14を実行することにより実現される機能はそれぞれ、上記のリスト取得部11、検知部12、表示制御部13、およびリスト変更部14の機能と同様である。
【0076】
サーバプログラムP2は、メインモジュールP20、リスト提供モジュールP21、受信モジュールP22、位置判定モジュールP23、送信モジュールP24、およびリスト更新モジュールP25を備える。
【0077】
メインモジュールP20は、サーバ側の処理を統括的に制御する部分である。リスト提供モジュールP21、受信モジュールP22、位置判定モジュールP23、送信モジュールP24、およびリスト更新モジュールP25を実行することにより実現される機能はそれぞれ、上記のリスト提供部21、受信部22、位置判定部23、送信部24、およびリスト更新部25の機能と同様である。
【0078】
クライアントプログラムP1およびサーバプログラムP2はそれぞれ、例えば、CD−ROMやDVD−ROM、半導体メモリなどの有形の記録媒体に固定的に記録された上で提供されてもよい。また、クライアントプログラムP1およびサーバプログラムP2はそれぞれ、搬送波に重畳されたデータ信号として通信ネットワークを介して提供されてもよい。クライアントプログラムP1とサーバプログラムP2とはそれぞれ異なる流通経路で提供されてもよい。クライアントプログラムP1は、端末にインストールされることなくサーバから端末に毎回ダウンロードされる態様で提供されてもよいし、端末にインストールされてもよい。これに対して、サーバプログラムP2は一般にサーバに予めインストールされる。
【0079】
なお、クライアントプログラム(表示制御プログラム)は、検知モジュールP12および表示制御モジュールP13のみを含む態様で提供されてもよい。複数のコンピュータ100を一つのサーバ20として機能させる場合には、サーバプログラムP2のモジュール群がそれぞれのコンピュータ100に分散して配置されてもよい。
【0080】
(第2実施形態)
第2実施形態に係るリスト管理システム1Aの機能および構成を説明する。第2実施形態が第1実施形態と異なる点は、リスト管理システム1Aが、複数の端末で同一のリストが編集されている場合にも適応することである。具体的には、同一のリストが複数の端末上で同時に表示されている際にある一つの端末でリスト内の項目の順序が変更されると、その変更が他の端末に反映される。以下では、第2実施形態に特有の事項について詳細に説明し、第1実施形態と同様の事項については説明を省略する。
【0081】
図9に示すように、リスト管理システム1Aは端末10A、サーバ20A、およびデータベース群30を備える。データベース群30は第1実施形態と同じだが、端末10Aおよびサーバ20Aの機能構成は第1実施形態と異なる。また、リスト管理システム1Aは複数の端末10Aを備える。
【0082】
端末10Aは機能的構成要素としてリスト取得部11、検知部12、表示制御部13A、およびリスト変更部14を備える。これらの機能要素は、端末10Aのプロセッサ101が、インストールまたはダウンロードされたクライアントプログラムP1Aを実行することで実現される。第1実施形態と機能が異なるのは表示制御部13Aなので、以下では表示制御部13Aについて説明する。
【0083】
表示制御部13Aは、被選択項目の移動が完了する前の任意の時点において、被選択項目が移動可能な位置を端末10A上に表示する機能要素である。加えて、表示制御部13Aは端末10A上に表示されているリストがその表示中に他の端末10Aからの指示で更新されたか否かをサーバ20Aに定期的に問い合わせ、リストが更新された場合には、端末10A上に表示されているリストを更新後のものに置き換えるという追加機能を有する。表示制御部13Aが第1実施形態における表示制御部13と異なるのはこの追加機能である。表示制御部13Aは、例えば、プロセッサ101がクライアントプログラムP1Aを実行して主記憶部102、通信制御部104、および出力装置106を制御することで実現される。
【0084】
表示制御部13Aは、表示制御部13と同じ処理により、被選択項目が移動できる位置とそれが移動できない位置とを区別して表示する。続いて、表示制御部13Aは、リストが他の端末10A(他のユーザ)により更新されたか否かを定期的に(例えば1秒ごとに)サーバ20Aに問い合わせる。この問合せは、移動可能な位置まで被選択項目が動かされて項目の順序が変わるまでの間、またはユーザの操作により、移動可能な位置に被選択項目が移動することなく項目の選択が解除されるまでの間、実行される。例えば、表示制御部13Aはユーザがドラッグ・アンド・ドロップを行っている間においてその問合せを実行する。
【0085】
具体的には、表示制御部13Aは選択情報(被選択項目の項目IDの集合、およびリストID)とリストデータの更新日時とを含む問合せ信号を生成してサーバ20Aにこの信号を送信する。その後、表示制御部13Aはその問合せ信号に応じてサーバ20Aから送られてくる未変更通知または変更通知を受信する。
【0086】
未変更通知は、端末10Aで現在表示されているリストデータが他の端末10Aにより更新されていないことを示すデータである。未変更通知を受信したということは、端末10Aで現在表示されているリストデータが、リストデータベース31に現在記憶されているリストデータと一致しており、リスト管理システム1Aにおいてリストデータの整合が取れていることを意味する。
【0087】
変更通知は、端末10Aで現在表示されているリストが他の端末10Aで先に更新されたことを示すデータである。この変更通知は、問合せ信号により送られたリストIDに対応する最新のリストデータと、そのリストデータに対応する最新の位置情報とを含む。変更通知を受信したということは、端末10Aで現在表示されているリストデータが、リストデータベース31に現在記憶されているリストデータと異なっており、リスト管理システム1Aにおいてリストデータの不整合が生じていることを意味する。
【0088】
未変更通知を受信した場合には、表示制御部13Aは次の問合せ信号をサーバ20Aに送信するまで他の処理を実行しない。したがって、被選択項目が移動できる位置と、被選択項目が移動できない位置とにおける表示態様は変わらない。
【0089】
一方、変更通知を受信した場合には、表示制御部13Aは、現在表示されているリストデータを、その変更通知に含まれるリストデータに置き換える。また、表示制御部13Aは置換後のリストに対して、最新の位置情報に基づき、被選択項目が移動できる位置(可能な移動先)とそれが移動できない位置(不可能な移動先)とを区別して表示する。この処理により、端末10Aに表示されているリスト(項目の順序)が最新のものに置き換わると共に、場合によっては移動できる位置および移動できない位置が変化する。この処理により、ユーザは、項目の順序を変更しようとしている間に、リスト内の項目の配置と被選択項目の移動可能な位置とが変わったことを知る。ユーザは、現在の被選択項目をそのまま選択し続けることができるが、最新の位置情報によってはその被選択項目をどこにも移動できない場合が生ずる。
【0090】
サーバ20Aは機能的構成要素としてリスト提供部21、受信部22、位置判定部23A、送信部24A、リスト更新部25、および状況判定部26を備える。これらの機能要素は、サーバ20Aのプロセッサ101が、予めインストールされたサーバプログラムP2Aを実行することで実現される。第1実施形態と機能が異なるのは位置判定部23A、送信部24A、状況判定部26なので、以下ではこれらの機能要素について説明する。
【0091】
まず、状況判定部26について説明する。状況判定部26は、リストを表示している端末10Aからの問合せに応じて、その表示中に該リストが他の端末10Aにより更新されたか否かを判定する機能要素である。状況判定部26は、例えば、プロセッサ101がサーバプログラムP2Aを実行して主記憶部102および通信制御部104を制御することで実現される。
【0092】
状況判定部26は、端末10Aから問合せ信号を受信すると、その信号からリストIDおよび更新日時を取得し、そのリストIDに対応するリストデータをリストデータベース31から読み出す。そして、状況判定部26は、リストデータベース31から読み出した更新日時と問合せ信号から読み出した更新日時とを比較する。
【0093】
双方の更新日時が等しいならば、問合せ信号を送ってきた端末10Aでリストデータが表示されている間に他の端末10Aによりそのリストデータは更新されていない。したがって、問合せ信号を送ってきた端末10Aとリストデータベース31との間でリストデータベースの整合は取れている。この場合には、状況判定部26は、端末10Aでのリストの表示中に該リストが更新されていないと判定し、上記の未変更通知を生成してその通知を送信部24Aに出力する。
【0094】
これに対して、双方の更新日時が異なる場合(より具体的には、リストデータベース31から読み出した更新日時が、問合せ信号から読み出した更新日時よりも新しい場合)には、問合せ信号を送ってきた端末10Aでリストデータが表示されている間に他の端末10Aによりそのリストデータが更新されたことになる。したがって、問合せ信号を送ってきた端末10Aとリストデータベース31との間でリストデータベースの不整合が生じている。この場合には、状況判定部26は、端末10Aでのリストの表示中に該リストが他の端末10Aにより更新されたと判定する。そして、状況判定部26は問合せ信号に含まれる選択情報と、リストデータベース31から読み出した最新のリストデータとを位置判定部23Aに出力する。
【0095】
位置判定部23Aは、第1実施形態における位置判定部23と同じ処理を実行する。これに加えて、位置判定部23Aは、状況判定部26から選択情報および最新のリストデータが入力された場合に次の処理を実行する。すなわち、位置判定部23Aはこの場合にも位置判定部23と同じ処理を実行することで、最新のリストデータに対応する最新の位置情報を得る。最新の位置情報は、問合せ信号を送ってきた端末10Aで現在選択されている項目が最新のリスト内のどの位置に移動可能であるかを示す情報である。位置判定部23Aは、最新のリストデータおよび最新の位置情報を含む変更通知を生成してその通知を送信部24Aに出力する。
【0096】
送信部24Aは、第1実施形態における送信部24と同じ処理を実行する。これに加えて、送信部24Aは、未変更通知または変更通知を、問合せ信号に対応する応答として端末10Aに送信する。
【0097】
次に、
図10および
図11を用いて、リスト管理システム1Aの動作を説明するとともに本実施形態に係る表示制御方法について説明する。この説明では、同一のリストが既に2台の端末10A上に表示されているものとし、その2台の端末10Aを「端末X」および「端末Y」という名前で区別する。また、端末X,Yのユーザをそれぞれ「ユーザUx」「ユーザUy」とする。以下の説明では、ユーザUyがリストの順序を変えようとしている間に、ユーザUxがそのリストの順序を先に変えた場合に、端末Y上でどのような処理が実行されるかに着目する。
【0098】
ステップS21〜S25は端末Xに関する処理であり、第1実施形態におけるステップS11〜S15と同様である。ユーザUxが端末X上で移動対象の項目を少なくとも一つ選択すると、検知部12がその選択の操作を検知し(ステップS21)、被選択項目の項目IDとリストIDとを含む選択情報を生成し、その選択情報をサーバ20Aに送信する(ステップS22)。サーバ20Aでは受信部22がその選択情報を受信する(ステップS22、受信ステップ)。続いて、位置判定部23Aがその選択情報に基づいて制約データベース32を参照して、被選択項目が移動できる位置を判定し、その位置を示す位置情報を生成する(ステップS23、位置判定ステップ)。そして、送信部24Aが生成された位置情報を端末Xに送信する(ステップS24、送信ステップ)。端末Xでは、表示制御部13Aがその位置情報を受信し、この位置情報に基づいて、被選択項目が移動できる位置と移動できない位置とを区別して表示する(ステップS25)。
【0099】
ステップS26〜S30は端末Yに関する処理であり、これも第1実施形態におけるステップS11〜S15と同様である。ユーザUyが端末Y上で移動対象の項目を少なくとも一つ選択すると、検知部12がその選択の操作を検知し(ステップS26)、被選択項目の項目IDとリストIDとを含む選択情報を生成し、その選択情報をサーバ20Aに送信する(ステップS27)。サーバ20Aでは受信部22がその選択情報を受信する(ステップS27、受信ステップ)。続いて、位置判定部23Aがその選択情報に基づいて制約データベース32を参照して、被選択項目が移動できる位置を判定し、その位置を示す位置情報を生成する(ステップS28、位置判定ステップ)。そして、送信部24Aが生成された位置情報を端末Yに送信する(ステップS29、送信ステップ)。端末Yでは、表示制御部13Aがその位置情報を受信し、この位置情報に基づいて、被選択項目が移動できる位置と移動できない位置とを区別して表示する(ステップS30)。
【0100】
なお、
図10では端末Xに関する処理が端末Yに関する処理より先行しているが、時間軸に沿ったステップS21〜S30の処理の前後関係は何ら限定されない。
【0101】
その後、端末Yでは表示制御部13Aが問合せ信号を生成してサーバ20Aにその信号を送信する(ステップS31)。サーバ20Aでは、状況判定部26がその問合せ信号に応じてリストデータベース31を参照することで、リストデータの更新状況を確認する(ステップS32)。この時点ではユーザUxの操作によりリストデータが更新されていないので、リストデータベース31内のリストデータの更新日時は問合せ信号に含まれる更新日時と一致する。したがって、状況判定部26は未変更通知を生成し、送信部24Aが端末Yにその通知を送信する(ステップS33)。
【0102】
その後、端末XでユーザUxが、項目の順序を変える一回の操作を完了すると(ステップS34)、リスト変更部14が変更情報を生成してサーバ20Aにその情報を送信する(ステップS35)。サーバ20Aではリスト更新部25がその変更情報に基づいてリストデータベース31内の対応するリストデータを更新する(ステップS36)。この結果、リストデータベース31と端末Yとの間でリストデータが一時的に整合しなくなる。
【0103】
その後、未変更通知を受信した端末Yでは、表示制御部13Aが所定の時間の経過後に再び問合せ信号をサーバ20Aに送信する(ステップS37)。サーバ20Aでは、状況判定部26がその問合せ信号に応じてリストデータベース31を参照することで、リストデータの更新状況を確認する(ステップS38)。この時点ではユーザUxの操作によりリストデータが更新されているので、リストデータベース31内のリストデータの更新日時は問合せ信号に含まれる更新日時よりも新しい。したがって、状況判定部26は、端末Yでのリストの表示中に該リストが他の端末(端末X)により更新されたと判定する。この場合には、位置判定部23Aが再度、被選択項目が移動できる位置を判定して変更通知を生成し(ステップS39、位置判定ステップ)、送信部24Aが端末Yにその通知を送信する(ステップS40、送信ステップ)。
【0104】
端末Yでは、表示制御部13Aがその変更通知に応じて、表示中のリストを最新の状態に切り替えると共に、被選択項目が移動できる位置を再表示する(ステップS41)。この処理により、リストデータベース31と端末Yとの間でリストデータが再び整合する。
【0105】
その後、端末YでユーザUyが、項目の順序を変える一回の操作を完了すると(ステップS42)、リスト変更部14が変更情報を生成してサーバ20Aにその情報を送信する(ステップS43)。サーバ20Aではリスト更新部25がその変更情報に基づいてリストデータベース31内の対応するリストデータを更新する(ステップS44)。この結果、ユーザUx,Uyの双方の操作がリストデータベース31に反映される。
【0106】
なお、端末Xも、ユーザUxが一回の操作を完了するまでの間に問合せ信号を送信し得るが、
図10および
図11ではその送信についての説明を省略している。
【0107】
このような一連の処理の間における、端末X,Y上で表示されるリストの変化の例を
図12に示す。端末X,Yの双方で、
図4および
図5に示される、リストIDが「02」に対応するリスト93が表示されたとする。そして、ユーザUxが端末X上で質問B3を移動対象として選択し、ユーザUyが端末Y上で質問B4を移動対象として選択したとする。リストID「02」に対しては、「質問B3は質問B1よりも後ろでなければならない」と「質問B4は質問B3よりも後ろでなければならない」という制約がある。この制約に基づいて、端末X上では、質問B3が移動可能な位置に太線91aが表示され、端末Y上では、質問B4が移動可能な位置に太線91bが表示される。
【0108】
ユーザUyが質問B4の順序変更を確定する前にユーザUxが質問B3を質問B1と質問B2との間に移したとすると、リストデータベース31内のリストID「02」に対応するリストデータが更新される。その後、端末Yが問合せ信号をサーバ20Aに送信して変更通知を受信し、その変更通知を処理することで、端末Xで実行された変更が端末Y上に反映される。
図12の例では、端末Yにおいて質問B4が移動可能な位置が二つに増える。
【0109】
なお、このようなリストデータの同期は、同一のリストに対して複数の端末10A上で順序変更の操作がなされている場合にのみ起こり得るのではなく、同一のリストを表示している複数の端末10Aのうちの一つのみで順序変更の操作がなされている場合にも起こり得る。例えば、
図12の例において、ユーザUyがリスト93に対して何も操作していなくても、ユーザUxが質問B3の順序を変えたことで、その変更が反映されたリスト93が端末Y上に表示される。
【0110】
次に、
図13を用いて、リスト管理システム1Aを実現するためのリスト管理プログラムPAを説明する。リスト管理システム1Aは、コンピュータ100を端末10Aとして機能させるクライアントプログラム(表示制御プログラム)P1Aと、コンピュータ100をサーバ20Aとして機能させるサーバプログラムP2Aとを含む。第1実施形態と同様に、リスト管理プログラムPAの言語は何ら限定されない。
【0111】
クライアントプログラムP1Aが第1実施形態におけるクライアントプログラムP1と異なる点は、表示制御モジュールP13に代えて表示制御モジュールP13Aを備えることである。表示制御モジュールP13Aを実行することにより実現される機能は表示制御部13Aの機能と同様である。
【0112】
サーバプログラムP2Aは、位置判定モジュールP23および送信モジュールP24に代えて位置判定モジュールP23Aおよび送信モジュールP24Aを備える点で、第1実施形態におけるサーバプログラムP2と異なる。加えて、サーバプログラムP2Aは、状況判定モジュールP26をさらに備える。位置判定モジュールP23A、送信モジュールP24A、および状況判定モジュールP26を実行することにより実現される機能はそれぞれ、位置判定部23A、送信部24A、および状況判定部26の機能と同様である。
【0113】
なお、クライアントプログラム(表示制御プログラム)は、検知モジュールP12および表示制御モジュールP13Aのみを含む態様で提供されてもよい。複数のコンピュータ100を一つのサーバ20Aとして機能させる場合には、サーバプログラムP2Aのモジュール群がそれぞれのコンピュータ100に分散して配置されてもよい。
【0114】
本実施形態では、端末10A上でリスト内の少なくとも一つの信号が選択されている間に問合せ信号が送信される場合に焦点を絞って説明した。しかし、表示制御部13Aは、リスト内の項目が移動対象として選択されているか否かにかかわらず問合せ信号をサーバ20Aに送信してもよい。リスト内の項目が移動対象として選択されていない場合には、表示制御部13AはリストIDおよびリストデータの更新日時を含む問合せ信号を送信すればよい。一方、状況判定部26はその問合せ信号に応じてリストの更新の有無を判定し、更新されていなければ未変更通知を生成し、変更されていれば、更新後のリストデータを含む変更通知を生成する。そして、送信部24Aはその未変更通知または変更通知を、問合せ信号に対する応答として端末10Aに送信する。
【0115】
以上説明したように、本発明の一側面に係るサーバは、複数の項目の集合を含むリストを表示している端末上で選択された少なくとも一つの項目を示す選択情報を該端末から受信する受信部と、複数の項目の順序に関する制約を示す制約情報を記憶する記憶部を参照して、リスト内で少なくとも一つの項目が移動できる位置を判定する位置判定部と、少なくとも一つの項目が移動できる位置と移動できない位置とを、該少なくとも一つの項目の移動が完了する前の任意の時点において端末上で区別して表示させるために、位置判定部による判定結果を示す位置情報を該端末に送信する送信部と、を備える。
【0116】
本発明の一側面に係る表示制御方法は、プロセッサを備えるサーバにより実行される表示制御方法であって、複数の項目の集合を含むリストを表示している端末上で選択された少なくとも一つの項目を示す選択情報を該端末から受信する受信ステップと、複数の項目の順序に関する制約を示す制約情報を記憶する記憶部を参照して、リスト内で少なくとも一つの項目が移動できる位置を判定する位置判定ステップと、少なくとも一つの項目が移動できる位置と移動できない位置とを、該少なくとも一つの項目の移動が完了する前の任意の時点において端末上で区別して表示させるために、位置判定ステップにおける判定結果を示す位置情報を該端末に送信する送信ステップと、を含む。
【0117】
本発明の一側面に係る表示制御プログラムは、複数の項目の集合を含むリストを表示している端末上で少なくとも一つの項目が選択されたことを検知し、該少なくとも一つの項目を示す選択情報をサーバに送信する検知部と、選択情報に応じてサーバから送信された位置情報を受信し、該位置情報に基づいて、リスト内で少なくとも一つの項目が移動できる位置と移動できない位置とを、該少なくとも一つの項目の移動が完了する前の任意の時点において区別して表示する表示制御部と、としてコンピュータを機能させ、サーバが、複数の項目の順序に関する制約を示す制約情報を記憶する記憶部を参照して、リスト内で少なくとも一つの項目が移動できる位置を判定し、位置情報が判定の結果を示す。
【0118】
このような側面においては、端末に表示されたリスト内で少なくとも一つの項目が選択されると、項目の順序に関する制約に基づいて、被選択項目が移動できる位置が判定され、その判定結果を示す位置情報が端末に送信される。そして、この位置情報に基づいて、その端末上で、被選択項目が移動できる位置と移動できない位置とが区別して表示される。すなわち、ユーザがリスト内の項目の順序を変えようとする際に、順序に関する制約(その項目をどこに移動できるか)をそのユーザに示すことができる。このように、ユーザインタフェースの利便性が向上するので、操作者であるユーザは入力の手間を軽減でき時間を節約することができる。
【0119】
他の側面に係るサーバでは、制約情報が、少なくとも二つの項目が連続して並ばなければならないというグループ制約を含み、位置判定部が、グループ制約に基づいて、少なくとも二つの項目の間には他の項目が移動できないと判定してもよい。
【0120】
このようなグループ制約を用いて他の項目がグループ内に混在することを避けることで、特定の複数の項目を常に一つのグループとして取り扱うことができる。
【0121】
他の側面に係るサーバでは、選択情報が、端末上で選択された少なくとも二つの項目を示し、位置判定部が、選択された少なくとも二つの項目のすべてが移動できる位置を判定してもよい。
【0122】
移動しようとする複数の項目のすべてが移動可能な位置を示すことで、ユーザは、制約に違反することなく、複数の項目の順序を一回の操作で簡単に変更することができる。
【0123】
他の側面に係るサーバでは、リストを表示している端末からの問合せに応じて、該端末がリストを表示している間に該リストが他の端末により更新されたか否かを判定する状況判定部をさらに備え、リストが他の端末により更新されたと判定された場合に、位置判定部が、更新後のリスト内で少なくとも一つの項目が移動できる位置を新たに判定し、送信部が、更新後のリストと、位置判定部による新たな判定結果を示す新たな位置情報とを端末に送信してもよい。
【0124】
この場合には、一の端末でリストに対する操作が行われている際に他の端末によりリスト内の順序が更新されると、該一の端末に更新後のリストが反映される。加えて、更新後のリスト内で移動可能な位置も当該一の端末に提供される。したがって、当該一の端末のユーザは、能動的に更新後のリストを取得することなく、リスト内の項目の新たな可能な移動先を把握して該項目をそこに移すことができる。
【0125】
以上、本発明をその実施形態に基づいて詳細に説明した。しかし、本発明は上記実施形態に限定されるものではない。本発明は、その要旨を逸脱しない範囲で様々な変形が可能である。
【0126】
上述した通り、リストおよび項目の内容は何ら限定されない。したがって、アンケートの編集以外の目的で本発明を利用することもできる。
一実施形態に係るサーバは、受信部、位置判定部、および送信部を備える。受信部は、複数の項目の集合を含むリストを表示している端末上で選択された少なくとも一つの項目を示す選択情報を該端末から受信する。位置判定部は、複数の項目の順序に関する制約を示す制約情報を記憶する記憶部を参照して、リスト内で少なくとも一つの項目が移動できる位置を判定する。送信部は、少なくとも一つの項目が移動できる位置と移動できない位置とを、該少なくとも一つの項目の移動が完了する前の任意の時点において端末上で区別して表示させるために、位置判定部による判定結果を示す位置情報を該端末に送信する。