ランプの中身(Ruby on Railsのシステム開発)
ランプの中身(Ruby on Railsのシステム開発)では、株式会社ケイビーエムジェイのRuby on Railsエンジニアが蓄積したノウハウを公開しています。Ruby on Railに関する技術解説や実践的なノウハウなど、開発現場の技術に則したコンテンツを随時追加していきます。 初心者の方でもわかりやすい技術解説を心がけています。リクエスト、ご質問も受け付けいますので、ご気軽にコメントを記述して下さい。

< グラフを作ってみるか... |  メイン | Ruby on Railsでacts_a... >

x5rの中身(Ruby
2008.01.21

RailsでAmazon APIを利用する


こんにちは。
KBMJのプログラマのx5rです。

 

今回はRailsからAmazonAPIを利用してみようと思います。

 

 

環境

 

Railsの環境が既に構築されているものとします。
ちなみに私の環境は

Mac : IntelMac
OS : Mac OS X 10.5.1 Leopard

 

$ script/about
About your application's environment
Ruby version              1.8.6 (i686-darwin8.10.3)
RubyGems version          1.0.1
Rails version             2.0.2
Active Record version     2.0.2
Action Pack version       2.0.2
Active Resource version   2.0.2
Action Mailer version     2.0.2
Active Support version    2.0.2
Application root          /Users/username/dev/doruby
Environment               development
Database adapter          mysql


となっています。

それではAmazonAPIを使ってみます。

Amazon Web Serviceアカウントの取得

 

Amazon Web Serviceを利用するためには、ショッピング用とは別のアカウントが必要になりますので、持っていない場合はAmazon Web Serviceから取得します。

 

Amazon::Ecsをインストール

 

Amazon Web Serviceを利用するためのgemsライブラリ

Amazon::Ecs

をインストールします。

 

$sudo gem install amazon-ecs


Railsプロジェクトを作成


$rails amazon
$cd amazon


API keyの設定


config/environment.rbで上記でインストールしたAmazon::Ecsを読み込み、そして上記で取得したAmazon Web Serviceを利用するためのAPI keyを設定します。

・・・
#一番下に記述
require 'amazon/ecs'
Amazon::Ecs.debug = true
Amazon::Ecs.options = {
  :aWS_access_key_id => "XXXXXXXXXXXXXXXXXXXX",
  :associate_tag => "xxxxxx-22",
  :country => :jp
}



Modelの作成


Amazon Web Serviceから取得したデータを設定するモデルを作成します。

ここでは特にDBにはアクセスしないので、ActiveRecordを継承しないモデルを作成します。

 

$ less app/models/item.rb
class Item
  attr_accessor :asin, :title, :image, :url
  def initialize(asin, title = nil, url = nil, image = nil)
    @asin = asin
    @title = title
    @url = url
    @image = image
  end
end




Controllerの作成

 

Amazon Web Serviceにアクセスするコントローラーを作成します。

今回はAmazonの音楽カテゴリから検索するようにします。


$script/generate controller amazon
$ less app/controllers/amazon_controller.rb
class AmazonController < ApplicationController
  def index
    if request.get?
    else
      @keyword = params[:keyword]
      res = Amazon::Ecs.item_search(@keyword, {
        :search_index => 'Music',
        :response_group => 'Medium',
        :sort => 'salesrank'
      })
      @items = []
      res.items.each do |item|
        @items << Item.new(
          item.get('asin'),
          item.get('itemattributes/title'),
          item.get('detailpageurl'),
          item.get_hash('smallimage')
        )
      end
    end
  end
end

 

Viewの作成

 

  • layoutを作成

 

$ less app/views/layouts/application.rhtml
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="ja" xml:lang="ja">
<head>
<meta http-equiv="Content-Language" content="ja" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv="Content-Style-Type" content="text/css" />
<meta http-equiv="Content-Script-Type" content="text/javascript" />
<meta http-equiv="imagetoolbar" content="no" />
<title>Amazon Web Service</title>
<%#= stylesheet_link_tag "screen", :media => "all" %>
</head>
<body>
  <%= @content_for_layout %>
</body>
</html>

 

  • 検索/結果ページを作成

 

$ less app/views/amazon/index.rhtml
<p>Amazonからデータを取得</p>
<%- form_tag :controller => 'amazon', :action => 'index' do -%>
  <%= text_field_tag "keyword", @keyword %><%= submit_tag "アマゾンで検索" %>
<%- end -%>

<%- if @items && @items.size > 0 -%>
<p>検索結果</p>
<table>
  <%- @items.each do |item| -%>
  <tr>
    <td><%= link_to(image_tag(item.image[:url], :size => "#{item.image[:width]}x#{item.image[:height]}", :alt => item.title), item.url, :target => '_blank') %></td>
    <td><%= item.asin %></td>
    <td><%= item.title %></td>
  </tr>
  <%- end -%>
</table>
<%- end -%>
 
 

Webrickを起動 


$ script/server  

 

http://localhost:3000/amazonにアクセスすると検索ボックスが表示されますので、検索したいアーティス名を入力し、「アマゾンで検索」ボタンを押下すれば、Amazonから検索された商品が表示されます。

 

amazon_ecs

 

 

 

 

 

 

コメント (0)  |トラックバック (0)

ブックマークに追加する Subscribe with livedoor Reader あとで読む

トラックバック URL

この記事にコメントする

ニックネーム:
メールアドレス:
URL:


KBMJのWebソリューション
Ruby on Rails Summer Festival 2008開催決定!!

TOPICS

2008/06/25
ZD Net Builder」の連載記事です。第四回は「Rubyでどう書く?:重複したRSSをまとめる」が掲載されました。

2008/05/30
ZD Net Builder」の連載記事です。第三回は「Rubyでどう書く?:Rubyで特定URLの画像パス一覧を表示する」が掲載されました。

2008/05/07
ZD Net Builder」に連載を始めました。第二回は「Rubyでどう書く?:RubyでPDF履歴書を作成する」が掲載されました。

2008/04/24
アットマーク・アイティ」に『 Rubyを使ってPaSoRi経由でSuicaの乗車履歴を取得し、GoogleMapsやGoogleEarthで表示する』が掲載されました。

全体のRoR最新ブログ一覧

プロフィール

  • x5r
  • MacでRuby on Rails開発!

ブログの購読

RSS

timelog
株式会社ケイビーエムジェイロゴ