いつかエンジニアになりたい

Nothing is too late to start

Amazon Product Advertising API を利用してみる

Amazonの商品情報をAPIから取得できるかどうかを試してみる。

Amazon Product Advertising API とは

Amazonの商品情報を利用して独自のEコマースサイトを作成するためのAPI群。
これにより、APIを叩くだけでAmazonの商品情報をはじめ、様々な情報を取得できる。

Amazon Product Advertising API を利用する

詳細については、以下のサイトが非常に分かりやすいので、参考にしてください。
Amazon Web サービス入門(Product Advertising API)

APIを利用する上で必要なもの
  • トラッキングID

 事前にAmazonアソシエイト・プログラムへの参加し、トラッキングIDを取得 *1
 参考:Amazonアソシエイト・プログラムへの参加

  • Access Key ID, Secret Access Key

 Product Advertising API アカウントを作成し、上記のID, Keyを取得
 参考:Access Key IDとSecret Access Keyの取得

Product Advertising APIREST APIなので、XMLが取得できるかどうかだけなら、
ブラウザのURL部分に下記のリクエストを入力すればXMLが取得できるはず。
※AccessKeyID部分を自分のAccess Key IDに置き換える
※プログラムからXMLを取得する際は、署名などを加えたりしてめんどくさい。

http://ecs.amazonaws.jp/onca/xml?
Service=AWSECommerceService
&AWSAccessKeyId=[AccessKeyId]
&Operation=ItemSearch
&SearchIndex=Books
&Title=Harry%20Potter
&Version=2009-07-01
APIを利用してみる
yum -y install httpd php pear
pear install Services_Amazon-0.9.0

※Amazonにリクエストを送る際に、タイムスタンプ、署名を加える必要があるので、今回は、PearServices_Amazonを利用する。

  • Services_Amazonを利用し、リクエストを取得する
<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8" />
    <title>Amazon API</title>
</head>
<body>
    <h1>Amazon API</h1>
    <form action="" method="post">
	<input type="text" placeholder="Keyword" name="test">
	<button type="submit" class="btn">Submit</button>
    </form>
	
    <?php
    require_once "Services/Amazon.php";

    $amazon = new Services_Amazon();
    $amazon->setLocale("JP");
    $amazon->setAccessKeyID("****************");
    $amazon->setSecretAccessKey("*************************");
    $amazon->setAssociateID("************");
    $options = array();
    $options['Keywords'] = $_POST['test'];
    $options['Sort'] = 'salesrank';
    $options['ResponseGroup'] = 'ItemIds,ItemAttributes,Images';
	
    $result = $amazon->ItemSearch('Books', $options);
	
    if(!empty($_POST['test'])){
	if (PEAR::isError($result)) { // Error
		$error = $amazon->getError();
		echo $error['Code'];
		echo $error['Message'];
	} else { // Correct
		echo "<pre>";
		var_dump($result);
		echo "</pre>";
	}
    }
    ?>
</body>
</html>

詳しい関数の説明については、Services_Amazon を参照。
XMLで取得したい情報はResponseGroupで指定。

今回はAmazon Product Advertising APIを利用して、商品の検索しか行なっていませんが、他にもカートの追加、削除であったり色々とできるみたいなので、気になる方は調べてみてください。


以上

*1:Amazonアソシエイト・プログラムへの参加の為に、利用するWEBサイトの情報を入力するんだけど、しっかりとしたサイトや目的がないとAmazonの審査が通らない。審査に落ちても確認はできないがAPIは利用できるっぽいので、審査が通らない場合は、トラッキングID, Access Key ID, Secret Access Keyは確認したらメモしといたほうが良い。

Homebrewを使ったMANP環境構築

今さらながらmacportsからhomebrewに乗り換えてみた。

とりあえず以下の環境でPHP, mysql, apacheの環境を揃えた。

PC:Macbook 

OS:Mac OS X lion

パッケージ管理:homebrew

% brew install coreutils
% brew install bash-completion
% brew install curl
% brew install zsh
% brew install readline
# php, mysql, apache
% curl -O https://raw.github.com/ampt/homebrew/php/Library/Formula/php.rb
% mv php.rb `brew --prefix`/Library/Formula
% brew options php
% php
  --with-mysql
% Include MySQL support
  --with-pgsql
  Include PostgreSQL support
% --with-mssql
  Include MSSQL-DB support
% --with-fpm
  Enable building of the fpm SAPI executable
% --with-apache
  Build shared Apache 2.0 Handler module
% --with-intl
  Include intl extension
% --with-readline
  Include readline extension
% brew install php --with-mysql --with-apache --with-readline
# php
% vi /etc/apache2/httpd.conf で以下を追加
LoadModule php5_module    /usr/local/Cellar/php/5.3.10/libexec/apache2/libphp5.so
# mysql
% mysql_install_db --verbose --user=`whoami` --basedir="$(brew --prefix mysql)" --datadir=/usr/local/var/mysql --tmpdir=/tmp
% mysql_install_db

いつも分からなくなるので、以下は、設定ファイル、コマンドなど。

php

