iPhone/iPadのホーム画面コンテスト開催中!賞品は iTunes カード!

PHP 2007/07/17 22:48

楽天API PEAR::Services_Rakuten-0.2.0リリース

楽天ウェブサービスをPHPで利用するPEARライブラリ「PEAR::Services_Rakuten-0.2.0」をリリースしました。今回は未対応だったAPIの対応のほか、リファクタリングを行い、今後拡張しやすい形にソースコードを変更しました。

主な変更点は以下です。

  • 2007/07/17現在の全APIに対応(楽天ダイナミックアドAPI含む)
  • ソースコードリファクタリング
  • リファクタリングに伴い利用方法を変更(後述)

インストール・アンインストール

インストール方法は以下です。

CODE:
  1. $ pear install --alldeps http://www.1x1.jp/blog/download/Services_Rakuten-0.2.0.tgz

インストール時に「Failed to download pear/XML_Serializer within preferred state "stable"」といったエラーが発生した場合は以下のコマンドでXML_Serializerをインストール後、Services_Rakutenをインストールして下さい。

CODE:
  1. $ pear install --alldeps XML_Serializer-beta

アンインストール方法は以下です。

CODE:
  1. $ pear uninstall __uri/Services_Rakuten

Services_Rakutenを使う[0.2.0用]

0.2.0では以下のコードのようにServices_Rakuten::factory()にて、利用するAPIコード・デベロッパーID・アフィリエイトIDを指定します。このメソッドは各APIを実行するインスタンス(apiインスタンス)を返します。

apiインスタンスのexecuteメソッド実行する楽天ウェブサービスへリクエストが送信されます。executeメソッドは連想配列を引数として受け取るので各種パラメータを設定します。なおexecuteメソッドでは文字コードの変換は行いませんので、keywordなど日本語を渡す場合はUTF-8で指定して下さい。

取得した結果は、apiインスタンスのgetResultDataメソッドにて取得できます。

<楽天市場系API>

PHP:
  1. <?php
  2. require_once('Services/Rakuten.php');
  3. define('DEV_ID', 'xxxx');
  4. define('AFF_ID', 'xxxx');
  5.  
  6. // 楽天商品検索
  7. $api = Services_Rakuten::factory('ItemSearch', DEV_ID, AFF_ID);
  8. $api->execute(array('keyword' => '大福'));
  9. var_dump($api->getLastUrl());
  10. var_dump($api->getResultData());
  11.  
  12. // 楽天商品ジャンル検索
  13. $api = Services_Rakuten::factory('GenreSearch', DEV_ID, AFF_ID);
  14. $api->execute();
  15. var_dump($api->getLastUrl());
  16. var_dump($api->getResultData());
  17.  
  18. // 楽天商品コード検索
  19. $api = Services_Rakuten::factory('ItemCodeSearch', DEV_ID, AFF_ID);
  20. $api->execute(array('itemCode' => 'book:11907840'));
  21. var_dump($api->getLastUrl());
  22. var_dump($api->getResultData());
  23.  
  24. // 楽天カタログ検索
  25. $api = Services_Rakuten::factory('CatalogSearch', DEV_ID, AFF_ID);
  26. $api->execute(array('keyword' => 'ワンセグ'));
  27. var_dump($api->getLastUrl());
  28. var_dump($api->getResultData());
  29. ?>

<楽天ブックス系API>

PHP:
  1. <?php
  2. require_once('Services/Rakuten.php');
  3. define('DEV_ID', 'xxxx');
  4. define('AFF_ID', 'xxxx');
  5.  
  6. // 楽天書籍検索
  7. $api = Services_Rakuten::factory('BookSearch', DEV_ID, AFF_ID);
  8. $api->execute(array('keyword' => 'ブログ'));
  9. var_dump($api->getLastUrl());
  10. var_dump($api->getResultData());
  11.  
  12. // 楽天CD検索
  13. $api = Services_Rakuten::factory('CDSearch', DEV_ID, AFF_ID);
  14. $api->execute(array('keyword' => '氷室'));
  15. var_dump($api->getLastUrl());
  16. var_dump($api->getResultData());
  17.  
  18. // 楽天DVD検索
  19. $api = Services_Rakuten::factory('DVDSearch', DEV_ID, AFF_ID);
  20. $api->execute(array('keyword' => '氷室'));
  21. var_dump($api->getLastUrl());
  22. var_dump($api->getResultData());
  23. ?>

<楽天トラベル系API>

