Dynamic Links

Google ブックスの Dynamic Links 機能を使用すると、パートナー様のサイトから Google ブックスへの、カスタマイズ性と信頼性に優れたリンクを作成できます。たとえば、書籍が Google のインデックスに登録された場合のみ表示される「スマート」リンクを生成したり、Google ブックスで書籍をプレビューできるかどうかをユーザーに示すリンクを表示したりできます。Dynamic Links では、Google ブックスへのリンクにサムネイル画像を含めることもできます。このドキュメントでは、この機能をサイトに簡単に追加する方法について説明します。

注: この機能は、以前は Book Viewability API と呼ばれていました。

プレビュー ウィザードは Dynamic Links 上に構築されたツールです。数行のコードをコピーするだけで、サイトから簡単に書籍のプレビューをリンクすることができます。このドキュメントは、ブック検索へのリンク設定をカスタマイズすることを検討している上級開発者を対象としています。

目次

  1. 対象者
  2. ブック検索の用語
  3. はじめに
  4. ブランドの取り扱いガイドライン
  5. クライアントサイド API
    1. リクエスト URL の形式
    2. JSON の結果の形式
  6. 同期モードと非同期モード
  7. よくある質問
  8. コードサンプル

視聴者

ダイナミック リンクに関するドキュメントは、Google ブックス内の書籍にリンクするウェブ アプリケーションを作成するプログラマーを対象としています。このドキュメントは、HTTP プロトコルと基本的な JavaScript に精通していることを前提としています。

ブック検索の用語

Google ブックスでは、ユーザーの地域における著作権の制限を尊重しているため、地域によっては一部の書籍のプレビューや全表示をご利用いただけない場合があります。視認性は次のクラスに分類されます。

全体表示
書籍全体を表示できます。該当する書籍はパブリック ドメインである可能性があります。
限定的な使用
書籍の一部は閲覧できます。この書籍は著作権で保護されているため、Google ブックスはユーザーがこれらのページにアクセスできるようにする許可を得ています。これらの書籍はスニペット表示の書籍と異なり、ユーザーはページ全体を表示できます。
スニペット表示とプレビューなし
ユーザーには [書籍について] ページのみが表示されます。多くても、書籍の抜粋のみ利用できます。この書籍はスキャンされていないか、著作権で保護されているため、ユーザーの検索キーワードに関連する少数の「スニペット」を Google ブックスで公開する許可を得ていません。

はじめに

静的リンクのドキュメントでは、Google ブックスの特定の書籍のページへの URL を生成するとても簡単な方法について説明しています。残念ながら、特定の書籍が Google ブックスのインデックスに登録されていない場合や、特定の地域のユーザーにプレビューが利用できない場合があります。静的リンクは「盲目的」であるため、意図した効果が得られないことがあります。

Dynamic Links は、JavaScript を使用して書籍の視認性をクエリするための、プログラマティックなクライアントサイドの代替メソッドです。これにより、ブック検索へのリンクの信頼性と予測可能性が高まるため、ユーザー エクスペリエンスの一貫性が向上します。視認性はエンドユーザーの所在地によって異なるため、ダイナミック リンクのインターフェースはサーバーサイドまたはオフラインのクエリ向けには設計されていません。

Dynamic Links の機能を理解するには、このドキュメントの最後にあるコードサンプルに進んでください。

ブランドの取り扱いガイドライン

Dynamic Links をレンダリングするときは、Google ブックス API ファミリーを規定しているブランドの取り扱いガイドラインに従う必要があります。特に、

  • 帰属情報および Google ブックスへのリンクは維持されなければなりません。
  • Google ブックスでプレビューにリンクする際は、承認済みの Google プレビュー ボタンのみを使用する必要があります。
  • テキストリンク、ボタン、ドキュメント、説明テキストは、承認された命名規則に従う必要があります。たとえば、Google ブックスのプレビューにリンクする際に「ダウンロード」や「読む」という動詞は使用しないでください。これはパブリック ドメインの作品しかダウンロードできないためです。

ブランディングの例

フリーコノミクス: ローグ エコノミストが秘めたあらゆる側面を探る
執筆者: Steven Levitt、Stephen Dubner

このドキュメントの最後にあるサンプル セクションでは、現在のブランディング ガイドラインに準拠している他の例を紹介しています。

