以前、WEBサービスを自作するためにDMM Web APIを使うことに決定しました。
今回はDMM WEB APIを使いやすくするPHP用SDKを使ってみることにします。
[kanren postid=”349″]
インストールと実行
SDKはcomposerで簡単にインストールできます。
GitHubにあるインストール方法とテストコードをつかってみます。
composerでインストール
$ composer require dmmcomlabo/dmm-sdk-v3
サンプルコード
GitHubに書かれているサンプルコードを一部修正して実行してみましょう。
サンプルコードは商品情報を取得するプログラムです。
- SITE_ADULT の部分を SITE_GENERAL(一般) に変更。
- $keywordをナース から スマホ に変更。
- affiliate_idとapi_idを自分が取得したIDに変更。
$dmm = new \Dmm\Dmm([ "affiliate_id" => "YOUR-AFFILIATE-ID", "api_id" => "YOUR-API-ID", ]); // 商品検索APIを使用する場合 $keyword = 'ナース'; $response = $dmm->api("product")->find(Dmm\Apis\Product::SITE_GENERAL, [ 'keyword' => $keyword ]); $result = $response->getDecodedBody(); print_r($result);
affiliate_idとapi_idが正しければ、上記のコードで商品情報が取得できるはずです。
送信できるフィールドやレスポンスフィールドの内容はこちらで確認できます。
ドキュメントおかしくね?と思ったところ
SDKを軽く触ってみたところ、
「ん?動かないぞ?」
とおもったところがあったので紹介します。
ジャンル検索が動かない。
$actress = $dmm->api('genre')->find(24);
このコードですが、普通にエラーはきます。
「いや!DMM公式SDKのドキュメントだぜ!俺のソースが何かおかしいはず・・・!」
と小一時間頑張ってみましたが動きませんでした。
ここで、ふとあることに気づきます。
APIデータの格納変数が$actressになっています。
あれ?これもしかして女優検索のソースコードをコピってapi(‘actress’)をapi(‘genre’)にしただけじゃね?
このあたりでドキュメントがおかしい可能性に行き当たり、非常にめんどくさいですがSDKの中身のプログラムを見てみることにしました。
そして気づきます。
これ・・・第2引数いるじゃねぇか!
なんと第二引数に floor_idが入った連想配列を突っ込む必要があったのです。
ちなみに今回のサンプルコードだとfind(24)の24の部分がfloor_idです。
つまり以下のコードで動きます。
$res = $dmm->api('genre')->find(24, ['floor_id' => 24,]);
24を2回書いてるじゃないか!と思うかもしれませんが、第一引数の24は別にほかの数字でも問題なく動きます。
//これでも同じ結果になるよ! $res = $dmm->api('genre')->find(1, ['floor_id' => 24,]);
数字以外が入ってたらエラーをはくので、第一引数は半角数字かつ必須入力です。
でもたぶん第一引数は使ってないです。
勘弁してくれDMM。
最後に
今回はDMM公式のPHP用SDKを使ってみました。
色々トラブルはありましたが、なかなか使いやすくて悪くないと思います。
ちなみに別にSDKを使わなくてもDMM Web APIを使うことは可能なので、気に入らなかったら自作のクラスなんかを作ってみるのもいいかもしれません。
コメント