/user/local/Cellar/php/5.3.10/etc/php.ini

apache

/etc/apache2/httpd.conf
apachectl start (= /usr/sbin/apachectl start)
apachectl stop (= /usr/sbin/apachectl stop)
apachectl restart (= /usr/sbin/apachectl restart)

mysql

/usr/local/Cellar/mysql/5.5.25/bin/mysqld_safe &
/usr/local/bin/mysql.server start
/usr/local/bin/mysql.server stop
/usr/local/local/bin/mysql.server restart    

phpinfo();にアクセスして確認

f:id:berukann:20120621011804p:plain

想像していた通り、元々macに入っているapache2.2を利用してくれてる。

homebrewすげえええええええ。 とりあえずこんな感じ。

 

はてなブログのサイドバーにYoutube貼り付ける

タイトル通りです。自分用のPlayerをブログに。Youtube自体がHTML5ですし、はてなブログのサイドバーは「html」、「javascript」挿入可能なので非常に簡単にできる。 

  1. 管理 -> デザイン

    f:id:berukann:20120619003349p:plain

  2. カスタマイズ -> サイドバー -> モジュールを追加

    f:id:berukann:20120619003406p:plain

  3. 追加したいYotubeの埋め込みコードを挿入 
    <iframeclass="youtube-player"type="text/html"width="200"height="200"src="http://www.youtube.com/embed/3cupbrwhNp0"frameborder="0">
    </iframe>
    ※ 注意点として、画像サイズを200px x 200pxより小さくし過ぎると
    「Video player is too samll.」って言って再生できないので注意。
    参考:YouTube API Blog: Minimum embeds: 200px x 200px

 

一曲だけじゃなくて複数の曲をランダムに流したいと思って検索してみた。

  • javascriptの配列に複数のyoutubeのURLを入れてランダムにする方法
    PARA MI GENTE「複数のyoutube動画を埋め込んでランダム再生する方法」 
  • サイドバー用にリストを作成し、リストを再生する方法
    Youtube ヘルプ
     
    1. [動画の管理] に移動し、[再生リスト] を選択します。
    2. 埋め込む再生リストを選択します。ページの上部にある [共有] ボタンをクリックします。
    3. [共有] タブをクリックして埋め込みコードをコピーします。
    4. そのコードをウェブサイトやブログに貼り付けます。

ブログ用のリストをyoutubeで作って再生するのが一番スマートなのかな。

プレーヤーのカスタマイズとかもできるみたいなので暇な時にカスタマイズしよう。

Youtube API

ニフティクラウド関連の個人的なリンク集

f:id:berukann:20120616222830j:plain

 

基本的にはAPIを利用するために以下のSDKなどのツールが公開されている。

[公式] コマンドラインツール (zip)

コマンドラインツールリファレンス (pdf)

− コマンドラインツールリファレンス

コマンドラインツール 使用例

% cd NIFTY_Cloud_api-tools/bin
% chmod 700 nifty-*
% ./nifty-describe-instances SERVER_NAME -I ACCESS_KEY -S SECRET_KEY
% INSTANCE  SERVER_NAME  xxx.xxx.xxx.xxx  xxx.xxx.xxx.xxx  
running  USER_NAME  mini  2011-03-12T00:00:00+09:00  japan  
disabled xxx.xxx.xxx.xxx  xxx.xxx.xxx.xxx  disk  2  2  static  x86_64  centos
LOADBALANCING  LB  80  80

 

[公式] ニフティクラウド SDK for Java (zip)

ニフティクラウド SDK for Java リファレンス (JavaDoc)

 

[公式] ニフティクラウドSDK for Ruby (zip)

− ニフティクラウド SDK for Ruby リファレンス (RDoc)

ニフティクラウド SDK for Ruby 使用例

% cd NIFTY_Cloud_SDK_for_Ruby/sample/instances
% vi  describe-instances.rb
require 'rubygems'
require File.dirname(__FILE__) + "/../../lib/NIFTY"
require 'pp'

ACCESS_KEY = "ACCESS_KEY"
SECRET_KEY = "SECRET_KEY"

ncs4r = NIFTY::Cloud::Base.new(:access_key => ACCESS_KEY, :secret_key => SECR
ET_KEY)

options = {
  #:instance_id => ["SERVER_NAME"]
}

pp response = ncs4r.describe_instances(options)

% ruby describe-instances.rb

 

[非公式] ニフティクラウドSDK for PHP (zip)

 

以下便利なリンク集。

ニフティクラウド コントロールパネル

ニフティクラウド サーバータイプ・仕様

ニフティクラウド サポート掲示板

NIFTY Cloud ユーザーブログ

ニフティクラウドの技術関連ユーザブログ。

− 起動スクリプトなど便利なスクリプト多数。

− おすすめスクリプト

 ・ニフティクラウド探検隊 起動時スクリプトでサーバーを自動構築してみた。

 ・15分でCakePHP環境を作ってみよう

ニフティクラウド関連 Github

− Githubで「nifty cloud」で検索した結果。

− 2012/06/16 100件以上のプログラムが公開されています。