クライアントサイド API

クライアントサイドのダイナミック リンクの中核にあるのは、1 冊以上の書籍に関する情報をリクエストする URL を作成し、<script> タグを使用して Google ブックスにリクエストを送信できる URL 形式です。

構文の例:
<script src="https://books.google.com/books?bibkeys=ISBN:0451526538&jscmd=viewapi&callback=mycallback"></script>

リクエストの形式

この URL の形式は、書籍にリンクするために使用される URL 構文に似ていますが、書籍 ID フィールドには複数の書籍 ID をカンマ区切りで指定し、「jscmd」と「callback」パラメータを追加することができます。必要に応じて、追加の引数を指定して、視認性フィルタを制御することもできます。

Dynamic Links は、書籍を特定するさまざまな方法(ISBN、OCLC 番号、LCCN キー)をサポートしています。この API では、GET リクエストの最大サイズまでのバッチ クエリを実行できます。

ISBN
&bibkeys=ISBN:0451526538(API は ISBN 10 と 13 の両方をサポートしています)
オフライン コンバージョン アクション
&bibkeys=OCLC:36792831
LCCN
&bibkeys=LCCN:96072233

JSON の結果の形式

この呼び出しからのレスポンスは、リクエストされた書籍に関する情報で、1 つ以上の JSON オブジェクトとして返されます。JSON オブジェクトの構造は次のとおりです。

JsonSearchResult {
    string bib_key;
    string info_url;
    string preview_url;
    string thumbnail_url;
    string preview;
};

これらのフィールドには次の情報が表示されます。

bib_key
この書籍のクエリに使用される識別子。
info_url
Google ブックス内の書籍に関する情報を含むページ(この書籍の概要ページ)の URL。
preview_url
書籍のプレビューへの URL。ユーザーは書籍の表紙に直接移動できます。リクエストで取得できる書籍が「スニペット表示」または「プレビューなし」のみの場合、プレビュー URL は返されません。
thumbnail_url
書籍の表紙のサムネイルへの URL。
プレビュー
書籍の視認性状態を示す値。full(完全表示の書籍の場合)、partial(限定プレビューの書籍の場合)、noview(スニペットまたはプレビューなしの書籍の場合)です。
埋め込み可能
ブック検索の埋め込みビューアを使用してサードパーティのページに書籍を埋め込むことができる場合、このブール値は true です。

レスポンスは、book オブジェクトのマップの値を含む「books」と、そのリクエストで有効になっているオプションのリストを含む「options」の 2 つのフィールドを持つ JSON オブジェクトです。オプションが指定されていない場合、レスポンスで "options" フィールドは省略されることがあります。次に例を示します。

Request:
https://books.google.com/books?jscmd=viewapi&bibkeys=0596000278,00-invalid-isbn,ISBN0765304368,0439554934&callback=ProcessGBSBookInfo

Response:
ProcessGBSBookInfo({
    "0596000278":{
        "bib_key":"0596000278",
        "info_url":"https://books.google.com/books?id=ezqe1hh91q4C&source=gbs_ViewAPI",
        "preview_url":"https://books.google.com/books?id=ezqe1hh91q4C&printsec=frontcover&sig=zSQ5gwlX1NZl_24M86KS8Rbj33Q&source=gbs_ViewAPI",
        "thumbnail_url":"https://books.google.com/books?id=ezqe1hh91q4C&pg=PR3&img=1&zoom=5&sig=bBmzIAIiCtMcM7Ii7TUHycqqEWg",
        "preview":"partial"
    },
    "ISBN0765304368":{
        "bib_key":"ISBN0765304368",
        "info_url":"https://books.google.com/books?id=gfg13CM_kU8C&source=gbs_ViewAPI",
        "preview_url":"https://books.google.com/books?id=gfg13CM_kU8C&printsec=frontcover&sig=jIrSb_SkcQRhy_VvtnKbTXjmvos&source=gbs_ViewAPI",
        "thumbnail_url":"https://books.google.com/books?id=gfg13CM_kU8C&pg=PP1&img=1&zoom=5&sig=LsTwGVAsy_qWYMPM6HVDTPAMokg",
        "preview":"full"
    },
    "0439554934":{
        "bib_key":"0439554934",
        "info_url":"https://books.google.com/books?id=iwiYGwAACAAJ&source=gbs_ViewAPI",
        "preview_url":"https://books.google.com/books?id=iwiYGwAACAAJ&source=gbs_ViewAPI",
        "thumbnail_url":"https://books.google.com/books?id=iwiYGwAACAAJ&printsec=frontcover&img=1&zoom=5&sig=_L6ySKDAs-8gNK28c3NyFdO22ZM",
        "preview":"noview"}
});

