■ページ操作へのこだわり

AD-BOOKで最もこだわったのはページ操作です。下図は代表的なROOSのコントローラー(5種類から選択可能な1つ)で、1~8が主要なページ操作ボタンです。9~12は特殊機能ボタン、13は直接ページを指定する機能、14が終了ボタンです。

文字や記号類で機能は概ね想像が付くと思いますが、これから番号順に説明しましょう。
1.トップページ(最初のページ)に戻る
2.前の章に戻る
3.次の章に進む
4.上へスクロール
5、下へスクロール
6.次のページへ進む
7.前のページへ戻る
8.履歴を辿ってページをさかのぼる
現在のページ送りは右方向になっているため、右ページ送りボタンが大きくなっています。これに合わせて全体のページ送りボタンは右方向を前提にデザインしています。AD-BOOKでは左方向への設定もできるため、その場合はデザインも左方向前提に変更になります。これらのボタンはAD-BOOKの標準機能で、私自身は電子書籍に必須の機能と考えています。4、5は縦のスクロールバーを代行するボタンで、クリックするごとに一定量縦に移動します。昨今のワイドモニターは横方向は広いものの縦方向は狭いので、スクロールする機会も多いと思います。スクロール用ボタンをページ送りボタンに近接して配置することで、操作が楽になるよう配慮しています。

13はまずセレクタで章番号を選び、次にページ番号を入力し、最後に移動ボタンを押して目的のページにジャンプします。一般の書籍では章数がさほど多くは無いのでセレクタに、ページは最大の9999まで入力可能になっています。章を指定すると自ずと最大ページ数が確定するため、存在しないページを指定しても受け付けないようになっています。ここのインターフェースには実はジレンマがあり、本当はどちらもセレクタで選択する方が使いやすいのです。しかし、数値が大きくなるとセレクタでは表示できなくなるケースが出てきます。ページと同じ数値入力にすれば対応できますが、今度は使い勝手が悪くなります。章数・ページ数を限定して、それ未満ではセレクタ、以上では数値入力に自動的に切り替わるようにする方法もありますが、プログラムが複雑になる上に操作の一貫性も崩れます。MIRAGEでは数値をボタン入力にすることでこのジレンマを解消していますが、数値入力の場合に範囲外の数値を入力する可能性があり、それを防ぐ対策も必要になります。全ての課題をクリアする入力方法はあるのか、まだまだ改良の余地はあるのかもしれません。

残る特殊ボタンの機能は次の通りです。
9.自動ページ送り&スクロールのON/OFF
10.ナビ(目次や機能設定)の表示/非表示
11.サウンドのON/OFF
12.操作マニュアルの表示/非表示
特殊ボタンの動作中はボタンが光って知らせます。AD-BOOKで扱うサウンドはBGM、効果音、音声(ナレーション等)の3つです。それぞれが動作可能な場合(ナビで設定)、サウンドボタンで一括してON/OFFを切り替えます。10、11は重要な機能なので後の項で改めて解説します。操作に困った時はいつでもマニュアルを呼び出せるので、初めての方でも簡単に扱えるようになると思います。

では、自動ページ送り&スクロール機能について少し技術的なことをお話します。この機能は一般的な電子書籍には無いものです。あれば便利なのですが、各ページの内容によって読むことができる時間には大幅にばらつきがあり、実現は困難と考えるのが普通だからなのでしょう。マンガや図版中心のカタログのように、ある程度一定で読み進めることができる場合以外には、確かに実用化は困難と考えられます。最初からダメなものと諦めてしまえばそれまでなので、COSMOLIGHTではあえて挑戦することで電子ブックの可能性を探ることにしました。この機能は元々読者に使うかどうかを委ねているので、読者が使いたいと思えば良いだけの話です。使いたいシーンの中でそれなりに便利に利用できれば良い、そう割り切れば何も完璧を目指す必要はありません。

そこで、まずはページ表示を一定時間にして、読者のペースによって5段階に速度(表示時間)を選べる自由度を持たせました。表示時間は何ページか実際に読んでみて、平均的なページ表示時間を設定します。ただし、単にページを送るだけでは縦に大きなコンテンツでスクロールバーが表示された時に、画面に収まりきらない下の方まで読むことができません。自分でスクロールしていては何のための自動送りかわからないので、AD-BOOKでは縦スクロールも自動で行うようにしました。現在と違って当時のモニターの表示サイズは小さかったので、縦の自動スクロールは必須とも言えたのです。スクロールでこだわったのは、スクロールの初めと終わりに停止期間を設けたことです。いきなりスクロールを開始しては、上の方の文章がすぐにモニター外へ消えて読めなくなるからです。従って、ある程度読み進んだ時点でスクロールを開始するようにしました。最後にも停止期間を入れたのは、どうしてもスクロール中は読み辛くなるため、スクロール時間をなるべく小さくしたかったからです。