(57)【特許請求の範囲】
【請求項１】
電子書籍(「ebook」)を表示している電子書籍リーダーモジュールの機能を拡張する方法であって、
サーバコンピュータが、前記電子書籍リーダーモジュールを実行しているクライアントデバイスから、前記クライアントデバイスを使用しているユーザを指定するユーザ識別子と、前記電子書籍リーダーモジュールによって表示された前記電子書籍を指定する電子書籍識別子とを受信するステップと、
前記サーバコンピュータが、前記ユーザにとって利用可能である層を示すユーザ層データから前記ユーザに関連付けられる１つまたは複数の層を決定するステップと、を備え、
前記層は、前記電子書籍リーダーモジュールに機能を追加する機能を実現するために前記クライアントデバイスにより実行されるプログラムモジュールを含み、
前記ユーザに関連付けられる層のプログラムモジュールが前記クライアントデバイスで実行されるとき、前記ユーザに関連付けられる層は、選択された電子書籍のコンテンツに関連付けられた層データをユーザにとって閲覧可能にするために、追加される前記機能を提供するように構成され、
前記方法は、さらに、
前記サーバコンピュータが、前記電子書籍に利用可能である層を示す書籍層データから前記電子書籍リーダーモジュールによって表示される前記電子書籍に関連付けられる１つまたは複数の層を決定するステップを、備え、
前記電子書籍に関連付けられる層のプログラムモジュールが前記クライアントデバイスで実行されるとき、前記電子書籍に関連付けられる層は、ユーザにより選択された電子書籍のコンテンツをユーザにとって閲覧可能にするめに、追加される前記機能を提供するように構成され、
前記方法は、さらに、
前記サーバコンピュータが、前記ユーザに関連付けられる層および前記識別される電子書籍に関連付けられる層のうちの少なくとも１つに基づき、１つまたは複数の層を含む層のリストを決定するステップと、
前記ユーザが層を選択して、前記選択された層のプログラムモジュールを実行して前記電子書籍リーダーモジュールの前記機能を拡張することを可能にするために、前記サーバコンピュータが、前記層のリストを前記クライアントデバイスに送信するステップを、備える方法。
【請求項２】
前記ユーザに関連付けられる層が、前記ユーザが使用することを以前にリクエストした層を備える、請求項１に記載の方法。
【請求項３】
前記識別される電子書籍に関連付けられる層が、前記識別される電子書籍に関連付けられるブラックリストにより指定される層を備え、前記ブラックリストは、前記識別される電子書籍で使用することが許可されない層を指定するためのリストである、請求項１または２に記載の方法。
【請求項４】
前記識別される電子書籍に関連付けられる層が、前記識別される電子書籍に関連付けられるホワイトリストにより指定される層を備え、前記ホワイトリストは、前記識別される電子書籍で使用することが許可される層を指定するためのリストである、請求項１から３のいずれか１項に記載の方法。
【請求項５】
前記識別される電子書籍に関連付けられる層が、前記識別される電子書籍に関連付けられる追加リストにより指定される層を備え、前記追加リストは、前記識別される電子書籍の出版社により、当該電子書籍で使用することが指定されている層を指定する、請求項１から４のいずれか１項に記載の方法。
【請求項６】
前記電子書籍のコンテンツのタイプは、テキストおよび画像を含み、
前記層のリストが、層を使用して閲覧することができる電子書籍のコンテンツのタイプを指定するデータを含む、請求項１から５のいずれか１項に記載の方法。
【請求項７】
前記電子書籍リーダーモジュールは、前記電子書籍のコンテンツを表示し、
前記層のリストが、層によってサポートされる表示モードを指定するデータを含み、
前記表示モードは、実行される前記層のプログラムモジュールによってレンダリングされるコンテンツを、表示している前記電子書籍のコンテンツにオーバレイするモード、表示している電子書籍のコンテンツと置換するモードを含む、請求項１から６のいずれか１項に記載の方法。
【請求項８】
前記方法は、さらに、
前記サーバコンピュータが、前記電子書籍リーダーモジュールによって表示される前記電子書籍内のページの範囲を指定するページ範囲を前記クライアントデバイスから受信するステップと、
前記サーバコンピュータが、前記ユーザ、前記電子書籍、前記ページ範囲、および前記層のリスト上の層に関連付けられる層データを前記クライアントデバイスに送信するステップと、をさらに備え、前記層データは、ユーザが閲覧において入力した情報から層によって作成された注釈を備え、
前記クライアントデバイスは、前記選択された層のプログラムモジュールを実行することにより、前記ユーザが前記注釈を閲覧することを可能にする、請求項１から７のいずれか１項に記載の方法。
【請求項９】
前記クライアントデバイスが、前記送信するステップにおいて前記サーバコンピュータから送信された前記層のリストに含まれる層から、有効にされた１つまたは複数の層を決定するステップをさらに備える、請求項１から８のいずれか１項に記載の方法。
【請求項１０】
前記電子書籍のコンテンツのタイプは、テキストおよび画像を含み、
前記ユーザが前記電子書籍内のコンテンツを選択しており、前記クライアントデバイスは、前記選択されたコンテンツのタイプから当該コンテンツに使用可能な層のリストを決定するステップをさらに備える、請求項１から９のいずれか１項に記載の方法。
【請求項１１】
前記クライアントデバイスが、
前記ユーザが前記電子書籍のコンテンツを選択することに応答して、選択された前記電子書籍のコンテンツに関連付けられた前記層データを閲覧するために使用され得る層の利用可能なリストを表示するステップと、
前記サーバコンピュータが、
前記クライアントデバイスから、当該クライアントデバイスを用いて前記利用可能なリストから選択された層のリストである選択リストを受信したことに応答して、当該利用可能なリストから選択された層のプログラムモジュールを前記クライアントデバイスに送信するステップと、をさらに備える、請求項１から１０のいずれか１項に記載の方法。
【請求項１２】
前記層のプログラムモジュールが、前記クライアントデバイスによって提供されるアプリケーションプログラミングインターフェース(API)を使用する、請求項１１に記載の方法。
【請求項１３】
請求項１〜１２のいずれか１項に記載の方法を少なくとも１つのプロセッサに実行させるためのプログラム。
【請求項１４】
電子書籍(「ebook」)を表示している電子書籍リーダーモジュールの機能を拡張するためのコンピュータシステムであって、
請求項１３に記載のプログラムを格納する少なくとも１つのコンピュータ可読記憶媒体と、
前記コンピュータ可読記憶媒体のプログラムを実行するための少なくとも１つのプロセッサと、を備える、コンピュータシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般的に電子書籍の分野に関し、詳細には、電子書籍と対話するためのツールのフレームワークに関する。
【背景技術】
【０００２】
電子書籍(「ebook」)には様々なフォーマット(たとえば、IDPF/EPUBおよびPDF)があり、様々なデバイス(たとえば、専用読取りデバイスおよび汎用モバイルデバイス、タブレットコンピュータ、ラップトップコンピュータ、ならびにデスクトップコンピュータ)を使用して読むことができる。各デバイスは、電子書籍をユーザに表示する読取りソフトウェア(「電子書籍リーダー(e-reader)」)を含む。ユーザが電子書籍と対話することを可能にする電子書籍リーダーは、一般的に特定のデバイス、特定の電子書籍フォーマット、および/または特定の電子書籍に特有のものである。また、通常対話機能は電子書籍リーダーに内蔵されている。電子書籍リーダーに付属の機能のセットは限定されているので、ソフトウェア開発者は、既存の機能を拡張すること、および/または新しい機能を追加することを望んでいる。しかしながら、電子書籍リーダー機能を実装するためのフレームワークが存在しない。
【発明の概要】
【課題を解決するための手段】
【０００３】
上記および他の問題は、電子書籍(「ebook」)を表示している電子書籍リーダーモジュールの機能を拡張するための、コンピュータ実装方法、非一時的コンピュータ可読記憶媒体、およびコンピュータシステムによって対処される。本方法の実施形態は、電子書籍リーダーモジュールを実行しているクライアントデバイスから、そのクライアントデバイスを使用しているユーザを指定するユーザ識別子、および電子書籍リーダーモジュールによって表示された電子書籍を指定する電子書籍識別子を受信するステップを備える。本方法は、ユーザに関連付けられる1つまたは複数の電子書籍リーダーツール(「層」)を決定するステップと、電子書籍に関連付けられる1つまたは複数の層を決定するステップと、層のリストをクライアントデバイスに送信するステップとをさらに備える。クライアントデバイスは、ユーザが層を選択して、選択された層を使用して電子書籍のコンテンツと対話することを可能にする。
【０００４】
媒体のある実施形態は、電子書籍を表示している電子書籍リーダーモジュールの機能を拡張するための、実行可能なコンピュータプログラム命令を格納する。本命令は、電子書籍リーダーモジュールを実行しているクライアントデバイスから、そのクライアントデバイスを使用しているユーザを指定するユーザ識別子、および電子書籍リーダーモジュールによって表示された電子書籍を指定する電子書籍識別子を受信する。本命令はさらに、ユーザに関連付けられる1つまたは複数の層を決定し、電子書籍に関連付けられる1つまたは複数の層を決定し、層のリストをクライアントデバイスに送信する。クライアントデバイスは、ユーザが層を選択して、選択された層を使用して電子書籍のコンテンツと対話することを可能にする。
【０００５】
電子書籍を表示している電子書籍リーダーモジュールの機能を拡張するためのコンピュータシステムのある実施形態は、実行可能なコンピュータプログラム命令を格納する少なくとも1つの非一時的コンピュータ可読記憶媒体を備える。本命令は、電子書籍リーダーモジュールを実行しているクライアントデバイスから、そのクライアントデバイスを使用しているユーザを指定するユーザ識別子、および電子書籍リーダーモジュールによって表示された電子書籍を指定する電子書籍識別子を受信するための命令を備える。本命令はさらに、ユーザに関連付けられる1つまたは複数の層を決定し、電子書籍に関連付けられる1つまたは複数の層を決定し、層のリストをクライアントデバイスに送信する。クライアントデバイスは、ユーザが層を選択して、選択された層を使用して電子書籍のコンテンツと対話することを可能にする。
【図面の簡単な説明】
【０００６】
【図１】一実施形態による、電子書籍リーダーツールのフレームワークを提供するための環境を示すハイレベルブロック図である。
【図２】一実施形態による、リポジトリ、処理サーバ、および/またはクライアントデバイスとして使用するためのコンピュータの例を示すハイレベルブロック図である。
【図３】一実施形態による、電子書籍情報の転送に関与するステップを示すシーケンス線図である。
【図４】一実施形態による、層情報の転送に関与するステップを示すシーケンス線図である。
【図５】一実施形態による、指定されたユーザが指定された電子書籍で利用するために、どの層が利用可能かを決定する方法を示す流れ図である。
【図６】一実施形態による、選択された電子書籍のコンテンツと対話するために、どの層が利用可能かを決定する方法を示す流れ図である。
【発明を実施するための形態】
【０００７】
図面(FIG)および以下の説明は、単に例示として特定の実施形態を説明する。当業者は、以下の説明から、本明細書に示される構造および方法の代替実施形態を、本明細書に説明する原理から逸脱することなしに使用できることを容易に認識できるであろう。次に、いくつかの実施形態を参照する。それらの例は添付の図面に示されている。これは、実用的である限り、図面において類似または同様の参照番号を使用することができ、類似または同様の機能を示すことができる点に留意されたい。
【０００８】
図1は、一実施形態による、電子書籍読取りソフトウェア(「電子書籍リーダー」)で使用するためのツールのフレームワークを提供するための環境100を示すハイレベルブロック図である。環境100は、企業、大学、または政府機関などの、電子書籍(「ebook」)との対話を可能にする組織によって維持され得る。図示されるように、環境100は、ネットワーク110、リポジトリ120、処理サーバ130、およびクライアントデバイス140を含む。明確にするために、各エンティティのうち1つだけが図1に示した実施形態に示されているが、他の実施形態は複数のリポジトリ120、処理サーバ130、および/またはクライアントデバイス140を有することができる。
【０００９】
ネットワーク110は、リポジトリ120、処理サーバ130、およびクライアントデバイス140間の通信経路を表す。一実施形態では、ネットワーク110は、標準的な通信技術および/またはプロトコルを使用し、インターネットを含み得る。したがって、ネットワーク110は、イーサネット(登録商標)、802.11、ワールドワイドインターオペラビリティフォーマイクロウェーブアクセス(WiMAX)、2G/3G/4Gモバイル通信プロトコル、デジタル加入者回線(DSL)、非同期転送モード(ATM)、InfiniBand、PCIエキスプレスアドバンスドスイッチングなどの技術を使用するリンクを含み得る。同様に、ネットワーク110上で使用されるネットワーキングプロトコルは、マルチプロトコルラベルスイッチング(MPLS)、伝送制御プロトコル/インターネットプロトコル(TCP/IP)、ユーザデータグラムプロトコル(UDP)、ハイパーテキスト転送プロトコル(HTTP)、簡易メール転送プロトコル(SMTP)、ファイル転送プロトコル(FTP)などを含み得る。ネットワーク110を介して交換されるデータは、バイナリ形式の画像データ(たとえば、ポータブルネットワークグラフィックス(PNG))、ハイパーテキストマークアップ言語(HTML)、拡張可能マークアップ言語(XML)などを含む技術および/またはフォーマットを使用して表すことができる。さらに、リンクのうちのすべてまたはいくつかは、セキュアソケットレイヤ(SSL)、トランスポート層セキュリティ(TLS)、仮想プライベートネットワーク(VPN)、インターネットプロトコルセキュリティ(IPsec)などの従来の暗号化技術を使用して暗号化され得る。別の実施形態では、ネットワーク110上のエンティティは、上記で説明した技術の代わりに、またはそれに加えて、カスタムおよび/または専用データ通信技術を使用することができる。
【００１０】
クライアントデバイス140は、電子書籍と対話するためにユーザによって使用される。クライアントは、ユーザが電子書籍を閲覧することを可能にする電子書籍リーダーモジュール142と、電子書籍と対話するために電子書籍リーダーツール(「層」)を使用することを可能にするクライアント層サポートモジュール144と、選択された電子書籍のコンテンツと対話するためにどの層が利用可能かを決定するクライアント利用可能層モジュール146とを含む。
【００１１】
電子書籍リーダーモジュール142は、ユーザが電子書籍を閲覧すること、および/または読み出すことを可能にする。また、電子書籍リーダーモジュール142は、電子書籍リポジトリ122(リポジトリ120の一部)に格納された電子書籍を取得するために、電子書籍サポートモジュール132(処理サーバ130の一部)と通信する。一実施形態では、電子書籍リーダーモジュール142は、ウェブブラウザ(やはりクライアントデバイス上で実行している)とともにクライアントデバイス上で実行するJava(登録商標)Scriptプログラムである。
【００１２】
クライアント層サポートモジュール144は、電子書籍と対話するために層を使用することを可能にする。また、クライアント層サポートモジュール144は、層リポジトリ124および層データリポジトリ126(リポジトリ120の一部)に格納された層情報を取得するために、サーバ層サポートモジュール134(処理サーバ130の一部)と通信する。
【００１３】
層は、ユーザが、電子書籍リーダーモジュールによって提示されている電子書籍と対話することを可能にすることによって、電子書籍リーダーモジュール142の機能を高める。具体的には、層は、ユーザが特定の電子書籍のコンテンツ(たとえば、ユーザが選択したコンテンツ、または「層データ」に関連付けられるコンテンツ)と対話することを可能にする。このように、層は、文脈上便利な双方向性を電子書籍に追加する。特定の電子書籍のコンテンツは、テキスト、画像、または他の埋め込まれたコンテンツでよい。一実施形態では、複数のタイプのコンテンツと同時に対話することができる。層は、電子書籍からの情報、層データからの情報、および/または同じものに基づいて生成された情報などの情報を表示することができる。層は、データを格納して、そのデータを特定の電子書籍のコンテンツに関連付けることができる。データは「注釈(annotation)」(層データリポジトリ126に格納された層データの一部)と呼ばれ、データが関連付けられる電子書籍のコンテンツは「注釈付きコンテンツ」と呼ばれる。既存の注釈は層データリポジトリ126から取得することができ、新しい注釈は層によって作成することができる(たとえば、ユーザと層との対話によって)。注釈は、層データおよび層データリポジトリ126を参照して後述される。層は、実行可能なコードおよびメタデータを含む。層実行可能コードは、クライアント上で実行するコンピュータプログラムモジュール(「層モジュール」)である。
【００１４】
層は、電子書籍のコンテンツと対話するための様々なタイプの機能を提供することができる。層は、第三者および/または書籍出版社など、誰でも作成することができる。例示的な層には、傍注(Margin Notes)、定義(Define)、翻訳(Translate)、本の検索(Search Book)、インターネット検索(Search Internet)、および百科事典検索(Search Encyclopedia)がある。
【００１５】
傍注-傍注層は、ユーザが電子書籍内のコンテンツを強調表示する、および/またはそこにメモを追加することを可能にする。ユーザが電子書籍内のコンテンツを選択して、次いで傍注層を使用して、選択されたコンテンツを強調表示する(様々な色のどれでも)、および/または選択されたコンテンツと関連付けるために情報(「メモ」)を入力する。ユーザは、表示された色(たとえば、黄色、緑、ピンク、または青)を選択することによって所望の強調表示色を指定するか、あるいはデフォルトの色(たとえば、黄色)を使用する。メモ情報は、たとえば、タイプ入力された文字、URL、手書きの情報、またはマルチメディア(たとえば、静止画像、ビデオ、または音声)を含み得る。特定の電子書籍のコンテンツがすでにメモと関連付けられている場合、そのコンテンツ上にカーソルを重ねることによってメモが表示される。次いで、必要に応じて、表示されたメモを編集または削除することができる。強調表示色およびメモ情報は注釈(層データの一部)の例であり、層データリポジトリ126を参照して後述する。
【００１６】
定義-定義層は、ユーザが電子書籍内のテキストの定義を閲覧することを可能にする。ユーザが電子書籍内のテキストを選択して、次いで定義層を使用して、選択されたテキストの定義を表示する。たとえば、選択されたテキストの定義とともにポップアップウィンドウが現れる。
【００１７】
翻訳-翻訳層は、ユーザが電子書籍内のテキストの翻訳を閲覧することを可能にする。ユーザが電子書籍内のテキストを選択して、次いで翻訳層を使用して、選択されたテキストの翻訳を表示する。ユーザが、選択されたテキストの言語、および所望の翻訳のための言語を指定する。たとえば、ポップアップウィンドウは、ユーザがこれらの言語を指定することを可能にする。次いで、ポップアップウィンドウが適切な翻訳を表示する。一実施形態では、翻訳層はグーグル翻訳サービスを使用する。
【００１８】
本の検索-本の検索層は、ユーザが電子書籍内のテキストをその電子書籍で検索することを可能にする。ユーザが電子書籍内のテキストを選択して、次いで本の検索層を使用して、同じ電子書籍内の選択されたテキストを検索する。本の検索層が検索結果(たとえば、引用のリスト)を表示する。
【００１９】
インターネット検索-インターネット検索層は、ユーザが電子書籍内のテキストをインターネットで検索することを可能にする。ユーザが電子書籍内のテキストを選択して、次いでインターネット検索層を使用して、選択されたテキストをインターネットで検索する。インターネット検索層が検索結果(たとえば、ウェブサイトのリスト)を表示する。
【００２０】
百科事典検索-百科事典検索層は、ユーザが電子書籍内のテキストを電子百科事典で検索することを可能にする。ユーザが電子書籍内のテキストを選択して、次いで百科事典検索層を使用して、選択されたテキストを百科事典で検索する。百科事典検索層が検索結果(たとえば、関連する百科事典の記事)を表示する。
【００２１】
一実施形態では、複数の層を同時に使用することができ、および/または同じ層の複数のインスタンスを同時に使用することができる(たとえば、異なる選択された、または注釈付き電子書籍のコンテンツのために)。別の実施形態では、層は相互に対話することができない。複数の層を同時に使用することができるが(場合によっては、同じ選択された、または注釈付きコンテンツのために)、層は相互に分離されている。
【００２２】
一実施形態では、クライアント層サポートモジュール144は、層を有効/無効にすること、層を起動すること、注釈の存在を示すこと、およびアプリケーションプログラミングインターフェース(API)を層に提供することに関連する機能を含む。層を有効/無効にすることに関して、クライアント層サポートモジュール144は、ユーザが層を有効/無効にすることを可能にする。有効にされた層を層ポップアップメニュー内でオプションとして提供することはできるが(層の手動起動を参照して後述する)、無効にされた層を提供することはできない。また、有効にされた層に関連付けられる注釈を自動的に表示することができる(層の自動起動を参照して後述する)。一実施形態では、ユーザは有効にされた層を「自動起動」と指定することができ、それによって電子書籍リーダーモジュール142が関連する注釈に関連付けられる電子書籍のコンテンツを表示すると、層を起動させる(以下で説明する)。一実施形態では、グラフィカルユーザインターフェースが「インストールされた」層(ユーザ層設定リポジトリ128によって示される)をリストアップし、様々なボックスのチェックを入れる/チェックを外すことによって、ユーザがこれらの層を有効/無効にする(および、場合によってはそれらの層を「自動起動」とマーク付けする)。次いで、これらの設定が格納されて、クライアント層サポートモジュール144によって利用可能になる。
【００２３】
層を起動することに関して、クライアント層サポートモジュール144は、層モジュールがクライアントデバイスによって実行されるように、層を起動する(すなわち、層のインスタンスを生成する)。層のインスタンス(たとえば、層によって動的にレンダリングされるコンテンツ)が電子書籍リーダーモジュールのメインウィンドウ内に表示される。一実施形態では、層を、オーバーレイ(電子書籍のコンテンツのページ全体の上に浮かんでいる)、置換(特定の電子書籍のコンテンツの上に浮かんでおり、それによって電子書籍のコンテンツを「隠している」)、サイドパネル(場合によっては、対話することができる小さいプレビューの形式で、電子書籍のコンテンツに隣接するサイドパネル内にある)、およびマージン(場合によっては、非常に限られたプレビューの形式で、電子書籍のコンテンツのマージン領域内にある)などの様々なモードで表示することができる。電子書籍リーダーモジュール142は、層がユーザインターフェース(UI)制御を作成することができる内部に表示領域を割り当てる。電子書籍リーダーモジュール142は、適切な表示領域にそれ自体をレンダリングするよう層に指示して、それ自体をレンダリングしているコンテキストの層(たとえば、オーバーレイ、置換、サイドパネル、またはマージン)を通知する。割り当てられた表示領域は、層の表示モードに依存する。一実施形態では、層は、その表示領域の大きさを変更すること、表示領域を移動させること、または表示領域外にUI要素を作成することができない。別の実施形態では、層はその表示環境のプロパティ(たとえば、表示モード、表示領域の大きさ、表示領域の位置、およびピン留め状態)をリクエストすることができ、および/またはあらゆる変更を通知され得る。
【００２４】
一実施形態では、クライアント層サポートモジュール144が層を起動すると、クライアント層サポートモジュール144も層利用データをサーバ層サポートモジュール134に送信する。次いで、サーバ層サポートモジュール134は、層利用データを格納する。一実施形態では、層利用データは、起動された層の層ID、層が起動された表示モード、ユーザID、電子書籍ID、関連付けられる(たとえば、選択された、または注釈を付けられた)コンテンツ範囲、電子書籍のコンテンツ(層APIおよびコンテキストオブジェクトを参照して後述する)、ウェブブラウザ情報、および/またはクライアントデバイス情報を含む。
【００２５】
クライアント層サポートモジュール144は、層を起動するための2つの方法、手動起動および自動起動を提供する。層の手動起動は、ユーザが層を起動することを可能にするポップアップメニューを含む。ユーザが電子書籍のコンテンツ(電子書籍リーダーモジュール142によって提示される)を選択することに応答して、クライアント層サポートモジュール144が、クライアント利用可能層モジュール146(後述する)を使用して、選択されたコンテンツと対話するためにどの層が利用可能かを決定する。次いで、クライアント層サポートモジュール144が、利用可能な層をリストアップするポップアップメニューを表示する。一実施形態では、ソート順序に応じて利用可能な層がポップアップメニューにリストアップされる。ソート順序の一例は、アルファベット順である。ソート順序の別の例は、人気(たとえば、特定の電子書籍(電子書籍ID)、または特定の電子書籍内の特定のコンテンツ範囲と対話するために、特定の層(層ID)を使用する人気)である。人気は、たとえば、サーバ層サポートモジュール134によって格納される層利用データに基づいて決定される。クライアント層サポートモジュール144が、サーバ層サポートモジュール134から層利用データを取得して、そのデータを使用して、それらの人気に応じて利用可能な層をソートする。ユーザがメニューから層エントリを選択することに応答して、特定の表示モードを使用して、その層のインスタンスが選択されたコンテンツに関して起動される。
【００２６】
層の自動起動は、電子書籍のコンテンツに関連付けられる層データを含む。電子書籍リーダーモジュール142によって表示される電子書籍のコンテンツに応答して、クライアント層サポートモジュール144が、いずれかの層データが電子書籍のコンテンツに関連付けられているかどうかを決定する。層データが電子書籍のコンテンツに関連付けられる場合(すなわち、電子書籍のコンテンツが「注釈付き」である場合)、クライアント層サポートモジュール144が、層データが層は自動的に起動されるべきであると示すかどうかを決定する。一実施形態では、層データが層は自動的に起動されるべきであると示すことができる2つの方法がある。1つの方法は、層データによって示される層(たとえば、Table 1(表1)内の層IDデータ項目)が、ユーザによって「自動起動」と指定されている(上述の、層を有効/無効にすることの一部)。もう1つの方法は、a)層データによって示される注釈付きコンテンツのスタイル(たとえば、Table 1(表1)内のスタイルデータ項目)が、層データによって示される層は自動的に起動されるべきであると指定し、b)層データによって示される層がユーザによって有効にされている。次いで、クライアント層サポートモジュール144は、特定の表示モードを使用して、層データに関する層を自動的に起動する。たとえ関連付けられる電子書籍のコンテンツがユーザによって選択されていなくても、自動的な層起動によって、層コンテンツ(たとえば、層によって提供される注釈またはデータ)が表示される点に留意されたい。
【００２７】
層のモジュールがクライアントデバイス140上に存在していないと、層インスタンスを起動することができない点に留意されたい。一実施形態では、図4のステップ430で利用可能な層のリストが受信されると、層モジュールがリポジトリ120からクライアントデバイス140に転送される(処理サーバ130およびネットワーク110を介して)。たとえば、すべての利用可能な層のモジュールが転送されるか、「インストールされた」利用可能な層(ユーザ層設定リポジトリ128で示される)のモジュールだけが転送される。別の実施形態では、層を起動する試みが行われると、手動で(たとえば、ポップアップメニューを使用して)、または自動的に(たとえば、層データに基づいて)層モジュールが転送される。たとえば、クライアント層サポートモジュール144が試みを検出し、それに応じて、リクエストを関連する層モジュールのサーバ層サポートモジュール134に送信する(ネットワーク110を介して)。サーバ層サポートモジュール134がリクエストを受信して、それに応じて、関連する層モジュールをクライアント層サポートモジュール144に送信する(ネットワーク110を介して)。別の実施形態では、層モジュールは他の任意の適切な時間に転送される。
【００２８】
層モジュールは、過去に転送されているためにクライアントデバイス140上にすでに存在し得る点に留意されたい。一実施形態では、電子書籍リーダーモジュール142が実行を停止した後、クライアントデバイス上の層モジュールが削除される。別の実施形態では、たとえ電子書籍リーダーモジュール142が実行を停止した後でも、クライアントデバイス上の層モジュールはクライアントデバイスに残る。層モジュールが残っている場合、必要に応じて後でモジュールを更新することができる(たとえば、モジュールバージョン番号によって示されるように)。
【００２９】
注釈の存在を示すことに関して、クライアント層サポートモジュール144は、注釈(層データの一部)に関連付けられる電子書籍のコンテンツ(電子書籍リーダーモジュール142によって提示される)を視覚的に示すことができる。たとえば、クライアント層サポートモジュール144は、注釈に関連付けられる電子書籍のコンテンツ(「注釈付きコンテンツ」と呼ばれる)を強調表示するか、他の方法で、あるスタイルにする。一実施形態では、クライアント層サポートモジュール144は、関連付けられる層が有効になっている注釈に関連付けられる注釈付きコンテンツだけを視覚的に示す。この実施形態では、クライアント層サポートモジュール144は、関連付けられる層が無効になっている注釈に関連付けられる注釈付きコンテンツを視覚的に示さない。
【００３０】
一実施形態では、注釈付きコンテンツの表示スタイル(「注釈付きコンテンツのスタイル」)は、固定されたオプションのセットから設定可能である。オプションは、たとえば、簡単なフォーマッティング、表示モード、および自動的な層起動を含む。簡単なフォーマッティングは、たとえば、特定のタイプの層がその位置の近くに利用可能なコンテンツを有することを示すために、電子書籍マージン内に、または電子書籍のコンテンツと並んで表示される、テキストスタイルオプション(たとえば、フォント、色、強調表示、イタリック体、太字体、下線付け、および縁取り)、およびインジケータ(たとえば、ミニアイコン、またはチクレッツ(chiclets))を含む。一実施形態では、電子書籍リーダーモジュール142によって提示されるページスライダ内に注釈付きコンテンツが表示される。これによって、ユーザが注釈付きコンテンツを有するページに戻ってくることが容易になる。表示モードは、特定の層(たとえば、注釈に関連付けられる層)を起動するための、デフォルトまたは好ましい表示モード(たとえば、オーバーレイ、置換、サイドパネル、またはマージン)を含む。自動的な層起動は、電子書籍リーダーモジュール142によって注釈付きコンテンツが表示されると、特定の層(たとえば、注釈付きコンテンツに関連付けられる注釈に関連付けられる層)が自動的に起動されるよう指定する。簡単なフォーマッティング、表示モード、および自動的な層起動は、相互に独立して使用され得る点に留意されたい。たとえば、自動的な層起動が簡単なフォーマッティングなしに使用される場合、注釈付きコンテンツは非注釈付きコンテンツとは異なるように表示されない。しかしながら、注釈付きコンテンツが表示されると、層が自動的に起動される。
【００３１】
表示スタイルはケースバイケースで設定することができるので、同じ層によって保存される注釈に関連付けられる電子書籍のコンテンツの異なるインスタンスを異なるように表示することができる(たとえば、同じ傍注層によって注釈を付けられた異なるパッセージへの黄色の強調表示対、緑色の強調表示)。既存の注釈が保存されている場合、層データの注釈付きコンテンツのスタイルを変更できる点に留意されたい。たとえば、電子書籍にインスクリプション(Inscription)を追加することを可能にするインスクリプション層を考える。インスクリプション層の層データの注釈付きコンテンツのスタイルは、注釈付きコンテンツが非注釈付きコンテンツとは異なるように表示されないことを指定する。しかしながら、注釈付きコンテンツが表示されると、インスクリプション層が自動的にオーバーレイモード(注釈付きコンテンツを含む電子書籍のコンテンツのページ全体の上を浮かんでいる)で起動され、インスクリプション(インスクリプション層の層データの注釈部分において指定されるように)が表示される。ユーザはインスクリプションを閲覧して、インスクリプション層を閉じる。インスクリプション層が閉じられたことに応答して、インスクリプション層の層データの注釈付きコンテンツのスタイルが更新される。更新されたスタイルは、次に注釈付きコンテンツが表示されるときに、インスクリプション層が自動的に起動されないことを指定する。代わりに、マージン内にアイコンが表示されて、インスクリプション層の層データの注釈部分に格納されたインスクリプションにアクセスするために使用され得る。
【００３２】
層データがクライアントデバイス140上に存在していないと、注釈(層データの一部)を表示することができない点に留意されたい。一実施形態では、クライアント層サポートモジュール144からのリクエスト(図4のステップ440および460を参照)に応答して、層データがリポジトリ120からクライアントデバイス140に転送される(処理サーバ130およびネットワーク110を介して)。
【００３３】
一実施形態では、層は、注釈付きコンテンツに独自のスタイルを描くことができない。この実施形態では、クライアント層サポートモジュール144は、設定可能なスタイル(たとえば、ユーザによって選択された)を使用して注釈付きコンテンツを示す。一実施形態では、層データは、注釈付きコンテンツに独自のスタイルを指定することができる。たとえば、注釈付きコンテンツのスタイルはスタイルデータ項目(Table 1(表1)参照)によって示される。
【００３４】
一実施形態では、電子書籍の「層サイドパネル」ビューは、電子書籍のコンテンツを表示するある領域と、層のコンテンツ(たとえば、注釈)を表示する別の領域(「層サイドパネル」)とを含む。層サイドパネル領域は、電子書籍のコンテンツ領域に隣接しており、電子書籍のコンテンツ領域と比較して大きさが異なってよい。サイドパネルビューに電子書籍が表示されている場合、関連する注釈付きコンテンツが電子書籍のコンテンツ領域に表示されると、層がサイドパネル表示モードで自動的に起動される(層データで指定された注釈付きコンテンツのスタイルに関わらず、また層が「自動起動」と指定されたかどうかに関わらず)。別の実施形態では、電子書籍の「層の表示」ビューは、電子書籍に関連付けられるすべての層コンテンツ(たとえば、注釈)を単一のビューに表示し、分野別、顕著さ別に、あるいは理にかなっている他の任意の方法で整理される。たとえば、層表示ビューは、電子書籍のページに対応して、ページ単位で注釈を表示する(電子書籍のコンテンツも表示されているかどうかを問わず)。
【００３５】
層は、クライアント層サポートモジュール144によって提供されるAPI(「層API」と呼ばれる)を使用する。一実施形態では、クライアント層サポートモジュール144は、Java(登録商標)ScriptAPIを提供する。層APIは様々な機能を含む。例示的機能を以下で説明する:
【００３６】
(i)層が呼び出された、また層が注釈(「コンテンツ範囲」と呼ばれる)を添付できる電子書籍のコンテンツを取得する機能。たとえば、この機能は、コンテンツ範囲を記述するオブジェクトで実行可能コードの一部を呼び出す(「コールバック」)。コンテンツ範囲は、様々なタイプのコンテンツ(たとえば、テキストコンテンツ、音声コンテンツ、および画像コンテンツ)を含み得る。コンテンツ範囲は、複数の注釈付きコンテンツセグメントを含み得る。これらの注釈付きセグメントは、コンテンツ全体の範囲内の個々の範囲として表される。コンテンツ範囲オブジェクトは、これらの範囲にアクセスする方法を提供する。
【００３７】
(ii)注釈(層データの一部)および注釈付きコンテンツのスタイルを保存して、それらをコンテンツ範囲と関連付けて、以前保存した任意の注釈、および注釈付きコンテンツのスタイルを置換する機能。
【００３８】
(iii)以前この層によって保存され、コンテンツ範囲に関連付けられている、注釈(層データの一部)をロードする機能。
【００３９】
(iv)電子書籍をナビゲートする(すなわち、電子書籍リーダーモジュール142によって電子書籍のどの部分が表示されるかを制御する)機能。一実施形態では、この機能は、1ページ前にナビゲートする、1ページ先にナビゲートする、特定のチャプタに移動する、特定のページに移動する、ページ内の特定の位置に移動する、およびコンテンツの特定の部分(たとえば、画像、表、または図面)に移動する機能を含む。
【００４０】
(v)電子書籍の内部を検索する機能(たとえば、電子書籍リーダーモジュール142からの機能を使用して)。検索パネルが表示されて、検索結果が強調表示される。層は表示されたままである。
【００４１】
(vi)層インスタンスを閉じて、層がもはや表示されないようにする機能。
【００４２】
層は、層が起動された電子書籍のコンテンツ(たとえば、選択されたコンテンツ、または注釈付きコンテンツ)およびコンテキストオブジェクトにもアクセスすることができる。一実施形態では、コンテキストオブジェクトは、電子書籍、およびユーザと電子書籍との対話にとってローカルなコンテキストだけを含む。ローカルコンテキストは、たとえば、電子書籍のタイトル、著者、出版社、現在表示されている電子書籍の部分の表示(たとえば、チャプタ番号およびページ番号)、現在の電子書籍表示モードの表示(たとえば、フローテキスト対スキャンされた画像)、およびデバイスの機能を含む。別の実施形態では、関連書籍、電子書籍内で最も人気のあるページなどの、さらなるコンテキストが提供される。さらなるコンテキストは、同じコンテキストオブジェクト内で、またはさらなる層API機能を通じて提供され得る。
【００４３】
一実施形態では、層APIは、層が注釈付きコンテンツのスタイルを指定することを可能にする。別の実施形態では、電子書籍リーダーモジュール142によって一般的なUI制御が提供されるので、ユーザは注釈付きコンテンツのスタイルを指定することができる。このUIでは、ユーザが「現在の注釈付きコンテンツだけにこの表示スタイルを使用する」、または「この層によって注釈を付けられたすべてのコンテンツにこの表示スタイルを使用する」を指定できる。別の実施形態では、層は、注釈付きコンテンツのスタイルを指定するために一般的なUI制御が表示されるべきかどうか、または注釈付きコンテンツのスタイルを指定するために層が独自のUI制御を提供するかどうかを表示することができる。
【００４４】
クライアント利用可能層モジュール146は、選択された電子書籍のコンテンツと対話するためにどの層が利用可能かを決定する。具体的には、クライアント利用可能層モジュール146は、利用可能な層のリスト(サーバ利用可能層モジュール136によって出力された)、選択されたコンテンツ、および有効にされた層のリストを入力として受け取って、選択された層と対話するために利用可能な層のリストを出力する。クライアント利用可能層モジュール146は、利用可能な層のリストと、有効にされた層のリストとを比較して、可能な層(すなわち利用可能であり、かつ有効にされた層)のリストを決定する。次いで、選択されたコンテンツ(たとえば、テキスト対画像)のタイプが、可能な層(具体的には、各層を使用してどのタイプの電子書籍のコンテンツと対話できるかを指定する層のメタデータ)と比較される。クライアント利用可能層モジュール146は、一致する層をリストとして出力する。この層のリストは、選択されたコンテンツに特有である点に留意されたい。
【００４５】
リポジトリ120は、電子書籍(「ebook」)リポジトリ122、電子書籍リーダーツール(「層」)リポジトリ124、層データリポジトリ126、およびユーザ層設定リポジトリ128を格納するコンピュータ(またはコンピュータのセット)である。一実施形態では、リポジトリ120は、リクエストに応答して、処理サーバ130に電子書籍リポジトリ122、層リポジトリ124、層データリポジトリ126、およびユーザ層設定リポジトリ128へのアクセスを提供するサーバを含む。
【００４６】
電子書籍リポジトリ122は様々な電子書籍を格納する。一実施形態では、電子書籍はJava(登録商標)Scriptオブジェクトノーテーション(JSON)フォーマットに準拠している。電子書籍はコンテンツおよびメタデータを含む。電子書籍のコンテンツは、テキストの電子集合(および、場合によっては、画像および/または音声などのさらなるタイプのコンテンツ)を含む。たとえば、電子書籍のコンテンツは、従来の紙ベースの書籍のページに印刷されるような書籍のコンテンツを含む。集合内のすべてのテキストは単一のソースからでもよく、集合は異なるソースからのテキストを含んでもよい。テキストは従来の紙ベースのフォーマット(たとえば、物理的な本または新聞)に由来してもよく、デジタルフォーマット(たとえば、ポータブルドキュメントフォーマット(PDF)などのフォーマットの電子ファイル)に由来してもよい。電子書籍のコンテンツは、コンテンツの一部が別々に転送および/またはロードされるように、セグメントに分割される。たとえば、電子書籍はチャプタごとに1つのセグメントを含み得る。一実施形態では、電子書籍のコンテンツは、HTMLフォーマット、カスケーディングスタイルシート(CSS)フォーマット、および様々なマルチメディアフォーマット(たとえば、音声ファイルおよびビデオファイル)に準拠するファイルを含む。
【００４７】
電子書籍メタデータは、タイトル、著者、出版日、ページ数、チャプタ数などの、電子書籍についての書誌情報を含む。また、電子書籍メタデータは、電子書籍のコンテンツが分割されるセグメントのリストを含む。セグメントは、たとえば一意の識別子によってリスト上に表される。一実施形態では、電子書籍メタデータは、ブラックリスト、ホワイトリスト、および/または追加リストも含む。これらのリストは、電子書籍でどの層が使用され得るかを制御する。ブラックリストは、特定の電子書籍で使用することができない(すなわち、許可されない)層を指定する。ホワイトリストは、特定の電子書籍で使用することができる(すなわち、許可される)層を指定する。追加リストは、特定の電子書籍で使用することが推奨される層を指定する。たとえば、電子書籍出版社は、特定の電子書籍が特定のブラックリスト、ホワイトリスト、および/または追加リストに従って対話することを要求することができる。層は、たとえば一意の識別子によってリスト上に表される。ブラックリスト、ホワイトリスト、および/または追加リストは、サーバが利用可能層モジュール136を参照して以下でさらに説明する。
【００４８】
層リポジトリ124は様々な層を格納する。層は、実行可能コードおよびメタデータを含む。層実行可能コードは、クライアントデバイス140上で実行して、電子書籍リーダーモジュール142の機能を高めるコンピュータプログラムモジュール(「層モジュール」)である。層は、ユーザが、電子書籍リーダーモジュールによって提示されている電子書籍と対話することを可能にする。具体的には、層は、ユーザが特定の電子書籍のコンテンツ(たとえば、ユーザが選択したコンテンツ、または注釈付きコンテンツ)と対話することを可能にする。特定のコンテンツは、テキスト、画像、または他の埋め込まれたコンテンツでよい。一実施形態では、複数のタイプのコンテンツを同時に選択することができる。一実施形態では、層モジュールはJava(登録商標)Scriptプログラムとして実装される。
【００４９】
層のメタデータは、特定の層を適用することができるのはどのタイプの電子書籍のコンテンツか(すなわち、特定の層を使用してどのタイプのコンテンツと対話できるか)を指定する。たとえば、第1の層は、テキストコンテンツとの対話だけを可能にすることができ、第2の層はグラフィックコンテンツとの対話だけを可能にすることができる。層のメタデータは、層によってサポートされるのはどの表示モード(たとえば、オーバーレイ、置換、サイドパネル、および/またはマージン)かも指定し、場合によっては、サポートされた表示モードのうちの1つをデフォルトまたは好ましい表示モードと指定する。
【００５０】
一実施形態では、層の拡張可能なフレームワークは以下の特徴を含む:1)層のHTML、Java(登録商標)Script、およびアプリケーション記述子を単一のファイルにパッケージングするためのXMLファイルフォーマット。アプリケーション記述子は、層を適用することができるのはどのタイプの電子書籍のコンテンツかを示す。2)ウェブブラウザで表示され得るHTML/Java(登録商標)Scriptに、層のXMLファイルをレンダリングするサービス。3)既存のウェブアプリケーション(たとえば、電子書籍リーダーモジュール142および/またはクライアント層サポートモジュール144)が層のインスタンスを生成して、それらをコンテナ要素の内部に表示するためのクライアント側Java(登録商標)Script。Java(登録商標)Scriptは、層ごとにサンドボックス化されたiframe HTML要素を作成する。iframeは、リクエストされた層をレンダリングするために、サービスにポイントバックする(point back)統一リソースロケータ(URL)を使用する。4)アプリケーション(たとえば、電子書籍リーダーモジュール142および/またはクライアント層サポートモジュール144)が、層がそれらのサンドボックス化されたiframeから呼び出すことができるJava(登録商標)Script方法(層API)を登録することを可能にする遠隔手続き呼出し(RPC)フレームワーク用のクライアント側Java(登録商標)Script。これによって、層をアプリケーションに呼び戻して、データを送信/受信することが可能になる。また、隔離されたiframe内の層を実行することによって、層が電子書籍リーダーモジュール142の動作を干渉することを回避する。5)RPC方法をユーザインターフェース拡張(UIX)「機能」にバンドルする機能。書籍機能は、RPCフレームワークを介して、書籍特有のAPI(層API)を層に公開する。層は、実行するにはどの機能が必要かを、そのアプリケーション記述子内に示すことができる。
【００５１】
層データリポジトリ126は、層によって使用されるデータに関する情報を含む(たとえば、層が起動されるときにユーザに表示するために)。一実施形態では、データは、層の実行中に層によって作成されている(たとえば、ユーザと層との対話によって)。別の実施形態では、データは、層が実行される前に作成されている。(たとえば、「CliffsNotes」を表示するためのものである層の作成者は、実際のCliffsNotesテキストで層データも作成する。この層データは、CliffsNotes層が実行される前に存在し、CliffsNotes層のユーザにとって利用可能である。)層データは、特定の電子書籍のコンテンツに関連付けられる。層は、ユーザが特定の電子書籍のコンテンツ(たとえば、ユーザが選択したコンテンツ、または注釈付きコンテンツ)と対話することを可能にすることを思い出されたい。層によって格納されたデータ(たとえば、ユーザによって傍注層に追加された「メモ」)が、層が起動されたときに選択された、または注釈を付けられた特定の電子書籍のコンテンツに関連付けられる。後に、同じ電子書籍のコンテンツについて同じ層が起動されると、層は以前格納したデータをロードする。このデータは注釈(層データの一部)として知られる。
【００５２】
一実施形態では、層によって格納されたデータは、その層にとってのみアクセス可能であり、他の層にとってはアクセス可能ではない。別の実施形態では、特定のユーザアカウントがアクティブであるときに層によって格納されたデータは、そのユーザアカウントにとってのみアクセス可能であり、他のユーザアカウントにとってはアクセス可能ではない。さらに別の実施形態では、データは、ユーザアカウントがアクティブであるとき(すなわち、ユーザがログインしたとき)のみ層によって格納することができ、ユーザが匿名のときは格納することができない。
【００５３】
一実施形態では、層データは3つの要素を含む:特定の電子書籍のコンテンツ(層データが関連付けられる電子書籍のコンテンツ、「注釈付きコンテンツ」または「コンテンツ範囲」)の表示、タイプ(たとえば、層データを作成した特定の層の表示)、および注釈(層が格納し、ユーザの対話のために取り出すデータ。たとえば、ユーザによって傍注層に追加された「メモ」)。特定の電子書籍のコンテンツの表示は、たとえば、電子書籍インジケータ、ページインジケータ、および開始位置と終了位置を含む位置範囲である。各位置は、電子書籍内の位置の内部マーカであり、たとえばパラグラフインジケータおよびそのパラグラフ内のオフセットを含む。テキストがないグラフィック小説では、位置は画像ごとに指定され得る。画像位置は、コンテンツ範囲内の画像を表示できるようにするために、コンテンツ範囲が開始および/または終了する場所を決定するために使用され得る。層データを作成した特定の層の表示は、たとえば、層識別子(「ID」)である。一実施形態では、層データの各インスタンスは、1つの層(すなわち、層データインスタンスを生成した層)だけに関連付けられる。
【００５４】
電子書籍は頻繁に更新することができ、異なるコンテンツ位置を有する異なるバージョンをもたらす。層データを正確な電子書籍のコンテンツに関連付けることができるように、これらの異なるバージョン間のコンテンツ位置を翻訳すべきである。たとえば、クライアント140は、クライアントでキャッシュされた電子書籍の特定のページの層データをリクエストすることができる。電子書籍リポジトリ122内のインデックスを付けられた(すなわち、現在実行中(live)の)電子書籍が異なるバージョンのものである場合、ページは変更されている可能性がある。また、クライアント140は、古いキャッシュされたバージョンの電子書籍に基づく層データを保存することができる。この層データは、電子書籍リポジトリ122内のインデックスを付けられた(すなわち、現在実行中の)電子書籍に関して保存されるべきである。
【００５５】
一実施形態では、この問題は位置確認サービスによって対処される。位置確認サービスは、電子書籍内の層データ位置を追跡する(具体的には、層データに関連付けられる電子書籍のコンテンツの位置)。位置情報は、たとえば、ページ情報およびオリジナルのスキャンジョブ情報(たとえば、電子書籍を作成するための基となる本のスキャニングに関する情報)を含む。ページ情報は、たとえば、ボリューム(電子書籍)ページIDおよびボリューム構造ページIDを含む。スキャンジョブ情報は、たとえば、スキャンジョブIDおよびスキャンジョブページIDを含む。位置情報は、ボリュームID、注釈付きコンテンツの前のコンテンツ、注釈付きコンテンツ自体、および注釈付きコンテンツの後のコンテンツも含み得る。一実施形態では、位置情報は、新しいバージョンの電子書籍内の、古いバージョンの同じ電子書籍内の層データ位置をローカライズするために使用される。次いで、正確な位置を計算するために、テキストアラインメントが実行される(たとえば、Table 1(表1)内の関連付けられる電子書籍テキスト項目を使用して)。
【００５６】
Table 1(表1)は、一実施形態による、層データのインスタンスごとに格納されたデータ項目を示している。
【００５７】
【表１Ａ】
0005951783.tif 000002
【表１Ｂ】
0005951783.tif 000003
【００５８】
一実施形態では、Table 1(表1)内のスタイルデータ項目は、異なるスタイル属性についての名称/値ペアの辞書オブジェクトとして実装される。辞書オブジェクトは、Java(登録商標)ScriptにおいてJSONオブジェクトと表される。一実施形態では、層データは、以下のパラメータを使用して問い合わせることができる: a)ユーザ、b)ユーザおよびボリューム(および、場合によってはページIDも)、ならびにc)ユーザ、ボリューム、および層ID(および、場合によってはページIDも)。
【００５９】
ユーザ層設定リポジトリ128は、ユーザが「インストール」したのはどの層かに関する情報を含む。たとえば、ユーザ層設定リポジトリ128は、ユーザIDごとに、ユーザがインストールした層(もしあれば)のリストを含む。一実施形態では、ユーザ層設定リポジトリ128は、匿名の(たとえば、ログインしていない)ユーザが使用するためにインストールされた層のデフォルトリストも含む。層のインストールは、必ずしも常にではないが、ユーザがその層を何らかの時点で使用したいということを示す。(上記で説明したように、インストールされた層を無効にすることができる。)層のインストールは、その層のモジュールがクライアントデバイス140上に実際に存在することを示すわけではない。1人の人間が複数のデバイスを使用して電子書籍を読むことができるので、ユーザ層設定はリポジトリ120に格納される。ユーザが特定のクライアントデバイス140上の特定の層を使用したい場合、その層のモジュールはそのデバイス上に存在する必要がある。一実施形態では、グラフィカルユーザインターフェースは、インストールのために利用可能な層をリストアップする。ユーザが、様々なボックスのチェックを入れる/チェックを外すことによってこれらの層をインストール/アンインストールする。次いで、これらの設定がユーザ層設定リポジトリ128に格納される。
【００６０】
処理サーバ130は、電子書籍関連のリクエストを処理するための電子書籍サポートモジュール132、層関連のリクエストを処理するためのサーバ層サポートモジュール134、どの層が利用可能かを決定するためのサーバ利用可能層モジュール136、およびどの層データが利用可能かを決定するための利用可能な層データモジュール138などの様々なモジュールを含む。一実施形態では、処理サーバ130は、リポジトリ120およびクライアントデバイス140と通信してデータを処理する(たとえば、電子書籍サポートモジュール132、サーバ層サポートモジュール134、サーバ利用可能層モジュール136、および利用可能な層データモジュール138を実行することによって)コンピュータ(または、コンピュータのセット)を含む。一実施形態では、処理サーバ130は、クライアントデバイス140からのリクエストに応答するウェブサーバを含む。
【００６１】
電子書籍サポートモジュール132は、電子書籍関連のリクエストを処理する。具体的には、電子書籍サポートモジュール132は、電子書籍リーダーモジュール142(クライアントデバイス140の一部)からリクエストを受信して、それに応じてそれらのリクエストに応答する。あるタイプのリクエストは電子書籍メタデータについてである。別のタイプのリクエストは電子書籍のコンテンツについてである。これらのリクエストおよび応答は、図3を参照して以下で説明する。
【００６２】
サーバ層サポートモジュール134は、層関連のリクエストを処理する。具体的には、サーバ層サポートモジュール134は、クライアント層サポートモジュール144(クライアントデバイス140の一部)からリクエストを受信して、それに応じてそれらのリクエストに応答する。あるタイプのリクエストは、利用可能な層のリストについてである。別のタイプのリクエストは層データについてである。これらのリクエストおよび応答は、図4を参照して以下で説明する。
【００６３】
サーバ利用可能層モジュール136は、指定されたユーザが指定された電子書籍で使用するために、どの層が利用可能かを決定する。具体的には、サーバ利用可能層モジュール136は、ユーザIDおよび電子書籍IDを入力として受け取って、そのユーザIDがその電子書籍IDで使用するために利用可能な層のリストを出力する。サーバ利用可能層モジュール136は、ユーザIDを使用して、ユーザがインストールした(ユーザ層設定リポジトリ128に格納された)のはどの層かを決定する。ユーザIDが提供されない場合(たとえば、ユーザが匿名である、またはログインしていない)、インストールされた層のデフォルトリスト(ユーザ層設定リポジトリ128に格納された)が使用される。サーバ利用可能層モジュール136は、電子書籍IDを使用して、その電子書籍に関連付けられる(電子書籍リポジトリ122内の電子書籍メタデータに格納された)ブラックリスト、ホワイトリスト、および/または追加リスト(もしあれば)を決定する。次いで、サーバ利用可能層モジュール136が、インストールされた層で開始して、ホワイトリスト上の任意の層を維持して(ホワイトリストが存在する場合)、ブラックリスト上にあってホワイトリスト上にない任意の層を除去して(ブラックリストが存在する場合)、追加リスト上の任意の層を追加することによって(追加リストが存在する場合)、利用可能な層のリストをアセンブルする。(ブラックリスト、ホワイトリスト、追加リストのいずれも存在しない場合、アセンブルされたリストはインストールされたすべての層を含む。)一実施形態では、ブラックリスト、ホワイトリスト、および/または追加リストでワイルドカードを使用することができる。たとえば、ワイルドカードだけを含むブラックリストは、すべの層を除去させる(その層がホワイトリスト上にある場合を除いて)。サーバ利用可能層モジュール136は、残りの層を利用可能な層のリストとして出力する(特定の層を適用することができるのはどのタイプの電子書籍のコンテンツか、および特定の層によってサポートされるのはどの表示モードかなどの層のメタデータを含む)。この層のリストは電子書籍に特有である点に留意されたい。
【００６４】
利用可能な層データモジュール138は、指定されたユーザ、および指定された電子書籍の指定されたページにとって、どの層データが利用可能かを決定する。具体的には、利用可能な層データモジュール138は、ユーザID、電子書籍ID、およびページ範囲を入力として受け取り、そのユーザID、電子書籍ID、およびページ範囲にとって利用可能な層データを出力する。利用可能な層データモジュール138は、ユーザID、電子書籍ID、およびサーバ利用可能層モジュール136を使用して、指定されたユーザが指定された電子書籍で使用するためにどの層が利用可能かを決定する。次いで、利用可能な層データモジュール138は、利用可能な層、指定されたユーザ、指定された電子書籍、および指定されたページ範囲に関連付けられる層データ(層データリポジトリ126に格納された)を取得する。ユーザIDが提供されない場合(たとえば、ユーザが匿名である、またはログインしていない)、利用可能な層データモジュール138は、利用可能な層、「すべてのユーザ」(たとえば、匿名のユーザまたは一般の人々)、指定された電子書籍、および指定されたページ範囲に関連付けられる層データ(層データリポジトリ126に格納された)を取得する。次いで、利用可能な層データモジュール138がこの層データを出力する。
【００６５】
図2は、一実施形態による、リポジトリ120、処理サーバ130、および/またはクライアントデバイス140として使用するためのコンピュータ200の例を示すハイレベルブロック図である。チップセット204に結合された少なくとも1つのプロセッサ202が図示されている。チップセット204は、メモリコントローラハブ220および入力/出力(I/O)コントローラハブ222を含む。メモリ206およびグラフィックアダプタ212はメモリコントローラハブ220に結合されており、ディスプレイデバイス218はグラフィックアダプタ212に結合されている。記憶装置208、キーボード210、ポインティングデバイス214、およびネットワークアダプタ216は、I/Oコントローラハブ222に結合されている。コンピュータ200の他の実施形態は異なるアーキテクチャを有する。たとえば、いくつかの実施形態では、メモリ206はプロセッサ202に直接結合されている。
【００６６】
記憶装置208は、ハードドライブ、コンパクトディスク読出し専用メモリ(CD-ROM)、DVD、またはソリッドステートメモリデバイスなどの、1つまたは複数の非一時的コンピュータ可読記憶媒体を含む。メモリ206は、プロセッサ202によって使用される命令およびデータを保持する。ポインティングデバイス214は、データをコンピュータシステム200に入力するためにキーボード210と組み合わせて使用される。グラフィックアダプタ212は、画像および他の情報をディスプレイデバイス218上に表示する。いくつかの実施形態では、ディスプレイデバイス218は、ユーザ入力および選択を受信するためのタッチスクリーン機能を含む。ネットワークアダプタ216は、コンピュータシステム200をネットワーク110に結合する。コンピュータ200のいくつかの実施形態は、図2に示されているものとは異なるおよび/または他のコンポーネントを有する。たとえば、リポジトリ120および/または処理サーバ130は、複数のブレードサーバで形成されて、ディスプレイデバイス、キーボード、および他のコンポーネントがない場合があり、クライアントデバイス140はノートブックまたはデスクトップコンピュータ、タブレットコンピュータ、またはモバイル電話でよい。
【００６７】
コンピュータ200は、本明細書で説明した機能を提供するためのコンピュータプログラムモジュールを実行するように適合される。本明細書で使用されるように、「モジュール」という用語は、指定された機能を提供するために使用されるコンピュータプログラム命令および/または他のロジックを指す。したがって、ハードウェア、ファームウェア、および/またはソフトウェアにモジュールを実装することができる。一実施形態では、実行可能コンピュータプログラム命令で形成されるプログラムモジュールは、記憶装置208に格納され、メモリ206にロードされ、プロセッサ202によって実行される。
【００６８】
図3は、一実施形態による、電子書籍情報の転送に関与するステップを示すシーケンス線図である。ステップ310で、電子書籍リーダーモジュール142(クライアントデバイス140の一部)が、ユーザIDおよび電子書籍IDを電子書籍サポートモジュール132(処理サーバ130の一部)に送信する。電子書籍サポートモジュール132は、指定されたユーザが指定された電子書籍の読出しを許可されるかどうかを決定する(図示せず)。ユーザが電子書籍の読出しを許可されると、次いでステップ320で、電子書籍サポートモジュール132が、指定された電子書籍についてのメタデータを電子書籍リーダーモジュール142に送信する。そのメタデータは、とりわけ、電子書籍のコンテンツが分割されたセグメントのリストを含む。
【００６９】
ステップ330で、電子書籍リーダーモジュール142が、ユーザID、電子書籍ID、およびセグメントIDを電子書籍サポートモジュール132に送信する。電子書籍サポートモジュール132は、指定されたユーザが、指定された電子書籍の指定されたセグメントの読出しを許可されるかどうかを決定する(図示せず)。ユーザが電子書籍のセグメントの読出しを許可されると、次いでステップ340で、電子書籍サポートモジュール132が、指定された電子書籍についてのコンテンツを電子書籍リーダーモジュール142に送信する。そのコンテンツは指定されたセグメントに対応する。一実施形態では、セグメントコンテンツは暗号化された状態で転送されて、次いでクライアントデバイス140で復号化される。
【００７０】
図3に示される実施形態では、電子書籍サポートモジュール132は、指定された電子書籍についてのすべてのコンテンツを一度に電子書籍リーダーモジュール142に送信しない。その代わりに、コンテンツは、各セグメントがリクエストされると(ステップ330)セグメント単位で転送される(ステップ340)。一実施形態では、リクエストされたセグメントが送信された後、近隣のページのセグメントも送信される。このように、ユーザがリクエストされたセグメント外のページを閲覧しようとする場合、適切なセグメントがクライアントデバイス上にすでに存在しており、表示することができる。
【００７１】
この実施形態では、電子書籍リーダーモジュール142が定期的にリクエストして、電子書籍サポートモジュール132からセグメントのコンテンツを(必要に応じて)受信できるように、クライアントデバイス140はオンラインでなければならない。異なる実施形態では(図示せず)、電子書籍リーダーモジュール142から電子書籍サポートモジュール132への1つのリクエストによって、電子書籍サポートモジュール132が指定された電子書籍についてのすべてのコンテンツを一度に送信することになる。この実施形態では、クライアントデバイス140は、最初のリクエストおよびコンテンツの受信の後はオンラインである必要はない。
【００７２】
図4は、一実施形態による、層情報の転送に関与するステップを示すシーケンス線図である。ステップ410で、クライアント層サポートモジュール144(クライアントデバイス140の一部)が、ユーザIDおよび電子書籍IDをサーバ層サポートモジュール134(処理サーバ130の一部)に送信する。(上記でサーバ利用可能層モジュール136に関連して論じたように、ユーザIDは任意である。)ステップ420で、サーバ層サポートモジュール134がサーバ利用可能層モジュール136を実行して、指定されたユーザ(または、匿名のユーザ)が指定された電子書籍で使用するためにどの層が利用可能かを決定する。ステップ430で、サーバ層サポートモジュール134が、利用可能な層のリストをクライアント層サポートモジュール144に送信する。そのリストは、とりわけ、特定の層を適用することができるのはどのタイプの電子書籍のコンテンツか、および特定の層によってサポートされるのはどの表示モードかなどの層のメタデータを含む。
【００７３】
ステップ440で、クライアント層サポートモジュール144が、ユーザID、電子書籍ID、およびページ範囲をサーバ層サポートモジュール134に送信する。(上記で利用可能な層データモジュール138に関連して論じたように、ユーザIDは任意である。)ステップ450で、サーバ層サポートモジュール134が利用可能な層データモジュール138を実行して、指定されたユーザ(または、匿名のユーザ)および指定された電子書籍の指定されたページにとってどの層データが利用可能かを決定する。ステップ460で、サーバ層サポートモジュール134が、指定された電子書籍の層データをクライアント層サポートモジュール144に送信する。その層データは、指定されたページに対応する。一実施形態では、指定されたページ範囲の層データが送信された後、近隣のページ範囲の層データも送信される。このように、ユーザが指定された範囲側のページを閲覧する場合、関連する層データがクライアントデバイス上にすでに存在しており、表示することができる。
【００７４】
図5は、一実施形態による、指定されたユーザが指定された電子書籍で利用するために、どの層が利用可能かを決定する方法500を示す流れ図である。他の実施形態は、ステップを異なる順序で実行することができ、また異なるおよび/またはさらなるステップを含むことができる。さらに、ステップのうちのいくつかまたはすべては、図1に示したエンティティ以外のエンティティによって実行され得る。
【００７５】
方法500を開始するとき、クライアント層サポートモジュール144はユーザIDおよび電子書籍IDをサーバ層サポートモジュール134にすでに送信している。次いで、サーバ層サポートモジュール134がユーザIDおよび電子書籍IDをサーバ利用可能層モジュール136に提供する。この時点で方法500が開始される。
【００７６】
ステップ510で、ユーザIDを使用して、ユーザがインストールしたのはどの層かを決定する。たとえば、サーバ利用可能層モジュール136が、ユーザIDでユーザ層の設定を問い合わせる。上記でサーバ利用可能層モジュール136に関連して論じたように、ユーザIDは任意である。ユーザIDが提供されない場合、サーバ利用可能層モジュール136が、インストールされた層のデフォルトリストをユーザ層設定リポジトリ128に問い合わせる。
【００７７】
ステップ520で、電子書籍IDを使用して、電子書籍に関連付けられるブラックリスト、ホワイトリスト、および/または追加リスト(もしあれば)を決定する。たとえば、サーバ利用可能層モジュール136が、電子書籍IDで電子書籍メタデータを問い合わせる。
【００７８】
ステップ530で、利用可能な層のリストがアセンブルされる。たとえば、サーバ利用可能層モジュール136がインストールされた層を開始して、ホワイトリスト上の任意の層を維持して(ホワイトリストが存在する場合)、ブラックリスト上にあってホワイトリスト上にない任意の層を除去して(ブラックリストが存在する場合)、追加リスト上の任意の層を追加する(追加リストが存在する場合)。ブラックリスト、ホワイトリスト、追加リストのいずれも存在しない場合、アセンブルされたリストはインストールされたすべての層を含む。
【００７９】
ステップ540で、残りの層が利用可能な層のリストとして出力される。たとえば、サーバ利用可能層モジュール136が、残りの層を利用可能な層のリストとして出力する(特定の層を適用することができるのはどのタイプの電子書籍のコンテンツか、および特定の層によってサポートされるのはどの表示モードかなどの層のメタデータを含む)。この層のリストは電子書籍に特有である点に留意されたい。
【００８０】
図6は、一実施形態による、選択された電子書籍のコンテンツと対話するために、どの層が利用可能かを決定する方法600を示す流れ図である。他の実施形態は、ステップを異なる順序で実行することができ、また異なるおよび/またはさらなるステップを含むことができる。さらに、ステップのうちのいくつかまたはすべては、図1に示したエンティティ以外のエンティティによって実行され得る。
【００８１】
方法600を開始するとき、クライアント層サポートモジュール144は、利用可能な層のリスト(電子書籍に特有)をすでに受信している。これは、図4のステップ420でサーバ利用可能層モジュール136によって出力されて、次いで図4のステップ430でサーバ層サポートモジュール134からクライアント層サポートモジュール144に送信されたものと同じリストである。また、選択された電子書籍のコンテンツは、クライアント層サポートモジュール144によって提供された層API機能を使用して取得されている。最後に、有効にされた層のリストがクライアント層サポートモジュール144から取得されている。この時点で方法600が開始される。
【００８２】
ステップ610で、利用可能な層のリストと有効にされた層のリストとが比較される。たとえば、クライアント利用可能層モジュール146が利用可能な層のリスト(電子書籍に特有)と有効にされた層のリストとを比較して、可能な層(すなわち、利用可能であり、かつ有効にされた層)のリストを決定する。
【００８３】
ステップ620で、選択されたコンテンツのタイプと可能な層とが比較される。たとえば、クライアント利用可能層モジュール146が選択されたコンテンツのタイプ(たとえば、テキスト対画像)と可能な層(具体的には、各層を使用して対話できるのはどのタイプの電子書籍のコンテンツかを指定する層のメタデータ)とを比較して、一致する層(すなわち、選択されたコンテンツのタイプと対話するために使用することができる層)のリストを決定する。
【００８４】
ステップ630で、一致する層が利用可能な層のリストとして出力される。たとえば、クライアント利用可能層モジュール146が、一致する層を利用可能な層のリストとして出力する。この層のリストは、選択されたコンテンツに特有である点に留意されたい。
【００８５】
上記の説明は、特定の実施形態の動作を示すために含まれるものであり、本発明の範囲を限定することを意味するものではない。本発明の範囲は、以下の特許請求の範囲によってのみ限定される。上記の記述から、関連分野の当業者には、本発明の趣旨および範囲に包含される多くの変形形態が明らかであろう
【符号の説明】
【００８６】
100  環境
110  ネットワーク
120  リポジトリ
122  電子書籍リポジトリ
124  層リポジトリ
126  層データリポジトリ
128  ユーザ層設定リポジトリ
130  処理サーバ
132  電子書籍サポートモジュール
134  サーバ層サポートモジュール
136  サーバ利用可能層モジュール
138  利用可能な層データモジュール
140  クライアントデバイス
142  電子書籍リーダーモジュール
144  クライアント層サポートモジュール
146  クライアント利用可能層モジュール
200  コンピュータ
200  コンピュータシステム
202  プロセッサ
204  チップセット
206  メモリ
208  記憶装置
210  キーボード
212  グラフィックアダプタ
214  ポインティングデバイス
216  ネットワークアダプタ
218  ディスプレイデバイス
220  メモリコントローラハブ
222  入力/出力(I/O)コントローラハブ
500  方法
600  方法
【図１】
0005951783.tif 000004
【図２】
0005951783.tif 000005
【図３】
0005951783.tif 000006
【図４】
0005951783.tif 000007
【図５】
0005951783.tif 000008
【図６】
0005951783.tif 000009