読者です 読者をやめる 読者になる 読者になる

*いしのなかにいる*

oops ! I am in rock !

【Ruby】ランダムに実行したい処理の実装方法

Tech

こんちは

今回はタイトルの通り、rubyでランダム処理を実装する方法です。

乱数の取得方法

乱数を取得する方法は以下の4通り

  • rand(普通のrand)
  • Random.rand
  • Random#rand
  • Array.sample

どの方法でもランダムな値を取得可能だけど、1番のメソッドだけfloatが使えない(というかintとして判定される)

[1] pry(main)> rand 10 # 1~10の中で乱数を取得
=> 9
[2] pry(main)> rand 10..15 # 10~15の中で乱数を取得
=> 13
[3] pry(main)> Random.rand 10
=> 9
[4] pry(main)> Random.rand 10..15
=> 12
[5] pry(main)> Random.new.rand 10
=> 5
[6] pry(main)> Random.new.rand 10..15
=> 11
[7] pry(main)> [*1..10].sample
=> 9
[8] pry(main)> [*10..15].sample
=> 15
[1] pry(main)> rand 1.1
=> 0
[2] pry(main)> rand 1.2
=> 0
[3] pry(main)> rand 1.9
=> 0
[4] pry(main)> rand 4.1
=> 2
[5] pry(main)> Random.rand 1.1
=> 0.193044472967513
[6] pry(main)> Random.new.rand 1.1
=> 0.9249129201223988

これらのうち、どれかの方法を使用して分岐を組みます。

例)10分の1の確率で処理を実行する。

if rand(10) + 1 == 1
  do_something # 10分の1の確率で実行したい処理
end

最後に

こんな感じで乱数を取得して、一定の確率で行いたい処理を実装できます。

【Rails】ポート番号を指定してRailsサーバを起動する方法

Tech

こんにちは

開発環境でRailsのサーバを起動するときって、いつもこんなコマンド打ちますよね?

bundle exec rails s

今までこれで起動して困ることはなかったのですが、複数のサーバを同時にあげようとしたときに「どうすんだ?」って軽くはまったのでメモです。

複数のRailsサーバを起動するには

ローカルの開発環境で複数のRailsサーバを起動するときはポート番号を指定します。

冒頭で打ったコマンドに「-p」オプションをつけると指定可能になります。

$ bundle exec rails s -p 3001
=> Booting WEBrick
=> Rails 4.2.2 application starting in development on http://localhost:3001
=> Run `rails server -h` for more startup options
=> Ctrl-C to shutdown server
[2016-04-30 06:47:48] INFO  WEBrick 1.3.1
[2016-04-30 06:47:48] INFO  ruby 2.3.0 (2015-12-25) [x86_64-darwin15]
[2016-04-30 06:47:48] INFO  WEBrick::HTTPServer#start: pid=38169 port=3001

これで、http://localhost:3001でサーバにアクセスできるようになります。

サーバ起動時によく使うオプション

私がサーバ起動時によく使うオプションはこんな感じです。

-p(--port=port):サーバを起動するときのポート番号を指定する

初期値:3000
使用例:ポート番号3001番でサーバを起動する

$ bundle exec rails s -p 3001

-b (--binding=ip):バインドするIPアドレスを指定する

使用例:他の端末からアクセスできるように指定

$ bundle exec rails s -b 0.0.0.0

-e (--environment=name):環境(test/development/production)を指定してサーバを起動する

初期値:development
使用例:production環境としてサーバを起動

$ bundle exec rails s -e production

そのほかのオプション

私はほとんど使わないのですが、他にはこんなオプションがあります。

オプション 説明 初期値
-c (--config=file) rackupファイルを指定
-d (--daemon) デーモンとしてサーバを起動
-u (--debugger) デバックモード
-P (--pid=pid) PIDファイルを指定 tmp/pids/server.pid
-h (--help) ヘルプを表示

最後に

複数プロジェクトを並行して開発しているときなんかに使うことがあるかもなので覚えておいて損はないオプションです。
いろんなオプションを覚えてどんどんRails力を上げていきましょう!

