hon.jp Webサービス(Ver.2.1)について

「hon.jp Webサービス」とは?

 hon.jpでは、企業ユーザーもしくはWebスクリプティングに興味あるユーザーがhon.jpのデータにアクセスするためのWebサービスAPIを、HTTP REST方式で開発者向けに提供しており、hon.jpサイト会員ユーザーにも、管理画面の中で「XML出力機能」としても提供しております。具体的には、本サービスを使うことで、URLに指定のパラメータを追加してhon.jpサーバーを呼び出すことで、XMLの形でhon.jpの電子書籍メタデータDBの内容を取得することができます。 提供されるXMLをそのまま利用する以外に、XSLTを指定することで、XMLを好みのように自動加工したり、必要な情報のみを得ることができます。
▲上に戻る

誰が使えばいいの?

 「hon.jp Webサービス」は電子書籍検索サービス/アプリケーションを構築しようとお考えの人のための無料サービスです。電子書籍関係のシステム開発をされている方、業界リサーチ中の方、フリーウェア作家の方など、どんどん使っていただいて問題ありません。ただし、ご利用にはXML、Webスクリプティングについて最小限の知識が必要となりますので、あらかじめご了承ください。
▲上に戻る

専用IDとか必要なの?

 はい、本格利用の場合は必要となります。「hon.jp Webサービス」のご利用にはまず、hon.jpのサイト会員として登録いただき、自分の「おともだちID」(Webサービスを利用するための専用ID)を事前登録し、常にそれをクエリ文(HTTP URL)の中に記述していただく仕様となっております。もしhon.jp会員登録する前に、本サービスをお試しされたいWebサイトオーナー、プログラム開発者の方は、お試し用おともだちID「aOENZ00002」(お試し用のため、不定期に変更されることがあります)をお使いください。なお、本サービスに関する技術関連ドキュメントは本ページを中心に追加されてゆく予定です。
▲上に戻る

どんなサイト/アプリケーションが作れるの?

