(57)【特許請求の範囲】
【請求項１】
複数の項目の集合を含むリストを表示している端末上で選択された少なくとも一つの前記項目を示す選択情報を該端末から受信する受信部と、
前記複数の項目の順序に関する制約を示す制約情報を記憶する記憶部であって、前記制約が、前記選択された少なくとも一つの項目と、前記リストに含まれかつ前記端末上で選択されていない前記項目との組合せに応じて定められる、項目の順序に関する制約を含む、該記憶部を参照して、前記リスト内で前記少なくとも一つの項目が移動できる位置を判定する位置判定部と、
前記少なくとも一つの項目が移動できる位置と移動できない位置とを、該少なくとも一つの項目の移動が完了する前の任意の時点において前記端末上で区別して表示させるために、前記位置判定部による判定結果を示す位置情報を該端末に送信する送信部と、
を備えるサーバ。
【請求項２】
前記制約情報が、少なくとも二つの前記項目が連続して並ばなければならないというグループ制約を含み、
前記位置判定部が、前記グループ制約に基づいて、前記少なくとも二つの項目の間には他の項目が移動できないと判定する、
請求項１に記載のサーバ。
【請求項３】
前記選択情報が、前記端末上で選択された少なくとも二つの項目を示し、
前記位置判定部が、前記選択された少なくとも二つの項目のすべてが移動できる位置を判定する、
請求項１または２に記載のサーバ。
【請求項４】
前記位置判定部が、前記選択された少なくとも二つの項目のすべてが少なくとも一つの共通の位置に移動できると判定した場合には、該少なくとも一つの共通の位置のそれぞれにおける該少なくとも二つの項目の順序に関する制約を前記制約情報を参照して判定した上で、前記選択された少なくとも二つの項目のすべてが移動できる位置を判定する、
請求項３に記載のサーバ。
【請求項５】
前記リストを表示している前記端末からの問合せに応じて、該端末が前記リストを表示している間に該リストが他の端末により更新されたか否かを判定する状況判定部をさらに備え、
前記リストが前記他の端末により更新されたと判定された場合に、前記位置判定部が、更新後のリスト内で前記少なくとも一つの項目が移動できる位置を新たに判定し、
前記送信部が、前記更新後のリストと、前記位置判定部による新たな判定結果を示す新たな位置情報とを前記端末に送信する、
請求項１〜４のいずれか一項に記載のサーバ。
【請求項６】
プロセッサを備えるサーバにより実行される表示制御方法であって、
複数の項目の集合を含むリストを表示している端末上で選択された少なくとも一つの前記項目を示す選択情報を該端末から受信する受信ステップと、
前記複数の項目の順序に関する制約を示す制約情報を記憶する記憶部であって、前記制約が、前記選択された少なくとも一つの項目と、前記リストに含まれかつ前記端末上で選択されていない前記項目との組合せに応じて定められる、項目の順序に関する制約を含む、該記憶部を参照して、前記リスト内で前記少なくとも一つの項目が移動できる位置を判定する位置判定ステップと、
前記少なくとも一つの項目が移動できる位置と移動できない位置とを、該少なくとも一つの項目の移動が完了する前の任意の時点において前記端末上で区別して表示させるために、前記位置判定ステップにおける判定結果を示す位置情報を該端末に送信する送信ステップと、
を含む表示制御方法。
【請求項７】
複数の項目の集合を含むリストを表示している端末上で少なくとも一つの前記項目が選択されたことを検知し、該少なくとも一つの項目を示す選択情報をサーバに送信する検知部と、
前記選択情報に応じて前記サーバから送信された位置情報を受信し、該位置情報に基づいて、前記リスト内で前記少なくとも一つの項目が移動できる位置と移動できない位置とを、該少なくとも一つの項目の移動が完了する前の任意の時点において区別して表示する表示制御部と、
としてコンピュータを機能させ、
前記サーバが、前記複数の項目の順序に関する制約を示す制約情報を記憶する記憶部であって、前記制約が、前記選択された少なくとも一つの項目と、前記リストに含まれかつ前記端末上で選択されていない前記項目との組合せに応じて定められる、項目の順序に関する制約を含む、該記憶部を参照して、前記リスト内で前記少なくとも一つの項目が移動できる位置を判定し、前記位置情報が前記判定の結果を示す、
表示制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の一側面は、リスト内の項目の順序を制御するためのサーバ、方法、およびプログラムに関する。
【背景技術】
【０００２】
複数の項目を含むリスト内で項目の順番を変更するための技術が従来から知られている。例えば、下記の非特許文献１には“Ｓｏｒｔａｂｌｅ”というユーザインタフェースのサンプルが記載されている。このサンプルでは、７項目（Ｉｔｅｍ  １〜Ｉｔｅｍ  ７）の順番をドラッグ・アンド・ドロップにより自由に変更できる。
【先行技術文献】
【非特許文献】
【０００３】
【非特許文献１】Ｔｈｅ  ｊＱｕｅｒｙ  Ｆｏｕｎｄａｔｉｏｎ、“ｊＱｕｅｒｙ  ｕｓｅｒ  ｉｎｔｅｒｆａｃｅ，Ｓｏｒｔａｂｌｅ”、［ｏｎｌｉｎｅ］、インターネット＜ＵＲＬ：http://jqueryui.com/sortable/＞
【発明の概要】
【発明が解決しようとする課題】
【０００４】
リスト内の項目間に順序の制約がある場合には、当然ながら各項目の順序を自由に変えることができない。したがって、その変更を確定させる際には、変更後の順序がその制約を満たすか否かを判定し、制約を満たす場合にのみ変更を確定させる必要がある。しかし、このような処理では、変更後の順序が制約を満たすか否かが、変更を確定させようとする段階までわからず、もしその変更が制約を満たさなければ、操作者であるユーザに変更の操作を最初からやり直させることになってしまう。ユーザがリスト内の項目の順序を変えようとする際に、順序に関する制約をそのユーザに示すことができれば、ユーザにとって便利である。
【課題を解決するための手段】
【０００５】
本発明の一側面に係るサーバは、複数の項目の集合を含むリストを表示している端末上で選択された少なくとも一つの項目を示す選択情報を該端末から受信する受信部と、複数の項目の順序に関する制約を示す制約情報を記憶する記憶部を参照して、リスト内で少なくとも一つの項目が移動できる位置を判定する位置判定部と、少なくとも一つの項目が移動できる位置と移動できない位置とを、該少なくとも一つの項目の移動が完了する前の任意の時点において端末上で区別して表示させるために、位置判定部による判定結果を示す位置情報を該端末に送信する送信部と、を備える。【０００６】
本発明の一側面に係る表示制御方法は、プロセッサを備えるサーバにより実行される表示制御方法であって、複数の項目の集合を含むリストを表示している端末上で選択された少なくとも一つの項目を示す選択情報を該端末から受信する受信ステップと、複数の項目の順序に関する制約を示す制約情報を記憶する記憶部を参照して、リスト内で少なくとも一つの項目が移動できる位置を判定する位置判定ステップと、少なくとも一つの項目が移動できる位置と移動できない位置とを、該少なくとも一つの項目の移動が完了する前の任意の時点において端末上で区別して表示させるために、位置判定ステップにおける判定結果を示す位置情報を該端末に送信する送信ステップと、を含む。【０００７】
本発明の一側面に係る表示制御プログラムは、複数の項目の集合を含むリストを表示している端末上で少なくとも一つの項目が選択されたことを検知し、該少なくとも一つの項目を示す選択情報をサーバに送信する検知部と、選択情報に応じてサーバから送信された位置情報を受信し、該位置情報に基づいて、リスト内で少なくとも一つの項目が移動できる位置と移動できない位置とを、該少なくとも一つの項目の移動が完了する前の任意の時点において区別して表示する表示制御部と、としてコンピュータを機能させ、サーバが、複数の項目の順序に関する制約を示す制約情報を記憶する記憶部を参照して、リスト内で少なくとも一つの項目が移動できる位置を判定し、位置情報が判定の結果を示す。【０００８】
このような側面においては、端末に表示されたリスト内で少なくとも一つの項目が選択されると、項目の順序に関する制約に基づいて、被選択項目が移動できる位置が判定され、その判定結果を示す位置情報が端末に送信される。そして、この位置情報に基づいて、その端末上で、被選択項目が移動できる位置と移動できない位置とが区別して表示される。すなわち、ユーザがリスト内の項目の順序を変えようとする際に、順序に関する制約（その項目をどこに移動できるか）をそのユーザに示すことができる。
【発明の効果】
【０００９】
本発明の一側面によれば、ユーザがリスト内の項目の順序を変えようとする際に、順序に関する制約をそのユーザに示すことができる。
【図面の簡単な説明】
【００１０】
【図１】実施形態における表示制御の例を示す図である。
【図２】第１実施形態に係るリスト管理システムの機能構成を示すブロック図である。
【図３】実施形態に係るリスト管理システムを構成するコンピュータのハードウェア構成を示す図である。
【図４】リストデータベースの例を示す図である。
【図５】制約データベースの例を示す図である。
【図６】被選択項目が移動できる位置または移動できない位置の表示態様を説明するための図である。
【図７】第１実施形態に係るリスト管理システムの動作を示すフローチャートである。
【図８】第１実施形態に係るリスト管理プログラムの構成を示す図である。
【図９】第２実施形態に係るリスト管理システムの機能構成を示すブロック図である。
【図１０】第２実施形態に係るリスト管理システムの動作を示すフローチャートである。
【図１１】第２実施形態に係るリスト管理システムの動作を示すフローチャートである。
【図１２】第２実施形態における表示制御の例を示す図である。
【図１３】第２実施形態に係るリスト管理プログラムの構成を示す図である。
【発明を実施するための形態】
【００１１】
以下、添付図面を参照しながら本発明の実施形態を詳細に説明する。なお、図面の説明において同一又は同等の要素には同一の符号を付し、重複する説明を省略する。
【００１２】
（第１実施形態）
本実施形態では、本発明に係るサーバをリスト管理システム１に適用する。図１〜図６を用いて、第１実施形態に係るリスト管理システム１の機能および構成を説明する。リスト管理システム１は、ユーザがリスト内の項目の順序を変更する操作を補助するコンピュータシステムである。本実施形態において、ユーザは、端末上に表示されたリストに含まれる複数の項目の順序を変更することができる。ただし、リストには項目の順序に関する制約が予め設定されているので、ユーザは項目の順序を全く自由に変えることはできず、制約を満たす場合にのみ項目の順序を変更することができる。順序変更の利便性を図るために、リスト管理システム１は、ユーザがある項目の順序を変更する操作を行おうとする際に、その項目をどこに動かすことができるかをリアルタイムにユーザに提示する。
【００１３】
「ユーザ」とは、端末を操作して項目の順序を設定する人である。ユーザは端末の所有者であってもよいし所有者でなくてもよい。
【００１４】
「リスト」とは、複数の項目の集合を含む情報またはデータである。「項目」とは、そのリスト内の個々の要素である。リスト内の個々の項目には順序の初期値が予め設定され、複数の項目はその順序に従ってリスト内で一列に並ぶ。ユーザはその順序を変更することができる。「順序」とは、リスト内における項目の並びを示す数値であり、順序の意味は限定されないが、例えば、表示順であったり、入力の受付の順序であったりし得る。
【００１５】
「順序を変更する」とは、リスト内の項目を並べ替える処理である。順序を変更する操作の方法は限定されない。例えば、順序を変更しようとする項目を選択してその項目を移動先まで動かし、その移動先で選択操作を解除する操作であるドラッグ・アンド・ドロップを採用してもよい。あるいは、順序を変更しようとする項目を選択してその次に移動先の位置を選択する操作を採用してもよい。項目が移動できる位置は、リストの先頭の項目の前、リスト内の項目と項目との間、およびリストの最後尾の項目の後ろのうちのいずれかである。複数の項目はリスト内で一列に並ぶので、項目が移動できる位置は、リストの先頭から最後尾へと延びる一つの仮想的な軸に沿って設定される、ということもできる。
【００１６】
図１は操作の補助の一例を示す。この例は、７個の項目Ａ〜Ｇから成るリスト９０で項目Ｅが選択されてドラッグされ始めたときに、その項目Ｅが移動可能な位置が所定の色の太線９１で表示されることを示す（図１の真ん中を参照）。この表示処理により、ユーザは項目Ｅを項目Ｃと項目Ｄとの間、項目Ｆと項目Ｇとの間、または項目Ｇの後ろに移せることを知ることができる。すなわち、ユーザは項目Ｅの順序を５番目から４番目、６番目、または７番目に変更できることを知ることができる。見方を変えれば、ユーザは項目Ｅの順序を１番目、２番目、および３番目に変更できないことを知ることができる。図１は、ユーザが太線９１の案内により項目Ｅを項目Ｇの後ろまでドラッグしてそこで選択を解除（ドロップ）したことで、項目Ｅが７番目の位置に移ったことを示す（図１の右端を参照）。
【００１７】
図２に示すように、リスト管理システム１は端末１０、サーバ２０、およびデータベース群３０を備える。端末１０とサーバ２０とはインターネットやイントラネットなどの通信ネットワークを介して接続される。サーバ２０はデータベース群３０と通信接続する。
【００１８】
端末１０は、ユーザが操作するコンピュータである。端末１０の種類は限定されず、例えば、端末１０は据置型または携帯型のパーソナルコンピュータ（ＰＣ）でもよいし、高機能携帯電話機（スマートフォン）や携帯電話機、携帯情報端末（ＰＤＡ）などの携帯端末でもよい。図２では端末１０を一つのみ示すが、リスト管理システム１は複数の端末１０を備えてもよい。
【００１９】
サーバ２０は、項目が移動可能な位置を示す情報を端末１０に提供するコンピュータである。サーバ２０は一般に、端末１０よりも高い処理能力を備え、また、複数台のコンピュータにより構成されることがあるが、サーバ２０の性能および構成はこれに限定されるものではない。
【００２０】
データベース群３０は、リスト管理システム１での処理に必要なデータを記憶するデータベース（記憶装置）の集合である。
【００２１】
端末１０およびサーバ２０として機能するコンピュータ１００の一般的なハードウェア構成を図３に示す。コンピュータ１００は、オペレーティングシステムやアプリケーション・プログラムなどを実行するプロセッサ（例えばＣＰＵ）１０１と、ＲＯＭおよびＲＡＭで構成される主記憶部１０２と、ハードディスクやフラッシュメモリなどで構成される補助記憶部１０３と、ネットワークカードあるいは無線通信モジュールで構成される通信制御部１０４と、キーボード、マウス、タッチパネルなどの入力装置１０５と、モニタやタッチパネルなどの出力装置１０６とを備える。当然ながら、搭載されるハードウェアモジュールはコンピュータ１００の種類により異なる。例えば、据置型のＰＣは入力装置および出力装置としてキーボード、マウス、およびモニタを備えることが多いが、スマートフォンはタッチパネルが入力装置および出力装置として機能することが多い。
【００２２】
後述するリスト管理システム１の各機能要素は、プロセッサ１０１または主記憶部１０２の上に所定のソフトウェアを読み込ませ、プロセッサ１０１の制御の下で通信制御部１０４や入力装置１０５、出力装置１０６などを動作させ、主記憶部１０２または補助記憶部１０３におけるデータの読み出し及び書き込みを行うことで実現される。処理に必要なデータやデータベースは主記憶部１０２または補助記憶部１０３内に格納される。
【００２３】
端末１０およびサーバ２０の各機能要素を説明する前に、リスト管理システム１で参照されるデータベース群３０について説明する。図２に示すように、データベース群３０はリストデータベース３１および制約データベース３２を含む。
【００２４】
リストデータベース３１は、リストデータを記憶するデータベースである。リストデータは、ユーザの操作の対象となるリストを示すデータである。少なくとも一つのリストについてのリストデータは、リスト管理システム１の管理者によりリストデータベース３１に予め登録される。
【００２５】
リストデータの例を図４に示す。本実施形態では、リストデータの項目は、リストＩＤと、項目のＩＤ、内容、および順序と、更新日時とを含む。リストＩＤはリストの識別子である。項目ＩＤは項目の識別子である。項目の内容とは、ユーザが何らかの意味を認識することができる情報である。項目の順序は、リスト内での順序を意味する。リストおよび項目が示す意味は何ら限定されないが、本実施形態では、一つのリストが一つのアンケートに対応し、リスト内の個々の項目がそのアンケートに含まれる質問に対応するものとする。更新日時は、リストデータが最後に更新された日時である。図４から、リストＩＤ「０１」で識別されるリスト（アンケート）が、項目ＩＤ「０１０１」〜「０１０８」で識別される８項目（８個の質問Ａ１〜Ａ８）から成り、２０１４年１１月１５日１１時３０分に更新されたことがわかる。また、その８個の質問が先頭から、質問Ａ１、質問Ａ２、質問Ａ３、質問Ａ４、質問Ａ５、質問Ａ６、質問Ａ７、質問Ａ８という順序で並ぶこともわかる。
【００２６】
制約データベース３２は、制約情報を記憶するデータベースである。制約情報は、リスト内の複数の項目の順序に関する制約を示す情報である。「順序に関する制約」とは、リスト内の個々の項目の順序を変更する条件であり、リスト内で項目を並び替える際に個々の項目をどこに移動できるか、またはどこに移動できないかを規定する。制約情報の項目は、リストＩＤと、順序に関する制約とを含み、一つのリストＩＤに対して１以上の制約が関連付けられる。制約情報は、リスト管理システム１の管理者により制約データベース３２に予め登録される。
【００２７】
制約情報の例を図５に示す。図５から、リストＩＤ「０１」で識別されるリストが４個の制約を有し、リストＩＤ「０２」で識別されるリストが２個の制約を有することがわかる。リスト「０１」に関する制約の一つである「質問Ａ４，Ａ５，Ａ６は一つのグループである」とは、これら質問Ａ４，Ａ５，Ａ６が連続して並ばなければならないことを示すグループ制約である。ただし、グループ内（例えば、質問Ａ４，Ａ５，Ａ６から成るグループ）での質問の順序関係は、これに関する追加の制約がない限り任意である。なお、制約の内容は図５の例に限定されず、例えば、「質問Ｘは質問Ｙよりも前でなければならない」や「質問Ｚはどこにでも移動できる」というような制約が設定されてもよい。
【００２８】
次に、端末１０の機能構成を説明する。図２に示すように、端末１０は機能的構成要素としてリスト取得部１１、検知部１２、表示制御部１３、およびリスト変更部１４を備える。これらの機能要素は、端末１０のプロセッサ１０１が、インストールまたはダウンロードされたクライアントプログラム（表示制御プログラム）Ｐ１を実行することで実現される。
【００２９】
リスト取得部１１は、ユーザの操作の対象となるリストデータをサーバ２０から取得する機能要素である。リスト取得部１１は、例えば、プロセッサ１０１がクライアントプログラムＰ１を実行して主記憶部１０２、通信制御部１０４、および出力装置１０６を制御することで実現される。
【００３０】
ユーザが、リストを含む画面（例えばウェブページ）を端末１０上に表示させるための操作を行うと、リスト取得部１１は、リストデータを取得するためのリスト要求を生成してそのリスト要求をサーバ２０に送信し、その要求に応じてサーバ２０から送られてきたリストデータを受信する。そして、リスト取得部１１はそのリストデータを端末１０上に表示する。これにより、ユーザは各項目が指定の順番に従って並んだリストを視認できる。図４に示す例を前提として、リスト取得部１１はリストＩＤ「０１」を含むリスト要求を生成および送信することで、質問Ａ１〜Ａ８を含むリストデータを取得し、その質問Ａ１〜Ａ８が指定された順序に従って並んだリストを表示する。
【００３１】
検知部１２は、端末１０に表示されたリストのうちの少なくとも一つの項目が移動対象（すなわち、順番を変更する対象）として選択された場合に、該少なくとも一つの項目を特定する機能要素である。検知部１２は、例えば、プロセッサ１０１がクライアントプログラムＰ１を実行して主記憶部１０２および入力装置１０５を制御することで実現される。本明細書では、移動対象として選択された項目を「被選択項目」ともいう。
【００３２】
検知部１２は、移動対象として選択された項目の項目ＩＤを取得することで被選択項目を特定する。検知部１２が被選択項目を特定（検知）するタイミングは限定されない。例えば、検知部１２はユーザがドラッグ操作を開始した時点（ユーザが項目を選択した時点ではなくその項目を動かし始めた時点）で被選択項目を特定（検知）してもよい。あるいは、検知部１２はユーザが項目を選択した時点で被選択項目を特定（検知）してもよいし、該選択後にユーザが「移動」というメニューを指定した時点で被選択項目を特定（検知）してもよい。
【００３３】
検知部１２は、少なくとも一つの被選択項目の項目ＩＤを取得すると、その項目ＩＤの集合とリストＩＤとを含む選択情報を生成し、この選択情報をサーバ２０に送信する。選択情報は、リストを表示している端末１０上で選択された少なくとも一つの項目を示す情報である。
【００３４】
表示制御部１３は、被選択項目の移動が完了する前の任意の時点において、被選択項目が移動可能な位置を端末１０上に表示する機能要素である。表示制御部１３は、例えば、プロセッサ１０１がクライアントプログラムＰ１を実行して主記憶部１０２、通信制御部１０４、および出力装置１０６を制御することで実現される。
【００３５】
表示制御部１３は、検知部１２により送信された選択情報に応じてサーバ２０から送られてきた位置情報を受信する。この位置情報は、被選択項目がどこに移動できるかの判定結果を示す情報であり、これにより、端末１０は移動可能な位置と移動できない位置とを特定することができる。位置情報は、被選択項目が移動可能な位置を示してもよいし、被選択項目が移動できない位置を示してもよいし、これら２種類の位置の双方を示してもよい。本実施形態では、位置情報は被選択項目が移動可能な位置を示すものとする。被選択項目が移動可能な位置は、先頭の項目の前、項目と項目との間、および最後尾の項目の後ろのうちのどこかに設定され得る。例えば、図６に示すように、リストＩＤ「０１」に対応するリスト９２（質問Ａ１〜Ａ８）が端末１０上に表示されているならば、被選択項目の移動可能な位置は位置Ｌａ０，Ｌａ１，…，Ｌａ８のどこかであり得る。
【００３６】
表示制御部１３は、被選択項目の移動が完了する前の任意の時点に、被選択項目が移動できる位置（可能な移動先）とそれが移動できない位置（不可能な移動先）とを区別して表示する。
【００３７】
「区別して表示する」とは、被選択項目が移動できる位置の表示態様と、被選択項目が移動できない位置の表示態様とを異ならせることを意味する。あるいは、「区別して表示する」とは、ユーザが、被選択項目が移動できる位置と、被選択項目が移動できない位置とを認識できるように各位置を表示することを意味する。
【００３８】
「被選択項目の移動が完了する前」とは、ユーザの操作により被選択項目の移動先が指定される前までの時間範囲を意味する。例えば、ユーザがドラッグ・アンド・ドロップで少なくとも一つの項目を移動させる場合には、ドロップ操作が行われる前までの時間範囲が、「被選択項目の移動が完了する前」を意味する。
【００３９】
「任意の時点」とは、被選択項目が移動できる位置とそれが移動できない位置とを区別して表示する時間範囲が、被選択項目の移動が完了する前であればいつでもよいことを意味する。例えば、表示制御部１３は被選択項目の移動が完了する前において間断なく、被選択項目が移動できる位置とそれが移動できない位置とを区別して表示してもよい。あるいは、表示制御部１３は被選択項目の移動が完了する前までの時間範囲の一部でのみ、被選択項目が移動できる位置とそれが移動できない位置とを区別して表示してもよい。あるいは、表示制御部１３は、ユーザが被選択項目を移動することなくその選択を解除した場合に、その解除操作の前までの任意の時点において、被選択項目が移動できる位置とそれが移動できない位置とを区別して表示してもよい。この「解除操作の前までの任意の時点」も、「被選択項目の移動が完了する前の任意の時点」という概念に含まれる。
【００４０】
本実施形態では、表示制御部１３は位置情報で示される位置（移動可能な位置）を所定の色の太線で表示し、位置情報で示されない位置（移動できない位置）の表示を初期状態のままに維持することで、これら２種類の位置を区別して表示する。図６の例では、移動可能な位置Ｌａ３，Ｌａ４が太線９１で表され、移動不可能な位置Ｌａ０〜Ｌａ２およびＬａ５〜Ｌａ８が、初期状態である、単なる区切り線で表されている。リスト９２が図６の状態である場合にユーザが被選択項目を位置Ｌａ３，Ｌａ４のいずれかに移した場合には、被選択項目がその移動先に移り、この移動に従って、他の項目の表示位置が変わる。これに対して、ユーザが被選択項目を位置Ｌａ０〜Ｌａ２およびＬａ５〜Ｌａ８のいずれかに移そうとした場合には、その移動が行われることなく、リストは項目が移動対象として選択される前の状態に戻る。
【００４１】
なお、移動可能な位置および移動できない位置の表示方法は限定されない。例えば、表示制御部１３は移動できない位置を太線で表示し、移動可能な位置の表示を初期状態のままに維持してもよい。あるいは、表示制御部１３は文字または記号を用いてそれら２種類の位置の表示態様を異ならせてもよい。
【００４２】
リスト変更部１４は、ユーザの操作により項目が並び替えられたリストの情報を変更情報としてサーバ２０に送信する機能要素である。この送信に応じてサーバ２０がリストデータを更新することで、項目の並び替えが確定する。リスト変更部１４は、例えば、プロセッサ１０１がクライアントプログラムＰ１を実行して主記憶部１０２および通信制御部１０４を制御することで実現される。
【００４３】
変更情報は、リスト内の変更後の各項目の順序を示す情報である。例えば、リストＩＤ「０１」のリストにおける変更後の並び順が先頭から質問Ａ２，質問Ａ１，質問Ａ３，質問Ａ４，質問Ａ５，質問Ａ６，質問Ａ８，質問Ａ７であるとする。この場合には、変更情報は、質問Ａ１，質問Ａ２，質問Ａ３，質問Ａ４，質問Ａ５，質問Ａ６，質問Ａ７，質問Ａ８の順序がそれぞれ２，１，３，４，５，６，８，７であることを示す。
【００４４】
リスト変更部１４が変更情報を送信するタイミングは限定されないが、一例として、リスト変更部１４は一回の操作が完了する度に変更情報を送信してもよい。ここで、「一回の操作」とは、少なくとも一つの項目が移動対象として選択されて、その被選択項目の移動先（図６の例では、位置Ｌａ３およびＬａ４のいずれか一つ）が指定される（すなわち、被選択項目が移動先に移る）ことを意味する。一回の操作が完了する度に変更情報を送信する場合には、リスト変更部１４は変更情報に応じてサーバ２０から送られてくる完了通知を受信することで、変更後の順序がリストデータベース３１に登録されたことを認識し、変更後のリストをそのまま表示し続ける。完了通知は、ユーザの操作に従って実行された順序の変更が確定したことを示すデータである。
【００４５】
次に、サーバ２０の機能構成を説明する。図２に示すように、サーバ２０は機能的構成要素としてリスト提供部２１、受信部２２、位置判定部２３、送信部２４、およびリスト更新部２５を備える。これらの機能要素は、サーバ２０のプロセッサ１０１が、予めインストールされたサーバプログラムＰ２を実行することで実現される。
【００４６】
リスト提供部２１は、リストデータを端末１０に提供する機能要素である。リスト提供部２１は、例えば、プロセッサ１０１がサーバプログラムＰ２を実行して主記憶部１０２および通信制御部１０４を制御することで実現される。
【００４７】
端末１０からリスト要求を受信すると、リスト提供部２１はその要求に含まれるリストＩＤに対応するリストデータをリストデータベース３１から読み出し、そのリストデータを端末１０に送信する。図４に示す例を前提として、リストＩＤ「０１」を含むリスト要求を受信した場合には、リスト提供部２１は質問Ａ１〜Ａ８を含むリストデータを取得し、そのリストデータを端末１０に送信する。
【００４８】
受信部２２は、選択情報を端末１０から受信する機能要素である。受信部２２は、例えば、プロセッサ１０１がサーバプログラムＰ２を実行して主記憶部１０２および通信制御部１０４を制御することで実現される。受信部２２は選択情報を位置判定部２３に出力する。
【００４９】
位置判定部２３は、制約データベース３２を参照して、選択情報で示される被選択項目が移動できる位置を判定する機能要素である。受信部２２は、例えば、プロセッサ１０１がサーバプログラムＰ２を実行して主記憶部１０２および通信制御部１０４を制御することで実現される。
【００５０】
位置判定部２３は制約データベース３２にアクセスして、選択情報に含まれるリストＩＤに対応する制約情報を参照する。また、位置判定部２３はリストデータベース３１にアクセスして、そのリストＩＤに対応するリスト内の現在の順序を参照する。そして、位置判定部２３はこれらの情報に基づいて、選択情報に含まれる各項目ＩＤについて移動可能な位置を判定する。そして、位置判定部２３はその判定結果（本実施形態では、移動可能な位置）を示す位置情報を生成し、その位置情報を送信部２４に出力する。選択情報が一つの項目ＩＤのみを含む場合には、位置判定部２３はその項目ＩＤに対応する移動可能な位置を示す位置情報を生成する。選択情報が少なくとも二つの項目ＩＤを含む場合には、位置判定部２３はそのすべての項目ＩＤに共通の移動可能な位置を示す位置情報を生成する。もし、移動可能な位置が存在しない場合には、位置判定部２３は空値（ｎｕｌｌ）を位置情報として設定する。なお、被選択項目の境界に相当する位置に該項目を移動しても項目の順序は変わらないから、位置判定部２３はそのような位置を移動可能な位置とは判定しない。位置判定部２３は生成した位置情報を送信部２４に出力する。
【００５１】
図４および図５の例と、図６に示される質問の並び順および位置Ｌａ０〜Ｌａ８とを前提として、リストＩＤ「０１」に対する位置情報の例を以下に示す。
【００５２】
選択情報に含まれる項目ＩＤが「０１０１」のみである場合、質問Ａ１の移動に関する制約として、「質問Ａ７は質問Ａ１および質問Ａ２よりも後ろでなければならない。」および「質問Ａ４，Ａ５，Ａ６は一つのグループである。」が存在する。すなわち、質問Ａ１は質問Ａ７よりも前でなければならず、且つ質問Ａ４〜Ａ６の並びの間に入ることができない。したがって、位置判定部２３は位置Ｌａ２，Ｌａ３，Ｌａ６が移動可能な位置であると判定する。位置Ｌａ０，Ｌａ１は質問Ａ１の境界に相当するから、位置判定部２３はこの二つの位置を移動可能な位置とは判定しない（この判定は当然のことなので、以下では被選択項目の境界に相当する位置に関する説明を省略する）。
【００５３】
選択情報に含まれる項目ＩＤが「０１０２」のみである場合、質問Ａ２の移動に関する制約として、「質問Ａ３は質問Ａ２よりも後ろでなければならない。」、「質問Ａ７は質問Ａ１および質問Ａ２よりも後ろでなければならない。」および「質問Ａ４，Ａ５，Ａ６は一つのグループである。」が存在する。すなわち、質問Ａ２は質問Ａ３よりも前でなければならず、質問Ａ７よりも前でなければならず、且つ。質問Ａ４〜Ａ６の並びの間に入ることができない。したがって、位置判定部２３は位置Ｌａ０のみが移動可能な位置であると判定する。
【００５４】
選択情報に含まれる項目ＩＤが「０１０３」のみである場合、質問Ａ３の移動に関する制約として、「質問Ａ３は質問Ａ２よりも後ろでなければならない。」、「質問Ａ４は質問Ａ３よりも後ろでなければならない。」、および「質問Ａ４，Ａ５，Ａ６は一つのグループである。」が存在する。すなわち、質問Ａ３は質問Ａ２よりも後ろでなければならず、質問Ａ４よりも前でなければならず、且つ質問Ａ４〜Ａ６の並びの間に入ることができない。したがって、位置判定部２３は移動可能な位置が存在しないと判定する。
【００５５】
選択情報に含まれる項目ＩＤが「０１０４」のみである場合、質問Ａ４の移動に関する制約として「質問Ａ４は質問Ａ３よりも後ろでなければならない。」および「質問Ａ４，Ａ５，Ａ６は一つのグループである。」が存在する。すなわち、質問Ａ４は質問Ａ３よりも後ろでなければならず、且つ移動後も質問Ａ５，Ａ６と共に並ばなければならない。したがって、位置判定部２３は位置Ｌａ５，Ｌａ６が移動可能な位置であると判定する。
【００５６】
選択情報に含まれる項目ＩＤが「０１０５」のみである場合、質問Ａ５の移動に関する制約として「質問Ａ４，Ａ５，Ａ６は一つのグループである。」が存在する。すなわち、質問Ａ５は移動後も質問Ａ４，Ａ６と共に並ばなければならない。したがって、位置判定部２３は位置Ｌａ３，Ｌａ６が移動可能な位置であると判定する。
【００５７】
選択情報に含まれる項目ＩＤが「０１０６」のみである場合、質問Ａ６の移動に関する制約として「質問Ａ４，Ａ５，Ａ６は一つのグループである。」が存在する。すなわち、質問Ａ６は移動後も質問Ａ４，Ａ５と共に並ばなければならない。したがって、位置判定部２３は位置Ｌａ３，Ｌａ４が移動可能な位置であると判定する。なお、この場合には、端末１０上でリストが図６に示すように表示される。
【００５８】
選択情報に含まれる項目ＩＤが「０１０７」のみである場合、質問Ａ７の移動に関する制約として、「質問Ａ７は質問Ａ１および質問Ａ２よりも後ろでなければならない。」および「質問Ａ４，Ａ５，Ａ６は一つのグループである。」が存在する。すなわち、質問Ａ７は質問Ａ１および質問Ａ２よりも後ろでなければならず、且つ質問Ａ４〜Ａ６の並びの間に入ることができない。したがって、位置判定部２３は位置Ｌａ２，Ｌａ３，Ｌａ８が移動可能な位置であると判定する。
【００５９】
選択情報に含まれる項目ＩＤが「０１０８」のみである場合、質問Ａ８の移動に関する制約として「質問Ａ４，Ａ５，Ａ６は一つのグループである。」が存在する。すなわち、質問Ａ８は質問Ａ４〜Ａ６の並びの間に入ることができない。したがって、位置判定部２３は位置Ｌａ０〜Ｌａ３，Ｌａ６が移動可能な位置であると判定する。
【００６０】
選択情報に含まれる項目ＩＤが「０１０１」および「０１０２」である場合、上述した通り、質問Ａ１は位置Ｌａ２，Ｌａ３，Ｌａ６に移動可能であり、質問Ａ２は位置Ｌａ０にのみ移動可能である。したがって、位置判定部２３は質問Ａ１，Ａ２に共通の移動可能な位置は存在しないと判定する。
【００６１】
選択情報に含まれる項目ＩＤが「０１０１」および「０１０７」である場合、質問Ａ１は位置Ｌａ２，Ｌａ３，Ｌａ６に移動可能であり、質問Ａ７は位置Ｌａ２，Ｌａ３，Ｌａ８に移動可能である。したがって、位置判定部２３は質問Ａ１，Ａ７に共通の移動可能な位置が位置Ｌａ２，Ｌａ３であると判定する。ただし、質問Ａ１，Ａ７に関する制約として「質問Ａ７は質問Ａ１および質問Ａ２よりも後ろでなければならない。」が存在する。したがって、位置判定部２３は、移動可能な位置Ｌａ２，Ｌａ３において質問Ａ７を質問Ａ１よりも後ろに置くと判定する。すなわち、位置判定部２３は複数の被選択項目の位置を少なくとも一つの共通の位置に変更できると判定した場合には、さらに、該共通の位置での該複数の被選択項目の順序を制約情報に基づいて判定する。
【００６２】
選択情報に含まれる項目ＩＤが「０１０１」および「０１０４」である場合、質問Ａ１は位置Ｌａ２，Ｌａ３，Ｌａ６に移動可能であり、質問Ａ４は位置Ｌａ５，Ｌａ６に移動可能である。したがって、位置判定部２３は質問Ａ１，Ａ４に共通の移動可能な位置が位置Ｌａ６であると判定する。ただし、質問Ａ１，Ａ４に関する制約として「質問Ａ４，Ａ５，Ａ６は一つのグループである。」が存在する。したがって、位置判定部２３は、移動可能な位置Ｌａ６において、質問Ａ１が質問Ａ４〜Ａ６の並びの間に入らないように質問Ａ１を質問Ａ４よりも後ろに置くと判定する。
【００６３】
このように、位置判定部２３は、複数の被選択項目の位置を少なくとも一つの共通の位置に変更できると判定した場合には、さらに、該少なくとも一つの共通の位置のそれぞれにおける該複数の被選択項目の順序を制約情報を参照して判定する。位置判定部２３は、選択情報が３個以上の項目ＩＤを含む場合も、選択情報が２個の項目ＩＤを含む場合と同様に、複数の被選択項目が移動可能な位置を判定し、その位置における該複数の被選択項目の順序を制約情報に基づいて判定する。
【００６４】
送信部２４は、被選択項目が移動できる位置と移動できない位置とを端末１０上で区別して表示させるために、位置判定部２３から入力された位置情報を端末１０に送信する機能要素である。送信部２４は、例えば、プロセッサ１０１がサーバプログラムＰ２を実行して主記憶部１０２および通信制御部１０４を制御することで実現される。位置情報は、端末１０から送られてきた選択情報に対する応答であるといえる。上述したように、端末１０の表示制御部１３はその位置情報に基づいて、移動可能な位置に太線を描画する（図１における太線９１を参照）。
【００６５】
リスト更新部２５は、ユーザの操作による項目の並び替えを確定させる機能要素である。リスト更新部２５は、例えば、プロセッサ１０１がサーバプログラムＰ２を実行して主記憶部１０２および通信制御部１０４を制御することで実現される。
【００６６】
リスト更新部２５は、端末１０から受信した変更情報で示されるリストＩＤに対応する、リストデータベース３１内のリストデータを更新する。この更新により、リスト内のいくつかの項目の順序が変わるとともに、更新日時が現在日時で上書きされる。ここで、「リストデータの更新」とは、リストデータベース３１内の処理対象の値を新たな値で上書きする処理であり、この更新の前後で値が変わる場合もあれば変わらない場合もあり得る。例えば、リストＩＤ「０１」のリストデータの初期値が図４に示す通りであり、変更情報が、順序が「先頭から質問Ａ２，質問Ａ１，質問Ａ３，質問Ａ４，質問Ａ５，質問Ａ６，質問Ａ８，質問Ａ７」に変わったことを示すとする。この場合には、リスト更新部２５の処理により、リストデータベース３１内の項目ＩＤ「０１０１」の順序が１から２に変わり、項目ＩＤ「０１０２」の順序が２から１に変わり、項目ＩＤ「０１０７」の順序が７から８に変わり、項目ＩＤ「０１０８」の順序が８から７に変わる。他の項目ＩＤの順序は結果的に変わらない。更新日時は「２０１４年１１月１５日１１時３０分」から、更新処理時点の日時に更新される。
【００６７】
端末１０が一回の操作の完了の度に変更情報をサーバ２０に送信する場合には、リスト更新部２５は制約データベース３２（リストＩＤに対応する制約情報）を参照することなく、変更情報に基づいてリストデータベース３１を更新し、更新の確定を示す完了通知を生成して端末１０にその通知を送信する。
【００６８】
次に、図７を用いて、リスト管理システム１の動作を説明するとともに本実施形態に係る表示制御方法について説明する。この説明では、リスト取得部１１およびリスト提供部２１の連携によりリストが既に端末１０上に表示されているものとする。
【００６９】
ユーザが端末１０上で移動対象の項目を少なくとも一つ選択すると、検知部１２がその選択の操作を検知し（ステップＳ１１）、被選択項目の項目ＩＤとリストＩＤとを含む選択情報を生成し、その選択情報をサーバ２０に送信する（ステップＳ１２）。
【００７０】
サーバ２０では受信部２２がその選択情報を受信する（ステップＳ１２、受信ステップ）。続いて、位置判定部２３がその選択情報（リストＩＤおよび１以上の項目ＩＤ）に基づいて制約データベース３２を参照して、被選択項目が移動できる位置を判定し、その位置を示す位置情報を生成する（ステップＳ１３、位置判定ステップ）。選択情報が一つの項目ＩＤのみを含む場合には、位置判定部２３はその項目ＩＤに対応する移動可能な位置を示す位置情報を生成する。選択情報が複数の項目ＩＤを含む場合には、位置判定部２３はすべての項目ＩＤに共通の移動可能な位置を示す位置情報を生成する。もし、移動可能な位置が存在しない場合には、位置判定部２３は空値（ｎｕｌｌ）を位置情報として設定する。そして、送信部２４が生成された位置情報を端末１０に送信する（ステップＳ１４、送信ステップ）。
【００７１】
端末１０では、表示制御部１３がその位置情報を受信し、この位置情報に基づいて、被選択項目が移動できる位置と移動できない位置とを区別して表示する（ステップＳ１５）。その後、ユーザが被選択項目の移動を完了すると、リスト変更部１４およびリスト更新部２５の処理によりリストデータが更新される。
【００７２】
なお、ステップＳ１１〜Ｓ１５の処理、およびその後のリストデータの更新は繰返し実行され得る。
【００７３】
次に、図８を用いて、リスト管理システム１を実現するためのリスト管理プログラムＰを説明する。リスト管理プログラムＰは、コンピュータ１００を端末１０として機能させるクライアントプログラム（表示制御プログラム）Ｐ１と、コンピュータ１００をサーバ２０として機能させるサーバプログラムＰ２とを含む。リスト管理プログラムＰの言語は何ら限定されない。例えば、クライアントプログラムＰ１がＪａｖａＳｃｒｉｐｔ（登録商標）で作成され、サーバプログラムＰ２がＪａｖａ（登録商標）で作成されてもよい。
【００７４】
クライアントプログラムＰ１は、メインモジュールＰ１０、リスト取得モジュールＰ１１、検知モジュールＰ１２、表示制御モジュールＰ１３、およびリスト変更モジュールＰ１４を備える。
【００７５】
メインモジュールＰ１０は、端末側の処理を統括的に制御する部分である。リスト取得モジュールＰ１１、検知モジュールＰ１２、表示制御モジュールＰ１３、およびリスト変更モジュールＰ１４を実行することにより実現される機能はそれぞれ、上記のリスト取得部１１、検知部１２、表示制御部１３、およびリスト変更部１４の機能と同様である。
【００７６】
サーバプログラムＰ２は、メインモジュールＰ２０、リスト提供モジュールＰ２１、受信モジュールＰ２２、位置判定モジュールＰ２３、送信モジュールＰ２４、およびリスト更新モジュールＰ２５を備える。
【００７７】
メインモジュールＰ２０は、サーバ側の処理を統括的に制御する部分である。リスト提供モジュールＰ２１、受信モジュールＰ２２、位置判定モジュールＰ２３、送信モジュールＰ２４、およびリスト更新モジュールＰ２５を実行することにより実現される機能はそれぞれ、上記のリスト提供部２１、受信部２２、位置判定部２３、送信部２４、およびリスト更新部２５の機能と同様である。
【００７８】
クライアントプログラムＰ１およびサーバプログラムＰ２はそれぞれ、例えば、ＣＤ−ＲＯＭやＤＶＤ−ＲＯＭ、半導体メモリなどの有形の記録媒体に固定的に記録された上で提供されてもよい。また、クライアントプログラムＰ１およびサーバプログラムＰ２はそれぞれ、搬送波に重畳されたデータ信号として通信ネットワークを介して提供されてもよい。クライアントプログラムＰ１とサーバプログラムＰ２とはそれぞれ異なる流通経路で提供されてもよい。クライアントプログラムＰ１は、端末にインストールされることなくサーバから端末に毎回ダウンロードされる態様で提供されてもよいし、端末にインストールされてもよい。これに対して、サーバプログラムＰ２は一般にサーバに予めインストールされる。
【００７９】
なお、クライアントプログラム（表示制御プログラム）は、検知モジュールＰ１２および表示制御モジュールＰ１３のみを含む態様で提供されてもよい。複数のコンピュータ１００を一つのサーバ２０として機能させる場合には、サーバプログラムＰ２のモジュール群がそれぞれのコンピュータ１００に分散して配置されてもよい。
【００８０】
（第２実施形態）
第２実施形態に係るリスト管理システム１Ａの機能および構成を説明する。第２実施形態が第１実施形態と異なる点は、リスト管理システム１Ａが、複数の端末で同一のリストが編集されている場合にも適応することである。具体的には、同一のリストが複数の端末上で同時に表示されている際にある一つの端末でリスト内の項目の順序が変更されると、その変更が他の端末に反映される。以下では、第２実施形態に特有の事項について詳細に説明し、第１実施形態と同様の事項については説明を省略する。
【００８１】
図９に示すように、リスト管理システム１Ａは端末１０Ａ、サーバ２０Ａ、およびデータベース群３０を備える。データベース群３０は第１実施形態と同じだが、端末１０Ａおよびサーバ２０Ａの機能構成は第１実施形態と異なる。また、リスト管理システム１Ａは複数の端末１０Ａを備える。
【００８２】
端末１０Ａは機能的構成要素としてリスト取得部１１、検知部１２、表示制御部１３Ａ、およびリスト変更部１４を備える。これらの機能要素は、端末１０Ａのプロセッサ１０１が、インストールまたはダウンロードされたクライアントプログラムＰ１Ａを実行することで実現される。第１実施形態と機能が異なるのは表示制御部１３Ａなので、以下では表示制御部１３Ａについて説明する。
【００８３】
表示制御部１３Ａは、被選択項目の移動が完了する前の任意の時点において、被選択項目が移動可能な位置を端末１０Ａ上に表示する機能要素である。加えて、表示制御部１３Ａは端末１０Ａ上に表示されているリストがその表示中に他の端末１０Ａからの指示で更新されたか否かをサーバ２０Ａに定期的に問い合わせ、リストが更新された場合には、端末１０Ａ上に表示されているリストを更新後のものに置き換えるという追加機能を有する。表示制御部１３Ａが第１実施形態における表示制御部１３と異なるのはこの追加機能である。表示制御部１３Ａは、例えば、プロセッサ１０１がクライアントプログラムＰ１Ａを実行して主記憶部１０２、通信制御部１０４、および出力装置１０６を制御することで実現される。
【００８４】
表示制御部１３Ａは、表示制御部１３と同じ処理により、被選択項目が移動できる位置とそれが移動できない位置とを区別して表示する。続いて、表示制御部１３Ａは、リストが他の端末１０Ａ（他のユーザ）により更新されたか否かを定期的に（例えば１秒ごとに）サーバ２０Ａに問い合わせる。この問合せは、移動可能な位置まで被選択項目が動かされて項目の順序が変わるまでの間、またはユーザの操作により、移動可能な位置に被選択項目が移動することなく項目の選択が解除されるまでの間、実行される。例えば、表示制御部１３Ａはユーザがドラッグ・アンド・ドロップを行っている間においてその問合せを実行する。
【００８５】
具体的には、表示制御部１３Ａは選択情報（被選択項目の項目ＩＤの集合、およびリストＩＤ）とリストデータの更新日時とを含む問合せ信号を生成してサーバ２０Ａにこの信号を送信する。その後、表示制御部１３Ａはその問合せ信号に応じてサーバ２０Ａから送られてくる未変更通知または変更通知を受信する。
【００８６】
未変更通知は、端末１０Ａで現在表示されているリストデータが他の端末１０Ａにより更新されていないことを示すデータである。未変更通知を受信したということは、端末１０Ａで現在表示されているリストデータが、リストデータベース３１に現在記憶されているリストデータと一致しており、リスト管理システム１Ａにおいてリストデータの整合が取れていることを意味する。
【００８７】
変更通知は、端末１０Ａで現在表示されているリストが他の端末１０Ａで先に更新されたことを示すデータである。この変更通知は、問合せ信号により送られたリストＩＤに対応する最新のリストデータと、そのリストデータに対応する最新の位置情報とを含む。変更通知を受信したということは、端末１０Ａで現在表示されているリストデータが、リストデータベース３１に現在記憶されているリストデータと異なっており、リスト管理システム１Ａにおいてリストデータの不整合が生じていることを意味する。
【００８８】
未変更通知を受信した場合には、表示制御部１３Ａは次の問合せ信号をサーバ２０Ａに送信するまで他の処理を実行しない。したがって、被選択項目が移動できる位置と、被選択項目が移動できない位置とにおける表示態様は変わらない。
【００８９】
一方、変更通知を受信した場合には、表示制御部１３Ａは、現在表示されているリストデータを、その変更通知に含まれるリストデータに置き換える。また、表示制御部１３Ａは置換後のリストに対して、最新の位置情報に基づき、被選択項目が移動できる位置（可能な移動先）とそれが移動できない位置（不可能な移動先）とを区別して表示する。この処理により、端末１０Ａに表示されているリスト（項目の順序）が最新のものに置き換わると共に、場合によっては移動できる位置および移動できない位置が変化する。この処理により、ユーザは、項目の順序を変更しようとしている間に、リスト内の項目の配置と被選択項目の移動可能な位置とが変わったことを知る。ユーザは、現在の被選択項目をそのまま選択し続けることができるが、最新の位置情報によってはその被選択項目をどこにも移動できない場合が生ずる。
【００９０】
サーバ２０Ａは機能的構成要素としてリスト提供部２１、受信部２２、位置判定部２３Ａ、送信部２４Ａ、リスト更新部２５、および状況判定部２６を備える。これらの機能要素は、サーバ２０Ａのプロセッサ１０１が、予めインストールされたサーバプログラムＰ２Ａを実行することで実現される。第１実施形態と機能が異なるのは位置判定部２３Ａ、送信部２４Ａ、状況判定部２６なので、以下ではこれらの機能要素について説明する。
【００９１】
まず、状況判定部２６について説明する。状況判定部２６は、リストを表示している端末１０Ａからの問合せに応じて、その表示中に該リストが他の端末１０Ａにより更新されたか否かを判定する機能要素である。状況判定部２６は、例えば、プロセッサ１０１がサーバプログラムＰ２Ａを実行して主記憶部１０２および通信制御部１０４を制御することで実現される。
【００９２】
状況判定部２６は、端末１０Ａから問合せ信号を受信すると、その信号からリストＩＤおよび更新日時を取得し、そのリストＩＤに対応するリストデータをリストデータベース３１から読み出す。そして、状況判定部２６は、リストデータベース３１から読み出した更新日時と問合せ信号から読み出した更新日時とを比較する。
【００９３】
双方の更新日時が等しいならば、問合せ信号を送ってきた端末１０Ａでリストデータが表示されている間に他の端末１０Ａによりそのリストデータは更新されていない。したがって、問合せ信号を送ってきた端末１０Ａとリストデータベース３１との間でリストデータベースの整合は取れている。この場合には、状況判定部２６は、端末１０Ａでのリストの表示中に該リストが更新されていないと判定し、上記の未変更通知を生成してその通知を送信部２４Ａに出力する。
【００９４】
これに対して、双方の更新日時が異なる場合（より具体的には、リストデータベース３１から読み出した更新日時が、問合せ信号から読み出した更新日時よりも新しい場合）には、問合せ信号を送ってきた端末１０Ａでリストデータが表示されている間に他の端末１０Ａによりそのリストデータが更新されたことになる。したがって、問合せ信号を送ってきた端末１０Ａとリストデータベース３１との間でリストデータベースの不整合が生じている。この場合には、状況判定部２６は、端末１０Ａでのリストの表示中に該リストが他の端末１０Ａにより更新されたと判定する。そして、状況判定部２６は問合せ信号に含まれる選択情報と、リストデータベース３１から読み出した最新のリストデータとを位置判定部２３Ａに出力する。
【００９５】
位置判定部２３Ａは、第１実施形態における位置判定部２３と同じ処理を実行する。これに加えて、位置判定部２３Ａは、状況判定部２６から選択情報および最新のリストデータが入力された場合に次の処理を実行する。すなわち、位置判定部２３Ａはこの場合にも位置判定部２３と同じ処理を実行することで、最新のリストデータに対応する最新の位置情報を得る。最新の位置情報は、問合せ信号を送ってきた端末１０Ａで現在選択されている項目が最新のリスト内のどの位置に移動可能であるかを示す情報である。位置判定部２３Ａは、最新のリストデータおよび最新の位置情報を含む変更通知を生成してその通知を送信部２４Ａに出力する。
【００９６】
送信部２４Ａは、第１実施形態における送信部２４と同じ処理を実行する。これに加えて、送信部２４Ａは、未変更通知または変更通知を、問合せ信号に対応する応答として端末１０Ａに送信する。
【００９７】
次に、図１０および図１１を用いて、リスト管理システム１Ａの動作を説明するとともに本実施形態に係る表示制御方法について説明する。この説明では、同一のリストが既に２台の端末１０Ａ上に表示されているものとし、その２台の端末１０Ａを「端末Ｘ」および「端末Ｙ」という名前で区別する。また、端末Ｘ，Ｙのユーザをそれぞれ「ユーザＵｘ」「ユーザＵｙ」とする。以下の説明では、ユーザＵｙがリストの順序を変えようとしている間に、ユーザＵｘがそのリストの順序を先に変えた場合に、端末Ｙ上でどのような処理が実行されるかに着目する。
【００９８】
ステップＳ２１〜Ｓ２５は端末Ｘに関する処理であり、第１実施形態におけるステップＳ１１〜Ｓ１５と同様である。ユーザＵｘが端末Ｘ上で移動対象の項目を少なくとも一つ選択すると、検知部１２がその選択の操作を検知し（ステップＳ２１）、被選択項目の項目ＩＤとリストＩＤとを含む選択情報を生成し、その選択情報をサーバ２０Ａに送信する（ステップＳ２２）。サーバ２０Ａでは受信部２２がその選択情報を受信する（ステップＳ２２、受信ステップ）。続いて、位置判定部２３Ａがその選択情報に基づいて制約データベース３２を参照して、被選択項目が移動できる位置を判定し、その位置を示す位置情報を生成する（ステップＳ２３、位置判定ステップ）。そして、送信部２４Ａが生成された位置情報を端末Ｘに送信する（ステップＳ２４、送信ステップ）。端末Ｘでは、表示制御部１３Ａがその位置情報を受信し、この位置情報に基づいて、被選択項目が移動できる位置と移動できない位置とを区別して表示する（ステップＳ２５）。
【００９９】
ステップＳ２６〜Ｓ３０は端末Ｙに関する処理であり、これも第１実施形態におけるステップＳ１１〜Ｓ１５と同様である。ユーザＵｙが端末Ｙ上で移動対象の項目を少なくとも一つ選択すると、検知部１２がその選択の操作を検知し（ステップＳ２６）、被選択項目の項目ＩＤとリストＩＤとを含む選択情報を生成し、その選択情報をサーバ２０Ａに送信する（ステップＳ２７）。サーバ２０Ａでは受信部２２がその選択情報を受信する（ステップＳ２７、受信ステップ）。続いて、位置判定部２３Ａがその選択情報に基づいて制約データベース３２を参照して、被選択項目が移動できる位置を判定し、その位置を示す位置情報を生成する（ステップＳ２８、位置判定ステップ）。そして、送信部２４Ａが生成された位置情報を端末Ｙに送信する（ステップＳ２９、送信ステップ）。端末Ｙでは、表示制御部１３Ａがその位置情報を受信し、この位置情報に基づいて、被選択項目が移動できる位置と移動できない位置とを区別して表示する（ステップＳ３０）。
【０１００】
なお、図１０では端末Ｘに関する処理が端末Ｙに関する処理より先行しているが、時間軸に沿ったステップＳ２１〜Ｓ３０の処理の前後関係は何ら限定されない。
【０１０１】
その後、端末Ｙでは表示制御部１３Ａが問合せ信号を生成してサーバ２０Ａにその信号を送信する（ステップＳ３１）。サーバ２０Ａでは、状況判定部２６がその問合せ信号に応じてリストデータベース３１を参照することで、リストデータの更新状況を確認する（ステップＳ３２）。この時点ではユーザＵｘの操作によりリストデータが更新されていないので、リストデータベース３１内のリストデータの更新日時は問合せ信号に含まれる更新日時と一致する。したがって、状況判定部２６は未変更通知を生成し、送信部２４Ａが端末Ｙにその通知を送信する（ステップＳ３３）。
【０１０２】
その後、端末ＸでユーザＵｘが、項目の順序を変える一回の操作を完了すると（ステップＳ３４）、リスト変更部１４が変更情報を生成してサーバ２０Ａにその情報を送信する（ステップＳ３５）。サーバ２０Ａではリスト更新部２５がその変更情報に基づいてリストデータベース３１内の対応するリストデータを更新する（ステップＳ３６）。この結果、リストデータベース３１と端末Ｙとの間でリストデータが一時的に整合しなくなる。
【０１０３】
その後、未変更通知を受信した端末Ｙでは、表示制御部１３Ａが所定の時間の経過後に再び問合せ信号をサーバ２０Ａに送信する（ステップＳ３７）。サーバ２０Ａでは、状況判定部２６がその問合せ信号に応じてリストデータベース３１を参照することで、リストデータの更新状況を確認する（ステップＳ３８）。この時点ではユーザＵｘの操作によりリストデータが更新されているので、リストデータベース３１内のリストデータの更新日時は問合せ信号に含まれる更新日時よりも新しい。したがって、状況判定部２６は、端末Ｙでのリストの表示中に該リストが他の端末（端末Ｘ）により更新されたと判定する。この場合には、位置判定部２３Ａが再度、被選択項目が移動できる位置を判定して変更通知を生成し（ステップＳ３９、位置判定ステップ）、送信部２４Ａが端末Ｙにその通知を送信する（ステップＳ４０、送信ステップ）。
【０１０４】
端末Ｙでは、表示制御部１３Ａがその変更通知に応じて、表示中のリストを最新の状態に切り替えると共に、被選択項目が移動できる位置を再表示する（ステップＳ４１）。この処理により、リストデータベース３１と端末Ｙとの間でリストデータが再び整合する。
【０１０５】
その後、端末ＹでユーザＵｙが、項目の順序を変える一回の操作を完了すると（ステップＳ４２）、リスト変更部１４が変更情報を生成してサーバ２０Ａにその情報を送信する（ステップＳ４３）。サーバ２０Ａではリスト更新部２５がその変更情報に基づいてリストデータベース３１内の対応するリストデータを更新する（ステップＳ４４）。この結果、ユーザＵｘ，Ｕｙの双方の操作がリストデータベース３１に反映される。
【０１０６】
なお、端末Ｘも、ユーザＵｘが一回の操作を完了するまでの間に問合せ信号を送信し得るが、図１０および図１１ではその送信についての説明を省略している。
【０１０７】
このような一連の処理の間における、端末Ｘ，Ｙ上で表示されるリストの変化の例を図１２に示す。端末Ｘ，Ｙの双方で、図４および図５に示される、リストＩＤが「０２」に対応するリスト９３が表示されたとする。そして、ユーザＵｘが端末Ｘ上で質問Ｂ３を移動対象として選択し、ユーザＵｙが端末Ｙ上で質問Ｂ４を移動対象として選択したとする。リストＩＤ「０２」に対しては、「質問Ｂ３は質問Ｂ１よりも後ろでなければならない」と「質問Ｂ４は質問Ｂ３よりも後ろでなければならない」という制約がある。この制約に基づいて、端末Ｘ上では、質問Ｂ３が移動可能な位置に太線９１ａが表示され、端末Ｙ上では、質問Ｂ４が移動可能な位置に太線９１ｂが表示される。
【０１０８】
ユーザＵｙが質問Ｂ４の順序変更を確定する前にユーザＵｘが質問Ｂ３を質問Ｂ１と質問Ｂ２との間に移したとすると、リストデータベース３１内のリストＩＤ「０２」に対応するリストデータが更新される。その後、端末Ｙが問合せ信号をサーバ２０Ａに送信して変更通知を受信し、その変更通知を処理することで、端末Ｘで実行された変更が端末Ｙ上に反映される。図１２の例では、端末Ｙにおいて質問Ｂ４が移動可能な位置が二つに増える。
【０１０９】
なお、このようなリストデータの同期は、同一のリストに対して複数の端末１０Ａ上で順序変更の操作がなされている場合にのみ起こり得るのではなく、同一のリストを表示している複数の端末１０Ａのうちの一つのみで順序変更の操作がなされている場合にも起こり得る。例えば、図１２の例において、ユーザＵｙがリスト９３に対して何も操作していなくても、ユーザＵｘが質問Ｂ３の順序を変えたことで、その変更が反映されたリスト９３が端末Ｙ上に表示される。
【０１１０】
次に、図１３を用いて、リスト管理システム１Ａを実現するためのリスト管理プログラムＰＡを説明する。リスト管理システム１Ａは、コンピュータ１００を端末１０Ａとして機能させるクライアントプログラム（表示制御プログラム）Ｐ１Ａと、コンピュータ１００をサーバ２０Ａとして機能させるサーバプログラムＰ２Ａとを含む。第１実施形態と同様に、リスト管理プログラムＰＡの言語は何ら限定されない。
【０１１１】
クライアントプログラムＰ１Ａが第１実施形態におけるクライアントプログラムＰ１と異なる点は、表示制御モジュールＰ１３に代えて表示制御モジュールＰ１３Ａを備えることである。表示制御モジュールＰ１３Ａを実行することにより実現される機能は表示制御部１３Ａの機能と同様である。
【０１１２】
サーバプログラムＰ２Ａは、位置判定モジュールＰ２３および送信モジュールＰ２４に代えて位置判定モジュールＰ２３Ａおよび送信モジュールＰ２４Ａを備える点で、第１実施形態におけるサーバプログラムＰ２と異なる。加えて、サーバプログラムＰ２Ａは、状況判定モジュールＰ２６をさらに備える。位置判定モジュールＰ２３Ａ、送信モジュールＰ２４Ａ、および状況判定モジュールＰ２６を実行することにより実現される機能はそれぞれ、位置判定部２３Ａ、送信部２４Ａ、および状況判定部２６の機能と同様である。
【０１１３】
なお、クライアントプログラム（表示制御プログラム）は、検知モジュールＰ１２および表示制御モジュールＰ１３Ａのみを含む態様で提供されてもよい。複数のコンピュータ１００を一つのサーバ２０Ａとして機能させる場合には、サーバプログラムＰ２Ａのモジュール群がそれぞれのコンピュータ１００に分散して配置されてもよい。
【０１１４】
本実施形態では、端末１０Ａ上でリスト内の少なくとも一つの信号が選択されている間に問合せ信号が送信される場合に焦点を絞って説明した。しかし、表示制御部１３Ａは、リスト内の項目が移動対象として選択されているか否かにかかわらず問合せ信号をサーバ２０Ａに送信してもよい。リスト内の項目が移動対象として選択されていない場合には、表示制御部１３ＡはリストＩＤおよびリストデータの更新日時を含む問合せ信号を送信すればよい。一方、状況判定部２６はその問合せ信号に応じてリストの更新の有無を判定し、更新されていなければ未変更通知を生成し、変更されていれば、更新後のリストデータを含む変更通知を生成する。そして、送信部２４Ａはその未変更通知または変更通知を、問合せ信号に対する応答として端末１０Ａに送信する。
【０１１５】
以上説明したように、本発明の一側面に係るサーバは、複数の項目の集合を含むリストを表示している端末上で選択された少なくとも一つの項目を示す選択情報を該端末から受信する受信部と、複数の項目の順序に関する制約を示す制約情報を記憶する記憶部を参照して、リスト内で少なくとも一つの項目が移動できる位置を判定する位置判定部と、少なくとも一つの項目が移動できる位置と移動できない位置とを、該少なくとも一つの項目の移動が完了する前の任意の時点において端末上で区別して表示させるために、位置判定部による判定結果を示す位置情報を該端末に送信する送信部と、を備える。
【０１１６】
本発明の一側面に係る表示制御方法は、プロセッサを備えるサーバにより実行される表示制御方法であって、複数の項目の集合を含むリストを表示している端末上で選択された少なくとも一つの項目を示す選択情報を該端末から受信する受信ステップと、複数の項目の順序に関する制約を示す制約情報を記憶する記憶部を参照して、リスト内で少なくとも一つの項目が移動できる位置を判定する位置判定ステップと、少なくとも一つの項目が移動できる位置と移動できない位置とを、該少なくとも一つの項目の移動が完了する前の任意の時点において端末上で区別して表示させるために、位置判定ステップにおける判定結果を示す位置情報を該端末に送信する送信ステップと、を含む。
【０１１７】
本発明の一側面に係る表示制御プログラムは、複数の項目の集合を含むリストを表示している端末上で少なくとも一つの項目が選択されたことを検知し、該少なくとも一つの項目を示す選択情報をサーバに送信する検知部と、選択情報に応じてサーバから送信された位置情報を受信し、該位置情報に基づいて、リスト内で少なくとも一つの項目が移動できる位置と移動できない位置とを、該少なくとも一つの項目の移動が完了する前の任意の時点において区別して表示する表示制御部と、としてコンピュータを機能させ、サーバが、複数の項目の順序に関する制約を示す制約情報を記憶する記憶部を参照して、リスト内で少なくとも一つの項目が移動できる位置を判定し、位置情報が判定の結果を示す。
【０１１８】
このような側面においては、端末に表示されたリスト内で少なくとも一つの項目が選択されると、項目の順序に関する制約に基づいて、被選択項目が移動できる位置が判定され、その判定結果を示す位置情報が端末に送信される。そして、この位置情報に基づいて、その端末上で、被選択項目が移動できる位置と移動できない位置とが区別して表示される。すなわち、ユーザがリスト内の項目の順序を変えようとする際に、順序に関する制約（その項目をどこに移動できるか）をそのユーザに示すことができる。このように、ユーザインタフェースの利便性が向上するので、操作者であるユーザは入力の手間を軽減でき時間を節約することができる。
【０１１９】
他の側面に係るサーバでは、制約情報が、少なくとも二つの項目が連続して並ばなければならないというグループ制約を含み、位置判定部が、グループ制約に基づいて、少なくとも二つの項目の間には他の項目が移動できないと判定してもよい。
【０１２０】
このようなグループ制約を用いて他の項目がグループ内に混在することを避けることで、特定の複数の項目を常に一つのグループとして取り扱うことができる。
【０１２１】
他の側面に係るサーバでは、選択情報が、端末上で選択された少なくとも二つの項目を示し、位置判定部が、選択された少なくとも二つの項目のすべてが移動できる位置を判定してもよい。
【０１２２】
移動しようとする複数の項目のすべてが移動可能な位置を示すことで、ユーザは、制約に違反することなく、複数の項目の順序を一回の操作で簡単に変更することができる。
【０１２３】
他の側面に係るサーバでは、リストを表示している端末からの問合せに応じて、該端末がリストを表示している間に該リストが他の端末により更新されたか否かを判定する状況判定部をさらに備え、リストが他の端末により更新されたと判定された場合に、位置判定部が、更新後のリスト内で少なくとも一つの項目が移動できる位置を新たに判定し、送信部が、更新後のリストと、位置判定部による新たな判定結果を示す新たな位置情報とを端末に送信してもよい。
【０１２４】
この場合には、一の端末でリストに対する操作が行われている際に他の端末によりリスト内の順序が更新されると、該一の端末に更新後のリストが反映される。加えて、更新後のリスト内で移動可能な位置も当該一の端末に提供される。したがって、当該一の端末のユーザは、能動的に更新後のリストを取得することなく、リスト内の項目の新たな可能な移動先を把握して該項目をそこに移すことができる。
【０１２５】
以上、本発明をその実施形態に基づいて詳細に説明した。しかし、本発明は上記実施形態に限定されるものではない。本発明は、その要旨を逸脱しない範囲で様々な変形が可能である。
【０１２６】
上述した通り、リストおよび項目の内容は何ら限定されない。したがって、アンケートの編集以外の目的で本発明を利用することもできる。
【符号の説明】
【０１２７】
１，１Ａ…リスト管理システム、１０，１０Ａ…端末、１１…リスト取得部、１２…検知部、１３，１３Ａ…表示制御部、１４…リスト変更部、２０，２０Ａ…サーバ、２１…リスト提供部、２２…受信部、２３，２３Ａ…位置判定部、２４，２４Ａ…送信部、２５…リスト更新部、２６…状況判定部、３０…データベース群、３１…リストデータベース、３２…制約データベース、Ｐ，ＰＡ…リスト管理プログラム、Ｐ１，Ｐ１Ａ…クライアントプログラム、Ｐ１０…メインモジュール、Ｐ１１…リスト取得モジュール、Ｐ１２…検知モジュール、Ｐ１３，Ｐ１３Ａ…表示制御モジュール、Ｐ１４…リスト変更モジュール、Ｐ２，Ｐ２Ａ…サーバプログラム、Ｐ２０…メインモジュール、Ｐ２１…リスト提供モジュール、Ｐ２２…受信モジュール、Ｐ２３，Ｐ２３Ａ…位置判定モジュール、Ｐ２４，Ｐ２４Ａ…送信モジュール、Ｐ２５…リスト更新モジュール、Ｐ２６…状況判定モジュール。
【要約】
一実施形態に係るサーバは、受信部、位置判定部、および送信部を備える。受信部は、複数の項目の集合を含むリストを表示している端末上で選択された少なくとも一つの項目を示す選択情報を該端末から受信する。位置判定部は、複数の項目の順序に関する制約を示す制約情報を記憶する記憶部を参照して、リスト内で少なくとも一つの項目が移動できる位置を判定する。送信部は、少なくとも一つの項目が移動できる位置と移動できない位置とを、該少なくとも一つの項目の移動が完了する前の任意の時点において端末上で区別して表示させるために、位置判定部による判定結果を示す位置情報を該端末に送信する。【図１】
0005809382.tif 000002
【図２】
0005809382.tif 000003
【図３】
0005809382.tif 000004
【図４】
0005809382.tif 000005
【図５】
0005809382.tif 000006
【図６】
0005809382.tif 000007
【図７】
0005809382.tif 000008
【図８】
0005809382.tif 000009
【図９】
0005809382.tif 000010
【図１０】
0005809382.tif 000011
【図１１】
0005809382.tif 000012
【図１２】
0005809382.tif 000013
【図１３】
0005809382.tif 000014