【Mac】Macの起動時に任意のアプリを自動起動させる方法

Mac

こんにちは!

今回はMacを起動したときに任意のソフトを自動起動させる方法を紹介します。 Windowsで言うところの「スタートアップ」にプログラムを追加する方法ですね。

以下手順

システム環境設定→ユーザとグループ→ログイン項目

f:id:malor:20160427130015p:plain:w300

+ ボタンを押して、任意のアプリを追加する

f:id:malor:20160427130016p:plain:w300

最後に

これだけです!ちょっとしたTipsでした。

Windowsしか使ってこなかった人間なんで、こんなちょっとしたことでも調べなくちゃいけないんで大変です。

少しずつインプットして、デキるマカーになりましょう!

AmazonアソシエイトにTwitterアカウントの追加申請を通すまで 〜その3〜(また通りました!)

アフィリエイト

こんにちは。

TwitterアカウントをAmazonアソシエイトに通すため、審査を通すための条件調査中の ヘタレプログラマー です。


【過去の挑戦結果】

blog.malor.net

blog.malor.net


前回のトライでとうとう1アカウント申請を通すことに成功しました。

さっそくサーバから定期的にツイートする運用をしてみています。


 
まぁまぁクリックはしてもらえるのですが、なかなか買ってはもらえないですね。
きっと属性がズレているのでしょう。この辺は今後どんどん改善していかねば。


そんなことはさておき、

さて、今までのトライでわかっていることは、

  • アカウントを開設してからしばらく期間が経っていること
  • エロがないこと
  • アソシエイトタグを勝手に使用していないこと
  • あんまり呟いている必要はない(ツイート数は関係ない?)

辺りを満たせていればいけるんじゃね?ってとこですね。



前回のトライから早1週間、審査落ちしたアカウントたちも少し成長しました。

【手持ちのアカウント】  オタネタ系  :作成から4週間くらい  ファッション系:作成から3週間くらい

今日はこいつらを巣立たせるぜ!

まずはオタ系アカウントからレッツトライ!


作成から4週間のアカウントの審査結果

開設からおよそ1ヶ月となったこのアカウント

十分な運用期間は経っているのでしょうか?


↓↓↓結果↓↓↓

Amazon.co.jpアソシエイト・プログラムにお問い合わせいただき、ありがとうございます。

このたびのご依頼通り、お知らせいただいたhttps://twitter.com/xxxx3について通常のサイト審査をさせていただき、無事承認となりましたので、既存のアソシエイトID:xxxx-22の登録サイトに追加をいたしました。今後、新しいサイトでのご注文やクリック数などの情報は既存のIDのレポートに計上されます。


キタ?キタね!
キターーーーーーーーー!!


審査通過2アカウント目です!

ようやく『十分な運用期間』を突破しましたよ!!!


ちなみにアカウント作成からおよそ1ヶ月です。


アカウントの状態は、ツイート数15(ほぼRT)、フォロー:170、フォロワー:150 くらいでした。
フォロー/フォロワーも共に相互希望とかばっかりです。


アマゾン様の言う「十分な運用期間」がある程度が絞れてきました!嬉しい限りです。


作成から3週間のアカウントの審査結果

ついでにもう一つのアカウントも申請しておきましょう。

前回のオタネタ系と同じ結果になるのでしょうか。 はたまた一気にこちらのアカウントも審査通過してしまうのでしょうか?

トライしてみます。


↓↓↓結果↓↓↓

Amazon.co.jpアソシエイト・プログラムにご興味をお持ちいただき、ありがとうございます。

このほどご連絡いただいた追加を希望されるURLの内容を確認させていただきました。

https://twitter.com/xxxx4

残念ながら当プログラムでの審査基準に合致しなかったため、このほどご連絡いただいたURLの追加を承認いたしかねますことをご了承くださいますようお願い申し上げます。

やっぱり、という感じですかね。 3週間ではまだダメ、ということなんでしょう。