デベロッパーは、GBS サーバーから取得した JSON 結果に基づいて、ウェブページのコンテンツと外観を変更できます。現時点では、この処理のために DOM を変更するためのライブラリは GBS に用意されていません。

パラメータと追加フィールド

jscmd
Google ブックスへのリクエストです。
callback
戻り値を渡す JavaScript 関数の名前。

同期モードと非同期モード

非同期モード

非同期モードでは、デベロッパーはドキュメントの <head><script> タグを配置し、ページのレンダリングに必要なすべての識別子を含む URL を構築します。呼び出しから変数にデータが取り込まれます。これにより、ドキュメントの他の部分で書籍の情報を利用できるようになり、HTML や JavaScript ですぐにアクセスできます。

同期モード

同期モードでは、デベロッパーは HTML <body> の途中の URL を使用し、レスポンスは JavaScript コールバックを使用して処理されます。

よくある質問

Q: ダイナミック リンクを使用するには、API キーやその他の権限が必要ですか?
A: ダイナミック リンクを使用するために API キーやその他の認証は必要ありません。まずは、サンプルの一つをコピーして貼り付け、手直しをしてみましょう。
Q: JavaScript をサポートしていないブラウザや JavaScript が無効になっているブラウザはどうなりますか?
A: ユーザーのブラウザで JavaScript が有効になっていない場合、Google ブックスに書籍があるかどうかをテストする方法はありません。JavaScript に対応していないブラウザでは、Google ブックスの静的リンク構造を使用することをおすすめします。ただし、リンク先の書籍が Google ブックスに登録されているかどうかを事前に知ることはできません。
Q: 書籍は一度に何冊まで検索できますか?
A: 検索できる書籍の数は、GET リクエストの長さによってのみ制限されます。Microsoft Internet Explorer では、URL の最大長(2,083 文字)によって GET リクエストの長さが制限されます。
Q: 少し前の書籍について、Google ブックスの検索結果が返されました。結果が返されないのはなぜですか?
A: デベロッパーから発行されるリクエストの数は通常とは異なるため、Google ブックスのセキュリティ上の注意事項を誤って伝えてしまうことがあります。これを確認するには、API から何が返されるかを確認します。キャプチャを入力するリクエストの場合は、発行したクエリの数が多すぎます。Google ブックスにログインして、もう一度お試しください。
Q: プライバシーについてはどうですか?
A: 書籍の視認性に関するクエリに回答する際、Google は個人を特定できないサーバーのログデータを受け取ります。Google はユーザーのプライバシーを重視しており、このデータは Google のプライバシー ポリシーに記載されているとおりに取り扱われます。書籍の視認性を含むサービスをユーザーに提供している場合、そのサービスがダイナミック リンクを介して Google にもクエリを送信することをユーザーに伝えることをおすすめします。

コードサンプル

このセクションでは、Dynamic Links のさまざまな使用方法を示すサンプルを示します。任意の例をクリックすると、実際の動作を確認できます。基になるコードを確認するには、ブラウザから「ソースを表示」します。

  • 書籍ページの [プレビュー] ボタン
    Dynamic Links を使用してサイト上の個々の書籍ページに「プレビュー」ボタンを追加する場合、この例が適しています。この実装では、Google ブックスへの同期呼び出しを使用します。
  • コースのリーディング リスト
    この例は、学術コースの一般的な書籍リストを示しています。1 回の同期呼び出しで、Google ブックスの書籍ページへのリンク、表紙画像の追加、プレビュー提供の可否の通知を行います。
  • 代替書籍リスト
    前の例と同様に、このサンプルでも非同期 API コールバックを使用してブック検索にリンクを追加します。
  • インタラクティブ AJAX
    Dynamic Links は、高度にインタラクティブな AJAX アプリケーションでも使用できます。このサンプルは、ページを更新せずにさまざまな呼び出しを発行する方法を示しています。