(57)【要約】【課題】少ない枚数の電子ペーパーで構成される電子書籍装置は、携帯性に優れるがその反面、ページ数の多い書物は一度に全ページを表示し切れない。そのため、ユーザーはページの表示と非表示を切り替えながら読み進める必要があるが、その際装置は、実物の書物に近い直感的な操作を提供するのが望ましい。【解決手段】実物の書籍での「めくり」操作を電子書籍装置用に拡張し、様々な操作を用意することによって操作性を向上させる。また、ユーザーに対して「このページ区間は装置が勝手にページを非表示にしてはならない」と指定させる手段を与え、装置はページの表示と非表示を切り替える時に、当該区間を除外して切り替えを行うことで、ページが意図せず非表示になってしまうことを防ぐ。【選択図】図7
2014041569.tif 000002
【特許請求の範囲】
【請求項１】
データ表示する表示面を有する複数の表示装置を搭載し、ページ単位に構成された書籍データを前記表示面上に表示する電子書籍装置であって、
前記複数の表示装置の各表示面の識別情報ごとに、前記ページの番号列を保存すると共に、複数のページが一つの表示面に割り当てられている場合は、他のページに隠れずに表示すべきページ（可読ページ）の番号を保存するページ表示テーブルと、
処理対象の表示面、ユーザーの前記書籍データのページめくり操作およびページめくり方向を検知するユーザー操作検知手段と、
前記ページめくり操作を検知したときに、前記ページ表示テーブルを参照して、
前記ページめくり方向が前方向の場合は、前記処理対象の表示面の識別情報に関連付けられている前記ページの番号列のうち、当該番号列の先頭のページを前記ページ表示テーブルにおいて直前の表示面の識別情報に関連付けられている番号列の最後尾に移動させる簡易前方移動処理と、
前記ページめくり方向が後方向の場合は、前記処理対象の表示面の識別情報に関連付けられている前記ページの番号列のうち、当該番号列の最後尾のページを前記ページ表示テーブルにおいて直後の表示面の識別情報に関連付けられている番号列の先頭に移動させる簡易後方移動処理と、
可読ページが当該番号列の先頭ではなく、前記ページめくり方向が前方向の場合は、前記処理対象の表示面の識別情報に関連付けられている前記ページの番号列のうち、当該処理対象の表示面の識別情報に関連付けられているページの番号列の中で、前記可読ページの直前のページを新たな可読ページの番号としてセットし、可読ページが当該番号列の最後尾ではなく、前記ページめくり方向が後方向の場合は、前記処理対象の表示面の識別情報に関連付けられている前記ページの番号列のうち、当該処理対象の表示面の識別情報に関連付けられているページの番号列の中で、前記可読ページの直後のページを新たな可読ページの番号としてセットする簡易面内移動処理と、のうち少なくとも一つを実行するページ移動手段と、
前記ページ表示テーブルに基づいて、前記処理対象の表示面の識別情報に関連付けられている前記可読ページの番号の書籍データを当該表示面に出力するページ表示手段と、
を備えたことを特徴とする電子書籍装置。
【請求項２】
前記ページ移動手段は、
前記簡易前方移動処理において、前記ページ表示テーブルの前記処理対象の表示面の識別情報に関連付けられている前記ページの番号列のうち、先頭のページの番号を新たな可読ページの番号としてセットし、
前記簡易後方移動処理において、前記ページ表示テーブルの前記処理対象の表示面の直後の表示面の識別情報に関連付けられている前記ページの番号列のうち、先頭のページの番号を新たな可読ページの番号としてセットすることを特徴とする請求項１に記載の電子書籍装置。
【請求項３】
前記処理対象の表示面から前記ページめくり方向へ、各表示面の識別情報に関連付けられたページの数字列を一ページずつ玉突き状に順にシフトしていくことを特徴とする請求項１又は２に記載の電子書籍装置。
【請求項４】
前記ページ移動手段は、前記表示装置のめくり操作を検知したときに、前記ページ表示テーブルを参照して、
前記表示装置のめくり方向が前方向の場合は、処理対象の表示面の識別情報に関連付けられている前記ページの番号列のうち最後尾のページを残して、それ以外のページを直前の表示面の識別情報に関連付けられている番号列の最後尾に移動し、また残された前記ページを可読にセットする展開片面前方移動処理と、
前記表示装置のめくり方向が後方向の場合は、処理対象の表示面の識別情報に関連付けられている前記ページの番号列のうち先頭のページを残して、それ以外のページを直後の表示面の識別情報に関連付けられている番号列の先頭に移動し、また前記移動した番号列の先頭のページ番号を新たな可読ページの番号としてセットする展開片面後方移動処理と、
のうち少なくとも一つを実行することを特徴とする請求項１乃至３のいずれか一項に記載の電子書籍装置。
【請求項５】
複数の表示装置を搭載し、各表示装置は夫々シート状に形成され表裏二つの表示面を有し、ページ単位に構成された書籍データを前記表示面上に表示する電子書籍装置であって、
前記複数の表示装置の各表示面の識別情報ごとに、前記ページの番号列を保存すると共に、複数のページが一つの表示面に割り当てられている場合は、他のページに隠れずに表示すべきページ（可読ページ）の番号を保存するページ表示テーブルと、
処理対象の表示面、ユーザーの前記書籍データのページめくり操作およびページめくり方向を検知するユーザー操作検知手段と、
前記ページめくり操作を検知したときに、前記ページ表示テーブルを参照して、
前記ページめくり方向が前方向でありかつ前記処理対象の表示面が前記表示装置の表の表示面の場合は、前記処理対象の表示面の識別情報に関連付けられている前記ページの番号列のうち、当該番号列の先頭のページと当該ページの一つ後のページとを前記ページ表示テーブルにおいて直前の表示装置に属する裏の表示面の識別情報に関連付けられている番号列の最後尾に移動させると共に、前記処理対象の表示面の識別情報に関連付けられている前記ページの番号列の先頭のページ番号を新たな可読ページの番号としてセットし、前記直前の表示装置に属する裏の表示面の識別情報に関連付けられている番号列の最後尾のページ番号を新たな可読ページの番号としてセットする標準両面奇前方移動処理と、
前記ページめくり方向が後方向でありかつ前記処理対象の表示面が前記表示装置の裏の表示面の場合は、前記処理対象の表示面の識別情報に関連付けられている前記ページの番号列のうち、当該番号列の最後尾のページと当該ページの一つ前のページとを前記ページ表示テーブルにおいて直後の表示装置に属する表の表示面の識別情報に関連付けられている番号列の先頭に移動させると共に、前記処理対象の表示面の識別情報に関連付けられている前記ページの番号列の最後尾のページ番号を新たな可読ページの番号としてセットし、前記直後の表示装置に属する表の表示面の識別情報に関連付けられている番号列の先頭のページ番号を新たな可読ページの番号としてセットする標準両面偶後方移動処理と、
前記ページめくり方向が前方向でありかつ前記処理対象の表示面が前記表示装置の裏の表示面の場合は、前記処理対象の表示面の識別情報に関連付けられている前記ページの番号列のうち、当該番号列の先頭のページを前記ページ表示テーブルにおいて直前の表の表示面の識別情報に関連付けられている番号列の最後尾に移動させると共に、前記直前の表の表示面の識別情報に関連付けられている前記ページの番号列のうち、先頭のページの番号を新たな可読ページの番号としてセットする標準両面偶前方移動処理と、
前記ページめくり方向が後方向でありかつ前記処理対象の表示面が前記表示装置の表の表示面の場合は、前記処理対象の表示面の識別情報に関連付けられている前記ページの番号列のうち、当該番号列の最後尾のページを前記ページ表示テーブルにおいて直後の裏の表示面の識別情報に関連付けられている番号列の先頭に移動させると共に、前記直後の裏の表示面の識別情報に関連付けられている前記ページの番号列のうち、最後尾のページの番号を新たな可読ページの番号としてセットする標準両面奇後方移動処理と、
のうち少なくとも一つを実行するページ移動手段と、
前記ページ表示テーブルに基づいて、前記処理対象の表示面の識別情報に関連付けられている前記可読ページの番号の書籍データを当該表示面に出力するページ表示手段と、
を備えたことを特徴とする電子書籍装置。
【請求項６】
同一の表示装置の表裏の表示面間のページ移動をさせる表裏移動処理を備えたことを特徴とする請求項５記載の電子書籍装置。
【請求項７】
前記ページ移動手段は、前記表示装置のめくり操作を検知したときに、前記ページ表示テーブルを参照して、
前記表示装置のめくり方向が前方向の場合は、該めくり操作の検知された表示装置の裏の表示面の識別情報に関連付けられている前記ページの番号列のうち最後尾のページを残して、それ以外のページを直前の表の表示面の識別情報に関連付けられている番号列の最後尾に移動し、続けて前記直前の表の表示面の識別情報に関連付けられている番号列のうち最後尾のページを残して、それ以外のページをさらに一つ前の表示面の識別情報に関連付けられている番号列の最後尾に移動し、また残された前記ページを可読にセットする展開両面前方移動処理と、
前記表示装置のめくり方向が後方向の場合は、該めくり操作の検知された表示装置の表の表示面の識別情報に関連付けられている前記ページの番号列のうち先頭のページを残して、それ以外のページを直後の裏の表示面の識別情報に関連付けられている番号列の先頭に移動し、続けて前記直後の裏の表示面の識別情報に関連付けられている番号列のうち先頭のページを残して、それ以外のページをさらに一つ後の表示面の識別情報に関連付けられている番号列の先頭に移動し、また残された前記ページを可読にセットする展開両面後方移動処理と、
のうち少なくとも一つを実行することを特徴とする請求項５又は６に記載の電子書籍装置。
【請求項８】
前記ページ移動手段は、前記ページ表示テーブルにおいて前記処理対象の表示面もしくはその前後の表示面の識別情報に関連付けられたページ数が不足している場合は、ページの存在する表示面と連動して前記標準両面偶前方移動処理又は前記標準両面偶後方移動処理又は前記標準両面奇前方移動処理又は前記標準両面奇後方移動処理を実行することを特徴とする請求項１乃至７のいずれか一項に記載の電子書籍装置。
【請求項９】
前記ページ表示テーブルは、保存区間が設定可能であり、前記ページ移動手段は、当該保存区間を超えるページの移動を禁止することを特徴とする請求項１乃至８のいずれか一項に記載の電子書籍装置。
【請求項１０】
上位から下位にノードを接続した階層構造を有し、各ノードは、ラベル、開始ページ、終了ページを情報として持つ書籍構造データを備え、前記保存区間は前記ノードが表すページ範囲の中から選択することを特徴とする請求項９に記載の電子書籍装置。
【請求項１１】
データ表示する表示面を有する複数の表示装置を搭載し、ページ単位に構成された書籍データを前記表示面上に表示し、前記複数の表示装置の各表示面の識別情報ごとに、前記ページの番号列を保存すると共に、複数のページが一つの表示面に割り当てられている場合は、他のページに隠れずに表示すべきページ（可読ページ）の番号を保存するページ表示テーブルを有する電子書籍装置に用いられるプログラムであって、
コンピュータを、
処理対象の表示面、ユーザーの前記書籍データのページめくり操作およびページめくり方向を検知するユーザー操作検知手段、
前記ページめくり操作を検知したときに、前記ページ表示テーブルを参照して、
前記ページめくり方向が前方向の場合は、前記処理対象の表示面の識別情報に関連付けられている前記ページの番号列のうち、当該番号列の先頭のページを前記ページ表示テーブルにおいて直前の表示面の識別情報に関連付けられている番号列の最後尾に移動させる簡易前方移動処理と、
前記ページめくり方向が後方向の場合は、前記処理対象の表示面の識別情報に関連付けられている前記ページの番号列のうち、当該番号列の最後尾のページを前記ページ表示テーブルにおいて直後の表示面の識別情報に関連付けられている番号列の先頭に移動させる簡易後方移動処理と、
可読ページが当該番号列の先頭ではなく、前記ページめくり方向が前方向の場合は、前記処理対象の表示面の識別情報に関連付けられている前記ページの番号列のうち、当該処理対象の表示面の識別情報に関連付けられているページの番号列の中で、前記可読ページの直前のページを新たな可読ページの番号としてセットし、可読ページが当該番号列の最後尾ではなく、前記ページめくり方向が後方向の場合は、前記処理対象の表示面の識別情報に関連付けられている前記ページの番号列のうち、当該処理対象の表示面の識別情報に関連付けられているページの番号列の中で、前記可読ページの直後のページを新たな可読ページの番号としてセットする簡易面内移動処理と、のうち少なくとも一つを実行するページ移動手段、
前記ページ表示テーブルに基づいて、前記処理対象の表示面の識別情報に関連付けられている前記可読ページの番号の書籍データを当該表示面に出力するページ表示手段、
として機能させるためのプログラム。
【請求項１２】
複数の表示装置を搭載し、各表示装置は夫々シート状に形成され表裏二つの表示面を有し、ページ単位に構成された書籍データを前記表示面上に表示し、前記複数の表示装置の各表示面の識別情報ごとに、前記ページの番号列を保存すると共に、複数のページが一つの表示面に割り当てられている場合は、他のページに隠れずに表示すべきページ（可読ページ）の番号を保存するページ表示テーブルを有する電子書籍装置に用いられるプログラムであって、
コンピュータを、
処理対象の表示面、ユーザーの前記書籍データのページめくり操作およびページめくり方向を検知するユーザー操作検知手段、
前記ページめくり操作を検知したときに、前記ページ表示テーブルを参照して、
前記ページめくり方向が前方向でありかつ前記処理対象の表示面が前記表示装置の表の表示面の場合は、前記処理対象の表示面の識別情報に関連付けられている前記ページの番号列のうち、当該番号列の先頭のページと当該ページの一つ後のページとを前記ページ表示テーブルにおいて直前の表示装置に属する裏の表示面の識別情報に関連付けられている番号列の最後尾に移動させると共に、前記処理対象の表示面の識別情報に関連付けられている前記ページの番号列の先頭のページ番号を新たな可読ページの番号としてセットし、前記直前の表示装置に属する裏の表示面の識別情報に関連付けられている番号列の最後尾のページ番号を新たな可読ページの番号としてセットする標準両面奇前方移動処理と、
前記ページめくり方向が後方向でありかつ前記処理対象の表示面が前記表示装置の裏の表示面の場合は、前記処理対象の表示面の識別情報に関連付けられている前記ページの番号列のうち、当該番号列の最後尾のページと当該ページの一つ前のページとを前記ページ表示テーブルにおいて直後の表示装置に属する表の表示面の識別情報に関連付けられている番号列の先頭に移動させると共に、前記処理対象の表示面の識別情報に関連付けられている前記ページの番号列の最後尾のページ番号を新たな可読ページの番号としてセットし、前記直後の表示装置に属する表の表示面の識別情報に関連付けられている番号列の先頭のページ番号を新たな可読ページの番号としてセットする標準両面偶後方移動処理と、
前記ページめくり方向が前方向でありかつ前記処理対象の表示面が前記表示装置の裏の表示面の場合は、前記処理対象の表示面の識別情報に関連付けられている前記ページの番号列のうち、当該番号列の先頭のページを前記ページ表示テーブルにおいて直前の表の表示面の識別情報に関連付けられている番号列の最後尾に移動させると共に、前記直前の表の表示面の識別情報に関連付けられている前記ページの番号列のうち、先頭のページの番号を新たな可読ページの番号としてセットする標準両面偶前方移動処理と、
前記ページめくり方向が後方向でありかつ前記処理対象の表示面が前記表示装置の表の表示面の場合は、前記処理対象の表示面の識別情報に関連付けられている前記ページの番号列のうち、当該番号列の最後尾のページを前記ページ表示テーブルにおいて直後の裏の表示面の識別情報に関連付けられている番号列の先頭に移動させると共に、前記直後の裏の表示面の識別情報に関連付けられている前記ページの番号列のうち、最後尾のページの番号を新たな可読ページの番号としてセットする標準両面奇後方移動処理と、のうち少なくとも一つを実行するページ移動手段、
前記ページ表示テーブルに基づいて、前記処理対象の表示面の識別情報に関連付けられている前記可読ページの番号の書籍データを当該表示面に出力するページ表示手段、
として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ユーザーの利便性を考えたページ表示を行う電子書籍装置およびプログラムに関する。この電子書籍装置は、電子ペーパーなどの表示装置を複数枚重ねて構成される。
【背景技術】
【０００２】
電子化された書籍データを携帯型のデバイスに記憶させ、リビングや外出先など場所を選ばずに本を読むための技術が近年普及して来ている。ユーザーは、デバイス一台に複数冊分の書籍データを記憶させることによって、手軽に好きな場所で好きな書籍を選択して読むことができる。
【０００３】
現状普及している電子書籍装置は、タブレット端末のように一つの画面のみを備え、ユーザーの操作に合わせて画面表示を書き換えることで、読者はページを進めながら読書をすることができる。これを発展させ、二つの画面を表裏の関係にして両面に表示可能な表示装置を構成し、更にそのような表示装置を複数個使うことによって、読者は本物の書物に近い感覚で、ページをめくりながら読書する、更には気になるページに指を挟んでおくなどといった直感的な操作ができるようになる。また今後製品化されて来る、電子ペーパーなどの薄くて柔らかい、すなわち曲げることが可能な表示装置を用いた電子書籍装置（図76）を用いれば、操作性は更に向上することが期待される。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開2006-208918
【特許文献２】特開2005-182820
【特許文献３】特開2004-318123
【発明の概要】
【発明が解決しようとする課題】
【０００５】
図76のような電子書籍装置は、携帯性を考えた場合、重ね合わせる表示装置は少ない枚数（例えば20枚くらい、すなわち両面表示が可能な表示装置2であれば40画面くらいなど）である方が重量や体積の観点からは望ましい。しかし通常の書物は数百ページから構成されるものが多く、そのような電子書籍装置で一画面に一ページずつを表示させようとすると、入り切らないページが出てきてしまう。
【０００６】
前記のような制約のある電子書籍装置でユーザーが読書をする時、読みたいページが、その時点で装置上に表示されていないという状況が起き得る。そのため装置は当該ページを表示させる必要があるが、保有する表示装置の数は限られているため、代償として別のページを移動したり既に表示中のページを非表示の状態にしたりしなければならない。
【０００７】
どのページをどこに移動し、またどのページの表示・非表示を切り替えるかには自由度がある。ユーザーの操作性を無視して極論すれば、読みたいページが表示されさえすれば、他のページがどうなろうと構わない。しかしユーザーの操作性という観点からは当然、望ましいページ移動と表示・非表示の切り替えがある。まず、ユーザーに対し実物の書物を読んでいる近い感覚を与えるようなページ移動と表示・非表示の切り替えが望ましい。次に、ユーザーが直後に参照する予定であったページ区間は非表示にされるのは好ましくない。ユーザーが参照する時点で既にそのページは非表示になっており、直ぐに読める状態では無くなってしまうからである。従来の技術では、このようなユーザーの操作性に配慮したページの移動と表示・非表示の切り替え方法は検討されて来なかった。
【０００８】
本発明は、このように書物一冊分のページ数よりも少ない画面数を持つ電子書籍装置でユーザーが書籍を読み進める際、ページの移動と表示・非表示の切り替えを行う上でユーザーの利便性を向上させる手段を備えた電子書籍装置およびプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００９】
上記目的を達成するため、本発明の請求項１に係る電子書籍装置は、
データ表示する表示面を有する複数の表示装置を搭載し、ページ単位に構成された書籍データを前記表示面上に表示する電子書籍装置であって、
前記複数の表示装置の各表示面の識別情報ごとに、前記ページの番号列を保存すると共に、複数のページが一つの表示面に割り当てられている場合は、他のページに隠れずに表示すべきページ（可読ページ）の番号を保存するページ表示テーブルと、
処理対象の表示面、ユーザーの前記書籍データのページめくり操作およびページめくり方向を検知するユーザー操作検知手段と、
前記ページめくり操作を検知したときに、前記ページ表示テーブルを参照して、
前記ページめくり方向が前方向の場合は、前記処理対象の表示面の識別情報に関連付けられている前記ページの番号列のうち、当該番号列の先頭のページを前記ページ表示テーブルにおいて直前の表示面の識別情報に関連付けられている番号列の最後尾に移動させる簡易前方移動処理と、
前記ページめくり方向が後方向の場合は、前記処理対象の表示面の識別情報に関連付けられている前記ページの番号列のうち、当該番号列の最後尾のページを前記ページ表示テーブルにおいて直後の表示面の識別情報に関連付けられている番号列の先頭に移動させる簡易後方移動処理と、
可読ページが当該番号列の先頭ではなく、前記ページめくり方向が前方向の場合は、前記処理対象の表示面の識別情報に関連付けられている前記ページの番号列のうち、当該処理対象の表示面の識別情報に関連付けられているページの番号列の中で、前記可読ページの直前のページを新たな可読ページの番号としてセットし、可読ページが当該番号列の最後尾ではなく、前記ページめくり方向が後方向の場合は、前記処理対象の表示面の識別情報に関連付けられている前記ページの番号列のうち、当該処理対象の表示面の識別情報に関連付けられているページの番号列の中で、前記可読ページの直後のページを新たな可読ページの番号としてセットする簡易面内移動処理と、のうち少なくとも一つを実行するページ移動手段と、
前記ページ表示テーブルに基づいて、前記処理対象の表示面の識別情報に関連付けられている前記可読ページの番号の書籍データを当該表示面に出力するページ表示手段と、
を備えたことを特徴とする。
【００１０】
ここで、各ページと表示面の方向は一致しているものとし、たとえば、書籍データのページの若番方向を前方向としたとき、各表示面についても若番方向を前方向とする。
【００１１】
本発明では、上記ページ表示テーブルによって、書籍データの各ページを複数の表示装置の表示面に対応付け、ページの移動や表示（可読）・非表示（非可読）の切り替えの管理を行う。そして、ユーザー操作検知手段で、処理対象の表示面を特定し、またユーザーのページめくり操作やページめくり方向を検知する。実行手段は、この情報を用いて、ページ表示テーブルの表示面間のページの移動や可読・非可読の処理を行う。これにより、必ずしも書籍のページと電子書籍装置の表示面の数が同じでなくても、ユーザーは実物の書物に近い感覚で読むことができる。
【００１２】
また、本発明の請求項2に係る電子書籍装置では、さらに、前記ページ移動手段は、前記簡易前方移動処理において、前記ページ表示テーブルの前記処理対象の表示面の識別情報に関連付けられている前記ページの番号列のうち、先頭のページの番号を新たな可読ページの番号としてセットし、前記簡易後方移動処理において、前記ページ表示テーブルの前記処理対象の表示面の直後の表示面の識別情報に関連付けられている前記ページの番号列のうち、先頭のページの番号を新たな可読ページの番号としてセットすることを特徴とする。
【００１３】
本発明では、ページの前方あるいは後方への移動処理後に次のページを可読ページとしてセットするので、ユーザーは、同じ表示面において、ページをめくりながら書籍を読むことができる。
【００１４】
また、本発明の請求項3に係る電子書籍装置は、さらに、前記処理対象の表示面から前記ページめくり方向へ、各表示面の識別情報に関連付けられたページの数字列を一ページずつ玉突き状に順にシフトしていくことを特徴とする。
【００１５】
本発明では、後述するドミノ移動手段による処理によって、一ページずつ玉突き状に順にシフトしていくので、ページをめくったことにより非可読になるページが隣接する表示面の中から生じるのを避け（遠方の表示面の中から生ずる）、ユーザーが操作している表示面の近傍の表示状態を変更しないことによって、より快適な読書を可能にする。
【００１６】
また、本発明の請求項4に係る電子書籍装置では、さらに、前記ページ移動手段は、前記表示装置のめくり操作を検知したときに、前記ページ表示テーブルを参照して、
前記表示装置のめくり方向が前方向の場合は、処理対象の表示面の識別情報に関連付けられている前記ページの番号列のうち最後尾のページを残して、それ以外のページを直前の表示面の識別情報に関連付けられている番号列の最後尾に移動し、また残された前記ページを可読にセットする展開片面前方移動処理と、
前記表示装置のめくり方向が後方向の場合は、処理対象の表示面の識別情報に関連付けられている前記ページの番号列のうち先頭のページを残して、それ以外のページを直後の表示面の識別情報に関連付けられている番号列の先頭に移動し、また前記移動した番号列の先頭のページ番号を新たな可読ページの番号としてセットする展開片面後方移動処理と、
のうち少なくとも一つを実行することを特徴とする。
【００１７】
本発明では、表示装置のめくり操作に連動して、自動的に次のページの表示を可能にする。
【００１８】
また、本発明の請求項5に係る電子書籍装置は、複数の表示装置を搭載し、各表示装置は夫々シート状に形成され表裏二つの表示面を有し、ページ単位に構成された書籍データを前記表示面上に表示する電子書籍装置であって、
前記複数の表示装置の各表示面の識別情報ごとに、前記ページの番号列を保存すると共に、複数のページが一つの表示面に割り当てられている場合は、他のページに隠れずに表示すべきページ（可読ページ）の番号を保存するページ表示テーブルと、
処理対象の表示面、ユーザーの前記書籍データのページめくり操作およびページめくり方向を検知するユーザー操作検知手段と、
前記ページめくり操作を検知したときに、前記ページ表示テーブルを参照して、
前記ページめくり方向が前方向でありかつ前記処理対象の表示面が前記表示装置の表の表示面の場合は、前記処理対象の表示面の識別情報に関連付けられている前記ページの番号列のうち、当該番号列の先頭のページと当該ページの一つ後のページとを前記ページ表示テーブルにおいて直前の表示装置に属する裏の表示面の識別情報に関連付けられている番号列の最後尾に移動させると共に、前記処理対象の表示面の識別情報に関連付けられている前記ページの番号列の先頭のページ番号を新たな可読ページの番号としてセットし、前記直前の表示装置に属する裏の表示面の識別情報に関連付けられている番号列の最後尾のページ番号を新たな可読ページの番号としてセットする標準両面奇前方移動処理と、
前記ページめくり方向が後方向でありかつ前記処理対象の表示面が前記表示装置の裏の表示面の場合は、前記処理対象の表示面の識別情報に関連付けられている前記ページの番号列のうち、当該番号列の最後尾のページと当該ページの一つ前のページとを前記ページ表示テーブルにおいて直後の表示装置に属する表の表示面の識別情報に関連付けられている番号列の先頭に移動させると共に、前記処理対象の表示面の識別情報に関連付けられている前記ページの番号列の最後尾のページ番号を新たな可読ページの番号としてセットし、前記直後の表示装置に属する表の表示面の識別情報に関連付けられている番号列の先頭のページ番号を新たな可読ページの番号としてセットする標準両面偶後方移動処理と、
前記ページめくり方向が前方向でありかつ前記処理対象の表示面が前記表示装置の裏の表示面の場合は、前記処理対象の表示面の識別情報に関連付けられている前記ページの番号列のうち、当該番号列の先頭のページを前記ページ表示テーブルにおいて直前の表の表示面の識別情報に関連付けられている番号列の最後尾に移動させると共に、前記直前の表の表示面の識別情報に関連付けられている前記ページの番号列のうち、先頭のページの番号を新たな可読ページの番号としてセットする標準両面偶前方移動処理と、
前記ページめくり方向が後方向でありかつ前記処理対象の表示面が前記表示装置の表の表示面の場合は、前記処理対象の表示面の識別情報に関連付けられている前記ページの番号列のうち、当該番号列の最後尾のページを前記ページ表示テーブルにおいて直後の裏の表示面の識別情報に関連付けられている番号列の先頭に移動させると共に、前記直後の裏の表示面の識別情報に関連付けられている前記ページの番号列のうち、最後尾のページの番号を新たな可読ページの番号としてセットする標準両面奇後方移動処理と、
のうち少なくとも一つを実行するページ移動手段と、
前記ページ表示テーブルに基づいて、前記処理対象の表示面の識別情報に関連付けられている前記可読ページの番号の書籍データを当該表示面に出力するページ表示手段と、
を備えたことを特徴とする。
【００１９】
本発明では、表裏二面の表示面を有するシート状の表示装置を用いた電子書籍装置において、書籍データの見開いた状態を維持して表示装置に表示することができるので、ユーザーは、より実際の書物に近い感覚で読むことができる。
【００２０】
また、本発明の請求項6に係る電子書籍装置は、さらに、同一の表示装置の表裏の表示面間のページ移動をさせる表裏移動処理を備えたことを特徴とする。
【００２１】
本発明では、表裏二つの表示面を有する表示装置において、単独の操作で表裏間のページの移動（すなわち、表から裏、裏から表の二種類の移動はパラメーターで区別すること）を可能にするので、ユーザーの利便性が向上する。
【００２２】
また、本発明の請求項7に係る電子書籍装置では、さらに、前記ページ移動手段は、前記表示装置のめくり操作を検知したときに、前記ページ表示テーブルを参照して、
前記表示装置のめくり方向が前方向の場合は、該めくり操作の検知された表示装置の裏の表示面の識別情報に関連付けられている前記ページの番号列のうち最後尾のページを残して、それ以外のページを直前の表の表示面の識別情報に関連付けられている番号列の最後尾に移動し、続けて前記直前の表の表示面の識別情報に関連付けられている番号列のうち最後尾のページを残して、それ以外のページをさらに一つ前の表示面の識別情報に関連付けられている番号列の最後尾に移動し、また残された前記ページを可読にセットする展開両面前方移動処理と、
前記表示装置のめくり方向が後方向の場合は、該めくり操作の検知された表示装置の表の表示面の識別情報に関連付けられている前記ページの番号列のうち先頭のページを残して、それ以外のページを直後の裏の表示面の識別情報に関連付けられている番号列の先頭に移動し、続けて前記直後の裏の表示面の識別情報に関連付けられている番号列のうち先頭のページを残して、それ以外のページをさらに一つ後の表示面の識別情報に関連付けられている番号列の先頭に移動し、また残された前記ページを可読にセットする展開両面後方移動処理と、
のうち少なくとも一つを実行することを特徴とする。
【００２３】
本発明では、表裏二つの表示面を有する表示装置を有する電子書籍装置において、表示装置のめくり操作に連動して、自動的に次のページの表示を可能にする。
【００２４】
また、本発明の請求項8に係る電子書籍装置では、さらに、前記ページ移動手段は、前記ページ表示テーブルにおいて前記処理対象の表示面もしくはその前後の表示面の識別情報に関連付けられたページ数が不足している場合は、ページの存在する表示面と連動して前記標準両面偶前方移動処理又は前記標準両面偶後方移動処理又は前記標準両面奇前方移動処理又は前記標準両面奇後方移動処理を実行することを特徴とする。
【００２５】
本発明では、処理対象の表示面もしくはその前後の表示面の識別情報に関連付けられたページ数が不足している場合は、ページの存在する表示面からページを移動してくるので、ページの空白状態を効果的に解消することができる。
【００２６】
また、本発明の請求項9に係る電子書籍装置では、さらに、前記ページ表示テーブルは、保存区間が設定可能であり、前記ページ移動手段は、当該保存区間を超えるページの移動を禁止することを特徴とする。
【００２７】
本発明では、保存区間を設定することにより、移動させたくないページと表示装置との対応関係を固定することができるので、より利便性が向上する。
【００２８】
また、本発明の請求項10に係る電子書籍装置は、さらに、上位から下位にノードを接続した階層構造を有し、各ノードは、ラベル、開始ページ、終了ページを情報として持つ書籍構造データを備え、前記保存区間は前記ノードが表すページ範囲の中から選択することを特徴とする。
【００２９】
本発明では、書籍構造データによって書籍データを階層構造にして、保存区間の設定を容易にする。
【００３０】
また、本発明の請求項11に係るプログラムは、データ表示する表示面を有する複数の表示装置を搭載し、ページ単位に構成された書籍データを前記表示面上に表示し、前記複数の表示装置の各表示面の識別情報ごとに、前記ページの番号列を保存すると共に、複数のページが一つの表示面に割り当てられている場合は、他のページに隠れずに表示すべきページ（可読ページ）の番号を保存するページ表示テーブルを有する電子書籍装置に用いられるプログラムであって、
コンピュータを、
処理対象の表示面、ユーザーの前記書籍データのページめくり操作およびページめくり方向を検知するユーザー操作検知手段、
前記ページめくり操作を検知したときに、前記ページ表示テーブルを参照して、
前記ページめくり方向が前方向の場合は、前記処理対象の表示面の識別情報に関連付けられている前記ページの番号列のうち、当該番号列の先頭のページを前記ページ表示テーブルにおいて直前の表示面の識別情報に関連付けられている番号列の最後尾に移動させる簡易前方移動処理と、
前記ページめくり方向が後方向の場合は、前記処理対象の表示面の識別情報に関連付けられている前記ページの番号列のうち、当該番号列の最後尾のページを前記ページ表示テーブルにおいて直後の表示面の識別情報に関連付けられている番号列の先頭に移動させる簡易後方移動処理と、
可読ページが当該番号列の先頭ではなく、前記ページめくり方向が前方向の場合は、前記処理対象の表示面の識別情報に関連付けられている前記ページの番号列のうち、当該処理対象の表示面の識別情報に関連付けられているページの番号列の中で、前記可読ページの直前のページを新たな可読ページの番号としてセットし、可読ページが当該番号列の最後尾ではなく、前記ページめくり方向が後方向の場合は、前記処理対象の表示面の識別情報に関連付けられている前記ページの番号列のうち、当該処理対象の表示面の識別情報に関連付けられているページの番号列の中で、前記可読ページの直後のページを新たな可読ページの番号としてセットする簡易面内移動処理と、のうち少なくとも一つを実行するページ移動手段、
前記ページ表示テーブルに基づいて、前記処理対象の表示面の識別情報に関連付けられている前記可読ページの番号の書籍データを当該表示面に出力するページ表示手段、
として機能させることを特徴とする。
【００３１】
また、本発明の請求項12に係るプログラムは、複数の表示装置を搭載し、各表示装置は夫々シート状に形成され表裏二つの表示面を有し、ページ単位に構成された書籍データを前記表示面上に表示し、前記複数の表示装置の各表示面の識別情報ごとに、前記ページの番号列を保存すると共に、複数のページが一つの表示面に割り当てられている場合は、他のページに隠れずに表示すべきページ（可読ページ）の番号を保存するページ表示テーブルを有する電子書籍装置に用いられるプログラムであって、
コンピュータを、
処理対象の表示面、ユーザーの前記書籍データのページめくり操作およびページめくり方向を検知するユーザー操作検知手段、
前記ページめくり操作を検知したときに、前記ページ表示テーブルを参照して、
前記ページめくり方向が前方向でありかつ前記処理対象の表示面が前記表示装置の表の表示面の場合は、前記処理対象の表示面の識別情報に関連付けられている前記ページの番号列のうち、当該番号列の先頭のページと当該ページの一つ後のページとを前記ページ表示テーブルにおいて直前の表示装置に属する裏の表示面の識別情報に関連付けられている番号列の最後尾に移動させると共に、前記処理対象の表示面の識別情報に関連付けられている前記ページの番号列の先頭のページ番号を新たな可読ページの番号としてセットし、前記直前の表示装置に属する裏の表示面の識別情報に関連付けられている番号列の最後尾のページ番号を新たな可読ページの番号としてセットする標準両面奇前方移動処理と、
前記ページめくり方向が後方向でありかつ前記処理対象の表示面が前記表示装置の裏の表示面の場合は、前記処理対象の表示面の識別情報に関連付けられている前記ページの番号列のうち、当該番号列の最後尾のページと当該ページの一つ前のページとを前記ページ表示テーブルにおいて直後の表示装置に属する表の表示面の識別情報に関連付けられている番号列の先頭に移動させると共に、前記処理対象の表示面の識別情報に関連付けられている前記ページの番号列の最後尾のページ番号を新たな可読ページの番号としてセットし、前記直後の表示装置に属する表の表示面の識別情報に関連付けられている番号列の先頭のページ番号を新たな可読ページの番号としてセットする標準両面偶後方移動処理と、
前記ページめくり方向が前方向でありかつ前記処理対象の表示面が前記表示装置の裏の表示面の場合は、前記処理対象の表示面の識別情報に関連付けられている前記ページの番号列のうち、当該番号列の先頭のページを前記ページ表示テーブルにおいて直前の表の表示面の識別情報に関連付けられている番号列の最後尾に移動させると共に、前記直前の表の表示面の識別情報に関連付けられている前記ページの番号列のうち、先頭のページの番号を新たな可読ページの番号としてセットする標準両面偶前方移動処理と、
前記ページめくり方向が後方向でありかつ前記処理対象の表示面が前記表示装置の表の表示面の場合は、前記処理対象の表示面の識別情報に関連付けられている前記ページの番号列のうち、当該番号列の最後尾のページを前記ページ表示テーブルにおいて直後の裏の表示面の識別情報に関連付けられている番号列の先頭に移動させると共に、前記直後の裏の表示面の識別情報に関連付けられている前記ページの番号列のうち、最後尾のページの番号を新たな可読ページの番号としてセットする標準両面奇後方移動処理と、のうち少なくとも一つを実行するページ移動手段、
前記ページ表示テーブルに基づいて、前記処理対象の表示面の識別情報に関連付けられている前記可読ページの番号の書籍データを当該表示面に出力するページ表示手段、
として機能させることを特徴とする。
【００３２】
上記プログラムは、たとえば、サーバに格納して、インターネット等の通信ネットワークを介して配信したり、記憶媒体に保存して配布したりすることができる。
【発明の効果】
【００３３】
本発明によって、少ない枚数の電子ペーパーで構成された電子書籍装置でも、ユーザーは実物の書物に近い感覚で本を読むことができる。
【図面の簡単な説明】
【００３４】
【図１】本発明が主として対象とする電子書籍装置。
【図２】表示面の単独表示、縮退表示の例。
【図３】縮退表示のバリエーションを説明する図。
【図４】保存区間の役割を説明する図。
【図５】タッチセンサーとひずみセンサーを搭載した表示装置。
【図６】照度センサーと押しボタン列を搭載した表示装置。
【図７】本発明における電子書籍装置の機能ブロック図。
【図８】グローバル設定テーブルを説明する図。
【図９】書籍データを説明する図。
【図１０】ページ表示テーブルを説明する図。
【図１１】保存区間テーブルを説明する図。
【図１２】書籍構造データを説明する図。
【図１３】ページ移動手段への通知一覧。
【図１４】ページ移動手段の下位手段の一覧（第1実施形態）。
【図１５】ページ移動手段の下位手段の一覧（第2実施形態以降）。
【図１６】保存区間判定手段（ResvFree）のフローチャート。
【図１７】簡易前方移動手段（MovePrevSipmle）のフローチャート。
【図１８】簡易後方移動手段（MoveNextSimple）のフローチャート。
【図１９】簡易面内移動手段（MoveSimple）のフローチャート。
【図２０】標準片面前方移動手段（MovePrev1）のフローチャート。
【図２１】標準片面後方移動手段（MoveNext1）のフローチャート。
【図２２】標準両面偶前方移動手段（MovePrev2Even）のフローチャート。
【図２３】標準両面偶後方移動手段（MoveNext2Even）のフローチャート。
【図２４】標準両面奇前方移動手段（MovePrev2Odd）のフローチャート。
【図２５】標準両面奇後方移動手段（MoveNext2Odd）のフローチャート。
【図２６】実施例1の初期状態。
【図２７】実施例1の続きの状態。
【図２８】実施例2の初期状態。
【図２９】実施例2の続きの状態。
【図３０】実施例3の初期状態。
【図３１】実施例3の続きの状態。
【図３２】実施例4の初期状態。
【図３３】実施例4の続きの状態。
【図３４】実施例5の各状態。
【図３５】実施例6の初期状態。
【図３６】実施例6の続きの状態。
【図３７】実施例7の初期状態。
【図３８】実施例7の続きの状態。
【図３９】実施例8の初期状態。
【図４０】実施例8の続きの状態。
【図４１】実施例9の初期状態。
【図４２】実施例9の最終状態。
【図４３】ページ移動手段のフローチャート例（両面タイプ）。
【図４４】連動片面前方移動手段（MovePrev1X）のフローチャート。
【図４５】連動片面後方移動手段（MoveNext1X）のフローチャート。
【図４６】実施例15におけるMovePrev1Xの一回目の呼び出し。
【図４７】実施例15におけるMovePrev1Xの二〜三回目の呼び出し。
【図４８】連動両面前方移動手段（MovePrev2X）のフローチャート。
【図４９】連動両面後方移動手段（MoveNext2X）のフローチャート。
【図５０】実施例16におけるMoveNext2Xの一回目の呼び出し。
【図５１】実施例16におけるMoveNext2Xの二回目の呼び出し。
【図５２】実施例16におけるMoveNext2Xの三回目の呼び出し。
【図５３】実施例16におけるMoveNext2Xの四回目の呼び出し。
【図５４】表裏移動手段（MoveFrontBack）のフローチャート。
【図５５】実施例17（第3表示面で表裏型の移動。dir=−1）。
【図５６】実施例17の続き（第6表示面で表裏型の移動。dir=+1）。
【図５７】ドミノ片面前方移動手段（MovePrev1Domino）のフローチャート。
【図５８】ドミノ片面後方移動手段（MoveNext1Domino）のフローチャート。
【図５９】実施例18の各状態。
【図６０】連動ドミノ片面前方移動手段、連動ドミノ片面後方移動手段。
【図６１】ドミノ両面前方移動手段（MovePrev2Domino）のフローチャート。
【図６２】ドミノ両面後方移動手段（MoveNext2Domino）のフローチャート。
【図６３】実施例19の各状態。
【図６４】連動ドミノ両面前方移動手段、連動ドミノ両面後方移動手段。
【図６５】展開片面前方移動手段（MovePrev1Unfold）のフローチャート。
【図６６】展開片面後方移動手段（MoveNext1Unfold）のフローチャート。
【図６７】実施例20。
【図６８】実施例20の続き。
【図６９】展開両面前方移動手段（MovePrev2Unfold）のフローチャート。
【図７０】展開両面後方移動手段（MoveNext2Unfold）のフローチャート。
【図７１】実施例21（一回目の通知）。
【図７２】実施例21（二回目の通知）。
【図７３】実施例21（三回目の通知）。
【図７４】実施例22。
【図７５】実施例22の続き。
【図７６】本発明が課題とする電子書籍装置。
【発明を実施するための形態】
【００３５】
以下、本発明の実施形態を図に基づいて説明する。実施形態は複数あるが、第2実施形態以降は、第1実施形態を改良する形で説明する。
【００３６】
［第1実施形態］
最初の実施形態について説明する。まず先に、全ての実施例に共通する事項を説明し、その後に個別の実施例を説明する。
【００３７】
図1は、本発明における電子書籍装置1の外観を示したものである。電子書籍装置1は、表示装置2（各種センサーを搭載）を複数重ね合わせたもの、コントローラー3（典型的にはCPU、揮発性及び不揮発性メモリーからなる。具体的には図7での処理部12と記憶部11の組み合わせである）によって構成される。表示装置2として電子ペーパーなどの薄くて柔らかいものを用いる場合が主として対象とする構成ではあるが、重くて固い装置で構成されていても構わない。
【００３８】
表示装置2には、表裏２面のうち、片面のみに書籍データのページ（以下、「書籍ページ」又は単に「ページ」という）が表示されるもの（もう片方の面には書籍ページ等の意味のある情報は表示されない。以降、「片面タイプ」の表示装置2と呼ぶ）、もしくは両面に書籍ページが表示されるもの（以降、「両面タイプ」の表示装置2と呼ぶ）が考えられる。
【００３９】
以下で述べる電子書籍装置1は、片面タイプの表示装置2のみ、もしくは両面タイプの表示装置2のみからなる。以後、前者を片面タイプの電子書籍装置1、後者を両面タイプの電子書籍装置1と呼ぶ。両面タイプの電子書籍装置1は、これまで述べてきた通り通常の書物（文庫本や単行本など）を模倣するのが代表的な使い方である。一方、片面タイプの電子書籍装置1は、プレゼンテーション資料のハードコピー・講義のレジュメ・学生のレポートなど、これまで慣例的に片面印刷されてきた書類を模倣する例を考えるとイメージしやすい（もちろん、読み難くはなるが通常の書物を模倣することも技術的には可能である）。
【００４０】
ここで新しい用語を導入する。「表示面21」とは、表示装置2の面で文字を表示することが可能なものを指す。片面タイプの表示装置2は一面の表示面21を、両面タイプの表示装置2は二面の表示面21をそれぞれ持つ。「表示面番号」とは、ある表示面21が電子書籍装置1の最初（1番目）の表示面21から数えて何番目に相当するかを表す整数とする（番号は1から数え始める。以降も、番号は全て1から数え始めるとする）。両面タイプの電子書籍装置1では「最初の表示面21」がどこかは、その装置が右開き・左開きどちらの書籍を模倣しているかによって変化するが、実物の書物で言う表表紙に相当する側に位置する面である。また両面タイプの電子書籍装置1の場合、奇数番目（1,3,5,…番目）の表示面21は、前記各奇数番目の数字にそれぞれ1を足した偶数番目（2,4,6,…番目）の表示面21と同一の表示装置2での表裏になるように、番号を振っておく。
【００４１】
「ページ番号」とは、ページが最初のページから数えて何番目に相当するかを表す整数である。なお実物の書物では例えば、目次と本文でページ番号が独立な（例えば目次にはi〜viの番号が振られ、本文はまた1ページから始まる）場合もあるが、ここでいう「ページ番号」はそのように紙面に印字された番号ではなく、内部処理に用いる通し番号である。白紙のページにも、空の文字列が表示されていると見なしてページ番号を割り当てる。また表紙にも番号を割り当てる。従って、典型的には第1ページは実物の書物における表紙に相当する。
【００４２】
「表示装置番号」とは、ある表示装置2が電子書籍装置1の最初の表示装置2から数えて何番目にあるかを表す整数とする。「最初の表示装置2」は「最初の表示面21」が表示されている装置のこととする。
【００４３】
「単独表示」の表示面21とは、図2aのようにその表示面21には一枚のページのみが表示されているものを指し、また「縮退表示」の表示面21とは、その表示面21には複数枚のページが何らかの形で合わさって表示されているものを指す。縮退表示の例は図2bのように全てのページが縮小表示されているもの（縮退表示Aと呼ぶ）や、図2cのようにページが重ねて表示されその中の一ページのみが単独表示と同等に表示されているもの（縮退表示Bと呼ぶ）などがある。
【００４４】
あるページが「可読」であるとは、そのページが単独表示の表示面21に表示されているか、もしくは縮退表示Bのページ群の最前面に表示されているなどで、単独表示の場合と同様に読むことが可能な状態を表す。逆にあるページが「非可読」であるとは、そのページが縮退表示Aの表示面21に表示されているか、縮退表示Bで可読になっていないページであるか、あるいはそもそもどの表示面21にも表示されていない状態を指す。ただし今述べた「どの表示面21にも表示されていない状態」とは、縮退表示Bなのだが、当該ページは裏を向いているか表示が完全に隠れてしまっている状態とも見なすこともできる。
【００４５】
縮退表示Bには図3に示したように、四つのバリエーションがある。図3aは、実物の書物では見開いたページの左側に相当し、最前面にあるページが可読であり、背面に位置するページ群が左側に部分的に垣間見えている。図中の矢印は、前面にあるページから背面にあるページへ向かう方向を表している。図3bは、実物の書物では見開いたページの右側に相当し、最前面にあるページが可読であり、背面に位置するページ群が右側に部分的に垣間見えている。図3cは、最前面でも最背面でもない中間のページが可読であり、そのページより背面にあるページが左側に、前面にあるページが右側に部分的に垣間見えている。ここでは一番右にあるページが最前面である。
【００４６】
図3cと実物の書物との対応関係としては、例えば、もとは図3aのような表示であったのだが、一時的にページをたわませるか折り曲げるかして、中間のページを可読にしている状態と見ることができる（曲げられたページ群が、右に垣間見えている）。図3dも同様に、もとは図3bの表示であったのが、ページを曲げることによって、中間のページが可読になっている状態と見ることができる。
【００４７】
以降で「部分表示のページ」と言った時は、ここで述べた、縮退表示中で可読になっておらず、脇に部分的に垣間見えているページのことを指すことにする。なお部分表示のページは常に垣間見えている必要はなく、例えば普段は全く表示されていないが、ユーザーがその表示面21をタッチした時にだけ表示されるのでも良い。
【００４８】
電子書籍装置1の構成は、携帯の利便性を考えた場合は例えば40面くらいなどの少ない表示面数で構成された方が軽量でかさばらない。しかし、通常数百ページある実物の書物（書籍データ）の内容を表示するためには次のような工夫が必要となる。（1）いくつかの表示面21を縮退表示（AもしくはBの形態）する。（2）書物の一部もしくは大部分のページの表示を省略する。（3）前記の（1）と（2）を組み合わせて対処する、などである。
【００４９】
勿論、書物のページ数以上の表示面21を持つ表示装置2を束ねることができれば、各表示面21には、一ページのみを表示させることができるので、当然、今述べた問題は起こらず、ただ先頭のページから順に各表示面21に表示させて行けば良い。しかし、携帯性とコスト面で不利である。また例えば事典などのページが大量にある書物も考えると、何面の表示面数で十分かは定かではない。
【００５０】
更に別の選択肢として、例えば表示装置2を着脱式にして、書物のページ数が収まる分の表示装置2を電子書籍装置1に装着するような使用法も考えられる。しかし、着脱の手間は小さいように見えても、何回も繰り返されると無視できなくなる。また、やはり事典などの表示を考えると、携帯の利便性やコストが再び問題となって来る。
【００５１】
今述べたような携帯の利便性・コスト・手間の問題を避けるため、本発明では、最初に述べたように少ない枚数の表示装置2から構成される電子書籍装置1を対象とする。しかし以下で述べるように、この場合もユーザーが実物の書物と同じような感覚で本を読むことができるためには、本発明が提示するような工夫が必要となる。
【００５２】
書籍データのページ数（以降、NPと呼ぶ）と表示面21の面数（以降、NSと呼ぶ。NSは両面タイプの書籍の場合、偶数である）があった時、NS≧NPならば、ページ番号と表示面番号を一致させるだけでユーザーは自由にページを読むことができる。一方、NS＜NPの場合にはそのままではユーザーはNPページ全てを見ることができない。例えばNP=16、NS=10の時、少なくともNP−NS=6ページは非可読になっている。
【００５３】
ここで例えば、ユーザーがその6ページのうちどれか1ページを可読にして読もうとした場合、今度は代わりに別のページを移動したり、可読・非可読を切り替えたりする必要がある。しかし、状態を変更するページはどれでも良いという訳ではない。まず、ユーザーが実物の書物と同じような感覚で本を読むことができるのが望ましい。これについては「自然なページ配置条件」として後述する。
【００５４】
次に、ユーザーが「このページは可読であるはずだ」と思っているページを、装置が勝手に非可読に切り替えてしまうと、後でそのページを読もうとしたユーザーは、非可読になってしまった当該ページを探して可読に戻す、という作業が必要になってしまうので好ましくない。また仮に、ユーザーが「可読であるはずだ」と思っているページが可読のままであったとしても、その表示面21の位置が電子書籍装置1中で前後にずれてしまっては、ユーザーはやはり当該ページを探す作業が必要になってしまう。
【００５５】
このことを、図を用いて説明する。図4aにはNP=16, NS=10の時の電子書籍装置1の表示状態が、模式的に描かれている。各長方形は、一つの表示面21を表している。白い長方形は単独表示のもの、黒い長方形は縮退表示のものである（縮退表示Aになっているとする）。各長方形には、そこに表示されているページ番号が、下部に書き下されている。例えば、第6表示面には第8〜9ページが表示されている。点線で囲ったページが、ユーザーが「可読であるはずだ」と思っている区間（以降、保存区間と呼ぶ）であるとする。この例では第5〜9ページが保存区間である。図4bでは、意図せず保存区間内のページが非可読になってしまった例を描いてある。すなわち、可読であった第5ページが、第4ページと一緒になって縮退表示になっている。また別の例として、図4cでは、意図せず保存区間の表示面21の位置が電子書籍装置1中で前方にずれてしまっている。
【００５６】
このようにページの移動や表示・非表示の切り替えを何の工夫もなく行うと、ユーザーにとって好ましくない状況が容易に起こり得る。この問題を解決する方法を以下で具体的に説明する。
【００５７】
まず図1の電子書籍装置1の物理的構造について説明する。この装置では、背表紙に相当する部分に処理部12（CPUなど）と、記憶部11（後述）を構成する内蔵メモリー31（RAM、ROMなど）・外部メモリーとのインターフェース32（メモリーカードスロットやネットワークインターフェースなど、外部メモリー110からデータを読み込むもの）が搭載されている。以降、これらをまとめてコントローラー3と呼ぶ。コントローラー3には、表示装置2を挿して信号を交換するためのスロットが表示装置2の枚数（以降、NDと呼ぶ）以上個ある。なおコントローラー3の機能は、必ずしも全てを背表紙に搭載する必要は無く、例えば電子書籍装置1の全体を保護するブックカバーを設置し、そこに処理部12と記憶部11の機能を持たせても良い。
【００５８】
表示装置2は、書籍ページを表示し、表示面21を形成するディスプレイと、電子書籍装置1の状態を検出するセンサーを持つ。センサーは、次の三つの情報を取得するために必要な、現在の装置の状態を検出する。一つ目は、現在開かれている表示面21の表示面番号（以降、開巻位置と呼ぶ）である。二つ目は、ユーザーが指定している保存区間である。三つ目は、ユーザーが行っためくり操作（どの表示面21もしくは表示装置2に対して、どのような種類のページ移動（すなわち複数のページ移動処理のうちどの処理）を指示したか）である。
【００５９】
表示装置2の物理的構成は各種考えられる。図5aには電子ペーパーのように柔らかいディスプレイと、タッチセンサー131、ひずみセンサー132、照度センサー133を搭載し、ユーザーに対して自由度の高い操作を提供する表示装置2を示す。また図6aには、ユーザーに対して自由度の低い操作を提供するが、構造の単純な表示装置2を示す。この装置は固形でも良く、押しボタン列134、照度センサー133を持ち、タッチセンサー131やひずみセンサー132は搭載されていない。ユーザーは装置下部にある押しボタン24（GUIの一部として表示されたものでは無く、物理的に装着されたもの。複数個ある）のみで操作を行う。なお図5a、図6aともに、両面タイプの表示装置2の場合は、押しボタン24や照度センサー133は、表裏の両面に設置されているとする。
【００６０】
図5a、図6aどちらの表示装置2もエッジコネクター22を持ち、それをコントローラー3のスロットに接続することによって、電極23を通してコントローラー3と信号を交換したり電力の供給を受けたりする。以下、それぞれについて詳細に説明する。また図5b、図6bについては、図7の機能ブロック図と併せて説明する。
【００６１】
図5aにおける表示装置2の表示面21は、マルチタッチが検出可能なタッチセンサー131付きの液晶ディスプレイで構成され、ユーザーが指などで触っている場所の座標を（一般には複数個）検出する。また表示装置2の一辺（図では下辺）にはひずみセンサー132（ひずみゲージなどで構成する）が設置され、表示面21の法線方向のひずみを検出する。更に照度センサー133により、その表示面にどれくらい光が当たっているかを検出する。コントローラー3は、ひずみセンサー132の情報から表示面21の歪み方向とその度合いを求めることによってページのめくり操作を検知したり、照度センサー133の情報から最も多くの光が当たっている表示面を求めることによって開巻位置を検知したりする。なお図5では、一辺のみにひずみセンサー132が設置されているが、例えば上辺及び垂直方向の辺にひずみセンサー132を設置すれば、検出の精度向上が期待できる。
【００６２】
ここで、表示装置2を曲げた時の方向を表すために「山曲げ」「谷曲げ」という二つの用語を定義する。「第n表示面を山曲げする」とは、ユーザーと第n表示面が相対している時に、その表示面21を凸状に曲げる（凸の方向がユーザーに向かうように曲げる）ことを指す。「第n表示面を谷曲げする」とは、逆にその表示面21を凹状に曲げることを指す。同様に「第d表示装置を山曲げする」とは、片面タイプの書籍の場合は、第d表示面を山曲げすることを指す。両面タイプの書籍の場合は、第d表示装置の表裏の表示面21のうち表示面番号の小さい方を山曲げすることを指す。また「第d表示装置を谷曲げする」とは山曲げと逆方向に曲げることを指す。
【００６３】
図6aにおける表示装置2では、図5aのように装置を曲げたりタッチしたりという複雑な操作はできない。複数個ある押しボタン24の何れかを押すだけである。ユーザーは押しボタン24によって、主にページのめくり操作を行い、また保存区間の指定を行う。各押しボタン24には固有の機能が割り当てられ、本実施形態においては7個の押しボタンBT,BM,BP,BD,BR,BG,BCを用いる（個々の機能については後で説明するが、TはType、MはMethod、PはPage、DはDirection、RはReserved、GはGo、CはCancelの略である）。照度センサー133の役割は図5aの表示装置2と同じである。
【００６４】
図5aの表示装置2は図6aよりも高度な構成であるため、ユーザーは自由度の高い操作が可能であり、実物の書物を読むのに近い感覚で操作ができる。その反面操作が複雑であり、説明の上で発明の本質が分かり難くなりやすい。そこで以下では図6aの方を主体に説明する。ただし、図5aと図6aは操作の仕方が違うだけで、できることに本質的な違いはないことを付け加えておく。
【００６５】
次に図1の電子書籍装置1の論理的構造について説明する。図7に電子書籍装置1の機能ブロック図を示す。この装置は「記憶部11」「表示部14」「センサー部13」「処理部12」から構成される。また「処理部12」は後述する複数の手段（処理）から構成される。なお、書籍のページ数は16ページ、表示装置2の枚数は両面タイプのものが5枚（表示面21は合計10面）として説明を進めるが、他の構成でも構わない。
【００６６】
「記憶部11」は、典型的には揮発性及び不揮発性のメモリーから構成される。またメモリーカードスロットやネットワークインターフェースなどにより外部メモリー110からデータを取り込むようになっていても良い。記録されるデータは、複数冊分（0冊分以上）の書籍の内容（書籍データ1111と呼ぶ）を保有する「書籍データベース111」と、設定用もしくは作業用のデータとして「グローバル設定テーブル116」「開巻位置変数114（gOPEN）」「ページ表示テーブル115」「保存区間テーブル113」「書籍構造データベース112」である。これらのうち、開巻位置変数114（gOPEN）だけが単独の変数であり、残りがテーブルもしくはツリー状のデータ構造である。書籍構造データベース112は、書籍データベース111が保有する冊数分の書籍の構造（書籍構造データ1121と呼ぶ）を保有し、個々の書籍構造データ1121は書籍データ1111と一緒に提供されている可能性もある。そうでない場合は、電子書籍装置1自らが構築する。記憶部11の使用形態は例えば、書籍データベース111、書籍構造データベース112、グローバル設定テーブル116を不揮発性メモリーに、それ以外を揮発性メモリーに置く方法がある。また、書籍データベース111、書籍構造データベース112を外部メモリー110から取り込んでも良い。
【００６７】
「グローバル設定テーブル116」（図8）には、二つの設定値が保持されている。一つ目の設定値「gRESV」は保存区間の種別を表し、"広義"、"狭義"の何れかの値を取る。後の各実施例で詳細を説明するが、保存区間の種別を変えることで、保存区間の内外を判定する方法を変えることができる。二つ目の設定値「gNAT」は真か偽の値を取り、後述する「自然なページ配置条件」を遵守するかどうかを指定する。これらの設定値は、頻繁に切り替えるというよりも、ユーザーが電子書籍装置1をどのようにして使いたいかに応じて予め設定しておく性質のものである。具体的な設定方法としては、例えば表示面21上にGUIによるメニューを表示し、ユーザーが所望の設定値に対応する押しボタン24を押して選択する方法がある。
【００６８】
「開巻位置変数114（gOPEN）」は、電子書籍装置1の開巻位置を示す整数値である。より正確には、片面タイプの表示装置2の場合は見えている表示面の番号、両面タイプの場合は見開いている左右の表示面番号うち、小さい方の値とする。また電子書籍装置1を閉じている時は、片面タイプの場合はgOPEN=1、両面タイプの場合はgOPEN=0とする。以降の説明ではgOPENの値のことも開巻位置と呼ぶ。gOPENの値は、ユーザーが表示装置2をめくる都度、後述する「開巻位置検出手段123」によって値が変更される。
【００６９】
「書籍データベース111」内の個々の書籍データ1111は図9に示したようなNP行から成るテーブルに保持される。各行は、それぞれのページにおいて表示面21に描画（出力）されるべき情報を保持する。図9には最も簡単な例として、描画されるべき情報は文字情報だけとし、各行が｛ページ番号、文章データ｝で構成されるテーブルを示してある。図には収まり切れていないが、文章データに格納された文字列を第1〜NPページまで全て繋げ合わせると、その書籍のストーリーが完成する。
【００７０】
もう少し複雑な例としては、挿絵・図・グラフなどの画像も併せて表示される場合がある。この時は、各行が｛ページ番号、文章データ、0個以上の画像情報｝で構成されるテーブルを用いれば良い。なおここで「画像情報」とは、適当な方式で符号化された画像データと、その画像が表示面21上に表示されるべき座標位置のペアであるとする。「0個以上の画像情報」の欄には、もし当該ページに複数の画像が表示される場合は、このペアが画像の個数分だけ登録される。また、当該ページに画像が一つも無い場合は空欄となる。
【００７１】
「ページ表示テーブル115」（図10）は、各行が｛表示面番号、表示タイプ、ページ番号の列、可読であるページ番号｝で構成されるテーブルである。以下では表記を簡略化する時は、表示面番号がn（1≦n≦NS）の「表示タイプ」をT(n)、「ページ番号の列」をPn、「可読であるページ番号」をR(n)と表す。Pnはリスト構造（もしくは可変長配列）であり、そのエントリー数をL(n)、第i番目のエントリーをPn(i)で表す。また各エントリーをカンマで区切って書き並べ、全体を鉤括弧でくくることでもPnを表すことにする。例えばPn=[1,2,3]とはL(n)=3、Pn(i)=iのリストであり、またPn=[]は空リストである。
【００７２】
さて、T(n)は図2で示したようにその表示面21の表示形態を表し、"縮退表示A"、"縮退表示B"どちらかの値を取る。なお、単独表示を表すタイプは存在せず、ページ数が1枚の縮退表示AもしくはBのことを単独表示と呼ぶことにする。Pnには、その表示面21に表示されるページ番号列が0個以上（L(n)≧0）登録される（L(n)=0の時は、その表示面21にはページは何も割り当てられていない。その時、表示面21は例えば真っ黒になっているとする）。Pn(i)は、iがi＞L(n)もしくはi＜1の時は意味を持たないので、Pn(i)=0と決めておく。R(n)は、表示タイプが縮退表示Bの場合は、その表示面21で可読であるページ番号（Pnの中の一エントリー）である。縮退表示Aの場合は、ユーザーが選択している（例えば縮退表示Bに切り替えた場合に、そのページを可読にするために選択している）などでハイライトされているページ番号を表す。もしR(n)がPnの中に無いページ番号を保持していたら、本実施例では、縮退表示Bの場合はPn(1)を指していると解釈し、縮退表示Aの場合はどのページも選択されていないと解釈する（他の解釈の方が都合が良ければ、そちらでも良い）。またPnが空リストの場合は、R(n)は無視されるので任意の値で良い（図面中や説明中で、R(n)がPnの中に無いページ番号であることを強調したい場合は0と記す）。
【００７３】
なお当然ではあるが、各Pnの中ではページは順番に並んでいる。つまり不連続になっていたり、重複していたり、ページ順序が逆になっているということは無い。また、第n表示面の最後のページPn(L(n))と、続く第m表示面の最初のページPm(1)も、同じように連続している。ここで通常はm=n+1であるが、第n+1表示面にページが割り当てられていない（L(n+1)=0）場合は、nより後で、何らかのページが割り当てられている最初の表示面の番号とする（L(n+i)＞0であるような最小のi（i≧1）に対して、m=n+iとする）。
【００７４】
以上の情報により、ページ表示テーブル115は、各表示面21にどのページをどのように表示するかを定める。処理部12はこのテーブルに従って、記憶部11中の書籍データベース111からページごとの情報を読み取り、当該表示面21へのページの描画を行う。
【００７５】
ここで、両面タイプの書籍における、ページ表示テーブル115の内容及び表示面21への描画に関する注意点を三つ述べる。
【００７６】
一つ目は、テーブル中の第n表示面がL(n)＞0ならば、nとR(n)の偶奇性は等しい（nが偶数ならR(n)も偶数で、nが奇数ならR(n)も奇数）のが望ましい。これは実物の書物を見開いた時、左右のどちらか側にあるページ番号の偶奇性は常に一定である（例えば見開いた右側には常に、2,4 6, …の偶数番ページがある、など）ことに由来する。
【００７７】
二つ目は、同様の理由で表示タイプが縮退表示Bの場合、Pnの各ページのうちnと偶奇性の異なる番号のページは裏を向いているはずなので、表示面21上には完全に見えていないのが望ましい。例えばn=2ならば、第n表示面には第1,3,5,…などの奇数番ページは、完全に見えていないのが望ましい。
【００７８】
三つ目はやはり縮退表示Bの場合、L(n)＞0ならば、R(n)はPnの先頭または末尾のエントリーであるのが望ましい。より正確には、偶数番目の表示面21ではR(n)=Pn(L(n))、すなわちPnの「末尾」のエントリーが可読、奇数番目ではR(n)=Pn(1)、すなわち「先頭」のエントリーが可読であるのが望ましい（この条件は右開き、左開きどちらの場合も共通である）。これにより、電子書籍を見開いた時に、左右のページは必ず連続していることになり、実物の書物を読んでいるのと同様の表示となる。
【００７９】
一方、ページをめくって表示装置2の表裏を返した場合は、ページは連続するとは限らずジャンプしている可能性もある。これは実物の書物を読んでいる時に、1ページめくろうとしたが複数ページがくっついてしまっている場合に相当する（アナロジーがある）ので自然であると見なす。
【００８０】
前記の三つ目の条件を無視すると、例えば最背面に位置するはずのページが最前面に表示されるなど不自然な状態となる。またR(n)がPnの中間のエントリーであった場合は、最前面でも最背面でもない中間のページが可読の状態になり（図3c、図3d）、やはり不自然な状態になる。
【００８１】
なお、全ての表示面iに対してL(i)＞0、つまり一ページ以上が割り当てられているのが基本的には望ましいが、L(i)=0である表示面iがあっても良いとする。
【００８２】
以後、今述べた三つの条件を満たす両面タイプの装置は、「自然なページ配置条件」を満たすという。
【００８３】
一方、片面タイプの書籍の場合の「自然なページ配置条件」は一つであり、表示タイプが縮退表示Bの場合、L(n)＞0ならば、R(n)=Pn(1)すなわち「先頭」のエントリーが可読であるのが望ましい。なお片面の場合も、全ての表示面iに対してL(i)＞0であるのが基本的には望ましいが、L(i)=0である表示面iがあっても良いとする。
【００８４】
自然なページ配置条件は実物の書物とのアナロジーという意味では重要であるが、敢えて無視しても書籍を読むことは可能である。そこで「グローバル設定テーブル116」の設定値「gNAT」によって、この条件を遵守するかしないかを切り替えられるようになっている。
【００８５】
ページ表示テーブル115が変更された時、処理部12（より具体的には、後述する「ページ表示手段125」）がその変更を表示部14に反映させるタイミングは大別して二つある。一つ目は、テーブルの変更後瞬時に反映させる単純な方法である。二つ目は、複数回分のテーブルの更新を一括して反映させる方法である。後者は、テーブルの更新中の状態をユーザーに見せたくなく、結果だけを見せたい場合などで使われる。例えば、gNATが真なのに、処理の途中で一時的に自然なページ配置条件を満たさない状態になってしまう場合や、テーブルの更新が速すぎてユーザーが見苦しく感じる場合などである。このタイミングは、後述する「ページ移動手段124」によって決定される。
【００８６】
「保存区間テーブル113」（図11）は、各行が｛保存区間番号、開始ページ番号、終了ページ番号｝で構成されるテーブルである。このテーブルは、現在どの区間が保存区間として指定されているかを保持する。典型的には、0または1個の区間のみが指定されるが、一般的には複数の区間が指定され得る。また、開始ページ番号や終了ページ番号は、縮退表示Bで非可読になっているページ番号でも良い。すなわち、ページ表示テーブル115のPnに列挙されているページのうち、R(n)として指定されていないページ番号でも良い。第pページが「保存区間の中にある」とは、pが保存区間テーブル113に登録されている複数の区間のうちの、何れか一つの区間に入っている（開始ページ番号≦p≦終了ページ番号）こととする。
【００８７】
「書籍構造データベース112」内の個々の書籍構造データ1121はツリー構造（図12）を成し、書籍の目次に相当する情報を、本装置が扱いやすい形で保持する。各ノードは図12aのように、｛ラベル、開始ページ・行番号、終了ページ・行番号、0個以上の子ノードの列｝で構成される。ここでページ番号だけでなく行番号も保持しているのは、一般に書籍の構成単位は、ページ単位で変わるのではなく行単位だからである（例えば、パラグラフが変わる時は、行が変わるだけで、一般的にはページは変わらない）。図12bで、ツリーのトップであるルートノードは書籍全体を表し、その範囲が｛開始ページ・行番号、終了ページ・行番号｝に記録されている。また0個以上の子ノードの列は、矢印で示してある。ルートより下位のノードは書籍の構造を表し、上位から下位に行くに従って、より小さい文書の構成単位を表すようになる。
【００８８】
例えば、書籍が複数の章から構成され、一つの章は複数の節から構成され、一つの節は複数のパラグラフから構成されるとする。この場合、ルートより1レベル下のノードは章を表し、その開始ページと終了ページが記録されている。またルートより2レベル下のノードは節を、ルートより3レベル下のノードはパラグラフを表し、それぞれに｛開始ページ・行番号、終了ページ・行番号｝が記録されている。書籍構造データ1121は、書籍データ1111と一緒に提供されるのが理想であるが、そうでない場合は処理部12が構築する（以降、書籍構造データ構築手段121と呼ぶ）。構築の手順は、例えば目次部分から情報を抽出する、典型的な見出し付けの規則（新しい章、節、パラグラフの始まりに共通する、文字列のパターン）をデータベース化しておき、それを参照しながら書籍全体を逐字的に解析して構築する、などが考えられる。
【００８９】
「表示部14」は、表示装置2の画面に相当し、処理部12から送られる画像データに基づいて、各表示面21に画像を表示する。
【００９０】
「センサー部13」は、表示装置2のセンサー部分に相当し、現在の装置の状態を処理部12（より具体的には、後述する「ユーザー操作検知手段123」）に送る。センサー部13の構成は表示装置2の構成に依存して変化し、次で述べる押しボタンのように、ユーザーの操作や装置の状態を検出できる部品であれば良く、必ずしもセンサーである必要は無い。
【００９１】
図6aの表示装置2の場合は、図6bに示すように「押しボタン列134」「照度センサー133」から構成される。押しボタン列134は、7個の押しボタンBT,BM,BP,BD,BR,BG,BCの押下状態を、7個の0または1の値（ベクトル）として処理部12に送る。例えば(1,0,0,0,1,1,0)を受け取った処理部12は、押しボタンBT,BR,BGが押下の状態にあると判断する。以降、第n表示面の押しボタン列134が検出した押下状態（前記のベクトル）をB(n)で表す。また、照度センサー133は、各表示面21に当たっている光の強さを、一つの実数として処理部12に送る（単位は例えばルクスとする）。以降、第n表示面の照度センサー133が検出した光の強さをI(n)で表す。
【００９２】
一方、図5aの表示装置2の場合は、図5bに示すように「タッチセンサー131」「ひずみセンサー132」「照度センサー133」から構成される。タッチセンサー131は、表示面21上のユーザーがタッチしている場所（マルチタッチなので一般には複数個）の座標を、一つの場所について2個の実数(X,Y)として処理部12に送る（X,Yの単位は例えばセンチメートルとする）。以降、第n表示面のタッチセンサー131が検出した座標を、0個以上のエントリーから構成されるリスト構造（もしくは可変長配列）Wnで表し、その第i番目のエントリー（前記のX,Y座標）をWn(i)で表す。また、ひずみセンサー132は、各表示装置2のひずみ度合いを、一つの実数（山曲げの時は正の値、谷曲げの場合は負の値を取ると決めておく）として処理部12に送る。以降、第d表示装置のひずみセンサー132が検出したひずみ度合いをE(d)で表す。最後に、照度センサー133については図6bの場合と同様である。
【００９３】
「処理部12」は、電子書籍装置1の中枢にあたり、典型的にはCPUによって構成される。処理部12は「書籍構造データ構築手段121」「ページ表示手段125」「ユーザー操作検知手段123」「保存区間テーブル更新手段122」「ページ移動手段124」を内部に持つ。このうち、書籍構造データ構築手段121については前述した通りである。残りの手段について詳述する。
【００９４】
「ページ表示手段125」は、書籍データベース111内の複数の書籍データ1111から現在ユーザーが読んでいる書籍データ1111を選択し、ページ表示テーブル115の内容に従って、各表示面21に表示すべき画像データを作成して表示部14に送る。各ページ（ページ番号をpとする）の画像データは、図9におけるページ番号pに相当する行の文章データを、適当なフォントやレイアウトを用いて1ページ分の画像データに変換することで作成する。第n表示面が単独表示の時は、そのようにして作成された画像データをそのまま表示部14に送れば良い。縮退表示の場合は、複数ページ分について上記の要領で画像データを作成し、それらを縮小して並べたり（縮退表示Aの場合）、互いに重ね合わせたり（縮退表示Bの場合）して合成した画像を表示部14に送る。
【００９５】
「ユーザー操作検知手段123」は、センサー部13からの信号を処理部が扱いやすいように加工して、記憶部11（より具体的には開巻位置変数114）、保存区間テーブル更新手段122、ページ移動手段124に送る。図5b、図6bの説明で述べたように、センサー部13から送られて来る信号は表示装置2の構成によって変化するが、ユーザー操作検知手段123はこれらの違いを吸収し、表示装置2の構成に依存しない形式の信号を上記の三ブロックに送る。従って表示装置2の構成を変更してセンサー部13からの信号が変化した場合でも、ユーザー操作検知手段123さえ修正すれば、上記三ブロックには影響は及ばない。
【００９６】
ユーザー操作検知手段123から出力される信号の形式を、具体的に説明する。まず開巻位置変数114へは、開巻位置を表す整数を送る。次に保存区間テーブル更新手段122へは、ユーザーの保存区間変更操作（新たな区間の追加や削除など）を検出した時に、それを通知（もしくはメッセージ）として送る。通知は、どのように保存区間テーブル113を変更するかを表し、｛タイプ=t、パラメーター1=v1、パラメーター2=v2、…｝のように表記される。ここで、tは操作のタイプ、またパラメーターは0個以上存在する（パラメーターの個数や意味は、通知のタイプごとに決まる）。最後にページ移動手段124へは、ユーザーのページ移動操作を検出した時に、それを通知として送る。通知は、どのようにページ表示テーブル115を変更する（以降ページの再配置と呼ぶ）かを表し、その形式は保存区間テーブル更新手段122に送られるのと同じく、タイプtと0個以上のパラメーターである。ただし、ここではタイプtは再配置のタイプを表す。
【００９７】
続いて、ユーザー操作検知手段123が、センサー部13からの信号をどのように加工して、上記三つの信号を送るかを説明する。なおセンサー部13の構成は図6bの通りとする。
【００９８】
ユーザー操作検知手段123から送られる第一の信号として、開巻位置変数114（gOPEN）へは、照度センサー133から計算した開巻位置を出力する。具体的な開巻位置の計算は、開巻位置にある表示面21に最も多くの光が当たっているという前提で以下のように行う。まず片面タイプの書籍の場合は、照度I(n)の値が最大となる表示面番号nをgOPENとすれば良い。次に両面タイプの書籍の場合は、照度I(n)の値が最大となる表示面番号nを調べ、nが偶数の時はgOPEN=n、奇数の時はgOPEN=n−1とすれば良い（従って両面タイプの場合は、gOPENは常に2の倍数となる）。また、片面タイプ、両面タイプ何れの場合も、I(n)の最大値が予め定めた閾値以下の場合は、電子書籍は閉じているものと見なす（すなわち、片面タイプの場合はgOPEN=1、両面タイプの場合はgOPEN=0とする）。
【００９９】
ユーザー操作検知手段123から送られる第二の信号として、保存区間テーブル更新手段122へは、押しボタン列134にある押しボタン24のうちBP,BR,BCの押下状態を監視して通知を送る。本実施形態では、保存区間テーブル122の更新方法としてシンプルなものを考える。すなわちテーブルの更新は、テーブル中の一行（一つの保存区間）を登録する方法を基本とし、それらを複数回実行することでテーブル全体、すなわち複数の保存区間の登録を行う。またテーブル全体をクリアする方法を用意しておく。
【０１００】
前記の操作を実現するため、四つのタイプの通知を定義する。それらは"全消去"、"ページ指定"、"登録"、"登録（途中指定）"である。タイプが"ページ指定"の時のみ、"ページ=p"という一つのパラメーターがあり、その他のタイプの通知にはパラメーターは存在しない。以下で、これらの通知の意味と、通知が送られるタイミングについて説明する。保存区間テーブル更新手段122は、それらの通知を受け取った時に、その意味に従って内部状態を変更するか保存区間テーブル113を更新する。
【０１０１】
第一に、任意の表示面21でBCボタンを同時に押すと、｛タイプ="全消去"｝という通知が送られ、この意味は保存区間テーブル113全体のクリアである。第二に、BRボタンを押すと、｛タイプ="ページ指定"、ページ=p｝という通知が送られ、この意味は保存区間の開始・終了・途中いずれかのページの指定である。パラメーターpの値は後述するように、BRボタンを押した表示面21にあるページの番号であり、当該表示面21にページが複数ある場合は、この通知が発生する前にBPボタンを押した回数によって決定される。第三に、任意の表示面21でBRボタンを二回素早く押すと、｛タイプ="登録"｝という通知が送られ、この意味は保存区間テーブル113への一行登録である。第四に、任意の表示面21でBRボタンを三回素早く押すと、｛タイプ="登録（途中指定）"｝という通知が送られ、この意味も保存区間テーブル113への一行登録である。"登録"と"登録（途中指定）"の違いについては、後で保存区間テーブル更新手段122と併せて説明する。
【０１０２】
タイプが"ページ指定"の時のパラメーター"ページ"の値pは、通知を発生させるきっかけとなったBRボタンを押した表示面（第n表示面とする）において、BPボタンを押した回数によって決定される。まず、BPボタンが一回も押されなかった場合は、R(n)がpとして選択される（ただしR(n)がPnの中に無いページ番号の時は、Pn(1)が選択されるとする）。以降BPボタンを押すたびに巡回式に、次のページ（pに1を足す）がpとして選択される。巡回式にとはすなわち、pに1を足した値がPnに存在しないページ番号になってしまった場合は、Pnの先頭に戻ってPn(1)をpとして選択することを意味する。ただし、L(n)=0の時は選択すべきページが存在しないので、pは無効な値とする。この時BRボタンを押しても無視され何も起きない。
【０１０３】
ユーザー操作検知手段123から送られる第三の信号として、ページ移動手段124へは、押しボタン列134にある押しボタン24のうちBT,BM,BP,BD,BGの押下状態を監視して通知を送る。ページ移動手段124はその通知のタイプ及びパラメーターの内容に従ってページ表示テーブル115を変更する。
【０１０４】
前記の操作を実現するため、第1実施形態では二つのタイプの通知を定義する。それらは"簡易型"、"標準型"である。二つのタイプともに、"再配置方法=x"、"表示面=n"、"ページ=p"という三つのパラメーターを持つ。より具体的には、タイプが簡易型の通知は、｛タイプ=簡易型、再配置方法=x、表示面=n、ページ=p｝のように表記され、再配置方法xは"前方移動"、"後方移動"、"面内移動"の何れかである。一方、タイプが標準型の通知は、｛タイプ=標準型、再配置方法=x、表示面=n、ページ=p｝のように表記され、再配置方法xは"前方移動"、"後方移動"の何れかである。以下で、これらの通知の意味と、通知が送られるタイミングについて説明する。
【０１０５】
BGボタンを押すと、｛タイプ=t、再配置方法=x、表示面=n、ページ=p｝という通知が送られる。通知の中の個々の要素について説明すると、一つ目の、タイプtは"簡易型"か"標準型"のどちらかであり、ページ移動をどのように行うかを表す（詳細は後述）。タイプtの値は、予め電子書籍装置1の設定として決めておいても良いし、ユーザーの操作によって指示しても良い。また、ユーザー操作検知手段123が状況に応じて選択しても良い。本実施形態では、ユーザーがBTボタンを押した回数で決定する。すなわち一回も押さなければ"標準型"、一回押したら"簡易型"、という具合である（二回押したら最初の"標準型"に戻るとする）。第2実施形態以降で通知のタイプが増えた場合も、同じくBTボタンを押すたびにタイプが巡回式に切り替わる要領で指定する。
【０１０６】
二つ目の再配置方法xは、ページ移動をどのように行うかをより細かく指定する。"前方移動"は、ページを表示面番号の小さい方向に移動する。"後方移動"は、ページを表示面番号の大きい方向に移動する。"面内移動"は、表示面21間でのページ移動は行わず、R(n)の値、すなわち可読なページを同一表示面21内で切り替える。再配置方法xもBMボタンを押した回数で巡回式に決定する。すなわち一回も押さなければ"前方移動"、一回押したら"後方移動"、二回押したら"面内移動"、という具合である（三回押したら最初の"前方移動"に戻るとする）。第2実施形態以降で再配置方法が増えた場合も、同じくBMボタンを押すたびにタイプが巡回式に切り替わる要領で指定する。
【０１０７】
三つ目の表示面nは、BGボタンを押した表示面21の表示面番号とする。
【０１０８】
四つ目のページpは、保存区間の開始・終了・途中ページを指定するのと同じ要領で選択されるとする。すなわち、通知を発生させるきっかけとなったBGボタンを押した表示面において、BPボタンを押した回数によって巡回式に切り替わって決定される。ただしL(n)=0の時は、選択すべきページが存在しないので、pは無効な値とする。
【０１０９】
全体像がつかめるように、第2実施形態以降も含んだ本発明全体において、ユーザー操作検知手段123がページ移動手段124に送る通知の一覧を図13に示した。
【０１１０】
図13のようにタイプが5種類に増えた場合でも、通知の送り方はこれまでと変わらない。すなわちBTボタンを押した回数によってまずタイプtが決定され、続いて図13で定義されたパラメーターを付加して通知を送る。これらのパラメーターのうち、再配置方法x、表示面n、ページpについては既に説明した方法で決定される。残りのパラメーターは、まず表示装置dは、BGボタンを押した表示装置2の表示装置番号とする。また方向dirは、+1と−1の二つの値を取るが、BDボタンを押した回数で決定する。すなわちBDボタンを偶数回（0回を含む）押した場合は+1、奇数回押した場合は−1とする。
【０１１１】
なお、BGボタンが押された時点で、タイプとパラメーターの値や組み合わせが無効である場合は、通知は発生せず無視される。例えば、"標準型"のタイプtと"面内移動"の再配置方法xは、無効な組み合わせである。
【０１１２】
またこれまで述べてきたボタン操作で、BT,BM,BP,BDは各ボタンを押した回数だけが問題であるので、これらを押す順序は関係無い（一方、BR,BG,BCは順序が重要である）。例えば、BTボタンを所望の回数押した後に、BMボタン、BPボタンをそれぞれ所望の回数ずつ押しても良いし、BT,BM,BP,BDボタンを混ぜ合わせて押しても良い（交互に押すなど）。
【０１１３】
ここで次の説明に移る前に、図5aに示した表示装置2（機能ブロック図は図5b）を使用した場合の、ユーザー操作検知手段123の動作について説明する。
【０１１４】
まず、開巻位置変数114（gOPEN）への出力は図6の場合と同一である。
【０１１５】
次に、保存区間テーブル更新手段122に送られる通知について説明する。保存区間テーブルに関する操作は、全て二本指で行うものとする。本実施形態では四種類の操作を定義する。一つ目の操作では、任意の表示面の任意の場所を二本指でタッチ＆ホールドする（数秒間タッチし続ける）と、｛タイプ="全消去"｝という通知が送られる。二つ目の操作では、任意の表示面において第pページが描画されている領域（部分表示の時は、そのページが垣間見えている領域）を二本指で一回タッチすると、｛タイプ="ページ指定"、ページ=p｝という通知が送られる。三つ目の操作では、任意の表示面において第pページが描画されている領域を二本指で二回素早くタッチすると、二つの通知｛タイプ="ページ指定"、ページ=p｝と｛タイプ="登録"｝がこの順番で送られる。四つ目の操作では、任意の表示面において第pページが描画されている領域を二本指で三回素早くタッチすると、二つの通知｛タイプ="ページ指定"、ページ=p｝と｛タイプ="登録（途中指定）"｝がこの順番で送られる。
【０１１６】
最後に、ページ移動手段124に送られる通知について説明する。ページ移動に関する操作は、全て一本指で行うものとする。そして、何れかの表示面21をユーザーがタッチした時に、図6のBGボタンを押したのと同じく通知が送られる。その際のパラメーターは以下のようにして決定される。まずタイプtは、素早く二回タッチしたら"簡易型"、単に一回タッチしたら"標準型"とする。次に表示面nは、タッチした表示面21の表示面番号とする。さらにページpは、保存区間のページ指定と同じく、当該表示面21のタッチした領域に描画されているページのページ番号である（タッチした領域にどのページも描画されていない時は、pは無効な値とする）。また再配置方法xの指定は、タッチした表示装置2を山曲げしている場合は"前方移動"、谷曲げしている場合は"後方移動"、表示装置を曲げていない場合は"面内移動"とする。さらに図13に挙げた、第2実施形態以降で使われるパラメーターも併せて説明すると、表示装置dは、タッチした表示装置2の表示装置番号とする。方向dirは、タッチした表示装置2を山曲げしている場合は−1、谷曲げしている場合は+1、表示装置を曲げていない場合は無効とする。
【０１１７】
なお、図6の場合と同じく、タイプとパラメーターの値や組み合わせが無効である場合は、通知は発生せず無視される。
【０１１８】
ここまでで、図5aに示した表示装置2での動作の説明を終え、再び説明を続ける。
【０１１９】
「保存区間テーブル更新手段122」は、ユーザー操作検知手段123からの通知に従って、内部状態を変更するか保存区間テーブル113を更新する。まず｛タイプ="全消去"｝という通知を受信したら、保存区間テーブル113に登録されている保存区間を全て消去する。残りの三つは、一つの保存区間を登録するための通知である。一保存区間の登録方法は各種考えることができるが、ここでは三つ提示する。
【０１２０】
第一の登録方法は、ユーザーが保存区間の開始ページと終了ページを指定し、保存区間テーブル更新手段122がテーブルに一行登録する方法である。この場合ユーザーは、二つのページ（それぞれp,qとする）を指定する。保存区間テーブル更新手段122はp,qのうち小さい方を開始ページ、大きい方を終了ページとしてテーブルに登録する。
【０１２１】
第二の登録方法は、ユーザーが保存区間の開始ページあるいは終了ページのみを指定する方法である。この場合ユーザーは一つのページ（pとする）を指定する。保存区間テーブル更新手段122は、pが開始ページなのか終了ページなのかを判定する必要があるが、現在の開巻位置によって判定する。すなわち、ユーザーが指定したページpと開巻位置とを比べ、pの方が前に位置する（あるnが存在して、n≦gOPENであり、かつpはPnのエントリーである）場合はpを終了ページと見なす。逆にpの方が後に位置する（あるnが存在して、n＞gOPENであり、かつpはPnのエントリーである）場合はpを開始ページと見なす。開始・終了ページの判定の後、pが開始ページの場合は、終了ページは書籍の最後のページと見なす。同様に、pが終了ページの場合は、開始ページは書籍の最初のページと見なす。
【０１２２】
第三の登録方法は、ユーザーが区間の「途中の」ページ（pとする）を指定する方法である。保存区間テーブル更新手段122は、次に述べるように書籍構造データベース112を参照して保存区間を決定する。すなわち、Dをユーザーが予め設定しておいた自然数（0を含む）とし、これにより書籍構造データ1121のルートノードからの深さを表すとする（D=0の時はルートノード自身を、D=1の時はルートより1レベル下のノード群を表す。以下同様）。保存区間テーブル更新手段122は、指定されたレベルDのノードを、例えばページ番号の小さい順に検索して行き、その範囲｛開始ページ・行番号、終了ページ・行番号｝の中に、ユーザーが指定したpが含まれている（開始ページ番号≦p≦終了ページ番号）ものを見つけたら、そのノードが表す区間が保存区間として指定されたと見なす（その際、行番号の情報は無視される）。
【０１２３】
今述べた三種類の指定方法を、保存区間テーブル更新手段122が通知を受けた時の処理として説明する。まず、タイプが"登録"もしくは"登録（途中指定）"の通知（以降、これらをまとめて登録通知と呼ぶ）を受信した時、前回の登録通知を受信してから後に、タイプが"ページ指定"の通知（以降、指定通知と呼ぶ）を一つも受信していない場合は、「ページが指定されていない」と言う。次に、前回の登録通知の受信から後に、指定通知を一つだけ受信している場合は、その通知の"ページ"パラメーターの値をpとして「一つのページpが指定されている」と言う。最後に、指定通知を二つ以上受信している場合は、直近の通知の"ページ"パラメーターの値をp、その一つ前の通知の同パラメーターの値をqとして、p≠qの時は「二つのページp,qが指定されている」と言い、p=qの時は「一つのページpが指定されている」と言う。
【０１２４】
続いて保存区間の登録の手順について説明する。まず、登録通知を受信した時に、「ページが指定されていない」場合は、何もせず無視する。次に、タイプが"登録"の通知を受信した時、「二つのページp,qが指定されている」場合は、前記第一の登録方法で保存区間を登録する。一方、「一つのページpが指定されている」場合は、前記第二の登録方法で保存区間を登録する。最後に、タイプが"登録（途中指定）"の通知を受信した時、「一つのページpが指定されている」もしくは「二つのページp,qが指定されている」場合は、前記第三の登録方法で保存区間を登録する（なおこの時、qの値は無視される）。
【０１２５】
「ページ移動手段124」は、ユーザー操作検知手段123からの通知を受信し、ページの再配置（ページ表示テーブル115の変更）が必要な時に、通知の内容に従ってページ表示テーブル115を変更する。仮にもし、全てのページと全ての表示面21が一対一に対応しているならば、ユーザーは単に表示装置2をめくるだけ（gOPENを変更するだけ）で書籍を読むことができ、ページ表示テーブル115を変更しなくて良いので、この手段は必要ない。しかしページ数が表示面数よりも多い場合は、gOPENを変えずに、ページ表示テーブル115を変更しPn, R(n), T(n)の値を操作することで、ページをある表示面21から別の表示面21に移動する、すなわちページめくりと等価な操作をすることも可能である（もちろん、gOPENが変化したタイミングでページ表示テーブル115を変更しても良い）。ページ移動手段124は、このような本装置に特有のページめくりを行う。
【０１２６】
ユーザーがどのような操作をした時に、ページ表示テーブル115を変更するかは多種多様なケースが考えられる。例えば、図1のコントローラー3部分に加速度センサーを搭載しユーザーが電子書籍装置1を勢いよく揺さぶると、ページ表示テーブル115がどんなに複雑な状態であっても、図26に示すような読書開始時の状態にリセットされるという操作も考えられる。しかし本発明では、主なもののみを考え、第1実施形態では"簡易型"、"標準型"という二つのタイプを考える。これらは、ユーザーが任意の表示面21（表示面番号n）のPnの中の一ページ（ページ番号pとする。pは典型的には部分表示になっている）を選択し、それを電子書籍装置1が可読にする、もしくは別の表示面に移動する操作である。標準型は、自然なページ配置条件を常に満たすという点で簡易型と異なり、より高度な処理を行う。
【０１２７】
なおここで「任意の表示面21」と強調したのは、gOPENが指す位置とは無関係でも良いという意味である。つまり、今読んでいるページとは関係無い表示面21を少しだけ（小さい角度で）開いて、その表示面21にある部分表示のページを可読にすることもできる。もっともユーザーの操作としては、現在の開巻位置でのページ移動が主体になると思われる。
【０１２８】
ページ移動手段124は、最小限のページ移動を行う下位の手段群を持つ（第1実施形態で使われるものは図16〜図25に示した）。ユーザー操作検知手段123からの通知を受け取ると、ページ移動手段124は、通知に書かれた情報・開巻位置変数114・ページ表示テーブル115・グローバル設定テーブル116の内容に基づいて、これらの下位手段群のうち、どの手段をどの順番及びどの引数で呼び出すかを決定し（同じ手段を複数回呼び出しても良い）、実際に呼び出してページ表示テーブル115を更新させる。またその際、必要であればページ表示手段125に指示を出し、ページ表示テーブル115を表示部14に反映する処理を一時停止もしくは再開させる。例えば、ページ表示テーブル115の更新が、ユーザーが開巻位置とは離れている場所で行われる時は、表示部14への反映を間引いて消費電力を抑えるといった制御も考えられる。
【０１２９】
以降で、ページ移動手段124の下位手段群の動作とフローチャートを説明する。各手段の説明において、特に明記されていない限り「その処理は縮退表示A・Bどちらの場合にも適用できるが、主たる対象は縮退表示B」である。なお、ページ移動手段124自身の動作については、各実施例において具体的な動作例を説明した後、本実施形態の最後で代表的な動作の場合のフローチャートを示す。
【０１３０】
全体像がつかめるように、本発明で定義される、ページ移動手段124の下位手段全てを図14、図15に表として示した。表中で、「片面or両面」と名付けた列は、その手段が対象としている書籍のタイプ（片面タイプ、両面タイプ、もしくはその両方）を示す。「縮退表示」と名付けた列は、その手段が適用可能な縮退表示のタイプ（縮退表示A、縮退表示B、もしくはその両方）を示す。ただし、基本的には全て縮退表示Bを主眼に置いている。「自然なページ配置条件」と名付けた列は、当該条件を保存するかしないかを示す（当該条件を満たしている書籍のページ表示テーブル115に対し、その手段を適用しても条件は満たされたままの時を「保存」すると呼ぶ。「非保存」の場合はそのような保証は無い。しかし保証が無いだけで、実行のタイミング次第では当該条件を保存する、あるいは当該条件を満たしていなかったのが満たすように変化する時もある。ページ移動手段124は、gNATが真の時に「非保存」である手段を呼んではならない）。「自然なページ配置条件」の欄が斜線になっている手段は、当該条件とは無関係な手段である。
【０１３１】
以下では、まず、サブルーチンとして共通に呼び出される保存区間判定手段M001（ResvFree）を説明し、続いて個々のページ移動のための手段を説明する。なおフローチャート中で手段の名前Mに値xを代入（M←x）しているところがあるが、当該処理の戻り値がxであることを表す（プログラミング言語Pascalでの関数の戻り値を記述する流儀）。
【０１３２】
＜保存区間判定手段M001（ResvFree）のフローチャート＞
図16が保存区間判定手段M001（ResvFree）のフローチャートである。引数は三つあり、表示面番号n、ページのインデックスの列I=[i1,i2,…]、保存区間の種別kr（"狭義"または"広義"）である（S001）。ResvFreeは、第n表示面にあるページのうちに、保存区間の中にあるものがあるかを調べる。戻り値は真か偽である。この処理は、片面タイプ・両面タイプどちらの書籍でも実行できる。また縮退表示A・Bどちらの場合も対象とする。以下、各ステップを順に説明する。
【０１３３】
まず引数のkrの値を確認し（S002）、値が"狭義"の場合は、Iが示すページPn(i1), Pn(i2),…が保存区間の中にあるかを調べる。一方、"広義"の場合はIの値に関わらず、この第n表示面にあるページの何れか一つでも保存区間の中にあるかを調べる。そのため、Iに[1,2,3,…,L(n)]を再代入する（S003）。次にIの各エントリーに関する繰り返し処理を行う。まずIが既に空であれば（S004）、戻り値を真として終了する（S008）。空でなければ、Iの先頭インデックスをjとしてjをIから取り除き（S005）、Pnのj番目のページ、すなわちPn(j)が保存区間の中にあるかを調べる（S006）。もし保存区間の中にあるならば、戻り値を偽として終了する（S007）。中になければ、jの次のページを調べるために、ステップS004に戻る。
【０１３４】
前記のkrの意味についてまとめる。"広義"の場合は、ある表示面21（表示面番号n）にあるページ群Pnのうち、保存区間の中にあるページが一つでもあると、ページの再配置においてその表示面21の構成を一切崩さない（Pn、R(n)を変更しない）。一方"狭義"の場合は、ある表示面21（表示面番号n）にあるページ群Pnのうち、保存区間の中にあるページのみを、他の表示面21に移動したり可読から非可読に切り替えたりしない（ただし、保存区間の両端のページ、つまり保存区間の開始・終了ページが非可読な場合に、これを可読に切り替えるのは特に害は無いので許容する）。
【０１３５】
＜簡易前方移動手段M01（MovePrevSimple）のフローチャート＞
図17が簡易前方移動手段M01（MovePrevSimple）のフローチャートである。引数は二つあり、表示面番号n、保存区間の種別kr（"狭義"または"広義"）である（S101）。MovePrevSimpleは、第n表示面にある最初のページを、一つ前の表示面21に移動し、またその際、自然なページ配置条件は保存しない。戻り値は成功か失敗である。この処理は、片面タイプ・両面タイプどちらの書籍でも実行できる。以下、各ステップを順に説明する。
【０１３６】
まず引数nの値を確認し（S102）、値が1の時はこれ以上前の表示面21に移動できないので、戻り値を"失敗"として終了する（S108）。次にL(n)の値を確認し（S103）、値が0の時はこの表示面21にはページが一つも割り当てられておらず移動のしようが無いので、戻り値を"失敗"として終了する。次に、ResvFree(n,[1],kr)が真であるか、すなわち今移動しようとしているページPn(1)に対し、指定された種別krにおける保存区間の判定を行い、偽であったら戻り値を"失敗"として終了する（S104の前半）。続いて、ResvFree(n−1,[],kr)が真であるかを調べる。この式はkrが"狭義"の場合は、常に真であるので処理には関係しない。一方krが"広義"の場合は、第n−1表示面の何れのページも保存区間の中にない時に真、それ以外は偽となる。式が偽であったら戻り値を"失敗"として終了する（S104の後半）。
【０１３７】
保存区間の判定が済むと、pをPn(1)の値とし（S105）、第n表示面の最初のページであるpを第n−1表示面の最後のページに移動した後（S106）、戻り値を"成功"として終了する（S107）。
【０１３８】
＜簡易後方移動手段M02（MoveNextSimple）のフローチャート＞
図18が簡易後方移動手段M02（MoveNextSimple）のフローチャートである。引数は二つあり、表示面番号n、保存区間の種別kr（"狭義"または"広義"）である（S201）。MoveNextSimpleは、第n表示面にある最後のページを、一つ後の表示面21に移動し、またその際、自然なページ配置条件は保存しない。戻り値は成功か失敗である。この処理は、片面タイプ・両面タイプどちらの書籍でも実行できる。以下、各ステップを順に説明する。
【０１３９】
まず引数nの値を確認し（S202）、値がNSすなわち最後の表示面21の時はこれ以上後の表示面21に移動できないので、戻り値を"失敗"として終了する（S208）。次にL(n)の値を確認し（S203）、値が0の時はこの表示面21にはページが一つも割り当てられておらず移動のしようが無いので、戻り値を"失敗"として終了する。次に、ResvFree(n,[L(n)],kr)が真であるか、すなわち今移動しようとしているページPn(L(n))に対し、指定された種別krにおける保存区間の判定を行い、偽であったら戻り値を"失敗"として終了する（S204の前半）。続いて、ResvFree(n+1,[],kr)が真であるかを調べる。この式はkrが"狭義"の場合は、常に真であるので処理には関係しない。一方krが"広義"の場合、第n+1表示面の何れのページも保存区間の中にない時に真、それ以外は偽となる。式が偽であったら戻り値を"失敗"として終了する（S204の後半）。
【０１４０】
保存区間の判定が済むと、pをPn(L(n))の値とし（S205）、第n表示面の最後のページであるpを第n+1表示面の最初のページに移動した後（S206）、戻り値を"成功"として終了する（S207）。
【０１４１】
＜簡易面内移動手段M03（MoveSimple）のフローチャート＞
図19が簡易面内移動手段M03（MoveSimple）のフローチャートである。引数は三つあり、表示面番号n、移動方向dir（+1もしくは−1の値）、保存区間の種別kr（"狭義"または"広義"）である（S301）。MoveSimpleは、同一表示面21内（第n表示面とする）において、R(n)の値を変化させることによって可読のページを切り替える。またその際、自然なページ配置条件は保存しない。戻り値は成功か失敗である。この処理は、片面タイプ・両面タイプどちらの書籍でも実行できる。以下、各ステップを順に説明する。
【０１４２】
まず第n表示面のR(n)が有効な値であるかを調べる（S302）。R(n)の値はPnの何れかのページ番号であるのが通常だが、ページ移動手段124が下位の手段群を呼び出す順番によっては関係のないページ番号を指すことがある（ただし、ページ移動手段124が適切な順序で呼び出せば、そのような状況は回避できる）。その場合は戻り値を"失敗"として終了する（S307）。R(n)が有効な値であった場合は（Pn(i)がそのページであるとする）、次にi+dirがPnのインデックスとして有効であるかを調べ（S303）、有効でなければ戻り値を"失敗"として終了する。次に現在のR(n)であるPn(i)に対し、指定された種別krにおける保存区間の判定を行い（ちなみにPn(i+dir)は、保存区間の中にあっても非可読から可読になるだけで、害は無いのでチェックしない）、偽であったら戻り値を"失敗"として終了する（S304）。保存区間の判定が真であれば、R(n)を新たな値に書きかえた後（S305）、戻り値を"成功"として終了する（S306）。
【０１４３】
＜標準片面前方移動手段M04（MovePrev1）のフローチャート＞
図20が標準片面前方移動手段M04（MovePrev1）のフローチャートである。引数は二つあり、表示面番号n、保存区間の種別kr（"狭義"または"広義"）である（S401）。MovePrev1は、簡易前方移動手段M01（MovePrevSimple）と同様、第n表示面にある最初のページを一つ前の表示面21に移動する。MovePrevSimpleと異なる点は、自然なページ配置条件を保存すること、片面タイプの書籍専用の処理であることである。以下、各ステップを順に説明する。
【０１４４】
まず引数nの値を確認し（S402）、値が1の時はこれ以上前の表示面21に移動できないので、戻り値を"失敗"として終了する（S410）。次にL(n)の値を確認し（S403）、値が0の時は移動のしようが無いので、戻り値を"失敗"として終了する。次にResvFree(n,[1],kr) が真であるか、すなわち今移動しようとしているページPn(1)に対し、指定された種別krにおける保存区間の判定を行い、偽であったら戻り値を"失敗"として終了する（S404の前半）。続いて、ResvFree(n−1,[],kr)が真であるかを調べる。この式はkrが"狭義"の場合は、常に真であるので処理には関係しない。一方krが"広義"の場合、第n−1表示面の何れのページも保存区間の中にない時に真、それ以外は偽となる。式が偽であったら戻り値を"失敗"として終了する（S404の後半）。
【０１４５】
次にpをPn(1)の値とした後（S405）、自然なページ配置条件を満たすため、R(n)をPn(2)に変更しておき（S406）、第n表示面の最初のページであるpを第n−1表示面の最後のページに移動する（S407）。また、R(n−1)は通常は既にPn-1(1)に等しいが、本フローチャート実行開始時にPn-1が空リストであった場合を考慮して、R(n−1)にPn-1(1)を代入しておく（S408）。最後に戻り値を"成功"として終了する（S409）。
【０１４６】
なお、このフローチャートが呼ばれた時点でL(n)=1であると、終了状態においてL(n)=0となり、やや不自然な状態になる。
【０１４７】
＜標準片面後方移動手段M05（MoveNext1）のフローチャート＞
図21が標準片面後方移動手段M05（MoveNext1）のフローチャートである。引数は二つあり、表示面番号n、保存区間の種別kr（"狭義"または"広義"）である（S501）。MoveNext1は、簡易後方移動手段M02（MoveNextSimple）と同様、第n表示面にある最後のページを一つ後の表示面21に移動する。MoveNextSimpleと異なる点は、自然なページ配置条件を保存すること、片面タイプの書籍専用の処理であることである。以下、各ステップを順に説明する。
【０１４８】
まず引数nの値を確認し（S502）、値がNSすなわち最後の表示面21の時はこれ以上後の表示面21に移動できないので、戻り値を"失敗"として終了する（S509）。次にL(n)の値を確認し（S503）、値が0の時は移動のしようが無いので、戻り値を"失敗"として終了する。次にResvFree(n,[L(n)],kr)が真であるか、すなわち今移動しようとしているページPn(L(n))に対し、指定された種別krにおける保存区間の判定を行い、偽であったら戻り値を"失敗"として終了する（S504の前半）。続いて、ResvFree(n+1,[1],kr)が真であるか、すなわち現在第n+1表示面において可読となっているページPn+1(1)に対し、保存区間の判定を行い、偽であったら戻り値を"失敗"として終了する（S504の後半）。
【０１４９】
次にpをPn(L(n))の値とし（S505）、第n表示面の最後のページであるpを第n+1表示面の最初のページに移動する（S506）。更に、自然なページ配置条件を満たすため、R(n+1)をpに変更しておき（S507）、また最後に戻り値を"成功"として終了する（S508）。
【０１５０】
なお、このフローチャートが呼ばれた時点でL(n)=1であると、終了状態においてL(n)=0となり、やや不自然な状態になる。
【０１５１】
＜標準両面偶前方移動手段M06（MovePrev2Even）のフローチャート＞
図22が標準両面偶前方移動手段M06（MovePrev2Even）のフローチャートである。引数は二つあり、表示面番号n（偶数）、保存区間の種別kr（"狭義"または"広義"）である（S601）。MovePrev2Evenは、偶数nに対して、第n表示面にある最初の一ページを一つ前の表示面21に移動する。標準片面前方移動手段M04（MovePrev1）と異なる点は、両面タイプの書籍専用の処理であることである（右開き、左開きどちらの場合にも適用できる。以降の実施例及び実施形態でも、両面タイプの書籍用の処理は全て、右開き、左開きどちらの場合にも適用できる）。また自然なページ配置条件を保存する。なお両面タイプの書籍でのページ移動の場合、二ページ単位で行う処理もあるが、MovePrev2Even（及び後述するMoveNext2Odd）は、一ページ単位の移動でも成立する。もし二ページ単位の移動を模倣したい場合は、MovePrev2Evenを同じ引数で二回連続して呼び出せばよい。以下、各ステップを順に説明する。
【０１５２】
まず引数nの値を確認し（S602）、偶数でなければこの処理の対象ではないので、戻り値を"失敗"として終了する（S609）。次にL(n)の値を確認し（S603）、値が0の時は移動のしようが無いので、戻り値を"失敗"として終了する。次にResvFree(n,[1],kr) が真であるか、すなわち今移動しようとしているページPn(1)に対し、指定された種別krにおける保存区間の判定を行い、偽であったら戻り値を"失敗"として終了する（S604の前半）。続いて、ResvFree(n−1,[],kr)が真であるかを調べる。この式はkrが"狭義"の場合は、常に真であるので処理には関係しない。一方krが"広義"の場合、第n−1表示面の何れのページも保存区間の中にない時に真、それ以外は偽となる。式が偽であったら戻り値を"失敗"として終了する（S604の後半）。
【０１５３】
次に、pをPn(1)の値とし（S605）、第n表示面の最初のページであるpを第n−1表示面の最後のページに移動する（S606）。また、R(n−1)は通常は既にPn-1(1)に等しいが、本フローチャート実行開始時にPn-1が空リストであった場合を考慮して、R(n−1)にPn-1(1)を代入しておく（S607）。最後に戻り値を"成功"として終了する（S608）。
【０１５４】
なお、このフローチャートが呼ばれた時点でL(n)=1であると、終了状態においてL(n)=0となり、やや不自然な状態になる。
【０１５５】
＜標準両面偶後方移動手段M07（MoveNext2Even）のフローチャート＞
図23が標準両面偶後方移動手段M07（MoveNext2Even）のフローチャートである。引数は二つあり、表示面番号n（偶数）、保存区間の種別kr（"狭義"または"広義"）である（S701）。MoveNext2Evenは、偶数nに対して、第n表示面にある最後の二ページを一つ後の表示面21に移動する。標準片面後方移動手段M05（MoveNext1）と異なる点は、両面タイプの書籍専用の処理であることである。また移動するページ数は、一ページではなく二ページである。更に自然なページ配置条件を保存する。以下、各ステップを順に説明する。
【０１５６】
まず引数nの値を確認し（S702）、偶数でなければこの処理の対象ではないので、戻り値を"失敗"として終了する（S711）。またnの値がNSすなわち最後の表示面21の時（S703）、これ以上後にページを移動できないので、やはり戻り値を"失敗"として終了する。次にL(n)の値を確認し（S704）、L(n)＜2の時はめくるためのページ数が足りないので、戻り値を"失敗"として終了する。続いてResvFree(n,[L(n)−1,L(n)],kr)が真であるか、すなわち今移動しようとしている二ページPn(L(n)−1), Pn(L(n))に対し、指定された種別krにおける保存区間の判定を行い、偽であったら戻り値を"失敗"として終了する（S705の前半）。またResvFree(n+1,[1],kr)が真であるか、すなわち現在第n+1表示面において可読となっているページPn+1(1) に対し、指定された種別krにおける保存区間の判定を行い、偽であったら戻り値を"失敗"として終了する（S705の後半）。
【０１５７】
次にpをPn(L(n))の値、qをPn(L(n)−1)の値とし（S706）、ページp,qを移動した後に可読になるべきページとしてPn(L(n)−2)を選ぶ（S707）。そして実際にページを移動するためにp,qをPnから取り除き、続いてまずp、次にqをPn+1の先頭に追加する（S708）。最後に第n+1表示面の可読なページをqに変更し（S709）、戻り値を"成功"として終了する（S710）。
【０１５８】
なお、このフローチャートが呼ばれた時点でL(n)=2であると、終了状態においてL(n)=0となり、やや不自然な状態になる。
【０１５９】
＜標準両面奇前方移動手段M08（MovePrev2Odd）のフローチャート＞
図24が標準両面奇前方移動手段M08（MovePrev2Odd）のフローチャートである。引数は二つあり、表示面番号n（奇数）、保存区間の種別kr（"狭義"または"広義"）である（S801）。MovePrev2Oddは、奇数nに対して、第n表示面にある最初の二ページを一つ前の表示面21に移動する。標準片面前方移動手段M04（MovePrev1）と異なる点は、両面タイプの書籍専用の処理であることである。また移動するページ数は、一ページではなく二ページである。更に自然なページ配置条件を保存する。以下、各ステップを順に説明する。
【０１６０】
まず引数nの値を確認し（S802）、奇数でなければこの処理の対象ではないので、戻り値を"失敗"として終了する（S811）。またnが最初の表示面21の時（S803）、これ以上前にページを移動できないので、やはり戻り値を"失敗"として終了する。次にL(n)の値を確認し（S804）、L(n)＜2の時はめくるためのページ数が足りないので、戻り値を"失敗"として終了する。続いてResvFree(n,[1,2],kr)が真であるか、すなわち今移動しようとている二ページPn(1)とPn(2)に対し、指定された種別krにおける保存区間の判定を行い、偽であったら戻り値を"失敗"として終了する（S805の前半）。またResvFree(n−1,[L(n−1)],kr)が真であるか、すなわち現在第n−1表示面において可読となっているページPn-1(L(n−1))に対し、指定された種別krにおける保存区間の判定を行い、偽であったら戻り値を"失敗"として終了する（S805の後半）。
【０１６１】
次にpをPn(1)の値、qをPn(2)の値とし（S806）、ページp,qを移動した後に可読になるべきページとしてPn(3)を選ぶ（S807）。そして実際にページを移動するためにp,qをPnから取り除き、続いてまずp、次にqをPn-1の末尾に追加する（S808）。最後に第n−1表示面の可読なページをqに変更し（S809）、戻り値を"成功"として終了する（S810）。
【０１６２】
なお、このフローチャートが呼ばれた時点でL(n)=2であると、終了状態においてL(n)=0となり、やや不自然な状態になる。
【０１６３】
＜標準両面奇後方移動手段M09（MoveNext2Odd）のフローチャート＞
図25が標準両面奇後方移動手段M09（MoveNext2Odd）のフローチャートである。引数は二つあり、表示面番号n（奇数）、保存区間の種別kr（"狭義"または"広義"）である（S901）。MoveNext2Oddは、奇数nに対して、第n表示面にある最後の一ページを一つ後の表示面21に移動する。標準片面後方移動手段M05（MoveNext1）と異なる点は、両面タイプの書籍専用の処理であることである。また自然なページ配置条件を保存する。以下、各ステップを順に説明する。
【０１６４】
まず引数nの値を確認し（S902）、奇数でなければこの処理の対象ではないので、戻り値を"失敗"として終了する（S909）。次にL(n)の値を確認し（S903）、値が0の時は移動のしようが無いので、戻り値を"失敗"として終了する。次にResvFree(n,[L(n)],kr)が真であるか、すなわち今移動しようとしているページPn(L(n))に対し、指定された種別krにおける保存区間の判定を行い、偽であったら戻り値を"失敗"として終了する（S904の前半）。続いて、ResvFree(n+1,[],kr)が真であるかを調べる。この式はkrが"狭義"の場合は、常に真であるので処理には関係しない。一方krが"広義"の場合、第n+1表示面の何れのページも保存区間の中にない時に真、それ以外は偽となる。式が偽であったら戻り値を"失敗"として終了する（S904の後半）。
【０１６５】
次に、pをPn(L(n))の値とし（S905）、第n表示面の最後のページであるpを第n+1表示面の最初のページに移動する（S906）。また、R(n+1)は通常は既にPn+1(L(n+1))に等しいが、本フローチャート実行開始時にPn+1が空リストであった場合を考慮して、R(n+1)にPn+1(L(n+1))を代入しておく（S907）。最後に戻り値を"成功"として終了する（S908）。
【０１６６】
なお、このフローチャートが呼ばれた時点でL(n)=1であると、終了状態においてL(n)=0となり、やや不自然な状態になる。
【０１６７】
以下では、これまで説明してきた電子書籍装置1の動作を、実例を挙げながら説明する。説明の中心は、ページ移動手段124の動作である。また特に断わらない限り、表示面数NS=10、ページ数NP=16であり、更にgNATは真すなわち自然なページ配置条件を満たしている場合の動作を説明する。
【０１６８】
［実施例1］
今、例えばユーザーが新規に書籍を読み始めたとする。実施例1〜4では、表示装置2の枚数は片面タイプのものが10枚（ND=10）とし、またページ表示テーブル115は、自然なページ配置条件を満たすものとする。例えば図26のようにページ表示テーブル115が初期化され、各表示面21にページが表示されたとする。ユーザーは第1ページから読み始めて第10ページまでは単に、表示装置2をめくって行くだけで読み進められる。この時、ページ移動手段124は実行されない。しかし、ユーザーが第11ページを読もうとした時、このページは非可読であるので、可読に切り替えなければならない。ユーザーは押しボタン24を操作してユーザー操作検知手段123に指示を出し、｛タイプ=標準型、再配置方法=前方移動、表示面=10、ページ=11｝という通知を、ページ移動手段124に送らせる。なお、保存区間は指定されていないとする。
【０１６９】
ページ移動手段124は指示されたページめくりを実行するために、MovePrev1を引数n=10、kr=gRESVで呼び出す。その結果、第10ページが第9表示面に移動して、第11ページが可読となる（図27）。以上が、最も簡単なページ移動手段124の動作であり、これにより第11ページを可読にするという目的は達成される。
【０１７０】
［実施例2］
ページ表示テーブル115が図28のようになっていた場合、すなわち縮退表示になっているのが第10表示面ではなく第9表示面である場合は、また違った動作が考えられる。ユーザーが第1ページから読み始めるとすると、第10ページを読む時にこれを可読にする必要があるが、今度は、ユーザーはユーザー操作検知手段123に指示を出し、｛タイプ=標準型、再配置方法=後方移動、表示面=9、ページ=10｝という通知をページ移動手段124に送らせたとする。ページ移動手段124は標準片面後方移動手段M05（MoveNext1）を、引数n=9、kr=gRESVで呼び出す。呼び出しは一回だけではなく、第10ページが第10表示面に移動されるまで繰り返す（この時、引数は変えない）。図29に結果を示す。
【０１７１】
［実施例3］
また別の形態として、ページ表示テーブル115が図30のようになっていた場合、すなわち第6表示面が縮退表示になっていた場合を考える。また保存区間は第13〜16ページであるとする。この条件では、ユーザーが第1ページから読み始めて第7ページを読む時にこれを可読にする必要があるが、実施例2のようにページを後方移動することは、保存区間を壊してしまうのでできない。しかし自然なページ配置条件を満たさないので良ければ以下のようなことができる。すなわちユーザーはユーザー操作検知手段123に指示を出し、｛タイプ=簡易型、再配置方法=面内移動、表示面=6、ページ=7｝という通知をページ移動手段124に送らせたとする。ページ移動手段124は、簡易面内移動手段M03（MoveSimple）によって、同一表示面21（n=6）の中でR(n)をPnの前後のエントリーに切り替える。すなわちMoveSimpleを引数n=6, dir=+1, kr=gRESVで呼び出す。ステップS302におけるiは、i=1であり（可読であるページ番号はR(n)=6=Pn(1)）、またdir=+1であるので第7ページ（Pn(i+dir)=7）が可読になって目的は達成される（図31）。また、同様の手順を繰り返せば、第8〜12ページを可読にすることも可能である。
【０１７２】
［実施例4］
実施例3は、保存区間の直前の表示面21が縮退表示となっている時に、後方移動の処理（MoveNext1）が実行できない例であった。逆に、保存区間の直後の表示面21が縮退表示となっている時は、前方移動の処理（MovePrev1）が実行できないかを考えてみる。結論から言うと、この場合は実施例3の場合とは違って、gRESV="狭義"ならば標準片面前方移動手段M04（MovePrev1）を実行できる（片面タイプの書籍の場合）。例えばページ表示テーブル115が図32のようであり、また保存区間が第1〜4ページであったとする。
【０１７３】
この時、第6ページを可読にするために、MovePrev1を引数n=5で呼び出して第5ページを前方移動して良いか悪いかは、保存区間の観点からは二つの解釈がある。一つ目は、第5ページを移動しても第4表示面の表示自体は変化するが、保存区間内にある第4ページは依然可読のままであるので、保存区間には影響が無いとする考え方である。二つ目は、保存区間として指定されている第4ページが表示されている第4表示面に少しでも変化があれば、保存区間が影響を受けたとする考え方である。どちらが良いかはユーザーの慣れ度合いなどによっても変わって来ると思われ、グローバル設定テーブル116のgRESVでこの二つの解釈を切り替えられるようになっている。すなわち、gRESV="狭義"の場合が前者の解釈であり、MovePrev1を引数n=5、kr="狭義"で呼び出しても良い（戻り値は成功で図33のようになる）。一方、gRESV="広義"が後者の解釈であり、MovePrev1を引数n=5、kr="広義"で呼び出すと戻り値は失敗となる。
【０１７４】
［実施例5］
次に本発明が適用できる最小構成である、表示面21が2枚の場合を説明する。この構成は、片面タイプの表示装置2が2枚、もしくは両面タイプの表示装置2が1枚で実現できるが、ここでは前者で説明する。ページ数は10ページとし、ページ表示テーブル115が図34aのようになっていた場合を考える（gRESV="狭義"、及びgNAT=偽、すなわち自然なページ配置条件は満たさないで良いとする）。ユーザーが第6〜9ページを保存区間に指定して、第1ページ目から読み始めたとする。第2ページを読むためには例えば簡易型の面内移動の操作を行い、簡易面内移動手段M03（MoveSimple）を引数n=1、dir=+1、kr=gRESVで呼び出し、R(1)=2にすれば良い。以下同様にして、第3,4ページも可読にできる（図34b）。次に第5ページを可読にするために、例えばMoveSimpleを引数n=2、dir=−1、kr=gRESVで呼び出してR(2)を変更することは、保存区間を壊してしまうのでできない。その代わりに簡易型の前方移動の操作を行い、簡易前方移動手段M01（MovePrevSimple）を引数n=2、kr=gRESVで呼び出して第5ページを第1表示面に移動し、続いてMoveSimpleを引数n=1、dir=+1、kr=gRESVで呼び出し、R(1)=5にすれば良い（図34c）。
【０１７５】
なお本実施例では説明しなかったが、簡易後方移動手段M02（MoveNextSimple）も簡易前方移動手段M01（MovePrevSimple）と同様に、R(n)を変更しないで（gNATの値は無視して）ページの移動を行う処理である。
【０１７６】
［実施例6］
実施例6からは、両面タイプの書籍について説明する。両面タイプの場合は、自然なページ配置条件を満たすために、2ページをセットで移動することがあるなど、少し複雑な動きをする（1ページ単位で移動することもある）。本実施例では両面タイプの表示装置2が5枚、ページ数は16ページとする。また書籍は左開き（見開いた時に、偶数番表示面が左側に、奇数番が右側に来る）とするが、右開きの場合も全く同じ動作となる。
【０１７７】
今、ページ表示テーブル115が図35のようになっている場合を考える（片面タイプの書籍と違って、R(10)=15ではなく、両面の場合の自然なページ配置条件を満たすためにR(10)=16となっていることに注意）。ユーザーが第1ページから読み始めた時、第9ページまではページをめくるだけで良い。
【０１７８】
第10ページを読もうとすると非可読なので、可読に切り替える必要がある。ユーザーはユーザー操作検知手段123に指示を出し、｛タイプ=標準型、再配置方法=前方移動、表示面=9、ページ=10｝という通知を、ページ移動手段124に送らせるとする。ページ移動手段124は、標準両面奇前方移動手段M08（MovePrev2Odd）を引数n=9、kr=gRESVで呼び出す。その結果、第10ページが可読になり目的が達成される（図36）。またそればかりでなく、第11ページも可読にもなるので、第10ページを読んだ後直ぐに第11ページも読むことができる。同様の操作で、第12,13ページも可読にできる。
【０１７９】
［実施例7］
実施例6で説明したのは、ページを前方に移動することにより、奇数番表示面にあるPnの先頭から2及び3ページ目Pn(2), Pn(3)を可読に切り替える方法であった（なおPn(1)は既に可読であったので切り替える必要は無かった）。本実施例では、ページを後方に移動することにより、偶数番表示面にあるPnの末尾から2及び3ページ目Pn(L(n)−1), Pn(L(n)−2)を可読に切り替える方法を示す（やはり、Pn(L(n))は既に可読であるので切り替える必要はない）。ページ表示テーブル115が図37のようになっている場合を考える。ユーザーはユーザー操作検知手段123に指示を出し、｛タイプ=標準型、再配置方法=後方移動、表示面=4、ページ=8｝という通知を、ページ移動手段124に送らせるとする。ページ移動手段124は、標準両面偶後方移動手段M07（MoveNext2Even）を引数n=4、kr=gRESVで呼び出す。その結果、第8,9ページが可読になり目的が達成される（図38）。
【０１８０】
［実施例8］
今度は、実施例6のように奇数番表示面にあるページを前方に移動したいのだが、当該表示面にあるページ数が足りないために、標準両面奇前方移動手段M08（MovePrev2Odd）の実行が失敗してしまう場合を考える。図39の状態では、実施例6のようにMovePrev2Oddを引数n=9、kr=gRESVで呼び出すと、ステップS804で実行は失敗してしまいページを前方に移動することはできない。そこで、ユーザーはユーザー操作検知手段123に指示を出し、｛タイプ=標準型、再配置方法=前方移動、表示面=10、ページ=11｝という通知を、ページ移動手段124に送らせるとする。ページ移動手段124は、標準両面偶前方移動手段M06（MovePrev2Even）を二回（引数は何れもn=10、kr=gRESV）呼び出して、第10,11ページを第9表示面に移動する（図40）。以降は、ユーザーは実施例6と同じ操作でMovePrev2Oddを呼び出し、第9表示面のページを前方に移動することができる。
【０１８１】
［実施例9］
また、実施例7のように偶数番表示面にあるページを後方に移動したいのだが、当該表示面にあるページ数が足りないために、標準両面偶後方移動手段M07（MoveNext2Even）の実行が失敗してしまう場合を考える。図41の状態では、実施例7のようにMoveNext2Evenを引数n=4、kr=gRESVで呼び出すと、ステップS704で実行は失敗してしまいページを後方に移動することはできない。そこで、ユーザーはユーザー操作検知手段123に指示を出し、｛タイプ=標準型、再配置方法=後方移動、表示面=3、ページ=8｝という通知を、ページ移動手段124に送らせるとする。ページ移動手段124は、標準両面奇後方移動手段M09（MoveNext2Odd）を二回（引数は何れもn=3、kr=gRESV）呼び出して、第8,9ページを第4表示面に移動する（図42）。以降は、ユーザーは実施例7と同じ操作でMoveNext2Evenを呼び出し、第4表示面のページを後方に移動することができる。
【０１８２】
［実施例10］
次に保存区間が指定された例を説明する。実施例6と同じ図35の初期状態を考え、保存区間は第1〜8ページとする。実施例6では、ここで第10,11ページを可読にするために図36のように第9,10ページを第8表示面に移動したのであった。片面タイプの表示装置2の場合は（例えば、実施例4）、このような移動でも保存区間は壊さないと見なすことができた。しかし両面タイプの場合は、自然なページ配置条件を満たそうとすると、第8表示面の可読なページが第10ページに変更されて保存区間を壊してしまう。よってこの操作は許されない。
【０１８３】
［実施例11］
一方、実施例7と同じ図37の初期状態で、保存区間は第1〜3ページとする。この時、第4表示面にある第4,5ページを第3表示面に移動しても、gRESV="狭義"の解釈のもとでは保存区間は壊さない。実施例10との違いは、移動先の表示面21が偶数番目ではなく奇数番目である点である。本実施例の場合、自然なページ配置条件により、ページの移動があっても第3表示面はR(3)=P3(1)=3のままである。
【０１８４】
［実施例12］
同様のことは、ページを後方の表示面21に移動する際にも言える。例えば実施例9の図41で、保存区間が第10〜16ページである時、第3表示面にある第8,9ページを第4表示面に移動しても、gRESV="狭義"の解釈のもとでは保存区間は壊さない。一方、実施例7の図37で、保存区間が第11〜16ページである時、第4表示面にある第9,10ページを第5表示面に移動すると保存区間を壊してしまう。これらの違いは移動先の表示面21が偶数番目か奇数番目かの違いによる。
【０１８５】
［実施例13］
実施例10では、自然なページ配置条件を満たし、かつ保存区間を壊さないために、前方にページを移動できない例を示した。しかし、これらの場合でも、自然なページ配置条件を満たさないので良ければ移動は可能である。再び実施例6と同じ図35の初期状態を考え、保存区間は第1〜8ページとする。実施例10と同じく、第9,10ページを第8表示面に移動しても、自然なページ配置条件を無視して強制的にR(8)=8のままにしておけば、gRESV="狭義"の解釈のもとでは保存区間は壊さない。これは図34の状態で、MovePrevSimpleを二回（引数は何れもn=9、kr=gRESV）呼び出せば実現できる。
【０１８６】
［実施例14］
実施例13の議論は、後方にページを移動する場合も同様である。実施例12の後半では、後方に移動できない例を示した。再び実施例7と同じ図37の初期状態を考え、保存区間は第11〜16ページとする。実施例12と同じく、第4表示面に表示されている第9,10ページを第5表示面に移動しても、自然なページ配置条件を無視して強制的にR(5)=11のままにしておけば、gRESV="狭義"の解釈のもとでは保存区間は壊さない。これは図37の状態で、MoveNextSimpleを二回（引数は何れもn=4、kr=gRESV）呼び出せば実現できる。
【０１８７】
なおここで、図20、図21、図22、図23、図24、図25に示した標準型の移動のバリエーションについて述べる。これまで保存区間の開始・終了ページに関しては、非可読から可読に切り替わるのは許容していた。しかし、このような変更さえも禁止したい場合も考えられ、その時は次のように処理を変更すれば良い。ステップS404では、一つ目のResvFreeの呼び出しを"ResvFree(n,[1,2],kr)"に変更する。ステップS705,S805でも、一つ目のResvFreeの呼び出しをそれぞれ、"ResvFree(n,[L(n)−2,L(n)−1,L(n)],kr)"と"ResvFree(n,[1,2,3],kr)"に変更する。なお、例えば"ResvFree(n,[1,2,3],kr)"の呼び出しにおいて、もしL(n)=2であると、Pn(3)が保存区間にあるかどうかを調べるという、一見不自然な処理が行われるが、i＞L(n)もしくはi＜1の時はPn(i)=0と決めてあるので、この呼び出しは"ResvFree(n,[1,2],kr)"と同じ結果になる。
【０１８８】
さてこれまで実施例1〜14により、手段M01〜M09の動作例を説明して来た。ここで、保存区間テーブル113を除去した電子書籍装置1の構成を説明する。図7の機能ブロック図において保存区間テーブル113が無くなることによって影響を受けるのは、保存区間テーブル更新手段122とページ移動手段124である。ここでは、保存区間テーブル更新手段122も併せて除去し、ユーザーが保存区間テーブル113を更新する操作を行っても全て無視されるとする。さらにページ移動手段124の下位手段は、保存区間テーブル113には区間が一つも登録されていない場合と同等に振る舞うとする。その場合、保存区間判定手段M001（ResvFree）は引数によらず必ず"真"を返す。そこで、手段M01〜M09の各フローチャートに対し、全てのResvFreeの呼び出しが真であるとして簡略化した（具体的には、ステップS104, S204, S304, S404, S504, S604, S705, S805, S904を削除し、その直前と直後のステップを矢印で直接つなぐ）フローチャートを構成する。これらの変更によって、保存区間テーブル113を除去した新たな電子書籍装置1を構成することができる。また、この議論は以下のようにして第2実施形態以降にも適用できる。すなわち、第2実施形態以降で新たに登場するページ移動手段124の下位手段が、手段M01〜M09を呼び出す時は、上述の簡略化したフローチャートを用いるものとする。また、新たな下位手段自身がResvFreeを呼び出す時は、当該呼び出しを全て真として簡略化したフローチャートを用いる。
【０１８９】
第1実施形態の説明の最後に、これまでは文章で述べてきたページ移動手段124自身の動作を、フローチャートを用いて説明する。ページ移動手段124の動作は多種多様あり得るが、本実施形態で例示したものは典型的なものである。すなわち、簡易移動と標準移動を実現する手段M01〜M09は必要最小限のページ（1〜2ページ）しか移動しない。しかし一般には、それ以上のページ数を移動させる通知（パラメーターpが様々な値を取るため）が、ユーザーの操作を元にユーザー操作検知手段123から送られて来る。ページ移動手段124の典型的な作業は、その通知に合わせて前記の手段M01〜M09を、ループ処理によって繰り返し実行させることである。
【０１９０】
＜ページ移動手段124のフローチャート＞
図43に両面タイプの書籍での、タイプが標準型の通知の処理に主眼を置いた、ページ移動手段124のフローチャートを示す。この処理に引数は無く、また一旦開始したらユーザー操作検知手段123からの通知を待ち受け、通知が来たらそのタイプに対応した処理を行い、再び通知の待ち受けに戻るという無限ループに入る。そのため終了状態は無い。以下、各ステップを順に説明する。
【０１９１】
まず前述の通りユーザー操作検知手段123からの通知を待ち（S1001）、通知が来たらそのタイプtで処理を分岐させる（S1002）、第1実施形態では簡易型と標準型の二種類であったが、一般には他のタイプも考えられるので、図ではその他にX型、Y型というタイプも追加して記載してある。本フローチャートでは、標準型の処理に主眼を置いているので、簡易型、X型、Y型については1ステップに圧縮しているが（S1003,S1004,S1005）、実際にはその中で相応のステップ数からなる処理を行う。
【０１９２】
タイプが標準型の場合は通知のパラメーターを調べ、再配置方法、表示面、ページがそれぞれx,n,pであったとする（S1006）。次に、再配置方法xとnの偶奇性の組合せの値で処理を分岐させる（S1007）。当該組合せが（前方移動、奇数）または（後方移動、偶数）の場合はフローチャートの左側に分岐し、（前方移動、偶数）または（後方移動、奇数）の場合はフローチャートの右側に分岐する。
【０１９３】
フローチャート左側の処理は、指定された第pページが可読になるまで繰り返すループである。まず第pページが可読かを調べ（S1008）、可読になっていたらこの通知に関する処理は終了し、フローチャート先頭に戻る。可読でなければ当該ページを隠している他のページをどけるため、次のステップに移る（S1010）。このステップでは、再配置方法xが"前方移動"ならMovePrev2Oddを引数n、gRESVで呼び出し、"後方移動"ならMoveNext2Evenを引数n、gRESVで呼び出す（前者は実施例6で説明した動作であり、後者は実施例7で説明した動作である）。この時の呼び出しが成功したら再度ステップS1008に戻り、失敗したらこの通知に関する処理は終了し、フローチャート先頭に戻る。
【０１９４】
フローチャート右側の処理は、指定された第pページが第n表示面から別の表示面に移動するまで繰り返すループである。まず第pページが、まだ第n表示面に入っているか（すなわち、まだpがPnのエントリーか）を調べ（S1009）、入っていなければこの通知に関する処理は終了し、フローチャート先頭に戻る。一方、まだ第n表示面に残っていれば、ページ移動を続けるため次のステップに移る（S1011）。このステップでは、再配置方法xが"前方移動"ならMovePrev2Evenを引数n、gRESVで呼び出し、"後方移動"ならMoveNext2Oddを引数n、gRESVで呼び出す（前者は実施例8で説明した動作であり、後者は実施例9で説明した動作である）。この時の呼び出しが成功したら再度ステップS1009に戻り、失敗したらこの通知に関する処理は終了し、フローチャートの先頭に戻る。
【０１９５】
本フローチャートの処理には入れなかったが、MovePrev2Even, MoveNext2Even, MovePrev2Odd, MoveNext2Oddを第n表示面に対して呼び出すことにより、L(n)=0となることが予想される場合は、その通知に関する処理を終了しフローチャートの先頭に戻ることで、不自然な表示面が出現するのをページ移動手段124が禁止することもできる。
【０１９６】
同じく本フローチャートでは説明しなかったが、タイプが簡易型の場合や、片面タイプの電子書籍の場合も、ページ移動手段124の代表的な処理は、手段M01,M02,M03やM04,M05を繰り返し呼び出す処理になる。
【０１９７】
以降の実施形態では各種の動作例を説明するが、特に断らない限りユーザーが行う操作は、その結果としてユーザー操作検知手段123からページ移動手段124に通知が送られた時に、ページ移動手段124が下位手段を一度しか呼び出さない（図43で説明したような繰り返しの呼び出しは一回で終了する）ものとする。これは説明の目的がページ移動手段124の個々の下位手段の動作にあるので、ページ移動手段124自身の動作を極力単純にするためである。また、一回の呼び出しの動作が理解できれば、繰り返しの呼び出しの動作も理解できる。
【０１９８】
［第2実施形態］
本実施形態では第1実施形態を改良し、ページ移動手段124に新たな下位手段を追加する。まず片面タイプの書籍に関して、標準片面前方移動手段M04（MovePrev1）、標準片面後方移動手段M05（MoveNext1）を拡張した、より強力な連動片面前方移動手段M10（MovePrev1X）、連動片面後方移動手段M11（MoveNext1X）を定義する。そして両面タイプの書籍に関して、標準両面奇前方移動手段 M08（MovePrev2Odd）、標準両面偶後方移動手段M07（MoveNext2Even）を拡張した、より強力な連動両面前方移動手段M12（MovePrev2X）、連動両面後方移動手段M13（MoveNext2X）を定義する。
【０１９９】
なお、MovePrev1XとMoveNext1X、MovePrev2XとMoveNext2Xそれぞれのペアを、共に「連動型のペア」と呼ぶ。
【０２００】
拡張前の処理は全て、引数で指定された第n表示面のページ数L(n)が、処理の実行に必要な枚数より足りなければ、失敗として終了していた（ステップS403, S503, S704, S804）。また、枚数が足りていても実行後にL(n)=0となってしまう場合があった。一方、拡張した処理は、もし第n表示面のページ数が足りないか実行後にL(n)=0になってしまう場合は、前方もしくは後方の表示面21にあるページを連鎖的に移動して来てページ数を補充した後に、ページ移動を行う。これによりユーザーは、第n表示面にあるページ数に制限されず、ページをめくるという操作を続けることができる。
【０２０１】
第2実施形態において、ユーザー操作検知手段123がページ移動手段124に通知する情報は｛タイプ=連動型、再配置方法=x、表示面=n｝とする。この通知は、片面及び両面タイプの両方の書籍で使われる。パラメーターxは、片面タイプの時は"前方移動"、"後方移動"のどちらかであり、両面タイプの時はnが偶数の時は"後方移動"、nが奇数の時は"前方移動"である。
【０２０２】
以下では、片面と両面の場合の連動型のペアの動作を、個別の実施例において説明する。
【０２０３】
［実施例15］
本実施例では、片面タイプの書籍における連動型のペアである連動片面前方移動手段M10（MovePrev1X）と、連動片面後方移動手段M11（MoveNext1X）を定義する。
【０２０４】
＜連動片面前方移動手段M10（MovePrev1X）のフローチャート＞
図44が連動片面前方移動手段M10（MovePrev1X）のフローチャートである。引数は二つあり、表示面番号n、保存区間の種別kr（"狭義"または"広義"）である（S1101）。MovePrev1Xは、片面タイプの書籍におけるこれまでの「前方にめくる」という操作を拡張する。すなわち、ページ数が足りない場合でも、強制的にnより後方のページm（m＞n）からページを連鎖的に移動して来ることにより、第n表示面における「めくる」という操作を可能にする。また、自然なページ配置条件を保存する。ただし本処理を実行後に、書籍の末尾に近い表示面でL(i)=0となる表示面iが出現する可能性がある。以下、各ステップを順に説明する。
【０２０５】
まず引数nの値を確認し（S1102）、n=1であれば、これ以上前にページを移動できないので、戻り値を"失敗"として終了する（S1112）。ここで一般にはページ表示テーブル115は意図しない状態にあるので、終了する前にフローチャート開始時点の状態に戻す（S1110）。ただし処理開始直後は、ページ表示テーブル115は変更されていないので何もする必要は無い。次に、ページを前方に移動するだけの余裕がある（ページ数が十分ある）表示面を探すため、L(n)+L(n+1)+…+L(x)＞x−n+1を満たすx（x≧n）があるかを調べる。例えばL(n)>1であれば、x=nがこの条件を満たし、以降のフローチャートの処理はMovePrev1(n,kr)と同一になる。
【０２０６】
より一般的な場合を説明する。前記不等式の左辺は、第n表示面から第x表示面までのページ数の総和である。また右辺は、第n表示面から第x表示面までの表示面数である。例えばn=10とし、第10表示面をめくろうとしている場合を考える。仮にL(10)=1, L(11)=1, L(12)=1, L(13)=2, L(14)=1であれば、x=13及びx=14はこの不等式を満たす（第13表示面にあるページ数は2であり、ページを前方に移動する余裕があるため、ページを連鎖的に第10表示面まで移動して来ることができる）。
【０２０７】
また別の例として、L(10)=0, L(11)=0, L(12)=2, L(13)=3, L(14)=1である時、すなわちL(i)=0となる表示面iがある時を考える。今度は第12表示面単体としてはL(12)=2でありページ数に余裕があっても、x=12はこの不等式を満たさない。この意図は、本実施例ではL(i)=0となる表示面は不自然な状態として扱い、MovePrev1X, MoveNext1Xを実行中に、可能ならこの不自然な状態を解消しようとするためである。第12表示面のページは前方に連鎖的に移動する間に、この不自然な状態の解消に使われてしまい、第10表示面においてめくりが可能な状態にはならない。一方、x=13及びx=14は前記不等式を満たす。理由は、第12,13表示面にある余分なページが、第10,11表示面の不自然な状態を解消してもなお余り、第10表示面においてめくりが可能な状態になるからである。
【０２０８】
前記不等式を満たすxが存在する場合、一般には複数個存在するので、その中で最小のもの（nに最も近いもの）をmとし（S1106）、続いてMovePrev1(m,kr)を呼び出す（S1107）。一方、そのようなxが存在しない場合は、第n表示面より後には、L(i)=0となる表示面iを強制的に作り出さない限り、前方に連鎖的に移動できるページは残っていないことを意味する。そこで、一枚でもページを保持している表示面x、すなわちL(x)＞0を満たすx（x＞n）が存在するかを調べ（S1104）、存在する場合はその中で最大のもの（nから最も遠いもの）をmとし（S1105）、MovePrev1(m,kr)を呼び出して、ページを前方移動させる。
【０２０９】
MovePrev1の呼び出しが失敗したら（S1108）、先に説明したのと同じ失敗の処理を行って終了する。成功したら、m=nかどうかを調べる（S1109）。m=nであれば、後方の表示面からの連鎖的なページ移動が完了して、第n表示面でのめくりが行えたことになるので、戻り値を"成功"として終了する（S1111）。m≠nであれば、まだ第n表示面まで連鎖的な移動が届いていないので、ステップS1103に戻ってループを繰り返す。
【０２１０】
＜連動片面後方移動手段M11（MoveNext1X）のフローチャート＞
図45が連動片面後方移動手段M11（MoveNext1X）のフローチャートである。引数は二つあり、表示面番号n、保存区間の種別kr（"狭義"または"広義"）である（S1201）。MoveNext1Xは、片面タイプの書籍におけるこれまでの「後方にめくる」という操作を拡張する。すなわち、ページ数が足りない場合でも、強制的にnより前方のページm（m＜n）からページを連鎖的に移動して来ることにより、第n表示面における「めくる」という操作を可能にする。また、自然なページ配置条件を保存する。ただし本処理を実行後に、書籍の先頭に近い表示面でL(i)=0となる表示面iが出現する可能性がある。以下、各ステップを順に説明する。
【０２１１】
まず引数nの値を確認し（S1202）、n=NSであれば、これ以上後にページを移動できないので、戻り値を"失敗"として終了する（S1212）。ここで一般にはページ表示テーブル115は意図しない状態にあるので、終了する前にフローチャート開始時点の状態に戻す（S1210）。ただし処理開始直後は、ページ表示テーブル115は変更されていないので何もする必要は無い。次に、ページを後方に移動するだけの余裕がある（ページ数が十分ある）表示面を探すため、L(x)+L(x+1)+…+L(n)＞n−x+1を満たすx（x≦n）があるかを調べる。
【０２１２】
前記不等式の左辺は、第x表示面から第n表示面までのページ数の総和である。また右辺は、第x表示面から第n表示面までの表示面数である。この不等式を満たすxが存在する場合、一般には複数個存在するので、その中で最大のもの（nに最も近いもの）をmとし（S1206）、続いてMoveNext1(m,kr)を呼び出す（S1207）。一方、そのようなxが存在しない場合は、第n表示面より前には、L(i)=0となる表示面iを強制的に作り出さない限り、後方に連鎖的に移動できるページは残っていないことを意味する。そこで、一枚でもページを保持している表示面x、すなわちL(x)＞0を満たすx（x＜n）が存在するかを調べ（S1204）、存在する場合はその中で最小のもの（nから最も遠いもの）をmとし（S1205）、MoveNext1(m,kr)を呼び出して、ページを後方移動させる。
【０２１３】
MoveNext1の呼び出しが失敗したら（S1208）、先に説明したのと同じ失敗の処理を行って終了する。成功したら、m=nかどうかを調べる（S1209）。m=nであれば、前方の表示面からの連鎖的なページ移動が完了して、第n表示面でのめくりが行えたことになるので、戻り値を"成功"として終了する（S1211）。m≠nであれば、まだ第n表示面まで連鎖的な移動が届いていないので、ステップS1203に戻ってループを繰り返す。
【０２１４】
＜動作例＞
図46、図47を用いて、連動片面前方移動手段M10（MovePrev1X）の動作を説明する。これらの図はページ表示テーブル115を表しているが、これまでと異なり圧縮した表記となっている。すなわちT(n)は「縮退表示B」固定であるので省略する。また、R(n)はPnと一緒に表記する（Pnの中で、アンダーラインが引いてあるページが、その表示面のR(n)である）。これにより、一列でページ表示テーブル115を表すことが可能になり、図46、図47ではその時系列の変化が、左から右へ列を追うことで把握できるようになっている。以下では、ユーザーが第8表示面を操作し、ユーザー操作検知手段123が｛タイプ=連動型、再配置方法=前方移動、表示面=8｝という通知を、ページ移動手段124に三回送った場合を考える。
【０２１５】
図46には一回目の通知が届きMovePrev1X(8,gRESV)が呼ばれた時の、ページ表示テーブル115の変化が、図44のフローチャートのループごとに書かれている。まず初期状態では、Pnは（0）と書かれた列の通りになっていたとする（L(9)=0であることに注意）。ここで単にMovePrev1(8,gRESV)を呼ぶとL(8)=0になってしまうが、連動型の移動を行うとそのような事態は避けられる。まず一回目のループではステップS1106においてm=10が選択され、第14ページが第9表示面に移動し、列（1）のようになる。以降同様にしてm=10,9,8が選択され、列（2）、（3）、（4）のように変化した結果、第8表示面におけるめくり動作が完了する。この時点でL(9)=0であった不自然な状態は解消され、またL(8)=0にもならない。
【０２１６】
図47aには二回目の通知が届き、MovePrev1X(8,gRESV)が呼ばれた時の動作が示されている。今度はL(i)=0となる表示面iを強制的に作り出さない限りページを連鎖的に移動することはできない。まず初期状態は図46の最後と同じ、列（4）のようになっている。一回目のループでは、ステップS1105においてm=10が選択され、第16ページが第9表示面に移動し、列（5）のようになる（L(10)=0になることに注意）。以降はステップS1106においてm=9,8が選択され、列（6）、（7）のように変化した結果、第8表示面におけるめくり動作が完了する。
【０２１７】
図47bには三回目の通知が届き、MovePrev1X(8,gRESV)が呼ばれた時の動作が示されている。二回目の時と同様の要領でm=9,8が選択され、列（8）、（9）のように変化した結果、第8表示面におけるめくり動作が完了する。
【０２１８】
図46、図47の動作で特筆すべき点は、第8表示面は、書籍中の途中の表示面であるのに、列（9）では最後のページである第16ページが可読になっているという点である（最初は第13ページが可読であったものが、めくるたびに第14,15,16ページへと、可読なページが変化して行った）。更に逆の操作である、連動片面後方移動手段M11（MoveNext1X）を実行すれば、ユーザーは同じ第8表示面上で、今度は第12,11,…,1ページを可読にすることができる。つまり、MovePrev1X, MoveNext1Xの二つの処理さえあれば、ユーザーは第8表示面を操作するだけで、当該表示面で書籍の全てのページを読むことができる。
【０２１９】
なお、ページ移動手段124は、図44、図45におけるループが毎回回るたびにページ表示手段125が表示部14を更新しないように、MovePrev1X, MoveNext1Xを呼び出す前に、表示部14の処理を一時停止させ、呼び出し完了後に処理を再開するよう制御しても良い。そうすることで、中間的な状態をユーザーに見せずに隠すことができる。
【０２２０】
［実施例16］
本実施例では、両面タイプの書籍における連動型のペアである連動両面前方移動手段M12（MovePrev2X）と、連動両面後方移動手段M13（MoveNext2X）を定義する。拡張前のMovePrev2Oddは、例えば図39の第9表示面に対して実行するとステップS804で失敗となるが、MovePrev2Xはその場合でも第10表示面にある第10,11ページを強制的に移動することで成功させる処理である。同様に、MoveNext2XもMoveNext2EvenではステップS704で失敗となるケースでも、前方の表示面21からページを持って来ることによって成功させる処理である。
【０２２１】
また仮に、拡張前の四つの手段である標準両面偶前方移動手段M06、標準両面偶後方移動手段M07、標準両面奇前方移動手段M08、標準両面奇後方移動手段M09（MovePrev2Even, MoveNext2Even, MovePrev2Odd, MoveNext2Odd）のうち、MovePrev2Odd, MoveNext2Evenの二つだけを用いてページ移動を行うと、書籍を見開いた左右の表示面21間でしかページを移動することができずに非常に制限されたものとなる。例えば、同一表示装置2の、表の表示面21から裏の表示面21にページを移動するということはできない。しかし拡張した連動型のペア（MovePrev2X, MoveNext2X）では、そのようなページ移動も含めた自在な移動が可能となる。
【０２２２】
更に、手段の数が少ないということは、操作が簡単になるということでもある。拡張前は、例えば偶数番表示面でページを移動するにはMovePrev2Even, MoveNext2Evenの二通りの手段があり、ユーザーはその区別を意識する必要があった（第1実施形態のユーザー操作検知手段123では、押しボタン24のうちBMボタンを押す回数で区別していた）。しかし、連動型のペアの場合、偶数番表示面でのページ移動の方法は、MoveNext2X一つだけであるので区別の必要が無い。つまり、単に「めくる」という操作をするだけでページ移動が可能である（BMボタンを使う必要が無い）。同様に、奇数番表示面でのページ移動の場合も区別する必要が無い。
【０２２３】
従ってユーザーはタイプと表示面番号nを指定するだけで良い。特に、タイプが事前の設定などで"連動型"に固定されている場合は、ユーザーは第n表示面のBGボタンを押すだけで、ユーザー操作検知手段123に指示を出し、ページ移動手段124に通知を送らせるという操作が可能になる。
【０２２４】
＜連動両面前方移動手段M12（MovePrev2X）のフローチャート＞
図48が連動両面前方移動手段M12（MovePrev2X）のフローチャートである。引数は二つあり、表示面番号n（奇数）、保存区間の種別kr（"狭義"または"広義"）である（S1301）。MovePrev2Xは、奇数番表示面におけるこれまでの「前方にめくる」という操作を拡張する。すなわち、ページ数が足りない場合でも、強制的にnより後方のページm（m＞n）からページを連鎖的に移動して来ることにより、第n表示面における「めくる」という操作を可能にする。また、自然なページ配置条件を保存する。ただし本処理を実行後に、書籍の末尾に近い表示面でL(i)=0となる表示面iが複数出現する可能性がある。以下、各ステップを順に説明する。
【０２２５】
まず引数nの値を確認し（S1302）、奇数でない、もしくはn=1であればこの処理の対象ではないので、戻り値を"失敗"として終了する（S1314）。ここで一般にはページ表示テーブル115は意図しない状態にあるので、終了する前にフローチャート開始時点の状態に戻す（S1312）。ただし処理開始直後は、ページ表示テーブル115は変更されていないので何もする必要は無い。次にL(n)+L(n+1)+…+L(x)＞x−n+2であるようなx（x≧n）が存在するかを調べる（S1303）。連動片面前方移動手段M10（MovePrev1X）のところで説明したのと同様で、この不等式の左辺は、第n表示面から第x表示面までのページ数の総和である。また右辺は、第n表示面から第x表示面までの表示面数に1を足したものである。つまりステップS1303では、第n〜x表示面にあるページ数の総和が、第n〜x表示面にある面数よりも、2以上大きくなるような表示面xを探す。
【０２２６】
もしそのようなxが存在すれば、その中で最小のもの（nに最も近いもの）をmとし（S1308）、続いて前方移動をmに対して行う。すなわち、mが偶数ならMovePrev2Even(m,kr)を、mが奇数ならMovePrev2Odd(m,kr)を呼び出す（S1309）。
【０２２７】
一方、そのようなxが存在しない場合は、第n表示面より後には、L(i)=0となる表示面iを強制的に作り出さない限り、前方に連鎖的に移動できるページは残っていないことを意味する。そこで、表裏の関係にある二枚の表示面で、一枚でもページを保持しているものがあるか、すなわちL(x)+L(x−1)＞0となる偶数x（x＞n）が存在するかを調べ（S1304）、存在する場合はその中で最大のもの（すなわちnから最も遠いもの）をmとする（S1305）。
【０２２８】
ここで両面タイプの書籍の場合、自然なページ配置条件を満たしたページ表示テーブル115では、全ての表示面i（1≦i≦NS）についてL(i)＞0であるならば、奇数aに対し、L(a)+L(a+1)は常に2の倍数になっていることを説明する。自然なページ配置条件の要請により、第a及び第a+2表示面の最初のページPa(1), Pa+2(1)は奇数番号（例えばp,qとする。当然であるがq＞p）である。一方L(a)+L(a+1)は、第a及び第a+1表示面にあるページ数の合計であるが、それはq−pに等しい、つまりL(a)+L(a+1)=q−pである。そして奇数と奇数の差は偶数であるのでL(a)+L(a+1)は2の倍数になっている。
【０２２９】
またL(i)=0となるi（1≦i≦NS）が出現する場合も、図14、図15の表中の自然なページ配置条件を保存する手段でページ移動を行う限りは、L(a)+L(a+1)は常に2の倍数になる。何故ならこれらの手続きは、ページ表示テーブル115の変更に関しては全て手段M06〜M09の呼び出しに還元され、そしてこれらの呼び出しではL(a)+L(a+1)は不変であるか、2増えるか、2減るかの三通りしかないからである。
【０２３０】
さて、L(m)+L(m−1)が偶数でない場合は（S1306）、上記の条件は満たされておらず続くステップS1307の動作が正しく行えないので、戻り値を"失敗"として終了する。偶数である場合は続いて前方移動を行う。すなわち表示面mに一枚でもページが割り当てられていれば（L(m)＞0）、MovePrev2Even(m,kr)を呼び出し、そうでない場合はMovePrev2Odd(m−1,kr)を呼び出して、表示面mもしくはm−1において前方移動を行う（S1307）。
【０２３１】
前述した、ステップS1309, S1307の呼び出しが失敗したら（S1310）、戻り値を"失敗"として終了する。成功した時は、その時の第一引数がnであったかを調べ（S1311）、nであったら後方の表示面からの連鎖的なページ移動が完了して、第n表示面でのめくりが行えたことになるので、戻り値を"成功"として終了する（S1313）。なおnは奇数であるので、その時の呼び出しはMovePrev2Oddである（MovePrev2Evenの呼び出しでは無い）。一方、第一引数がnでなければ、まだ第n表示面まで連鎖的な移動が届いていないので、ステップS1303に戻ってループを繰り返す。
【０２３２】
＜連動両面後方移動手段M13（MoveNext2X）のフローチャート＞
図49が連動両面後方移動手段M13（MoveNext2X）のフローチャートである。引数は二つあり、表示面番号n（偶数）、保存区間の種別kr（"狭義"または"広義"）である（S1401）。MoveNext2Xは、偶数番表示面におけるこれまでの「後方にめくる」という操作を拡張する。すなわち、ページ数が足りない場合でも、強制的にnより前方のページm（m＜n）からページを連鎖的に移動して来ることにより、第n表示面における「めくる」という操作を可能にする。また、自然なページ配置条件を保存する。ただし本処理を実行後に、書籍の先頭に近い表示面でL(i)=0となる表示面iが複数出現する可能性がある。以下、各ステップを順に説明する。
【０２３３】
まず引数nの値を確認し（S1402）、偶数でない、もしくはn=NSであればこの処理の対象ではないので、戻り値を"失敗"として終了する（S1414）。ここで一般にはページ表示テーブル115は意図しない状態にあるので、終了する前にフローチャート開始時点の状態に戻す（S1412）。ただし処理開始直後は、ページ表示テーブル115は変更されていないので何もする必要は無い。次にL(x)+L(x+1)+…+L(n)＞n−x+2であるようなx（x≦n）が存在するかを調べる（S1403）。連動両面前方移動手段M12（MovePrev2X）のところで説明したのと同様、ステップS1403では、第x〜n表示面にあるページ数の総和が、第x〜n表示面にある面数よりも、2以上大きくなるような表示面xを探す。
【０２３４】
もしそのようなxが存在すれば、その中で最大のもの（nに最も近いもの）をmとし（S1408）、続いて後方移動をmに対して行う。すなわち、mが奇数ならMoveNext2Odd(m,kr)を、mが偶数ならMoveNext2Even(m,kr)を呼び出す（S1409）。
【０２３５】
一方、そのようなxが存在しない場合は、第n表示面より前には、L(i)=0となる表示面iを強制的に作り出さない限り、後方に連鎖的に移動できるページは残っていないことを意味する。そこで、表裏の関係にある二枚の表示面で、一枚でもページを保持しているものがあるか、すなわちL(x)+L(x+1)＞0となる奇数x（x＜n）が存在するかを調べ（S1404）、存在する場合はその中で最小のもの（すなわちnから最も遠いもの）をmとする（S1405）。
【０２３６】
L(m)+L(m+1)が偶数でない場合は（S1406）、続くステップS1407の動作が正しく行えないので、戻り値を"失敗"として終了する。偶数である場合は続いて後方移動を行う。すなわち表示面mに一枚でもページが割り当てられていれば（L(m)＞0）、MoveNext2Odd(m,kr)を呼び出し、そうでない場合はMoveNext2Even(m+1,kr)を呼び出して、表示面mもしくはm+1において後方移動を行う（S1407）。
【０２３７】
前述した、ステップS1409, S1407の呼び出しが失敗したら（S1410）、戻り値を"失敗"として終了する。成功した時は、その時の第一引数がnであったかを調べ（S1411）、nであったら前方の表示面からの連鎖的なページ移動が完了して、第n表示面でのめくりが行えたことになるので、戻り値を"成功"として終了する（S1413）。なおnは偶数であるので、その時の呼び出しはMoveNext2Evenである（MoveNext2Oddの呼び出しでは無い）。一方、第一引数がnでなければ、まだ第n表示面まで連鎖的な移動が届いていないので、ステップS1403に戻ってループを繰り返す。
【０２３８】
＜動作例＞
ページ移動手段124は、ユーザー操作検知手段123から通知を受けて、連動型のペアMoveNext2X, MovePrev2Xを実行することにより、書籍のページを前後に自在に、かつ自然なページ配置条件を満たして移動させることができる。またこのペアはMoveNext2Even, MovePrev2Oddの拡張であるので、ページ数が十分ある状態であれば、代わりにMoveNext2X, MovePrev2Xを実行しても同じ結果が得られる。例えば、実施例7の図37の状態において、MoveNext2X(4,gRESV)を呼び出すと図38と同じ結果になる。また実施例6の図35の状態において、MovePrev2X(9,gRESV)を呼び出すと図36と同じ結果になる。
【０２３９】
また、これらの処理は更に強力な操作を可能とする。例えば、実際に操作している表示面21とは遥かに離れた場所からページを移動して来ることができる。
以下では実施例15と同じく、ページ表示テーブル115の圧縮された表記を用いて説明する。
【０２４０】
例えば初期状態では、図50の（0）と書かれた列の通りになっていた時（L(2)=0であることに注意）、ユーザーが第4表示面においてめくり操作を行い、ユーザー操作検知手段123が｛タイプ=連動型、再配置方法=後方移動、表示面=4｝という通知をページ移動手段124に四回連続して送った場合を考える。簡単化のため保存区間は指定されていないとする。ページ移動手段124は、MoveNext2Xを四回、同じ引数n=4、kr=gRESVで呼び出す。
【０２４１】
図50には一回目の通知が届きMoveNext2X(4,gRESV)が呼ばれた時の、ページ表示テーブル115の変化が図49のフローチャートのループごとに書かれている。最初のループのステップS1409においてm=3とした実行がなされ、列（1）のようになる。次に二回目のループのステップS1409においてm=4とした実行がなされ、列（2）のようになった結果、第4表示面におけるめくり動作が完了する。
【０２４２】
図51には二回目の通知が届き、MoveNext2X(4,gRESV)が呼ばれた時の動作が示されている。最初のループのステップS1409においてm=1とした実行がなされ、列（3）のようになる。二回目以降のループでは、ステップS1409においてm=1,1,2,3,3,4とした実行がなされ、列（4）、（5）、（6）、（7）、（8）、（9）のように変化した結果、第4表示面におけるめくり動作が完了する。またこの時点でL(2)=0であった不自然な状態は解消される。
【０２４３】
図52には三回目の通知が届き、MoveNext2X(4,gRESV)が呼ばれた時の動作が示されている。ここから先は、L(i)=0となる表示面iを強制的に作り出さない限りページを連鎖的に移動することはできない場合が出てくる。最初のループでは、ステップS1407においてm=1としてMoveNext2Odd(m,kr)が呼び出され、列（10）のようになる。二回目のループでは、ステップS1407においてm=1としてMoveNext2Even(m+1,kr)が呼び出され、列（11）のようになる。三〜四回目のループでは、ステップS1409においてm=3,3とした実行がなされ、列（12）、（13）のようになる。五回目のループでは、ステップS1409においてm=4とした実行がなされ、列（14）のようになる。その結果、第4表示面におけるめくり動作が完了する。
【０２４４】
図53には四回目の通知が届き、MoveNext2X(4,gRESV)が呼ばれた時の動作が示されている。最初のループでは、ステップS1407においてm=3としてMoveNext2Odd(m,kr)が呼び出され、列（15）のようになる。二回目のループでは、ステップS1407においてm=3としてMoveNext2Even(m+1,kr)が呼び出され、列（16）のようになる。その結果、第4表示面におけるめくり動作が完了する。
【０２４５】
図50〜図53の動作で特筆すべき点は、第4表示面と、書籍を見開いた時に対となる第5表示面は、書籍中の途中の表示面であるのに、列（16）では最初のページである第1ページが可読になっているという点である（最初は第8〜9ページが可読であったものが、めくるたびに第6〜7,4〜5,2〜3,1ページへと、可読なページが変化して行った）。更に逆の操作である、連動両面前方移動手段M12（MovePrev2X）を実行すれば、ユーザーは同じ第4,5表示面上で、第10〜16ページを可読にすることができる。つまり、MoveNext2X, MovePrev2Xの二つの処理さえあれば、ユーザーは第4,5表示面を操作するだけで、当該表示面で書籍の全てのページを読むことができる。
【０２４６】
なお、保存区間が指定されていた場合は、保存区間を超えてページを移動することはできないので、ページを連鎖的に移動できる範囲は必然的に狭まる。
【０２４７】
ところで図5のタイプの表示装置2を用いた場合、ユーザー操作検知手段123が作動するのは、例えば以下のように決めておく。両面タイプの時は、ユーザーが表示面nを、予め定めた閾値以上の歪みで「山曲げ」しながらタッチした時とし、この時ページ移動手段124に、｛タイプ=連動型、再配置方法=x、表示面=n｝という通知を送る。なお、パラメーターxについては本実施形態の冒頭で定めた通りとする。一方片面タイプの時は、ユーザーが表示面nを、予め定めた閾値以上の歪みで「山曲げ」もしくは「谷曲げ」しながらタッチした時とし、パラメーターxは山曲げの時は"前方移動"、谷曲げの時は"後方移動"とする。
【０２４８】
ここで、連動型のペアと、実物の書物を読む操作とのアナロジーを考える。連動型のペアは、偶数番表示面ではページの後方移動のみを行い、奇数番表示面ではページの前方移動のみを行うものであった。ところで、実物の書物を読む時に読者がページの移動の際に良く行うのが、見開いた左右の片側（例えば右側とする）にある複数枚ページを片手（今の例の場合、右手）で挟むようにしてつかみ、それらを「山曲げ」してから指をずらしつつ、曲げられたページが元の平面に戻ろうとする力を利用して一ページずつパラパラと（今の例の場合、左手方向に。一般的には、山曲げの凸が向かう方向に）めくる方法である。この方法では、ページを左右にパラパラと移動しながら、書物の最初のページから最後のページまで、自在に見開いて読むことができる。連動型のペアは、この操作を模倣し更に拡張したものと見なすことができる。
【０２４９】
また、ユーザー操作検知手段123とページ移動手段124を少し変えて、以下のように処理を呼び出せば、片手だけでページを前後に移動することが可能となる。今例えばnを奇数（ただしn＞1）として、第n表示面を操作しているとする。ここでユーザーが連動型の前方移動を指示すると、MovePrev2X(n, gRESV)を実行してページを前方移動させる。一方、今度は、同じ第n表示面で連動型の後方移動を指示すると、これまでは無効な操作であったが、代わりにMoveNext2X(n−1, gRESV)を実行してページを後方移動させる。これにより、第n表示面という単独の表示面21に関する操作だけでページの前後移動が可能となる。
【０２５０】
同様のことはnを偶数（ただしn＜NS）とした時も、後方移動はMoveNext2X(n, gRESV)、前方移動はMovePrev2X(n+1, gRESV)を呼び出すことで実現できる。
【０２５１】
最後に、連動型の移動のバリエーションについて四つ述べる。最初の三つは、図44、図45、図48、図49に示した処理に関する。一つ目は、これらの手段の特徴であった、L(n)=0となる表示面21を出現させてでもページをめくる動作は、実物の書物を読む時には起こらないので、禁止した方が望ましい場合が考えられる。その場合は、ステップS1104,S1204,S1304,S1404に来たら、結果を失敗として処理を終了する。二つ目は、ステップS1110,S1210,S1312,S1412では、失敗時にページ表示テーブル115を開始の状態に戻しているが、ユーザーに対してエラーが発生した場所や理由のヒントを与えるために、テーブルを戻さない動作も考えられる。その場合は、ステップS1110,S1210,S1312,S1412を除去する。三つ目は、連動移動の範囲を限定したい場合は以下のようにすれば可能である。例えば実施例16で用いたMoveNext2Xのフローチャート図49において、ステップS1405,S1408でmを選択する時に、例えばm≧3という条件を付加すると、第1,2表示面は連動移動の対象から切り離され、第3表示面以降でのみページ移動が起きる。
【０２５２】
四つ目のバリエーションは、連動型の通知に"ジャンプ=j"というパラメーターを加え｛タイプ=連動型、再配置方法=x、表示面=n、ジャンプ=j｝とするものである。パラメーターjは整数であり、0から書籍構造データ1121のツリーの深さ（末端のノードのレベルDの値。図12の場合は3）までの値を取るとする。パラメーターjの指定には、新たにBJボタンを押しボタン列134に追加し、巡回式に選択するとする。例えば、BJボタンを一度も押さなければj=0、一回押すごとにjは1増え、最大値を超えたらまた0に戻るとする。この通知の意味は、「現在または次の章・節・パラグラフの先頭を可読にせよ」である。例えば図12の場合、｛タイプ=連動型、再配置方法=後方移動、表示面=n、ジャンプ=1｝という通知を受信したページ移動手段124は、まずツリーのレベルjのノード（今の場合j=1であるので、章を表すノード）を書籍の先頭側から順番に調べ、R(n)がその区間に含まれているノードを見つけZとする（例えばR(n)=9だった場合は、第2章のノードがZである）。そして、Zの先頭ページ（今の場合、第7ページ）が第nまたはn+1表示面で可読になるまで連動型の移動を続ける。
【０２５３】
［第3実施形態］
第3実施形態では、両面タイプの書籍のみを対象とした拡張を行う。第2実施形態では、第1実施形態の四つの処理を二つに減らすと、ページの移動が制約されるという不具合が発生するが、新たな処理群に拡張することで解決する方法を説明した。第3実施形態では、第2実施形態ほど強力ではないが、別の方法によりページ移動の制約を解決する。
【０２５４】
まず、ユーザー操作検知手段123からの通知として、新たに｛タイプ=表裏型、表示装置=d、方向=dir｝を定義する。ここでdは表示装置番号を、dirは+1か−1の値を取り、ページ移動が後方（dir=+1の時）か前方（dir=−1の時）かを表す。表裏型の通知を発生させる方法は、第1実施形態で説明した方法に従う。
【０２５５】
以下では、表裏型の通知が来た時に、ページ移動手段124が呼び出す新たな下位手段として、表裏移動手段M14（MoveFrontBack）と、それを利用したページ移動の例を説明する。
【０２５６】
［実施例17］
＜表裏移動手段M14（MoveFrontBack）のフローチャート＞
図54が表裏移動手段M14（MoveFrontBack）のフローチャートである。引数は三つあり、表示装置番号d、移動方向dir（+1もしくは−1の値）、保存区間の種別kr（"狭義"または"広義"）である（S1501）。MoveFrontBackは、同一表示装置2内の表裏の関係にある二つの表示面21間でページの移動を行う。また、自然なページ配置条件を保存する。以下、各ステップを順に説明する。
【０２５７】
まず引数dの値を表示面番号n（nは奇数）に変換する（S1502）。次にdirの値を確認して（S1503）、dir=+1の時はMoveNext2Odd(n,kr)を呼び出す（S1504）。またdir=−1の時はMovePrev2Even(n+1,kr)を呼び出す（S1505）。次に、今呼び出した処理が成功したかを調べ（S1506）、成功の時は戻り値を"成功"として終了し（S1507）、失敗の時は戻り値を"失敗"として終了する（S1508）。
【０２５８】
＜動作例＞
第2実施形態における連動型のペアの代わりに、MoveNext2Even, MovePrev2Odd, MoveFrontBackの三つの処理を用いれば、第2実施形態のような連鎖的なページの移動はできないものの、MoveFrontBackが無い時（つまりMoveNext2Even, MovePrev2Oddのみの時）では不可能であった動作が可能となる。まず、簡単化のため保存区間は指定されていないものとする。仮にMoveFrontBackが無いと、例えば図55の列（0）に示した初期状態のページ表示テーブル115では、第4表示面にある第5,6ページは、第5表示面に移動できる（MoveNext2Evenを使う）が、第4ページはどこにも移動できない。また第5表示面にある第7,8ページは、第4表示面に移動できる（MovePrev2Oddを使う）が、第9ページはどこにも移動できない。
【０２５９】
しかし、例えばユーザーが第3表示面でdir=−1とした表裏型のページ移動の操作を行うと、ユーザー操作検知手段123は｛タイプ=表裏型、表示装置=2、方向=−1｝をページ移動手段124に通知する。ページ移動手段124は、MoveFrontBackを引数d=2、dir=−1、kr=gRESVで呼び出し、MoveFrontBackはステップS1505において、MovePrev2Even(4,kr)を呼び出す。これにより第4ページは第3表示面に移動して列（1）のようになる。ユーザーが同じ操作を繰り返すと、ユーザー操作検知手段123は再び｛タイプ=表裏型、表示装置=2、方向=−1｝をページ移動手段124に通知する。これにより、今度は第5ページが第3表示面に移動して、列（2）のようになる。
【０２６０】
すると今度は第3表示面において、ユーザーが標準移動の操作を行ってMovePrev2Oddを呼び出してもL(3)=0のような不自然な状態は起こらなくなり、結局列（3）のようになって、移動できなかったはずの第4ページは第2表示面まで移動する。
【０２６１】
次に、今度はユーザーが第6表示面でdir=+1とした表裏型のページ移動の操作を行うと、ユーザー操作検知手段123は｛タイプ=表裏型、表示装置=3、方向=+1｝をページ移動手段124に通知する。ページ移動手段124は、MoveFrontBackを引数d=3、dir=+1、kr=gRESVで呼び出し、MoveFrontBackはステップS1504において、MoveNext2Odd(5,kr)を呼び出す。これにより第9ページは第6表示面に移動し、図56の列（4）のようになる。もう一度同じ操作をユーザーが行うと、第8ページも第6表示面に移動し、図56の列（5）のようになる。すると第6表示面において、ユーザーが標準移動の操作を行ってMoveNext2Evenを呼び出してもL(6)=0のような不自然な状態は起こらなくなり、列（6）のようになって、移動できなかったはずの第9は第7表示面まで移動する。
【０２６２】
なお、保存区間が指定されていた場合は、表裏型の移動に関与するページが保存区間内にある時は、移動できない場合もある。
【０２６３】
ところで図5のタイプの表示装置2を用いた場合、ユーザー操作検知手段123が作動するのは、例えばユーザーが第d表示装置の表か裏の表示面21を、予め定めた閾値以上「山曲げ」もしくは「谷曲げ」したまま、タッチ＆ホールドした時とする（ここで第d表示装置の両面には、n=2d−1として、第n表示面と第n+1表示面があることに注意）。方向dirは、第n表示面が「山曲げ」されている時は−1、「谷曲げ」されている時は+1の値とする。なお、表示面21をただタッチするだけでなく、タッチ＆ホールドとしたのは、ユーザー操作検知手段123が、簡易型や標準型の操作と区別できるようにするためである。
【０２６４】
ここで、表裏型のページ移動と、実物の書物を読む操作とのアナロジーを考える。表裏型のページ移動は、実際の書物で複数のページを束ねて片手でつかみ、それらのページを山曲げもしくは谷曲げして少しずつずれて重なるようにすることにより、ページをめくりやすくすることに相当する。山曲げと谷曲げを逆にすると、ページの重なりのずれ方向が逆になるが、これはMoveFrontBackの引数dirで+1と−1が入れ替わることに相当する。
【０２６５】
［第4実施形態］
第1,2実施形態のページめくりの操作は何れも、ある表示面21（表示面番号n）においてページをめくると、めくった先ではnに直接隣接する表示面21が変化するだけであった。すなわち、名前にPrevと名の付いた処理を実行すると第n−1表示面にページが移って当該表示面21の構成が変化したが、それよりも番号の小さい（n−2など）表示面21は変化しない。また名前にNextと名の付いた処理を実行すると第n+1表示面にページが移って当該表示面21の構成が変化したが、それよりも番号の大きい（n+2など）表示面21は変化しない。連動型の移動の場合も、ページをめくる方向と逆方向にある表示面21は連鎖的にページの移動が起きたが、ページをめくった先の表示面21の挙動は、依然として直接隣接する表示面21が変化するだけであった。
【０２６６】
第4実施形態では、ページをめくった先の、直接隣接しない表示面21にも連鎖的にめくりの影響が波及していくような動作を説明する。そのためにページ移動手段124の新たな下位手段として、ドミノ片面前方移動手段M15（MovePrev1Domino）、ドミノ片面後方移動手段M16（MoveNext1Domino）と、ドミノ両面前方移動手段M17（MovePrev2Domino）、ドミノ両面後方移動手段M18（MoveNext2Domino）を定義する。前者の二つが片面タイプの書籍用であり、後者の二つが両面タイプの書籍用である。それぞれ適宜、第1実施形態において定義された処理をサブルーチンとして呼び出す。
【０２６７】
ユーザー操作検知手段123からの標準型の通知において、再配置方法xに新たに"ドミノ前方移動"と"ドミノ後方移動"を加える。として"前方移動"、"後方移動"、"ドミノ前方移動"、"ドミノ後方移動"の全てに対応する必要はなく、このうち任意のものを無効として扱っても良い。
【０２６８】
以下では、片面タイプ用のMovePrev1Domino, MoveNext1Dominoと、両面タイプ用のMovePrev2Domino, MoveNext2Dominoそれぞれについて、個々の実施例においてフローチャートと動作例の説明を行う。なおこれらの処理が成功したか失敗したかによって影響を受ける、他の処理は本発明において存在しないので、フローチャートでは結果（成功または失敗）を戻り値として返すステップを省略している。
【０２６９】
［実施例18］
本実施例では、片面タイプの書籍におけるドミノ移動の処理を説明する。ここでページ移動手段124の下位手段として、新たに、ドミノ片面前方移動手段M15（MovePrev1Domino）とドミノ片面後方移動手段M16（MoveNext1Domino）を定義する。
【０２７０】
＜ドミノ片面前方移動手段M15（MovePrev1Domino）のフローチャート＞
図57がドミノ片面前方移動手段M15（MovePrev1Domino）のフローチャートである。引数は二つあり、表示面番号n、保存区間の種別kr（"狭義"または"広義"）である（S1601）。MovePrev1DominoはMovePrev1の拡張であり、片面タイプの書籍においてページを前方に移動し、またその際に非可読になるページがなるべく第n表示面から離れたページになるよう、ページの移動を書籍の前方方向に連鎖的に波及させる。また、自然なページ配置条件を保存する。以下、各ステップを順に説明する。
【０２７１】
まず、呼び出された時点での各表示面21中のページ数（L(i), 1≦i≦NS）を記憶するために、新たに長さNSのリストXを作成しそこに値をコピーしておく。本処理では、各表示面21にあるページを全て一つ前の表示面21に（できる限り）移動するが、その作業の間にL(i)の値が変わってしまうので、予めXにコピーしておきX(i)の方を参照する。ただし、操作を開始する第n表示面に関しては、ページは1枚だけめくるのでX(n)=1としておく（S1602）。
【０２７２】
次にnに関するループ処理に入る。n=1であれば（S1603）、これ以上前方には移動できないので終了する。次にMovePrev1(n,kr)をX(n)回呼び出す（S1604）。これは、第n表示面からX(n)ページを第n−1表示面に移動することを意味する。なお、X(n)=0であった場合はMovePrev1の呼び出しを行わない（以降も、0回の呼び出しは何も行わないに等しく、またその結果は成功であったと見なす）。ループの実行一回目ではステップS1602で説明したようにX(n)=1であるので、標準型で一回前方移動するのに等しい。ループの実行二回目以降では、もともとその表示面21にあったページを、全て一つ前の表示面21に移動する動作になる。続いて、この時の呼び出しが一つでも失敗していたら（S1605）、ページ表示テーブル115は意図しない状態にあるので、最後にステップS1603を実行した時点の状態に戻して（S1608）終了する。続いてもしX(n)=0だったら（S1606）、ドミノの連鎖がここでストップするので（ドミノ倒しで言うならば、ドミノのピースがここで抜けている）、終了する。そうでなければ、nを1減らして一つ前の表示面21に対して同様のことを繰り返す（S1607）。
【０２７３】
＜ドミノ片面後方移動手段M16（MoveNext1Domino）のフローチャート＞
図58がドミノ片面後方移動手段M16（MoveNext1Domino）のフローチャートである。引数は二つあり、表示面番号n、保存区間の種別kr（"狭義"または"広義"）である（S1701）。MoveNext1DominoはMoveNext1の拡張であり、片面タイプの書籍においてページを後方に移動し、またその際に非可読になるページがなるべく第n表示面から離れたページになるよう、ページの移動を書籍の後方方向に連鎖的に波及させる。また、自然なページ配置条件を保存する。以下、各ステップを順に説明する。
【０２７４】
まず、呼び出された時点での各表示面21中のページ数（L(i), 1≦i≦NS）を記憶するために、新たに長さNSのリストXを作成しそこに値をコピーしておく。本処理では、各表示面21にあるページを全て一つ後の表示面21に（できる限り）移動するが、その作業の間にL(i)の値が変わってしまうので、予めXにコピーしておきX(i) の方を参照する。ただし、操作を開始する第n表示面に関しては、ページは1枚だけめくるのでX(n)=1としておく（S1702）。
【０２７５】
次にnに関するループ処理に入る。n=NSであれば（S1703）、これ以上後方には移動できないので終了する。次にMoveNext1(n,kr)をX(n)回呼び出す（S1704）。これは、第n表示面からX(n)ページを第n+1表示面に移動することを意味する。ループの実行一回目ではステップS1702で説明したようにX(n)=1であるので、標準型で一回後方移動するのに等しい。ループの実行二回目以降では、もともとその表示面21にあったページを、全て一つ後の表示面21に移動する動作になる。続いて、この時の呼び出しが一つでも失敗していたら（S1705）、ページ表示テーブル115は意図しない状態にあるので、最後にステップS1703を実行した時点の状態に戻して（S1708）終了する。続いてもしX(n)=0だったら（S1706）、ドミノの連鎖がここでストップするので、終了する。そうでなければ、nを1増やして一つ後の表示面21に対して同様のことを繰り返す（S1707）。
【０２７６】
＜動作例＞
MovePrev1Domino, MoveNext1Dominoを用いたドミノ移動の動作例を説明する。図59の列（0）に書いた状態にページ表示テーブル115がある時に、ユーザーが第9表示面において"ドミノ前方移動"のめくり操作を行ったとする。またこの時保存区間として第2〜4ページが指定されているものとする。ページ移動手段124は、MovePrev1Dominoを引数n=9、kr=gRESVで呼び出す。
【０２７７】
第1実施形態のMovePrev1であれば、ドミノ式の移動は起こらず、列（1）のように第13ページが第8表示面に移動し非可読になって終了する。しかし第13ページはその直後にユーザーがめくり戻して参照する可能性も高く、直ぐに参照できるように可読のままであった方が良いかもしれない。そこでMovePrev1Dominoでは第8表示面にあった第12ページを第7表示面に移動して、列（2）のように第13ページを可読にする。しかし今度は代わりに第12ページが非可読になってしまう。そこで以降ドミノ式に書籍前方に向かってページを移動して行く。すなわち、図57のフローチャートにおけるループ中のステップS1604で、n=7,6,5とした実行がなされ、列（3）、（4）、（5）のようにテーブルが変化する。
【０２７８】
最終的にどこで止まるかは、gRESVの値によって異なるが、図59の列（5）にはgRESV="広義"の場合にn=4で停止した場合を示してある（gRESV="狭義"の場合はn=3で停止する）。最終的に非可読になったのは第6ページであるが、今読んでいる場所から最も離れているので、非可読になることによる不利益も少ないと考えられる。
【０２７９】
MoveNext1Dominoを利用した、"ドミノ後方移動"のめくり操作の場合も同様である。
【０２８０】
なお、第2実施形態で述べた片面タイプの"連動型"の移動でも、そこで定義されたフローチャートを変更することで、ドミノ移動をさせることが可能である。具体的には、連動片面前方移動手段M10（MovePrev1X）のフローチャートのステップS1107を、図60aに描いたステップS1107Dに変更する。また、連動片面後方移動手段M11（MoveNext1X）のフローチャートのステップS1207を、図60bに描いたステップS1207Dに変更する。
【０２８１】
上で定義した新しいページ移動手段124の下位手段をそれぞれ、連動ドミノ片面前方移動手段M19（MovePrev1XDomino）、連動ドミノ片面後方移動手段M20（MoveNext1XDomino）と呼ぶことにする。
【０２８２】
［実施例19］
本実施例では、両面タイプの書籍におけるドミノ移動の処理を説明する。ここでページ移動手段124の下位手段として、新たに、ドミノ両面前方移動手段M17（MovePrev2Domino）とドミノ両面後方移動手段M18（MoveNext2Domino）を定義する。
【０２８３】
＜ドミノ両面前方移動手段M17（MovePrev2Domino）のフローチャート＞
図61がドミノ両面前方移動手段M17（MovePrev2Domino）のフローチャートである。引数は二つあり、表示面番号n（奇数）、保存区間の種別kr（"狭義"または"広義"）である（S1801）。MovePrev2DominoはMovePrev2Oddの拡張であり、両面タイプの書籍においてページを前方に移動し、またその際に非可読になるページがなるべく第n表示面から離れたページになるよう、ページの移動を書籍の前方方向に連鎖的に波及させる。また、自然なページ配置条件を保存する。以下、各ステップを順に説明する。
【０２８４】
まず引数nの値を確認し（S1802）、奇数でなければこの処理の対象ではないので終了する。次に、呼び出された時点での各表示面21中のページ数（L(i), 1≦i≦NS）を記憶するために、新たに長さNSのリストXを作成しそこに値をコピーしておく。本処理では、各表示面21にあるページを全て二つ前の表示面21に（できる限り）移動するが、その作業の間にL(i)の値が変わってしまうので、予めXにコピーしておきX(i) の方を参照する。ただし、操作を開始する第n表示面に関しては、全ページではなく2ページだけ移動する。そこでX(n)=2とするのが普通だが、後に説明するステップS1805,S1810において第n表示面が他の表示面21と統一的に取り扱えるので、多少技巧的ではあるがX(n)=X(n+1)=1としておく（S1803）。
【０２８５】
次にnに関するループ処理に入る。n=1であれば（S1804）、これ以上前方には移動できないので終了する。次にMovePrev2Odd(n,kr)を(X(n)+X(n+1))/2回（これをC回とする）呼び出す（S1805）。これは、ループの実行一回目ではステップS1803で説明したようにX(n)=X(n+1)=1であるので、標準型で一回前方移動するのに等しい。またループの実行二回目以降では、もともと第n,n+1表示面にあったページを全て、第n−1表示面に移動することを意味する。何故ならば、まず、もともと第n+1表示面にあったページは、一つ前のループのステップS1809で予め第n表示面に移動させられているので、既に第n表示面には移動すべきX(n)+X(n+1)ページが全て集まっている。そして、MovePrev2Oddは一回の呼び出しにつき2ページを移動するので、最後に2で割って呼び出し回数Cとする。こうして、もともと第n,n+1表示面にあったX(n)+X(n+1)ページが全て、第n−1表示面に移動する。
【０２８６】
続いてこの時の呼び出しが一つでも失敗していると（S1806）、ページ表示テーブル115は意図しない状態にあるので、最後にステップS1804を実行した時点の状態に戻して（S1807）終了する。呼び出しが全て成功していた場合、もしC=0だったら（S1808）、ドミノの連鎖がここでストップするので（ドミノ倒しで言うならば、ドミノのピースがここで抜けている）、終了する。そうでなければ、今度はMovePrev2Even(n−1,kr)をX(n−1)回呼び出す（S1809）。これは、次のループでのステップS1805の呼び出しに備えて、予め第n−1表示面の全ページを第n−2表示面に移動しておく処理である。続いて同じ処理を同じ引数でX(n)回呼び出す（S1810）。これは、現在のループでのステップS1805の呼び出しで第n表示面から第n−1表示面に移動したページを全て、更に第n−2表示面に移動する処理である。ステップS1809,S1810の呼び出しが一つでも失敗していると（S1811）、ページ表示テーブル115は意図しない状態にあるので、最後にステップS1808を実行した時点の状態に戻して（S1813）終了する。呼び出しが全て成功していれば、nを2減らして二つ前の表示面21に対して同様のことを繰り返す（S1812）。
【０２８７】
＜ドミノ両面後方移動手段M18（MoveNext2Domino）のフローチャート＞
図62がドミノ両面後方移動手段M18（MoveNext2Domino）のフローチャートである。引数は二つあり、表示面番号n（偶数）、保存区間の種別kr（"狭義"または"広義"）である（S1901）。MoveNext2DominoはMoveNext2Evenの拡張であり、両面タイプの書籍においてページを後方に移動し、またその際に非可読になるページがなるべく第n表示面から離れたページになるよう、ページの移動を書籍の後方方向に連鎖的に波及させる。また、自然なページ配置条件を保存する。以下、各ステップを順に説明する。
【０２８８】
まず引数nの値を確認し（S1902）、偶数でなければこの処理の対象ではないので終了する。次に、呼び出された時点での各表示面21中のページ数（L(i), 1≦i≦NS）を記憶するために、新たに長さNSのリストXを作成しそこに値をコピーしておく。本処理では、各表示面21にあるページを全て二つ後の表示面21に（できる限り）移動するが、その作業の間にL(i)の値が変わってしまうので、予めXにコピーしておきX(i) の方を参照する。ただし、操作を開始する第n表示面に関しては、全ページではなく2ページだけ移動する。そこでX(n)=2とするのが普通だが、後に説明するステップS1905,S1910において第n表示面が他の表示面21と統一的に取り扱えるので、多少技巧的ではあるがX(n)=X(n−1)= 1としておく（S1903）。
【０２８９】
次にnに関するループ処理に入る。n=NSであれば（S1904）、これ以上後方には移動できないので終了する。次にMoveNext2Even(n,kr)を(X(n)+X(n−1))/2回（これをC回とする）呼び出す（S1905）。これは、ループの実行一回目ではステップS1903で説明したようにX(n)=X(n−1)= 1であるので、標準型で一回後方移動するのに等しい。またループの実行二回目以降では、もともと第n−1,n表示面にあったページを全て、第n+1表示面に移動することを意味する（この動作の詳細はステップS1805で既に説明した）。
【０２９０】
続いてこの時の呼び出しが一つでも失敗していると（S1906）、ページ表示テーブル115は意図しない状態にあるので、最後にステップS1904を実行した時点の状態に戻して（S1907）終了する。呼び出しが全て成功していた場合、もしC=0だったら（S1908）、ドミノの連鎖がここでストップするので、終了する。そうでなければ、今度はMoveNext2Odd(n+1,kr)をX(n+1)回呼び出す（S1909）。これは、次のループでのステップS1905の呼び出しに備えて、予め第n+1表示面の全ページを第n+2表示面に移動しておく処理である。続いて同じ処理を同じ引数でX(n)回呼び出す（S1910）。これは、現在のループでのステップS1905の呼び出しで第n表示面から第n+1表示面に移動したページを全て、更に第n+2表示面に移動する処理である。ステップS1909,S1910の呼び出しが一つでも失敗していると（S1911）、ページ表示テーブル115は意図しない状態にあるので、最後にステップS1908を実行した時点の状態に戻して（S1913）終了する。呼び出しが全て成功していれば、nを2増やして二つ後の表示面21に対して同様のことを繰り返す（S1912）。
【０２９１】
＜動作例＞
MovePrev2Domino, MoveNext2Dominoを用いたドミノ移動の動作例を説明する。図63の列（0）に書いた状態にページ表示テーブル115がある時に、ユーザーが第9表示面において"ドミノ前方移動"のめくり操作を行ったとする。またこの時保存区間として第1〜3ページが指定されているものとする。ページ移動手段124は、MovePrev2Dominoを引数n=9、kr=gRESVで呼び出す。
【０２９２】
第1実施形態のMovePrev2Oddであれば、ドミノ式の移動は起こらず第13,14ページが第8表示面に移動し、第13ページが非可読になって終了する（逆に第14ページは可読になる）。しかし第13ページはその直後にユーザーがめくり戻して参照する可能性も高い。その時に直ぐに参照できるように可読のままであった方が良いかもしれない。しかし自然なページ配置条件の要請により、奇数番である第13ページは、奇数番表示面でしか可読にできない。すなわち第7表示面の先頭ページまで移動する必要がある（第14ページは、追従する形で第8表示面に移動する）。そこでMovePrev2Dominoでは第8表示面にあった第12ページを第6表示面に、第7表示面にあった第9,10,11ページを第5表示面に…、とドミノ式に2つ前方の表示面21に移動して行く。
【０２９３】
具体的には、図61のフローチャートにおけるループでn=9,7,5とした実行がなされ、列（1）、（2）、（3）のようにテーブルが変化する。
【０２９４】
最終的にどこで止まるかは、gRESVの値によって異なるが、図63の列（3）にはgRESV="狭義"の場合にn=3で停止した場合を示してある（gRESV="広義"の場合はn=5で停止する）。最終的に非可読になったのは第6,7ページであるが、今読んでいる場所から最も離れているので、非可読になることによる不利益も少ないと考えられる。
【０２９５】
MoveNext2Dominoを利用した、"ドミノ後方移動"のめくり操作の場合も同様である。
【０２９６】
なお、第2実施形態で述べた両面タイプの"連動型"の移動でも、そこで定義されたフローチャートを変更することで、ドミノ移動をさせることが可能である。具体的には、連動両面前方移動手段M12（MovePrev2X）のフローチャートのステップS1307を図64aのS1307Dに変更し、またステップS1309を図64aのS1309Dに変更する。同様に連動両面後方移動手段M13（MoveNext2X）のフローチャートのステップS1407を図64bのS1407Dに変更し、またステップS1409を図64bのS1409Dに変更する。
【０２９７】
上で定義した新しいページ移動手段124の下位手段をそれぞれ、連動ドミノ両面前方移動手段M21（MovePrev2XDomino）、連動ドミノ両面後方移動手段M22（MoveNext2XDomino）と呼ぶことにする。
【０２９８】
最後に、図57、図58、図61、図62に示したドミノ型の移動のバリエーションについて二つ述べる。一つ目は、ステップS1606,S1706,S1808,S1908の分岐においてドミノの連鎖が止まった（ドミノのピースが抜けている）と判断した時に、ページの移動を終了しているが、その場合でも、あたかも透明なピースがあるかのようにページの移動を続ける動作が考えられる。その場合は、前記のステップS1606,S1706,S1808,S1908は常に偽であるとした処理に変更すれば良い。二つ目は、第2実施形態の時と同様の議論であるが、ステップS1608, S1708, S1807, S1813, S1907, S1913では、失敗時にページ表示テーブル115を過去の状態に戻しているが、ユーザーに対してエラーが発生した場所や理由のヒントを与えるために、これらのステップを除去してテーブルを戻さない動作も考えられる。
【０２９９】
［第5実施形態］
これまでの実施形態では、表示装置2を物理的にめくらずに、ページ移動を行う方法のみを説明して来た。本実施形態では表示装置2を物理的にめくるとともにページ表示テーブル115の変更を行い、ユーザーのページめくり操作を補佐する動作を説明する。なお表示装置2を「物理的にめくる」操作として、一番イメージしやすいのが、開巻位置変数114（gOPEN）を変更する操作である。しかし本実施形態ではそれに限らず、開巻位置とは離れたところにある表示面21を少しだけ（小さい角度で）開いて、その表示面21を物理的にめくっても構わない。
【０３００】
自然なページ配置条件が満たされている場合を考える。また説明を分かりやすくするためL(i)=0となる表示面iは存在しないとする。例えば片面タイプの書籍の場合、ユーザーが第n表示面（第n表示装置上にある）に表示されているページPn(1)（これをpとする）を読んだ後、次のページに読み進めようとしたとする。実物の書物のように、第n表示装置を物理的にめくったとすると、L(n)=1であれば、続きの第p+1ページをそのまま第n+1表示面で読むことができる。しかしL(n)＞1であった場合、すなわち第n表示面に複数のページが割り当てられていた場合は、ユーザーは第n+1表示面で第p+1ページより先のページを目にすることになり、そこで読書が一時中断してしまう。
【０３０１】
本実施形態では、L(n)＞1の場合であっても、ユーザーが物理的にページをめくった時、同時にページ表示テーブル115の変更も行い、第n+1表示面には必ず第p+1ページが可読になっているようにして、ユーザーの読書が一時中断することを防ぐ方法について述べる。そのために物理的なページめくりに伴って、第n表示面をL(n)=1になるようにページの移動を行う（この操作を「展開」と呼ぶことにする）。両面タイプの書籍の場合も、表示装置2を物理的にめくった場合、必ず続きのページが見開きに表示されるように、ページ移動を行う。
【０３０２】
前述の目的のため、ページ移動手段124の新たな下位手段として、展開片面前方移動手段M23（MovePrev1Unfold）、展開片面後方移動手段M24（MoveNext1Unfold）と、展開両面前方移動手段M25（MovePrev2Unfold）、展開両面後方移動手段M26（MoveNext2Unfold）を定義する。前者の二つが片面タイプの書籍用であり、後者の二つが両面タイプの書籍用である。それぞれ適宜、第1実施形態において定義された処理をサブルーチンとして呼び出す。
【０３０３】
ユーザー操作検知手段123からの通知において、新たに"展開型"というタイプを加える。このタイプの通知は｛タイプ=展開型、再配置方法=x、表示面=n｝という形をしており、パラメーターは再配置方法xと表示面nである。パラメーターnは、めくられる表示面21の番号である。パラメーターxは、片面タイプの場合は、表示面番号の小さい方が見えるようにめくる時は"前方移動"か"ドミノ前方移動"、表示面番号の大きい方が見えるようにめくる時は"後方移動"か"ドミノ後方移動"である。一方両面タイプの時は、nが偶数の時は"前方移動"か"ドミノ前方移動"、nが奇数の時は"後方移動"か"ドミノ後方移動"である。なおxとして"前方移動"、"後方移動"、"ドミノ前方移動"、"ドミノ後方移動"の全てに対応する必要はなく、このうち任意のものを無効として扱っても良い。
【０３０４】
展開型の通知を発生させるには、第1実施形態で説明したように、ユーザーが第n表示面においてBTボタンによりタイプとして展開型を選択し、BMボタンにより再配置方法xを選択した後、最後にBGボタンを押すとする。その結果ユーザー操作検知手段123が作動し、当該通知をページ移動手段124に送る。
【０３０５】
別の方法として、ユーザーが物理的にめくり操作を行った時にユーザー操作検知手段123が自動的に感知し、パラメーターx,nも自動的に算出した後、ページ移動手段124に通知を送る方法も考えられる。図7の電子書籍装置1の構成においては、開巻位置における物理的なめくり操作の感知は可能である（一方、開巻位置以外の感知はそのままではできない）。すなわちユーザー操作検知手段123は開巻位置変数114（gOPEN）へ出力する値を監視し、それに変化があった場合にめくり操作が行われたことを感知し、その値が増えたのか減ったのか、また書籍のタイプは片面か両面なのかに基づいてパラメーターnを算出する。同様にxに関しても、前方移動か後方移動かをgOPENの値の増減から判断する。ただし、ドミノ移動かそうでないかは自動では判断できないので、予め設定で決めておくか、ユーザーが表示装置2をめくる前にBMボタンで指示をするとする（例えば、BMボタンを押せばドミノ移動、押さなければ通常の移動）。
【０３０６】
以下では、片面タイプのMovePrev1Unfold, MoveNext1Unfoldと、両面タイプのMovePrev2Unfold, MoveNext2Unfoldそれぞれについて、個々の実施例においてフローチャートと動作例の説明を行う。なおこれらの処理が成功したか失敗したかによって影響を受ける、他の処理は本発明において存在しないので、フローチャートでは結果（成功または失敗）を戻り値として返すステップを省略している。
【０３０７】
［実施例20］
本実施例では、片面タイプの書籍における、展開型の通知に対する処理を説明する。ここでページ移動手段124の下位手段として、新たに、展開片面前方移動手段M23（MovePrev1Unfold）と展開片面後方移動手段M24（MoveNext1Unfold）を定義する。
【０３０８】
＜展開片面前方移動手段M23（MovePrev1Unfold）のフローチャート＞
図65が展開片面前方移動手段M23（MovePrev1Unfold）のフローチャートである。引数は三つあり、表示面番号n、保存区間の種別kr（"狭義"または"広義"）、ドミノ移動するかdomino（真または偽）である（S2001）。この処理は、自然なページ配置条件を保存する。MovePrev1Unfoldは典型的には以下のタイミングで呼び出される。すなわちユーザーが第m表示面を読んだ後、物理的な操作で一つ前の表示面をめくる時に、ユーザー操作検知手段123が｛タイプ=展開型、再配置方法=《前方移動もしくはドミノ前方移動》、表示面=m−1｝という通知を、ページ移動手段124に送る（再配置方法がドミノ移動かそうでないかは、前述した方法で決まる）。ページ移動手段124は、MovePrev1Unfoldを引数n=m−1、kr=gRESV、domino=《再配置方法が"ドミノ前方移動"なら真、そうでなければ偽》で呼び出す。以下、各ステップを順に説明する。
【０３０９】
まず、指定された表示面nにおいてL(n)=0、すなわちその表示面に割り当てられたページが一枚も無い場合は（S2002）、この処理の対象でないので終了する。次に、呼び出された時点での各表示面21中のページ数（L(i), 1≦i≦NS）を記憶するために、新たに長さNSのリストXを作成しそこに値をコピーしておく。本処理では、各表示面21にあるページを全て一つ前の表示面21に（できる限り）移動するが、その作業の間にL(i)の値が変わってしまうので、予めXにコピーしておきX(i)の方を参照する。ただし、操作を開始する第n表示面に関しては、ページはL(n)−1枚だけめくる（言い替えると、一枚だけ残す）ので、X(n)=L(n)−1としておく（S2003）。
【０３１０】
次にnに関するループ処理に入る。n=1であれば（S2004）、これ以上前方には移動できないので終了する。次にMovePrev1(n,kr)をX(n)回呼び出す（S2005）。これは、第n表示面からX(n)ページを第n−1表示面に移動することを意味する。ループの実行一回目では、ステップS2003で説明したようにX(n)=L(n)−1であるので、一ページだけ残して（L(n)ページまとめてではなく、展開して一ページだけ残して）前方移動することになる。これによりユーザーは第m表示面で可読であった第pページの直前の第p−1ページを、めくった先の第m−1表示面で読むことができる（n=m−1であったことに注意）。一方、ループの実行二回目以降では、もともとその表示面21にあったページを、全て一つ前の表示面21に移動する動作になる。
【０３１１】
続いてこのステップS2005の呼び出しが一つでも失敗していると（S2006）、ページ表示テーブル115は意図しない状態にあるので、最後にステップS2004を実行した時の状態に戻して（S2009）終了する。それ以外の時、dominoが偽であれば、第p−1ページを第m−1表示面上で可読にするという目的は既に達せられているので終了する。また、X(n)=0だった場合は、ドミノ移動の最中であってもドミノの連鎖がここでストップするので（ドミノ倒しで言うならば、ドミノのピースがここで抜けている）、終了する（S2007）。それ以外の場合は、ドミノ移動を続けるためnを1減らして（S2008）、一つ前の表示面21に対して同様のことを繰り返す。
【０３１２】
＜展開片面後方移動手段M24（MoveNext1Unfold）のフローチャート＞
図66が展開片面後方移動手段M24（MoveNext1Unfold）のフローチャートである。引数は三つあり、表示面番号n、保存区間の種別kr（"狭義"または"広義"）、ドミノ移動するかdomino（真または偽）である（S2101）。この処理は、自然なページ配置条件を保存する。MoveNext1Unfoldは典型的には以下のタイミングで呼び出される。すなわち、ユーザーが第m表示面を読んだ後、物理的な操作で当該表示面をめくる時に、ユーザー操作検知手段123が｛タイプ=展開型、再配置方法=《後方移動もしくはドミノ後方移動》、表示面=m｝という通知をページ移動手段124に送る。ページ移動手段124は、MoveNext1Unfoldを引数n=m、kr=gRESV、domino=《再配置方法が"ドミノ後方移動"なら真、そうでなければ偽》で呼び出す。以下、各ステップを順に説明する。
【０３１３】
まず、指定された表示面nにおいてL(n)=0、すなわちその表示面に割り当てられたページが一枚も無い場合は（S2102）、この処理の対象でないので終了する。次に、呼び出された時点での各表示面21中のページ数（L(i), 1≦i≦NS）を記憶するために、新たに長さNSのリストXを作成しそこに値をコピーしておく。本処理では、各表示面21にあるページを全て一つ後の表示面21に（できる限り）移動するが、その作業の間にL(i)の値が変わってしまうので、予めXにコピーしておきX(i)の方を参照する。ただし、操作を開始する第n表示面に関しては、ページはL(n)−1枚だけめくる（言い替えると、一枚だけ残す）ので、X(n)=L(n)−1としておく（S2103）。
【０３１４】
次にnに関するループ処理に入る。n=NSであれば（S2104）、これ以上後方には移動できないので終了する。次にMoveNext1(n,kr)をX(n)回呼び出す（S2105）。これは、第n表示面からX(n)ページを第n+1表示面に移動することを意味する。ループの実行一回目では、ステップS2103で説明したようにX(n)=L(n)−1であるので、一ページだけ残して（L(n)ページまとめてではなく、展開して一ページだけ残して）後方移動することになる。これによりユーザーは第m表示面で可読であった第pページの直後の第p+1ページを、めくった先の第m+1表示面で読むことができる（n=mであったことに注意）。一方、ループの実行二回目以降では、もともとその表示面21にあったページを、全て一つ後の表示面21に移動する動作になる。
【０３１５】
続いてこのステップS2105の呼び出しが一つでも失敗していると（S2106）、ページ表示テーブル115は意図しない状態にあるので、最後にステップS2104を実行した時の状態に戻して（S2109）終了する。それ以外の時、dominoが偽であれば、第p+1ページを第m+1表示面上で可読にするという目的は既に達せられているので終了する。また、X(n)=0だった場合は、ドミノ移動の最中であってもドミノの連鎖がここでストップするので、終了する（S2107）。それ以外の場合は、ドミノ移動を続けるためnを1増やして（S2108）、一つ後の表示面21に対して同様のことを繰り返す。
【０３１６】
＜動作例＞
MovePrev1Unfold, MoveNext1Unfoldを用いた展開型移動の動作例を説明する。図67の列（0）に書いた状態にページ表示テーブル115があり、ユーザーが第8表示面を読んだ後、表示装置2を物理的にめくって第7表示面を読む場合を考える。なお図中で背景がグレーの数字は、ユーザーが読もうとしている表示面21にありかつ可読なページを表す。またこの時保存区間は指定されていないものとする。更に、ユーザーは再配置方法としてドミノ前方移動を指示したとする。
【０３１７】
ユーザーが物理的なめくり操作で第7表示面を読もうとすると、ページ移動手段124はMovePrev1Unfoldを引数n=7、kr=gRESV、domino=真で呼び出す。その結果、図65のフローチャートにおけるループ中のステップS2005で、n=7,6,5とした実行がなされ、列（1）、（2）、（3）のようにテーブルが変化する。ループはn=4になるまで繰り返されるが、X(4)=0であるため、そのループでドミノの連鎖が止まり、ステップS2007の条件が真となり終了する。
【０３１８】
なおdomino=偽である時は、ドミノ移動は起こらず、列（1）の状態で終了する。dominoが真または偽どちらの場合でも、めくった先の第7表示面で第12ページが可読となり、ユーザーは初めの第13ページからスムーズに、第12ページへ移動することができる（仮にMovePrev1Unfoldが実行されず、単に物理的に表示装置2をめくっただけだとすると、ユーザーは第10ページを目にしたはずであることに注意）。
【０３１９】
続いて更にユーザーが、表示装置2を物理的にめくって、第6表示面を読もうとしたとする。ページ移動手段124は、MovePrev1Unfoldを引数n=6、kr=gRESV、domino=真で呼び出す。その結果、図65のフローチャートにおけるループ中のステップS2005で、n=6,5,4,3,2とした実行がなされ、列（4）、（5）、（6）、（7）、（8）のようにテーブルが変化する。これにより、めくった先の第6表示面で第11ページが可読となり、ユーザーは初めの第12ページからスムーズに、第11ページへ移動することができる。
【０３２０】
以降も引き続き、ユーザーが表示装置2を物理的にめくって第5,4,3,2表示面を読んで行っても、それぞれの表示面21において第10,9,8,7ページをスムーズに読むことができる。
【０３２１】
なお、実施例18（第3実施形態）のドミノ移動における説明で、ステップS1606, S1706でドミノの連鎖がストップする動作例を説明しなかったが、図67の列（3）においてX(4)=0であるために連鎖がストップしたのがそれに相当する。
【０３２２】
MoveNext1Unfoldを利用した、「展開型の後方移動」のめくり操作の場合も同様である。
【０３２３】
［実施例21］
本実施例では、両面タイプの書籍における、展開型の通知に対する処理を説明する。ここでページ移動手段124の下位手段として、新たに、展開両面前方移動手段M25（MovePrev2Unfold）と展開両面後方移動手段M26（MoveNext2Unfold）を定義する。
【０３２４】
＜展開両面前方移動手段M25（MovePrev2Unfold）のフローチャート＞
図69が展開両面前方移動手段M25（MovePrev2Unfold）のフローチャートである。引数は三つあり、表示面番号n（偶数）、保存区間の種別kr（"狭義"または"広義"）、ドミノ移動するかdomino（真または偽）である（S2201）。この処理は、自然なページ配置条件を保存する。MovePrev2Unfoldは典型的には以下のタイミングで呼び出される。すなわちmを偶数として、ユーザーが第m,m+1表示面を見開いて読んだ後、めくり操作により第m−2,m−1表示面を読もうとする時に、ユーザー操作検知手段123が｛タイプ=展開型、再配置方法=《前方移動もしくはドミノ前方移動》、表示面=m｝という通知をページ移動手段124に送る。ページ移動手段124は、MovePrev2Unfoldを引数n=m、kr=gRESV、domino=《再配置方法が"ドミノ前方移動"なら真、そうでなければ偽》で呼び出す。
【０３２５】
展開のページ移動は以下のようになる。第n表示面で可読なページをpとすると、nは偶数であるのでp=Pn(L(n))である。まず一番簡単なL(n)=3、すなわち第n表示面にちょうど3ページある場合について説明する。この時Pn=[p−2,p−1,p]であるが、これらを展開してそれぞれ第n−2,n−1,n表示面に移動させる。すなわち第n表示面には第pページを、第n−1表示面には第p−1ページを割り当てる（それぞれ、その表示面21に割り当てられた唯一のページとなる）。更に第n−2表示面に対してはPn-2の最後に第p−2ページを追加し、当該ページを可読にする。これによりユーザーはページをめくった先の第n−2,n−1表示面において、第pページの続きである第p−2,p−1ページをスムーズに読むことができる（n=mであったことに注意）。なお、この際もともと第n−1表示面にあったページは、一緒に前方の表示面21に移動させられる。
【０３２６】
続いて述べるL(n)≠3の場合も、第n表示面には第pページ、第n−1表示面には第p−1ページを単独で割り当て、第n−2表示面に対してはPn-2の最後に第p−2ページ以降を追加することは共通している。異なるのは、第p,p−1ページと第p−2ページ以降をどの表示面21から移動してくるかである。
【０３２７】
L(n)＞3の場合は、第p,p−1ページはL(n)=3の時と同様に割り当て、Pn-2の最後に追加されるページとして、第p−2ページだけでなく、Pnの残りのページ（第p−3,p−4,…ページ）も一緒に追加すれば良い。一方、L(n)＜3の場合は少し複雑になる。もしL(n)=L(n−1)=1であれば、既に展開された状態（第n,n−1表示面には第p,p−1ページが割り当てられ、第n−2表示面では第p−2ページが可読である）であるので何もする必要はない。また、もしL(n)=2かつL(n−1)≧1の場合はPn=[p−1,p]であり、展開に必要な3ページのうち第p−2ページが第n表示面ではなく第n−1表示面にあるので、そのことに注意して展開する。最後に、もしL(n)=1かつL(n−1)≧2の場合はPn=[p]であり、展開に必要な3ページのうち第p−1,p−2ページが第n表示面ではなく第n−1表示面にあるので、そのことに注意して展開する。以下、各ステップを順に説明する。
【０３２８】
まず引数nが奇数であるか、L(n)=0すなわち第n表示面に一ページも割り当てられていない場合は（S2202）、この処理の対象で無いので直ちに終了する。次に、呼び出された時点での各表示面21中のページ数（L(i), 1≦i≦NS）を記憶するために、新たに長さNSのリストXを作成しそこに値をコピーしておく。本処理では、複数の表示面21に渡ってページを移動するが、その作業の間にL(i)の値が変わってしまうので、予めXにコピーしておきX(i)の方を参照する。基本的にはX(i)=L(i) , 1≦i≦NSとするが、操作を開始する第n,n−1表示面に関しては、それぞれに一ページだけ残るようにめくる。その際、後に説明するステップS2204,S2208において一回目のループが二回目以降と統一的に取り扱えるので、多少技巧的ではあるがi=n−1,n,n+1の時に関しては、X(n−1)=a, X(n)=b, X(n+1)=cと値を決めておく。ここでa,b,cは以下のようにして求める。まずaは、L(n)≧3ならa=L(n−1)、それ以外の場合はa=L(n)+L(n−1)−3。次にbは、b=L(n)+L(n−1)−2−a。最後にcは、c=L(n)−1−bである（S2203）。
【０３２９】
これらa,b,cを求める式は複雑であるが、b+c=L(n)−1, a+b=L(n)+L(n−1)−2のように、移項して和の形にすると比較的簡単な式になる。要するにaが定まれば、この簡単な関係式からb,cが順に定まるようになっている。肝心のaの求め方であるが、意図としては以下のようになる。L(n)≧3であれば、第n表示面には展開に必要なページ数が十分あるので、第n−1表示面のページは全て（L(n−1)ページ）、二つ前の表示面21に移動できる。そうでなければ、第n表示面には展開に必要なページ数が足りず、第n−1表示面から足りないページを借りる必要があり、そのページ数は3−L(n)である。そしてその分、第n−1表示面のページのうち二つ前の表示面21に移動できるページは減って、L(n−1)−(3−L(n))=L(n−1)+L(n)−3ページとなる。
【０３３０】
次にnに関するループ処理に入る。まずMovePrev2Evenを引数n、krでX(n)+X(n+1)回呼び出す（S2204）。ループの一回目ではこの処理は、第n表示面にあるページを、一ページだけ残して第n−1表示面に移動する（先に指摘したようにX(n)+X(n+1)=b+c=L(n)−1であり、これは第n表示面にあるページ数より1少ない値である）。ループの二回目以降では、まず前半のX(n)回の呼び出しで、もともと第n表示面にあったページを全て第n−1表示面に移動する（これらのページは最終的には、後のステップS2208において第n−2表示面に移動する）。続いて後半のX(n+1)回の呼び出しでは、もともと第n+1表示面にあったページ（これらのページは、直前のループのステップS2208において、第n+1表示面から第n表示面に一度移動させられている）を全て、第n−1表示面に移動する。
【０３３１】
なお、第4実施形態のドミノ両面前方移動手段M17（MovePrev2Domino）のフローチャート図61では、ステップS2204と同様の処理をステップS1809, S1810と二回に分割していた。本フローチャートで一ステップにまとめている理由は、次の通りである。すなわち、X(n)+X(n+1)と和を取れば0以上であるが、X(n+1) 単体では負の値を取る場合があるため、二つのステップに分割すると呼び出し回数が負の値になる場合が生じてしまう。これを避けるため一ステップにまとめている。
【０３３２】
さて、上記の呼び出しが一つでも失敗していると（S2205）、ページ表示テーブル115は意図しない状態にあるので、最後にステップS2204を実行した直前の状態にテーブルを戻して（S2206）処理を終了する。次にnが2に等しければ（S2207）、続くステップでこれ以上ページを前に移動できないので終了する。
【０３３３】
続いてMovePrev2Odd(n−1,kr)を(X(n−1)+X(n))/2回（これをC回とする）呼び出す（S2208）。この処理は、ループの一回目では、もともと第n,n−1表示面にあったページを、それぞれの表示面に一ページだけ残して、第n−2表示面に移動する（先に指摘したようにX(n−1)+X(n)=a+b=L(n)+L(n−1)−2であり、これはもともと第n,n−1表示面にあったページ数の合計より2少ない値である。また、MovePrev2Oddは一回の呼び出しにつき2ページを移動するので、最後に2で割って呼び出し回数Cとする）。ループの二回目以降では、もともと第n,n−1表示面にあったページを全て、第n−2表示面に移動する（ただし前述のように、このうちもともと第n−1表示面にあったページは、次のループのステップS2204において、更に第n−3表示面に移動させられる）。
【０３３４】
上記の呼び出しが一つでも失敗していると（S2209）、ページ表示テーブル115は意図しない状態にあるので、最後にステップS2207を実行した時点にテーブルの状態を戻して（S2212）処理を終了する。次に、dominoが偽なら、第m−1,m−2表示面において、この処理開始時点において第n表示面において可読であったページp（p=Pm(L(m))）の続きのページである、第p−1,p−2ページを可読にするという目的は既に達せられているので終了する（n=mであったことに注意）。また、C=0だった場合は、ドミノ移動の最中であってもドミノの連鎖がここでストップするので（ドミノ倒しで言うならば、ドミノのピースがここで抜けている）、終了する（S2210）。それ以外の場合は、ドミノ移動を続けるためnを2減らして（S2211）、二つ前の表示面21に対して同様のことを繰り返す。
【０３３５】
＜展開両面後方移動手段M26（MoveNext2Unfold）のフローチャート＞
図70が展開両面後方移動手段M26（MoveNext2Unfold）のフローチャートである。引数は三つあり、表示面番号n（奇数）、保存区間の種別kr（"狭義"または"広義"）、ドミノ移動するかdomino（真または偽）である（S2301）。この処理は、自然なページ配置条件を保存する。MoveNext2Unfoldは典型的には以下のタイミングで呼び出される。すなわち、ユーザーが第m,m+1表示面を見開いて読んだ後、めくり操作により第m+2,m+3表示面を読もうとする時に、ユーザー操作検知手段123が｛タイプ=展開型、再配置方法=《後方移動もしくはドミノ後方移動》、表示面=m+1｝という通知をページ移動手段124に送る。ページ移動手段124は、MoveNext2Unfoldを引数n=m+1、kr=gRESV、domino=《再配置方法が"ドミノ後方移動"なら真、そうでなければ偽》で呼び出す。
【０３３６】
展開のページ移動は以下のようになる。第n表示面で可読なページをpとすると、nは奇数であるのでp=Pn(1)である。まず一番簡単なL(n)=3、すなわち第n表示面にちょうど3ページある場合について説明する。この時Pn=[p,p+1,p+2]であるが、これらを展開してそれぞれ第n,n+1,n+2表示面に移動する。すなわち第n表示面には第pページを、第n+1表示面には第p+1ページを割り当てる（それぞれ、その表示面21に割り当てられた唯一のページとなる）。更に第n+2表示面に対してはPn+2の先頭に第p+2ページを追加し、当該ページを可読にする。これによりユーザーはページをめくった先の第n+1,n+2表示面において、第pページの続きである第p+1,p+2ページをスムーズに読むことができる（n=m+1であったことに注意）。なお、この際もともと第n+1表示面にあったページは、一緒に後方の表示面21に移動させられる。
【０３３７】
L(n)＞3やL(n)＜3の時の注意点は、MovePrev2Unfoldと同様であるので説明を省略する。以下、各ステップを順に説明する。
【０３３８】
まず引数nが偶数であるか、L(n)=0すなわち第n表示面に一ページも割り当てられていない場合は（S2302）、この処理の対象で無いので直ちに終了する。次に、呼び出された時点での各表示面21中のページ数（L(i), 1≦i≦NS）を記憶するために、新たに長さNSのリストXを作成しそこに値をコピーしておく。本処理では、複数の表示面21に渡ってページを移動するが、その作業の間にL(i)の値が変わってしまうので、予めXにコピーしておきX(i)の方を参照する。基本的にはX(i)=L(i) , 1≦i≦NSとするが、操作を開始する第n,n+1表示面に関しては、それぞれに一ページだけ残るようにめくる。その際、後に説明するステップS2304,S2308において一回目のループが二回目以降と統一的に取り扱えるので、多少技巧的ではあるがi=n−1,n,n+1の時に関しては、X(n−1)=c, X(n)=b, X(n+1)=aと値を決めておく。ここでa,b,cは以下のようにして求める。まずaは、L(n)≧3ならa=L(n+1)、それ以外の場合はa=L(n)+L(n+1)−3。次にbは、b=L(n)+L(n+1)−2−a。最後にcは、c=L(n)−1−bである（S2303）。
【０３３９】
これらa,b,cを求める式は複雑であるが、詳細はMovePrev2Unfoldと同様であるので説明を省略する。
【０３４０】
次にnに関するループ処理に入る。まずMoveNext2Oddを引数n、krでX(n)+X(n−1)回呼び出す（S2304）。ループの一回目ではこの処理は、第n表示面にあるページを、一ページだけ残して第n+1表示面に移動する（先に指摘したようにX(n)+X(n−1)=b+a=L(n)−1であり、これは第n表示面にあるページ数より1少ない値である）。ループの二回目以降では、まず前半のX(n)回の呼び出しで、もともと第n表示面にあったページを全て第n+1表示面に移動する（これらのページは最終的には、後のステップS2308において第n+2表示面に移動する）。続いて後半のX(n−1)回の呼び出しでは、もともと第n−1表示面にあったページ（これらのページは、直前のループのステップS2308において、第n−1表示面から第n表示面に一度移動させられている）を全て、第n+1表示面に移動する。
【０３４１】
上記の呼び出しが一つでも失敗していると（S2305）、ページ表示テーブル115は意図しない状態にあるので、最後にステップS2304を実行した直前の状態にテーブルを戻して（S2306）処理を終了する。次にnがNS−1に等しければ（S2307）、続くステップでこれ以上ページを後ろに移動できないので終了する。
【０３４２】
続いてMoveNext2Even(n+1,kr)を(X(n+1)+X(n))/2回（これをC回とする）呼び出す（S2308）。この処理は、ループの一回目では、もともと第n,n+1表示面にあったページを、それぞれの表示面に一ページだけ残して、第n+2表示面に移動する。ループの二回目以降では、もともと第n,n+1表示面にあったページを全て、第n+2表示面に移動する（ただし前述のように、このうちもともと第n+1表示面にあったページは、次のループのステップS2304において、更に第n+3表示面に移動させられる）。
【０３４３】
上記の呼び出しが一つでも失敗していると（S2309）、ページ表示テーブル115は意図しない状態にあるので、最後にステップS2307を実行した時点にテーブルの状態を戻して（S2312）処理を終了する。次に、dominoが偽なら、第m+2,m+3表示面において、この処理開始時点において第m+1表示面において可読であったページp（p=Pm+1(1)）の続きのページである、第p+1,p+2ページを可読にするという目的は既に達せられているので終了する（n=m+1であったことに注意）。また、C=0だった場合は、ドミノ移動の最中であってもドミノの連鎖がここでストップするので、終了する（S2310）。それ以外の場合は、ドミノ移動を続けるためnを2増やして（S2311）、二つ後の表示面21に対して同様のことを繰り返す。
【０３４４】
＜動作例＞
MovePrev2Unfold, MoveNext2Unfoldを用いた展開型移動の動作例を説明する。図71の列（0）に書いた状態にページ表示テーブル115があり、ユーザーが第2,3表示面を読んだ後、表示装置2を物理的にめくって第4,5表示面を読む場合を考える。なお図中で背景がグレーの数字は、ユーザーが読もうとしている位置の左右の表示面21において可読なページを表す。またこの時保存区間は指定されていないものとする。更に、ユーザーは再配置方法としてドミノ移動を指示したとする。
【０３４５】
ユーザーが物理的なめくり操作で第4,5表示面を読もうとすると、ページ移動手段124はMoveNext2Unfoldを引数n=3、kr=gRESV、domino=真で呼び出す。その結果、図70のフローチャートのステップS2303においてX(2)=−1, X(3)=1, X(4)=−1と初期化され、ステップS2304, S2308では一度も呼び出しが行われず、最終的にステップS2310においてC=0であるので終了する。この動作の意味するところは、図71の列（0）の状態は、既に第4,5表示面において第6,7ページが可読であるので展開が済んでおり、ユーザーは表示装置2をめくって開巻位置を変更するだけで、第5ページの続きのページをスムーズに読むことができるということである。
【０３４６】
続いて、ユーザーが二回目のめくり操作で第6,7表示面を読もうとすると、ページ移動手段124はMoveNext2Unfoldを引数n=5、kr=gRESV、domino=真で呼び出す。その結果、図70のフローチャートのステップS2303においてX(4)=1, X(5)=2, X(6)=2と初期化され、一回目のループ終了時には図72の列（2）のようになる。続いてループは一回では終わらず、n=7とした二回目のループに入る。今度はX(6)=2,X(7)=0,X(8)=0であるので、ページ表示テーブル115は列（3）のようになる。そしてこの時C=0であるので、ループは終了する。
【０３４７】
更に、ユーザーが三回目のめくり操作で第8,9表示面を読もうとすると、ページ移動手段124はMoveNext2Unfoldを引数n=7、kr=gRESV、domino=真で呼び出す。その結果、図70のフローチャートのステップS2303においてX(6)=0,X(7)=1,X(8)=1と初期化され、一回目のループ終了時には図73の列（4）のようになる。続いて、ループは一回では終わらずn=9とした二回目のループに入る。今度はX(8)=1, X(9)=3, X(10)=1であり、またn=NS−1であるのでステップS2307でループを抜け、ページ表示テーブル115は列（5）のようになる。
【０３４８】
MovePrev2Unfoldを利用した、「展開型の前方移動」のめくり操作の場合も同様である。
【０３４９】
最後に、図65、図66、図69、図70に示した展開型の移動のバリエーションについて二つ述べる。一つ目は、第4実施形態の時と同様の議論であるが、ステップS2007,S2107,S2210,S2310の分岐においてドミノの連鎖が止まった（ドミノのピースが抜けている）と判断した時に、ページの移動を終了しているが、その場合でも、あたかも透明なピースがあるかのようにページの移動を続ける動作が考えられる。その場合は、前記のステップS2007,S2107,S2210,S2310では、ループの二回目以降はX(n)=0もしくはC=0の条件式は常に偽とした処理に変更すれば良い。ここで「ループの二回目以降は」と付けたのは、ループの一回目でのX(n)=0もしくはC=0という条件は、「ドミノの連鎖が止まった」という意味ではなく「そもそも展開する必要がない」という意味であり、その場合はページ移動を終了すべきだからである。二つ目は、第2,3実施形態の時と同様の議論であるが、失敗時にページ表示テーブル115を過去の状態に戻しているが、ユーザーに対してエラーが発生した場所や理由のヒントを与えるために、これらのステップを除去してテーブルを戻さない動作も考えられる。
【０３５０】
［第6実施形態］
まずは両面タイプの書籍を考える。これまで表表紙（第1ページ）と裏表紙（第NPページ）は特に特別扱いをしていなかった。そのため、例えば連動型の移動の際に、第1ページや第NPページが、第1表示面や第NS表示面から離れ、中間の表示面21に移動してしまうことが起こり得た。それはそれで問題無いと考えることもできるが、表表紙と裏表紙は、常にそれぞれ最初と最後の表示面21に表示されているのが望ましいという考え方もある。
【０３５１】
そのような場合は、表表紙（p=1）、表表紙の裏側（p=2）、裏表紙（p=NP）、裏表紙の裏側（p=NP−1）の4ページを外し、更に第1表示装置及び第ND表示装置（それぞれDS,DEと呼ぶことにする）を外した、新たな電子書籍1の構成を考える。この新たな電子書籍1では、ND−2個の表示装置2にNP−4枚のページが表示される（表示装置番号と表示面番号は1から振り直してある）。そしてこれまで説明して来たページ移動の操作は、この新たな書籍に対して適用されると考えれば良い。そして今度は、この新たな書籍に対し、先ほど外したDSを第1表示装置の前に、DEを第ND−2表示装置の後に取り付ける。更に、表示装置DSには表表紙と表表紙の裏側を常に表示し、表示装置DEには裏表紙と裏表紙の裏側を常に表示するようにすれば、表紙は動かないという条件を満たす、元の書籍を再構成することができる。
【０３５２】
片面タイプの書籍の場合も同様にして、表紙の動かない書籍を構成することができる。すなわち、表紙（p=1）を外し、更に第1表示装置（DSと呼ぶことにする）を外した、新たな電子書籍1の構成を考える。この新たな電子書籍1では、ND−1個の表示装置にNP−1枚のページが表示され、これまで説明して来たページ移動の操作は、この新たな書籍に対して適用されると考える。そして今度は、この新たな書籍に対し、先ほど外したDSを第1表示装置の前に取り付ける。更に、表示装置DSには表紙を常に表示するようにすれば、表紙は動かないという条件を満たす、元の書籍を再構成することができる。
【０３５３】
［第7実施形態］
第1実施形態の実施例5においては、片面タイプの書籍の最小構成として、2枚の表示面21を持つ場合を説明した。本実施形態では、両面タイプの書籍の場合について説明する。2個の表示装置2を持ち、従って4枚の表示面21を持つ書籍を考える。ここでは標準両面偶後方移動手段M07（MoveNext2Even）、標準両面奇前方移動手段M08（MovePrev2Odd）のみを使用する（標準両面偶前方移動手段M06（MovePrev2Even）、標準両面奇後方移動手段M09（MoveNext2Odd）は使わない）。この2つの移動手段しか使用しない場合、第1表示面と第4表示面は孤立する。すなわちP1とP4は絶対に変化せず、P2とP3の間でページが行き来するだけである。
【０３５４】
そこでページ表示テーブル115の初期状態として、P1=[1]かつP4=[NP]、すなわち表表紙と裏表紙がそれぞれ第1,4表示面に表示されている状態を仮定し、以降第1,4表示面のことは無視することにする（更に進んで、第1,4表示面を完全に無くしてしまい、片面タイプの表示装置2で第2,3表示面を構成した電子書籍装置1を考えても良い）。これは見方を変えると、見開き二枚の表示面21を持ち、ページ数がNP−2の電子書籍装置1を考えることでもある（表示装置番号と表示面番号は、今述べた事情により2から始まっている）。
【０３５５】
［実施例22］
図74と図75に、NP=16の場合の動作例を示した。第1,4表示面は無視しているので、表には示していない。また、ページには第2〜15ページの番号が振られている。図74aの初期状態では、第6,7ページが可読になっている。ここでユーザーが第3表示面において"基本型"のめくり操作を行い、ページ移動手段124がMovePrev2Oddを引数n=3、kr=gRESVで呼び出したとする。その結果、図74bのように第8,9ページが可読になる。続いて同様に、めくり操作を三回繰り返すと、ページ表示テーブル115は図74c,d,eのように変化し、それぞれで第10,11ページ、第12,13ページ、第14,15ページが可読になって、ユーザーはページを読み進めることができる。
【０３５６】
図75aは、図74aと同じ初期状態である。今度はユーザーが第2表示面においてめくりの操作を行い、ページ移動手段124がMoveNext2Evenを引数n=2、kr=gRESVで呼び出したとする。その結果、図75bのように第4,5ページが可読になる。続いて同様にめくりの操作を行うと、ページ表示テーブル115は図75cのようになり、第2,3ページが可読になって、ユーザーはページを遡ることができる。
【０３５７】
なお、図74においてe→d→c→b→aと辿る逆向きのページ移動は、図75と同じめくり操作をユーザーが行えば可能である。逆に、図75においてc→b→aと辿る逆向きのページ移動は、図74と同じめくり操作をユーザーが行えば可能である。以上により、本構成における電子書籍装置1で一枚ずつめくりを行う操作を、全ての場合において説明したことになる。
【符号の説明】
【０３５８】
1    電子書籍装置
2    表示装置
3    コントローラー
11    記憶部
12    処理部（CPUなど）
13    センサー部
14    表示部
111    書籍データベース
112    書籍構造データベース
113    保存区間テーブル
114    開巻位置変数
115    ページ表示テーブル
116    グローバル設定テーブル
121    書籍構造データ構築手段
122    保存区間テーブル更新手段
123    ユーザー操作検知手段
124    ページ移動手段
125    ページ表示手段
131    タッチセンサー
132    ひずみセンサー
133    照度センサー
134    押しボタン列
1111    書籍データ
1121    書籍構造データ
21    表示面
22    エッジコネクター
23    電極（処理部との通信及び電源供給用）
24    押しボタン
31    内蔵メモリー
【図１】
2014041569.tif 000003
【図２】
2014041569.tif 000004
【図３】
2014041569.tif 000005
【図４】
2014041569.tif 000006
【図７】
2014041569.tif 000007
【図８】
2014041569.tif 000008
【図９】
2014041569.tif 000009
【図１０】
2014041569.tif 000010
【図１１】
2014041569.tif 000011
【図１２】
2014041569.tif 000012
【図１３】
2014041569.tif 000013
【図１４】
2014041569.tif 000014
【図１５】
2014041569.tif 000015
【図１６】
2014041569.tif 000016
【図１７】
2014041569.tif 000017
【図１８】
2014041569.tif 000018
【図１９】
2014041569.tif 000019
【図２０】
2014041569.tif 000020
【図２１】
2014041569.tif 000021
【図２２】
2014041569.tif 000022
【図２３】
2014041569.tif 000023
【図２４】
2014041569.tif 000024
【図２５】
2014041569.tif 000025
【図２６】
2014041569.tif 000026
【図２７】
2014041569.tif 000027
【図２８】
2014041569.tif 000028
【図２９】
2014041569.tif 000029
【図３０】
2014041569.tif 000030
【図３１】
2014041569.tif 000031
【図３２】
2014041569.tif 000032
【図３３】
2014041569.tif 000033
【図３４】
2014041569.tif 000034
【図３５】
2014041569.tif 000035
【図３６】
2014041569.tif 000036
【図３７】
2014041569.tif 000037
【図３８】
2014041569.tif 000038
【図３９】
2014041569.tif 000039
【図４０】
2014041569.tif 000040
【図４１】
2014041569.tif 000041
【図４２】
2014041569.tif 000042
【図４３】
2014041569.tif 000043
【図４４】
2014041569.tif 000044
【図４５】
2014041569.tif 000045
【図４６】
2014041569.tif 000046
【図４７】
2014041569.tif 000047
【図４８】
2014041569.tif 000048
【図４９】
2014041569.tif 000049
【図５０】
2014041569.tif 000050
【図５１】
2014041569.tif 000051
【図５２】
2014041569.tif 000052
【図５３】
2014041569.tif 000053
【図５４】
2014041569.tif 000054
【図５５】
2014041569.tif 000055
【図５６】
2014041569.tif 000056
【図５７】
2014041569.tif 000057
【図５８】
2014041569.tif 000058
【図５９】
2014041569.tif 000059
【図６０】
2014041569.tif 000060
【図６１】
2014041569.tif 000061
【図６２】
2014041569.tif 000062
【図６３】
2014041569.tif 000063
【図６４】
2014041569.tif 000064
【図６５】
2014041569.tif 000065
【図６６】
2014041569.tif 000066
【図６９】
2014041569.tif 000067
【図７０】
2014041569.tif 000068
【図７４】
2014041569.tif 000069
【図７５】
2014041569.tif 000070
【図７６】
2014041569.tif 000071
【図５】
2014041569.tif 000072
【図６】
2014041569.tif 000073
【図６７】
2014041569.tif 000074
【図６８】
2014041569.tif 000075
【図７１】
2014041569.tif 000076
【図７２】
2014041569.tif 000077
【図７３】
2014041569.tif 000078