「さあ!これからTwitterでガンガン商品紹介していくぜ〜〜!!!」

なんてなんて方は早めにアカウントを取得してくださいね!


最後に

今回のトライはここまでです。

アカウント開設からの期間は4週間くらいが一つの目安になりそうです。

まとめるとこんな感じ

  • アカウントを開設してからしばらく(4週間くらい?)期間が経っていること 【更新】
  • エロがないこと
  • アソシエイトタグを勝手に使用していない
  • たくさん呟いている必要はない(ツイート数は関係ない?)

もう一つのアカウントが4週間くらいで通ってくれれば、アカウント開設からの期間もだいぶ信憑性を帯びてきますね。
次回の審査結果に期待です!!

ではでは!

AmazonアソシエイトにTwitterアカウントの追加申請を通すまで 〜その2〜(通りました!)

アフィリエイト

こんにちは。

Amazonアソシエイトで一攫千金を狙っているヘタレプログラマーです。

すでに3回失敗しているAmazonアソシエイトへのTwitterアカウント追加申請の続編です。

過去の申請結果は

blog.malor.net

を見てみてください


前回のトライの最後では、アマゾン様より

サイトについては作成されたものをすぐに申請されるのではなく、十分な期間運用いただく等コンテンツを拡充の上で申請いただきますようお願いいたします。


とのお言葉をいただいたので、
駄目出しを喰らったアカウントはしばらく期間をおいてから申請してみようと思います。

なので!

今回はアマゾン様の言う通り、ある程度期間の立っているアカウントで申請をしてみましょう。

というわけで、昨年の冬に取得してあったアカウントをサンプルとして用意しました。
※ ちなみにツイートはたったの4つ(全てRT)、フォロー:80、フォロワー:16 と、有名アカウントをフォローしただけの情報収集用のアカウントです。

今回はこいつでトライみようと思います。


4回目の審査結果

さて、期間が経っているだけの放置アカウントではどうでしょうかね〜。やっぱアクティブなアカウントじゃないとダメなのかね〜。

ほいっ、ポチッとな。

↓↓↓結果↓↓↓

Amazon.co.jpアソシエイト・プログラムにお問い合わせいただき、ありがとうございます。

このたびのご依頼通り、お知らせいただいたhttps://twitter.com/xxxx1について通常のサイト審査をさせていただき、無事承認となりましたので、既存のアソシエイトID:xxxx-22の登録サイトに追加をいたしました。今後、新しいサイトでのご注文やクリック数などの情報は既存のIDのレポートに計上されます。

え??


ま、まじすか!?


まだ10分くらいしか経ってないよ??



こ、これが十分な運用期間のパワーなんでしょうか・・・ なぜかちょろっと通ってしまいました。

審査を依頼してからおよそ10分で。。



う〜ん、、、



つまり、AmazonアソシエイトにTwitterアカウントを追加登録するには、

  • アカウントを開設してからしばらく期間が経っていること

が満たされていて、

内容については

  • エロがないこと
  • アソシエイトタグを勝手に使用していないこと

辺りがちゃんとしていればいーってことですかね?


そういうことだよね!

そう理解しました。ちょろいぜAmazonアソシエイトの審査!



あとは『十分な運用期間』というのがどのくらいかを判断したいことですね。

前回「運用期間不足」と言われて審査に落ちたアカウントがあるので、そいつを使って検証してみます。


5回目の審査結果

先日ジャンルの異なるアカウントを2つ作っていたので、調子に乗って2つとも一気に申請してみました。

片方は作成から3週間(前回落ちたアカウント)、もう一方は2週間が経過しています。


今回は返答までに結構時間かかりました。(5時間くらい)

さて、結果のほどは?

↓↓↓結果↓↓↓

Amazon.co.jpアソシエイト・プログラムにご興味をお持ちいただき、ありがとうございます。

このほどご連絡いただいた追加を希望されるURLの内容を確認させていただきました。

https://twitter.com/xxxx2
https://twitter.com/xxxx3

