【Rails基礎】Amazon APIでAmazon商品検索ツールを作ってみた


RailsでAmazon APIを使ってみたい

最近、Railsの勉強をサボっていましたが、アフィリエイトリンク作成ツールを自作したくて学習を再開しました。

今回はアフィリエイトリンクツールで Amazon の商品を紹介できるようにしたかったので、

Amazon の API を使って、

Railsで Amazon 商品を検索できるツール

を作ってみました。

 

その名も、

Amasearch

ですね。

 

Image from Gyazo

 

RailsでのAmazon API の使い方を検索してみたところ、こちらの神記事を発見。

この記事を応用して書籍だけではなく、

Amazon.co.jp のすべてのカテゴリの商品を検索できるツールを作ってみました。

 

 

Railsで Amazon の API を使う前の準備

まずは Amazon の API を使う準備からですね。

実はAmazon APIを使うためには、

  • アソシエイト ID
  • アクセスキー ID
  • アソシエイトタグ

という3つの情報が必要になってきます。

これらは簡単に言ってしまうと、

Amazon アソシエイトで 商品を紹介する時に必要な情報

です。

キーの取得方法は割愛しますが、ググるとザクザク出てくると思います。

 

 

RailsでAmazon商品検索ツールを作る方法

準備が終わりましたら、Amazon 商品を検索できるアプリを作っていきましょう。

ちなみに僕の開発環境は

  • Railsのバージョン:5.0.7.2
  • Rubyのバージョン:2.3.1

です。

 

アプリを作成

まずは

amasearchというRailsアプリを作ってみましょう。

作成したら、アプリのディレクトリに移動してください。

 

splite3のバージョンを指定する

これは僕だけかもしれませんが、Rails5にアップデートしたところ、必要になってしまった手順です。

Gemファイルの中の

という記述を

に変更。

splite3のバージョンを1.3.6に指定してあげましょう。

ぼくの場合、これをやらねばデータベース、コントローラー作成でエラーが出てしまうのです・・・!

Gemファイルに記述したら上書き保存して

を発動しましょう。

 

データベース作成

今回のアプリは商品を検索するだけなので、データベースは使いません。

がしかし、Rails自体がデータベースあり前提に作られているので、空のデータベースを用意しておきましょう。

のあとに

を発動してやります。

 

コントローラーを作成する

続いてコントローラーですね。

今回はgoods_controller.rbというコントローラーを作っていきます。

また作成時にsearchというアクションをデフォルトで記述しておきますね。

 

ルーティング設定する

次はルーティング。

routes.rbを開いて、このように記述します。

これでルートディレクトリに商品検索画面がくるようになります。

goodsコントローラーのsearchアクションをルートディレクトリに設定できましたね。

 

モデル作成

続いてモデルですね。

Goodクラスを定義づけるファイルになります。

まずは

でモデルファイルを作成。

 

そして、モデルファイルgood.rbに次のように記述し、Goodクラスでどのようなインスタンスを作るのか書いてあげます。

これによると、

  1. 商品のタイトル
  2. 画像の URL
  3. 商品の詳細 URL

の3つのプロパティを持ったインスタンスを生成するクラスとわかりますね。

 

ビューファイルを作成する

続いて、みた目を司る ビューファイルを作っていきます。

search.html.erbというファイルを新規で

app>views>goods

配下に新規で作成してください。

検索窓に入れたキーワードがkeywordというname属性になっているので、コントローラー側でparams[:keyword]で取り出せることになります。

 

商品を表示させる部分は「部分テンプレート」で表現していますので、_good_list.html.erbというファイルも作っておきましょう。

Amazon商品のオブジェクトを代入した@goodsというクラス変数の配列を、eachメソッドでgoodという変数で個々に取り出し、link_toメソッドで

  • 第一引数:リンク先をgoodのimage_urlプロパティの画像URL
  • 第二引数:商品の詳細URL

に指定して、商品の画像自体に詳細のURLを貼ります。

で、そのあとにgood.titleでgood変数のtitleプロパティ(商品のタイトル)を表示するようになってるのですね。

 

Gemを追加

いよいよ Amazon API のgemを導入していきます。

Gemファイルに

を追記して上書き保存しましょう。

 

アソシエイトキーなどを指定する

Gemfileを上書き保存したら、バンドルインストールは待ってください。

それよりも先にAmazon アソシエイトキーの情報をenvironment.rbに記述しなければならないのです。

階層はconfig/locales/environment.rbになりますね。このファイルを次のように編集します↓

このファイルの

associate_tag アソシエイトタグ
AWS_access_key_id アクセスキー
AWS_secret_key シークレットキー

に冒頭で準備しておいた3つの

  • アソシエイト ID
  • アクセスキー ID
  • アソシエイトタグ

を記入してやりましょう。記入して上書き保存したら

します。

 

コントローラーを記述する

最後にコントローラーのgoods_controller.rbを編集していきます。

3行目の

でフォームにキーワードが入力されたか条件分岐を判断し、入力されているならそのkeywordの文字を検索ワードとし、Amazonから検索してgoodsオブジェクトに代入してくれます。

goodsというオブジェクトをゲットできますので、そのプロパティにそれぞれeachメソッドを利用して

  • タイトル
  • 画像 URL
  • 商品の詳細 URL

を指定してあげましょう。

 

ここまでできれば完成です。

検索窓に試しに商品名を入れてみてください。

 

Image from Gyazo

 

1つの検索に対して最大10のAmazon商品が出てくると思います。

Amazon APIはまだまだ奥が深そうなので継続的に修行していきたいですね。

 

それでは!

Lin

 

【参考文献】

Pocket
LINEで送る

コメントはこちらからお願いします!



もう1本読んでみる