PHP:
  1. <?php
  2. require_once('Services/Rakuten.php');
  3. define('DEV_ID', 'xxxx');
  4. define('AFF_ID', 'xxxx');
  5.  
  6. // 楽天トラベル施設検索
  7. $api = Services_Rakuten::factory('SimpleHotelSearch', DEV_ID, AFF_ID);
  8. $api->execute(array('largeClassCode' => 'japan', 'middleClassCode' => 'kanagawa', 'smallClassCode' => 'hakone'));
  9. var_dump($api->getLastUrl());
  10. var_dump($api->getResultData());
  11.  
  12. // 楽天トラベル施設情報
  13. $api = Services_Rakuten::factory('HotelDetailSearch', DEV_ID, AFF_ID);
  14. $api->execute(array('hotelNo' => '65638'));
  15. var_dump($api->getLastUrl());
  16. var_dump($api->getResultData());
  17.  
  18. // 楽天トラベル空室検索
  19. $api = Services_Rakuten::factory('VacantHotelSearch', DEV_ID, AFF_ID);
  20. $api->execute(array('largeClassCode' => 'japan', 'middleClassCode' => 'kanagawa', 'smallClassCode' => 'hakone'
  21.                   , 'checkinDate' => '2007-07-18', 'checkoutDate' => '2007-07-20'));
  22. var_dump($api->getLastUrl());
  23. var_dump($api->getResultData());
  24.  
  25. // 楽天トラベル地区コード
  26. $api = Services_Rakuten::factory('GetAreaClass', DEV_ID, AFF_ID);
  27. $api->execute();
  28. var_dump($api->getLastUrl());
  29. var_dump($api->getResultData());
  30.  
  31. // 楽天トラベルキーワード検索
  32. $api = Services_Rakuten::factory('KeywordHotelSearch', DEV_ID, AFF_ID);
  33. $api->execute(array('keyword' => '伊豆'));
  34. var_dump($api->getLastUrl());
  35. var_dump($api->getResultData());
  36. ?>

<その他API>

PHP:
  1. <?php
  2. require_once('Services/Rakuten.php');
  3. define('DEV_ID', 'xxxx');
  4. define('AFF_ID', 'xxxx');
  5.  
  6. // 楽天ダイナミックアド
  7. $api = Services_Rakuten::factory('DynamicAd', DEV_ID, AFF_ID);
  8. $api->execute(array('url' => 'http://www.1x1.jp/blog/'));
  9. var_dump($api->getResultStatus());
  10. var_dump($api->getResultStatusMessage());
  11. var_dump($api->getLastUrl());
  12. var_dump($api->getResultData());
  13. ?>

Services_Rakutenを使う[0.1.0用]

従来からあったdoItemSearch/doGenreSearch/doItemCodeSearch/doBookSearchメソッドはdeprecated(非推奨)となっています。0.2.0では動作しますが、今後のリリースでは廃止される可能性があります。

今後開発される際はServices_Rakuten::factoryによる利用方法で実装して下さい。

リファクタリングの効果

ちょうどリリース作業を行っている最中に楽天ダイナミックアドAPIが発表されました。「げげっ」と思いつつも、どうせなら今回のリリースに含めたいと思い作業を開始したところ、API拡張用にリファクタリングを行っていたため短時間で機能追加を行うことができました。

早速リファクタリングの効果が発揮され、我ながら嬉しかったです;-)。



■Related Posts

4 Responses to “楽天API PEAR::Services_Rakuten-0.2.0リリース”

  1. on 18 7月 2007 at 11:59 1.Do You PHP はてな said …

    [PHP][PEAR]PEAR::Services_Raku...

    Shinさん、仕事早いなぁ:-D 楽天ウェブサービスをPHPで利用するPEARライブラリ「PEAR::Services_Rakuten-0.2.0」をリリースしました (more...)

  2. on 19 7月 2007 at 12:47 2.using API; - コンテンツマッチ広告を実現する楽天ダイナミックアドAPI said …

    [...] 2007年7月19日追記: 楽天API PEAR::Services_Rakuten-0.2.0リリース | Shin x blog [...]

  3. on 02 8月 2007 at 16:37 3.akahoshi said …

    こんにちはー

    早速使わせていただきましたー
    ありがとうございます!

    そして、間違って
    「楽天API PEAR::Services_Rakuten-0.1.0リリース」
    にトラックバックおくっちゃいました。
    どうもすみませんー

  4. on 16 9月 2007 at 14:53 4.nekolife said …

    Services_Rakuten-0.2.0を使わせてもらっています.
    楽天APIを扱う上で非常に重宝しております.

    質問なのですが,楽天商品検索でキーワードを設定せずジャンルIDのみで検索を実行することは可能なのでしょうか?
    Services_Rakuten-0.2.0ですと
    「keyword or genreId have not been set.」
    というエラーになってしまいます.
    本家の楽天APIはジャンルIDのみで検索することができるので,Services_Rakuten-0.2.0はできないのかなと気になって報告いたしました.

Trackback This Post | Subscribe to the comments through RSS Feed

Leave a Reply