残念ながら当プログラムでの審査基準に合致しなかったため、このほどご連絡いただいたURLの追加を承認いたしかねますことをご了承くださいますようお願い申し上げます。

アソシエイト・プログラムをご利用いただき、ありがとうございました。

だ、だめか〜。。。

まだ前回落ちてから3日ですから、さすがに十分ではなかったということでしょう。

でも1アカウント通ってるので全然平気!心の余裕が違いますね!!

最後に

とりあえず今回のトライはここまでということで。(もう持ちアカウントもないので)

  • アカウントを開設してからしばらく期間が経っていること
  • エロがないこと
  • アソシエイトタグを勝手に使用していないこと
  • あんまり呟いている必要はない(ツイート数は関係ない?)

次回以降、「十分な運用期間がどのくらいなのか」について検証していこうと思います。


ではまた!

AmazonアソシエイトにTwitterアカウントの追加申請を通す方法 〜その1〜(通せません!)

アフィリエイト

こんにちは。


先日ふとアフィネタを考えていて、

「アマゾンの在庫情報を監視するクローラを作って、『予約開始したよ!』とかツイッターでつぶやかせれば、めっちゃ売れるんじゃね?」

とか思い立ち、ゲームの在庫情報を監視するプログラムを組んでみました。


実際に呟かせてみたところ、今まで見たことないほどクリックしてもらえまして、(ブログに仕込んだリンクの10倍くらい)


能天気な僕は


「こりゃいけるぜ!Amazonアフィ楽勝〜!!」


と小躍りしていたのです。


が・・・