「hon.jp Webサービス」はすでにいろいろな場所で使われており、使い方はまさにあなたのアイデア次第です。hon.jpの携帯電話向けサイト「ケータイ読書カフェhon.jp」(携帯電話で http://hon.jp/とURL入力してアクセス)の大半の人気コーナーも、PHP4とこの「hon.jp Webサービス」によって構築され、自動運転されています。 他にもたとえば、Mac用ウィジェットサイトモジュールなども簡単につくれます。
PHPビギナーの方向けに、こちらにサンプルコードなどを掲載しているので、一度改造してみて遊んでみてください。
▲上に戻る

データ取得(HTTPクエリ)時に使えるパラメータ

 「hon.jp Webサービス(Ver.2.1)」の呼び出しでは、下記のような書式でHTTP URLを実行します。
http://hon.jp/rest/2.1/URLエンコードされた検索キーワード(ない場合は「null」と明記)/自分のおともだちID/その他パラメータ
※URL最後尾の「その他パラメータ」の部分では、用途に応じて複数のパラメータ(たとえばhardware、genre1とか。下表参照)を付けて、出力内容の絞り込みを行ないます。
 「hon.jp Webサービス(Ver.2.1)」のパラメータには以下があります。
RESTパラメータ
パラメータ意味内容
1つ目のディレクトリ名検索文字列検索キーワード(URLエンコードします)
2つ目のディレクトリ名おともだちIDお試し用IDは「aOENZ00002」です
hardware動作ハードウェア2桁数字
os動作OS2桁数字
viewer動作ビューワーソフト2桁数字
shop電子書籍販売サイトID4桁大文字英字
payment決済方法ID2桁大文字英字
genre1第一分類3桁数字
genre2第二分類3桁数字
genre3第三分類3桁数字
isbn13ISBNコード(13桁版)紙書籍が存在した場合、そのISBNコード(ハイフンなし)。※旧10桁版は出ません。
description50キャッチコピー文表示フラグon(default)/off
publ出版社指定4桁大文字英字
sort表示順id(作品ID順、デフォルト)/rank7(7日間ランキング順)/rank90(90日間ランキング順)
max1ページの表示最大件数(デフォルト:10件)
page表示ページ(デフォルト:1ページ)
modeXML出力モードfull/compact/genrelist(デフォルトはfull、最小限表示はcompact、分類IDマスタ出力はgenrelistを使用)
xsltXSLT指定無指定または「xml」でxml表示/ファイル(URL)指定でXSLT変換

 参考例として、取得用のサンプルURLを示します。実際に下記をクリックしてみてください。
サンプルURLのパラメータ
パラメータ意味詳細
%E6%9C%AC/URLエンコードされた検索キーワード=「本」
aOENZ00002/おともだちID:aOENZ00002 
hardware=70動作ハードウェア ID:70PC
&genre1=600第一分類 ID:300雑学・趣味
&genre2=100第二分類 ID:400健康・生活
&sort=rank7表示順:rank77日間ランキング順
&publ=FAAF出版社指定:FAAF小学館のみ
▲上に戻る

受信XMLの例

 返されるXMLは以下のようになります([■この色で表示されている文字は説明です。実際のXMLには入りません])。
XMLサンプル
<ProductInfo>

  <modified>2007/10/12 13:00:50 [リクエスト時刻] </modified>
  <modified_timestamp>1192161650 [リクエスト時刻(UNIXタイムスタンプ形式)] </modified_timestamp>
  <modified_rfc822>Fri, 12 Oct 2007 13:00:50 +0900 [リクエスト時刻(rfc822形式)] </modified_rfc822>
  <request>
    <args>
      <arg value=" [ユーザーエージェント名] " name="UserAgent"/>
      <arg value="aOENZ00002 [おともだちID] " name="uid" />
      <arg value=" [検索キーワード] " name="keyword" />
      <arg value="70" name="hardware" />
      <arg value="600" name="genre1" />
      <arg value="100" name="genre2" />
      <arg value="rank7" name="sort" />
      <arg value="10" name="max" />
      <arg value="1" name="page" />
    </args>
  </request>
  <totalResults>117 [ヒットした作品数] </totalResults>
  <totalPages>12 [ヒットした作品のmaxページ数合計] </totalPages>

  <results> [作品の基礎情報]
    <title id="1141 [作品ID] "> [作品名] </title>
    <title_kana> [作品名かな] </title_kana>
    <creator> [著者名] </creator>
    <creator_kana> [著者名かな] </creator_kana>
    <publisher id="AABB [出版社ID] "> [出版社名] </publisher>
    <description50> [作品紹介テキスト] </description50>
    <isbn13> [ISBN] </isbn13>
    <rank7> [7日間ランキング順位] </rank7>
    <rank90> [90日間ランキング順位] </rank90>
    <recorded_date> [書誌更新年月日] </recorded_date>
    <issue_date> [発行日] </issue_date>
    <issue_date_rfc822> [発行日(rfc822形式)] </issue_date_rfc822>
    <url> [hon.jp作品情報ページのURL] </url>

    <genreInfo> [作品の分類状況]
      <genre1 id="*** [第一分類 ID] "> [第一分類] </genre1>
      <genre2 id="*** [第二分類 ID] "> [第二分類] </genre2>
      <genre3 id="*** [第三分類 ID] "> [第三分類] </genre2>
    </genreInfo>

    <details> [電子書籍ファイルAに関する情報]
      <honjp_id>0001141AABB7070150000AAABAB [hon.jp ID] </honjp_id>
      <url> [購入ページへのリンク] </url>
      <hardware id="** [動作ハードウェア ID] "> [動作ハードウェア] </hardware>
      <os id="** [動作OS ID] "> [動作ハードウェアOS] </os>
      <viewer id="** [動作ビューワーソフト ID] "> [動作ビューワーソフト] </viewer>
      <shop id="**** [電子書店 ID] "> [電子書店名] </shop>
      <payment id="** [決済方法 ID] "> [決済方法] </payment>
      <sale_date> [発売日] </sale_date>
      <sale_date_rfc822> [発売日(rfc822)] </sale_date_rfc822>
    </details>
    <details> [電子書籍ファイルBに関する情報]
      <honjp_id>0001141AABB7070310000AAABAB [hon.jp ID] </honjp_id>
      <url> [購入ページへのリンク] </url>
      <hardware id="** [動作ハードウェア ID] "> [動作ハードウェア] </hardware>
      <os id="** [動作OS ID] "> [動作OS] </os>
      <viewer id="** [動作ビューワーソフト ID] "> [動作ビューワーソフト] </viewer>
      <shop id="**** [電子書店 ID] "> [電子書店名] </shop>
      <payment id="** [決済方法 ID] "> [決済方法] </payment>
      <sale_date> [発売日] </sale_date>
      <sale_date_rfc822> [発売日(rfc822)] </sale_date_rfc822>
    </details>
  </results>

</ProductInfo>
▲上に戻る

XSLTのススメ

 XSLTを使うと、いろいろなかたちで受信XMLを整形できるようになります。「hon.jp Webサービス」では、「xslt」パラメータに任意のXSLTファイルを指定することでそれを実現します。XSLTファイルは、UTF-8で記述し、インターネット上でアクセス可能な場所に設置して下さい。以下にその活用例をいくつか紹介します。
▲上に戻る

hon.jp - REST利用例

▲上に戻る

HTML表示

 HTMLに変換するXSLTファイルを用意すると、RESTの結果をHTMLとして利用できます。 検索条件とXSLTファイルを指定したRESTのURLを、ブラウザのブックマークなどに登録できます。
 サンプルの表示(別ウィンドウ)
http://hon.jp/rest/2.1/ %A5%A2%A5%D5%A5%EA%A5%AB/ aOENZ00002/ xslt=http://hon.jp/ csv/rest_xslsample/ sample_20.xsl
 この例では、「英語」というキーワードによるREST検索を行い、その結果をXSLTファイル「sample_20.xsl」を用いてHTMLに変換しています。
 XSLTを右に示します。
 XSLTファイル「sample_20.xsl」は、RESTによるXMLの情報のほとんどをHTMLに変換しています。 必要な情報のみを抽出することで、目的に合わせたHTMLに変換できます。
XSLTサンプル(HTML表示)
<?xml version="1.0" encoding="UTF-8" ?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" >
 <xsl:template match="/">
  <html lang="ja">
  <head>
   <title>検索結果:<xsl:value-of select="ProductInfo/totalResults" /></title>

   <style TYPE="text/css">

   </style>

  </head>
  <body>
   <xsl:apply-templates select="ProductInfo/request" />
   <hr />
   ヒット数:
   <xsl:value-of select="ProductInfo/totalResults" />
   (ページ数:
   <xsl:value-of select="ProductInfo/totalPages" />
   )
   <hr />
   <xsl:apply-templates select="ProductInfo/results" />
  </body>
  </html>
 </xsl:template>
 

 <xsl:template match="request">
  以下のリクエストがありました
  <div id="request">
   <xsl:apply-templates select="args" />
  </div>
 </xsl:template>

 <xsl:template match="request/args">
  <table border="1">
   <tr>
    <th>項目</th>
    <th>値</th>
   </tr>
   <xsl:apply-templates select="arg" />
  </table>
 </xsl:template>

 <xsl:template match="arg">
   <tr>
    <td>
     <xsl:value-of select="./@name"/>
    </td>
    <td>
     <xsl:value-of select="./@value"/>
    </td>
   </tr>
 </xsl:template>


 <xsl:template match="results">
  <div>
  <table border="1" width="100%">
   <tr>
    <td colspan="2"><h3><xsl:value-of select="title"/></h3></td>
   </tr>
   <tr>
    <th>作品ID</th>
    <td><xsl:value-of select="title/@id"/></td>
   </tr>
   <tr>
    <th>情報</th>
    <td><xsl:value-of select="description50"/></td>
   </tr>
   <tr>
    <th>著者</th>
    <td><xsl:value-of select="creator"/></td>
   </tr>
   <tr>
    <th>出版社</th>
    <td><xsl:value-of select="publisher"/>(<xsl:value-of select="publisher/@id"/>)</td>
   </tr>
   <tr>
    <th>分類</th>
    <td><xsl:apply-templates select="genreInfo" /></td>
   </tr>
   <tr>
    <th>電子書籍</th>
    <td><xsl:apply-templates select="details" /></td>
   </tr>
  </table>
  </div>
  <hr />
 </xsl:template>

 <xsl:template match="genreInfo">
  <div>
   <xsl:value-of select="genre1" />(<xsl:value-of select="genre1/@id"/>)/
   <xsl:value-of select="genre2" />(<xsl:value-of select="genre2/@id"/>)/
   <xsl:value-of select="genre3" />(<xsl:value-of select="genre3/@id"/>)
  </div>
 </xsl:template>
 
 <xsl:template match="details">
  <div>
  <a>
   <xsl:attribute name="href">
    <xsl:value-of select="url"/>
   </xsl:attribute>
   <xsl:attribute name="target">_blank</xsl:attribute>
   <span style="font-size:9px;"><xsl:value-of select="honjp_id" /></span>:
   <xsl:value-of select="hardware" />(<xsl:value-of select="hardware/@id"/>):
   <xsl:value-of select="os" />(<xsl:value-of select="os/@id"/>):
   <xsl:value-of select="viewer" />(<xsl:value-of select="viewer/@id"/>):
   <xsl:value-of select="shop" />(<xsl:value-of select="shop/@id"/>):
   <xsl:value-of select="payment" />(<xsl:value-of select="payment/@id"/>):
   <xsl:value-of select="sale_date" />
   <xsl:value-of select="account" />
  </a>
  </div>
 </xsl:template>
</xsl:stylesheet>

RSSに変換

 RSS形式に変換するXSLTファイルを用意すると、RESTの結果をRSSとして利用できます。  検索条件とXSLTファイルを指定したRESTのURLを、BLOGやRSSリーダに設定できます。
 サンプルの表示(別ウィンドウ)
http://hon.jp/rest/2.1/ %A5%A2%A5%D5%A5%EA%A5%AB/ aOENZ00002/ xslt=http://hon.jp/ csv/rest_xslsample/ sample_20_rss2.xsl
 この例では、「英語」というキーワードによるREST検索を行い、その結果をXSLTファイル「sample_20_rss2.xsl」を用いてRSS2形式のXMLに変換しています。
 XSLTを右に示します。
 一つの書籍は、電子書店・プラットフォームなどが異なる複数の電子書籍データを持ちます。
 サンプルのXSLTは、電子書籍に直接リンクするのではなく、書籍のページにリンクさせています。 もちろん、電子書籍に直接リンクさせるRSSも設定できます。
XSLTサンプル(RSSに変換)
<?xml version="1.0" encoding="UTF-8" ?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" >
<xsl:output method="xml" indent="yes" encoding="UTF-8"/>
 <xsl:template match="/">
  <xsl:variable name="keyword">
   <xsl:for-each select="ProductInfo/request/args/arg">
    <xsl:if test="@name[(.='keyword')]">
     <xsl:value-of select="./@value"/>
    </xsl:if>
   </xsl:for-each>
  </xsl:variable>
  <rss version="2.0">
  <channel>
    <title>HON.JP - <xsl:value-of select="" /></title>
    <link>http://hon.jp/</link>
    <description>HON.JP</description>
    <lastBuildDate><xsl:value-of select="ProductInfo/modified_rfc822"/></lastBuildDate>
    <docs>http://backend.userland.com/rss/</docs>
    <generator></generator>
    <category></category>
    <managingEditor></managingEditor>
    <webMaster></webMaster>
    <language>ja</language>
    <xsl:for-each select="ProductInfo/results">
     <item>
      <title><xsl:value-of select="title"/></title>
      <link><xsl:value-of select="concat(url,'&amp;kw=',)"/></link>
      <description><xsl:value-of select="description50"/></description>
      <pubDate><xsl:value-of select="issue_date_rfc822"/></pubDate>
      <guid><xsl:value-of select="concat(url,'&amp;kw=',)"/></guid>
     </item>
    </xsl:for-each>
  </channel>
  </rss>
 </xsl:template>
</xsl:stylesheet>

インナーフレームを用いて、webページに表示

 インナーフレームを用いて、そこにHTMLに変換させたhon.jp - REST結果を表示させます。
 あなたのwebページ上で、
  「事前に設定しておいた検索条件の結果の表示」
  「電子書籍の検索」
 が可能になります。
下に示す例では、
 ページを開いた時には、キーワード「英語」の検索結果がインナーフレームに表示されています。
 フォームにキーワードを入れて検索ボタンをクリックすると、そのキーワードの検索結果がインナーフレームに表示されます。
←インナー
 フレーム
 XSLTを右に示します。
 このページの「検索フォーム」「インラインフレーム」「javaScript」も右に示します。
 javaScriptのRESTのパラメータ部分を書き換えることで、キーワード検索以外の検索も可能になります。
XSLTサンプル(インナーフレームを用いて、webページに表示)
<?xml version="1.0" encoding="UTF-8" ?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" >
<xsl:output method="html" indent="yes" encoding="UTF-8"/>
 <xsl:template match="/">
  <xsl:variable name="keyword">
   <xsl:for-each select="ProductInfo/request/args/arg">
    <xsl:if test="@name[(.='keyword')]">
     <xsl:value-of select="./@value"/>
    </xsl:if>
   </xsl:for-each>
  </xsl:variable>
  <html lang="ja">
  <head>
   <title>hon.jp検索結果:<xsl:value-of select="" /></title>
   <style TYPE="text/css">
    body{font-size:12px;}
    .headBox{background-color:#edc9c9; }
   </style>
  </head>
  <body>
   <div class="headBox" align="center">
    <a>
     <xsl:attribute name="href">
      http://hon.jp/
     </xsl:attribute>
     <xsl:attribute name="target">_parent</xsl:attribute>
     hon.jp
    </a>
   </div>
   <xsl:for-each select="ProductInfo/results">
    <div class="contents">
     <a>
      <xsl:attribute name="href">
       <xsl:value-of select="concat(url,'&amp;kw=',)"/>
      </xsl:attribute>
      <xsl:attribute name="target">_blank</xsl:attribute>
      <xsl:value-of select="title"/>
     </a>
    </div>
   </xsl:for-each>
  </body>
  </html>
 </xsl:template>
</xsl:stylesheet>

インナーフレームHTML
<script type="text/javascript">
  function iframeSearch()
  {
    var escKw = encodeURI( document.form_iframe.kw.value );
    var url = 'http://hon.jp/rest/2.1/' + escKw + '/aOENZ00002/xslt=http://hon.jp/csv/rest_xslsample/sample_ebk20.xsl';
    elmIframe.location.href = url;
  }
</script>

<form name="form_iframe">
  <input type="text" name="kw" />
  <input type="button" name="if_search" value="検索" onClick="iframeSearch();" />
</form>

<iframe
  src="http://hon.jp/rest/2.1/ %B1%D1%B8%EC/ aOENZ00002/ xslt=http://hon.jp/csv/rest_xslsample/ sample_ebk20.xsl" name="elmIframe" width="160" height="180" marginwidth="2" marginheight="2" scrolling="auto" frameborder="yes" align="left">
</iframe>

リアルタイム誘導監視メソッドの案内 hot !

 リアルタイムコミュニケーションへのニーズが増大しつつあるWeb業界の最新トレンドをにらみつつ、hon.jpでは2009年から“リアルタイム系”の新世代のAPIメソッドを公開していく予定です。その第1号が、この「リアルタイム誘導監視メソッド」です。
これは、hon.jpのPC版サイトとケータイ版サイトおよび提携ポータルサイトにおいて、一般ユーザーが電子書籍販売サイトへのリンクをクリックし、そのままサイトジャンプしていく様子をリアルタイムでXML出力するメソッドです(つまり、hon.jpのサイトログの一部をそのままリアルタイム公開しているわけです)。


 参考例として、取得用のURL書式です。実際に下記をクリックしてみてください(リアルタイムで変化していますので、30秒〜数分間隔で繰り返しクリックしてみてください)。
サンプルURLのパラメータ
パラメータ意味詳細
aOENZ00002おともだちID:aOENZ00002サンプルIDです
mode誘導監視モードは「jumplist」直近3作品の誘導ログを出力


 返されるXMLは以下のようになります。
出力サンプル
<JumpList>
<modified>2009/04/28 17:04:22</modified>
<modified_timestamp>1240905862</modified_timestamp>
<results>
<jumpArray>

<jump datetime="2009-04-28 17:04:13">
 <book id="76279">
  <title>医龍</title>
  <writer>乃木坂太郎/永井明</writer>
  <publisher>小学館</publisher>
 </book>
<shop id="AABZ">コミック小学館ブックス</shop>
</jump>

<jump datetime="2009-04-28 17:03:51">
 <book id="69830">
  <title>OLよ、エジプトをめざせ!</title>
  <writer>鈴木博美</writer>
  <publisher>マイカ</publisher>
 </book>
<shop id="AADF">小説の王子様</shop>
</jump>

<jump datetime="2009-04-28 17:02:45">
 <book id="44376">
  <title>多重人格探偵サイコ REAL</title>
  <writer>大塚英志</writer>
  <publisher>徳間書店</publisher>
 </book>
<shop id="AAAK">徳間書店モバイル</shop>
</jump>

</jumpArray>
</results>
</JumpList>

 もともとはケータイサイトでのヘッドライン表示や、ウィジェットでの利用を意識して設置したメソッドですが、もしかしたら他の用途などでも使えるかもしれません(or 使えないかもしれません)。JSON版なども含め、今後、この手のリアルタイム系APIメソッドは増やしていく予定です。
▲上に戻る

ご利用時のhon.jpクレジット表示など

 「hon.jp Webサービス」を本格的にご利用の場合は、大変恐縮ではございますが、当該サイト/アプリケーション等のどこか目立たない場所にでもにこのバッジ画像 hon.jp Webサービス の表示をいただくと、開発チームの励みとなると同時にうちの社長もけっこう喜んだりしますので、大変ありがたいです。もし画像表示ができない場合は、代わりに「データ提供元:hon.jp Webサービス」とか「hon.jpのWebサービスのデータです。」等々のテキスト注意書きレベルでも全然OKです。
▲上に戻る

hon.jp - REST利用における制限

 hon.jpは、RESTサービスの中止・中断を行う場合があります。また、サービス利用の制限などにつきましてはご利用の規約をご覧ください。
▲上に戻る
| 電子書籍検索サイト「hon.jp」 | 本サイトのご利用について | お問い合わせ | WebサービスAPI | 会社概要 |