Amazonの商品を紹介するには、たとえTwitterアカウントでも審査に通す必要があることを知らなかったのです(汗

(アホですね。。)


む〜ん、審査か〜・・・


Amazonアソシエイトにブログの審査を出したときはすんなり通ったのですが、

他のASPとかの審査は落ちまくっているので良い印象がありません。


とりあえず、何も考えずにアソシエイトリンクを貼りまくっていたアカウントをそのまま申請してみました。


ちなみに申請したアカウントで呟いていたのはこんな内容です。

ドラクエの在庫が復活したよ!!

http://アソシエイトリンク


1回目の審査結果

待つこと1時間半、早速Amazon様から1回目の申請結果が返ってきました。

↓↓↓結果↓↓↓

誠に申し訳ございませんが、承認致しかねますことをご了承くださいますようお願いいたします。

アソシエイト・プログラムをご利用いただき、ありがとうございます。

Amazon.co.jp カスタマーサービス アソシエイト・プログラムスタッフ

まじっすか。。 もう少しヒントとか。。

・・・ないですよね、知ってます。


こういうときはググって対策を検討しましょう。困った時にはグーグルです。


審査に関するネタを探し回ってみたところ、Amazonアソシエイトの大御所きんどうさんが自身のブログでこんなことを書かれておられました。

ツイート内に関しては『過去、無断でのAmazonアソシエイトの利用』をしていないかチェックされるくらいと思われるのですが、どうしても原因がわからない場合は全削除したほうがいいかもしれません。

TwitterでAmazonアフィを検討している方へ!審査通過後はアカウント名・アイコン・プロフィールの変更・修正は不可なんで覚悟が必要のようですより抜粋


やっぱアソシエイトリンクある状態での申請はまずかったのね。。


仕方がないので、今までのツイートを全部消して再チャレンジすることにします。


ちなみにツイートの全削除は「TwitWipe」というWebサービスを利用しました。 こちらのサイトに詳しい使い方が書いてありました。 ありがとうございました。


2回目の審査結果

全削除後、なにもツイートがないのはまずいかな〜なんて思い、30ほどリツイートをしてから審査依頼してみました。


↓↓↓結果↓↓↓

誠に申し訳ございませんが、承認致しかねますことをご了承くださいますようお願いいたします。

アソシエイト・プログラムをご利用いただき、ありがとうございます。

Amazon.co.jp カスタマーサービス アソシエイト・プログラムスタッフ



やべーっす、、、1回目の申請のときと何もかわらない返答です。。。

ドラクエで城の兵士と話しているような気分です。


先に進むにはフラグを立てねば!



再度グーグル先生のお世話に。



ちょこちょこ検索してみたら、こちらのサイト様で参考になりそうな記事を見つけました。

f:id:malor:20160427104224p:plain


おぉぉ・・・!!


これ、なのか!?


新規アカウントで良いってことなのか???

審査するっていうから30RTとかしてたのに〜。ほやほやの新規でいいとかほんまかいな。


まーでもこうなったらこの情報にすがるしかないッス!



ということで早速新規アカウントを用意してAmazonに審査を申請しました。


3回目の審査結果

さて、他の方で実績のある作りたてほやほやアカウントでの審査結果は? (30分ほどで返信がきました。)


↓↓↓結果↓↓↓

このたびご連絡いただきましたURLを確認させていただきましたが、現段階ではコンテンツが少ないため、必要な審査を行うことができませんでした。

このため、サイトについては作成されたものをすぐに申請されるのではなく、十分な期間運用いただく等コンテンツを拡充の上で申請いただきますようお願いいたします。

アソシエイト・プログラムをご利用いただき、ありがとうございます。

Amazon.co.jp カスタマーサービス アソシエイト・プログラムスタッフ



え〜〜〜

だめじゃーん!!!


やっぱ新規アカウントじゃダメだよ〜。


Twitterの方が審査通りやすいってどっかのサイトに書いてあったのに〜。Twitterの審査厳しいッス。。


だいたい十分な運用期間てなんだよ!1ヶ月くらい無難な内容をツイートし続ければ良いのか??



ぐぬぬぬ。。。。



仕方ねぇ!そんならやってやる!!

とりあえず1週間くらい無難なツイートだけして再申請してやるぅっ!!!


最後に

というわけで、初めてのTwitterアカウント追加申請はこんな感じでした。惨敗です。


ググってみると、結構

「Amazonアソシエイトに通すならTwitterでやれば簡単!」

みたいな記事を見るんですが、やってみると厳しいです。


なんで落ちたか理由がわからないってのが難しい要因の一つですよね。間違いなく

まぁ、3回目にしてやっとヒントらしい文面をもらえたんで、これに従ってチャレンジを続けていきます。

いまのところわかっているのは、

  • 新規のアカウントじゃ審査は通らない

ってことですね。


今後うまくいく要因なんかわかったら、また記事を書いてみますね。
ではでは

【AmazonAPI】APIを使ってAmazonの在庫状況を取得しよう(Amazon Product Advertising API)

AmazonAPI

こんにちは!

ちょいと思い立ってAmazon Product Advertising APIの勉強を始めました。 後で読み返せるように、アプリを動かすまでの手順をまとめておきます。

前準備:Product Advertising API に登録する

Amazonアソシエイトの登録が必要

その後Product Advertising API の登録

コーディング始めるまで

情報が英語ばかりでさっぱりなのでググる シークレットアクセスキーの取得方法

環境構築

適当なフォルダにbundlerをインストール

$ gem install bundler
ERROR:  While executing gem ... (Errno::EACCES)
    Permission denied @ rb_sysopen - /Users/xxxx/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/bundler-1.11.2/.gitignore
    
$ sudo gem install bundler
Password:
Successfully installed bundler-1.11.2
1 gem installed

もちろん権限が必要です。

Gemfileを作成

$ vim Gemfile

「i」キーを押して以下の内容を記述

source 'http://rubygems.org'
gem 'amazon-ecs'

「esc」キーを押してから 「:wq」 を入力して enter

amazon/ecs をインストールする

$ bundle install --path vendor/bundle


Fetching gem metadata from http://rubygems.org/..........


Fetching version metadata from http://rubygems.org/..


Resolving dependencies...
Installing mini_portile2 2.0.0
Installing ruby-hmac 0.4.0
Using bundler 1.11.2
Installing nokogiri 1.6.7.2 with native extensions
Installing amazon-ecs 2.4.0
Bundle complete! 1 Gemfile dependency, 5 gems now installed.
Bundled gems are installed into ./vendor/bundle.

商品検索のサンプルコード

require 'rubygems'
require 'amazon/ecs'
require 'active_support/core_ext'  # 検索結果のハッシュを整形する
require 'pp'

# 初期設定
Amazon::Ecs.configure do |options|
  options[:AWS_access_key_id] = 'AWS_ACCESS_KEY'             # 必須(AWS_ACCESS_KEY)
  options[:AWS_secret_key]    = 'AWS_SECRET_ACCESS_KEY'      # 必須(AWS_SECRET_ACCESS_KEY)
  options[:associate_tag]     = '****-22'                    # 必須(トラッキングID)
  options[:search_index]      = 'Books'                      # 商品種別
  options[:response_group]    = 'ItemAttributes'
  options[:country]           = 'jp'                         # 国
end

# 検索
xml = Amazon::Ecs.item_search('Rubyによるクローラー開発技法').doc.to_s    # 検索する文言を指定して検索 
# 検索結果のハッシュを整形
result = Hash.from_xml(xml).with_indifferent_access[:ItemSearchResponse]

検索実行

$ bundle exec ruby sample.rb
~~~省略~~~
 "Items"=>
  {"Request"=>
    {"IsValid"=>"True",
     "ItemSearchRequest"=>
      {"Keywords"=>"Rubyによるクローラー開発技法",
       "ResponseGroup"=>"ItemAttributes",
       "SearchIndex"=>"Books"}},
   "TotalResults"=>"3",
   "TotalPages"=>"1",
   "MoreSearchResultsUrl"=>
    "http://www.amazon.co.jp/gp/redirect.html?linkCode=xm2&SubscriptionId=AKIAIU5MOE4UE466LMXA&location=http%3A%2F%2Fwww.amazon.co.jp%2Fgp%2Fsearch%3Fkeywords%3DRuby%25E3%2581%25AB%25E3%2582%2588%25E3%2582%258B%25E3%2582%25AF%25E3%2583%25AD%25E3%2583%25BC%25E3%2583%25A9%25E3%2583%25BC%25E9%2596%258B%25E7%2599%25BA%25E6%258A%2580%25E6%25B3%2595%26url%3Dsearch-alias%253Dbooks-single-index&tag=re-minder-22&creative=5143&camp=2025",
   "Item"=>
    [{"ASIN"=>"4797380357",
      "DetailPageURL"=>
       "http://www.amazon.co.jp/Ruby%E3%81%AB%E3%82%88%E3%82%8B%E3%82%AF%E3%83%AD%E3%83%BC%E3%83%A9%E3%83%BC%E9%96%8B%E7%99%BA%E6%8A%80%E6%B3%95-%E5%B7%A1%E5%9B%9E%E3%83%BB%E8%A7%A3%E6%9E%90%E6%A9%9F%E8%83%BD%E3%81%AE%E5%AE%9F%E8%A3%85%E3%81%A821%E3%81%AE%E9%81%8B%E7%94%A8%E4%BE%8B-%E4%BD%90%E3%80%85%E6%9C%A8-%E6%8B%93%E9%83%8E/dp/4797380357%3FSubscriptionId%3DAKIAIU5MOE4UE466LMXA%26tag%3Dre-minder-22%26linkCode%3Dxm2%26camp%3D2025%26creative%3D165953%26creativeASIN%3D4797380357",
      "ItemLinks"=>
       {"ItemLink"=>
         [{"Description"=>"Add To Wishlist",
           "URL"=>
            "http://www.amazon.co.jp/gp/registry/wishlist/add-item.html%3Fasin.0%3D4797380357%26SubscriptionId%3DAKIAIU5MOE4UE466LMXA%26tag%3Dre-minder-22%26linkCode%3Dxm2%26camp%3D2025%26creative%3D5143%26creativeASIN%3D4797380357"},
          {"Description"=>"Tell A Friend",
           "URL"=>
            "http://www.amazon.co.jp/gp/pdp/taf/4797380357%3FSubscriptionId%3DAKIAIU5MOE4UE466LMXA%26tag%3Dre-minder-22%26linkCode%3Dxm2%26camp%3D2025%26creative%3D5143%26creativeASIN%3D4797380357"},
          {"Description"=>"All Customer Reviews",
           "URL"=>
            "http://www.amazon.co.jp/review/product/4797380357%3FSubscriptionId%3DAKIAIU5MOE4UE466LMXA%26tag%3Dre-minder-22%26linkCode%3Dxm2%26camp%3D2025%26creative%3D5143%26creativeASIN%3D4797380357"},
          {"Description"=>"All Offers",
           "URL"=>
            "http://www.amazon.co.jp/gp/offer-listing/4797380357%3FSubscriptionId%3DAKIAIU5MOE4UE466LMXA%26tag%3Dre-minder-22%26linkCode%3Dxm2%26camp%3D2025%26creative%3D5143%26creativeASIN%3D4797380357"}]},
      "ItemAttributes"=>
       {"Author"=>["佐々木 拓郎", "るびきち"],
        "Binding"=>"単行本",
        "EAN"=>"9784797380354",
        "EANList"=>{"EANListElement"=>"9784797380354"},
        "IsAdultProduct"=>"0",
        "ISBN"=>"4797380357",
        "Label"=>"SBクリエイティブ",
        "Languages"=>
         {"Language"=>
           [{"Name"=>"日本語", "Type"=>"Published"},
            {"Name"=>"日本語", "Type"=>"Unknown"}]},
        "ListPrice"=>
         {"Amount"=>"3218",
          "CurrencyCode"=>"JPY",
          "FormattedPrice"=>" 3,218"},
        "Manufacturer"=>"SBクリエイティブ",
        "NumberOfPages"=>"448",
        "PackageDimensions"=>
         {"Height"=>"110", "Length"=>"827", "Weight"=>"137", "Width"=>"583"},
        "ProductGroup"=>"Book",
        "ProductTypeName"=>"ABIS_BOOK",
        "PublicationDate"=>"2014-08-22",
        "Publisher"=>"SBクリエイティブ",
        "Studio"=>"SBクリエイティブ",
        "Title"=>"Rubyによるクローラー開発技法 巡回・解析機能の実装と21の運用例"}},
~~~省略~~~

こんな感じで取得できます。 あとはお好みの情報だけ抽出して、DBに登録するなりしましょう。

検索結果を1件ずつ取得

一回のAPI実行で10件取得できるで、ループして各商品情報を取得しましょう。

result[:Items][:Item].each do |item|
  #  pp "商品名称   : #{item[:ItemAttributes][:Title]}"
  #  pp "価格       : #{item[:ItemAttributes][:ListPrice][:Amount]}"
  #  pp "商品URL    : #{item[:DetailPageURL]}"
  #  pp "画像URL    : #{item[:MediumImage][:URL] if item[:MediumImage].present?}"
  #  pp "Platform   : #{item[:ItemAttributes][:Platform]}"
  #  pp "メーカー   : #{item[:ItemAttributes][:Label]}"
  #  pp "販売者     : #{item[:ItemAttributes][:Publisher]}"
  #  pp "商品種別   : #{item[:ItemAttributes][:Binding]}"
  #  pp "発売日     : #{item[:ItemAttributes][:ReleaseDate]}"
end

検索結果が多い(10件を超える)場合は

件数が多い場合は複数回APIを実行する必要があります。
(100件まで検索結果を取得可能なので最大10回)

そんな場合はAPI呼び出しの外側にループを組みましょう。

[*1..10].each do |page|
  xml = Amazon::Ecs.item_search(platform, search_index: 'Books', item_page: page).doc.to_s
  # 何か処理
end

最後に

今の所こんな感じに使用しています。

Amazonの在庫情報をもとに商品を紹介するなど、Amazonアソシエイトの使い方が広がりそうですよね。 今後もAmazonAPIの色々な機能を試してみようと思います。