2014年3月2日日曜日

Product Advertising APIのアカウント管理はイケてない

プログラムから本の情報検索したい!と思ったら Product Advertising API を使うのが手っ取り早い。先日作ったPribraryにISBNから書籍情報を自動取得する機能を追加したく、アカウント登録することにした。ただそのアカウント管理に関する情報がイケてない、と思ったのでまとめておく。Product Advertising APIを使うときに覚えておくポイントは
  • Product Advertising API へのリクエストにはルートアクセスキーしか使えない
  • アソシエイトタグは別に何でもいい。
っていうこと。間違っていたら誰か教えてね。

2つのアカウント情報が必要

APIのリクエストには↓のような感じで2つのアカウントIDが必要
http://ecs.amazonaws.com/onca/xml?Service=AWSECommerceService&Operation=ItemSearch&
AWSAccessKeyId=[アクセスキー ID]&AssociateTag=[ID]&SearchIndex=Apparel&
Keywords=Shirt

AWSAccessKeyId=[アクセスキー ID]

ここから登録できます。登録完了後に次のような画面が表示されるでしょう。
ふむふむ。Manage Your Accountに行けばいいのね?
アクセスキー取得っと。
こんなことが書いてあったら誰でも新しいページYour Security Credentialsに行くだろう。俺も行った。
へーIAMユーザーとか使ってセキュリティ高めるのね。ベストプラクティスでも読んどくか。

Lock away your AWS account access keys

Any request you make for an AWS resource requires credentials so that AWS can make sure you have permission to access the resource. You can use access keys (an access key ID and secret access key) to make programmatic requests to AWS. However, we recommend that you do not use your AWS account access keys. The access key ID and secret access key for your AWS account give you access to all your resources, including your billing information. (For more information about credentials for working with AWS, see Types of Security Credentials in the Amazon Web Services General Reference.)
何でもできるアクセスキーは使わずに、権限限定したユーザーを作ってそのアクセスキー使えってことね。はい分かりました。

早速Pribrary用にアカウントを作成した。さてProduct Advertising APIへの権限をば・・・


あるあ・・ねーよwww


そんな権限ありませんでした。もしかして単に名前が違って発見できないだけかと思いPribraryユーザーに全権限を与えてAdvertising APIへリクエストを送ってみましたが、だめでした・・・・orz

もういい、ルートのアクセスキー使うわ。


AssociateTag=[ID]

ここから登録可能。登録ではWEBサイトの内容とか紹介予定の商品とか記載。もちろんIDはtakkyuuplayerで申請。4時間後次のようなメールが届いた。
Amazonアソシエイト・プログラムにお申し込みいただき、ありがとうございます。

このたび当プログラムへの参加を申請いただいたWebサイトを拝見いたしましたが、誠に残念ながら、お申し込みを承認することができませんでした。当プログラムへの参加をご希望の場合は、下記の項目をご確認いただき、あらためてお申し込みくださいますよう、お願いいたします。

当プログラムでは、お申し込みいただいたWebサイトが下記の項目に当てはまる場合、残念ながらご参加を承認することができませんので、あらかじめご了承ください。
!!??怪しいのは次の文言。
1. Webサイトが未完成の場合
Webサイトの方向性がわかる程度を目安に、内容をアップロードしてからお申し込みください。

3. Webサイトに閲覧規制がなされており、内容を拝見できない場合 
Pribraryにテストデータ入って無いため未完成と思われた、もしくは閲覧規制されていると思われたのではないか。メール受信後、 amazonアソシエイトにログインできなくなったのでどうやらtakkyuuplayerは削除されてしまったらしい。

なんということだ。このままではAPIが使えない。仕方ないのでhttp://www.takkyuuplayer.com/に絞って再度ID: takkyuuplayerで申請。
Amazon アソシエイト・プログラムにお申し込みいただき、ありがとうございます。,takkyuuplay08-22!
takkyuuplay08-22って誰だよ!takkyuuplayerじゃないのかよ!どうやらtakkyuuplayerはロックされただけでアカウント自体は存在するらしい。果たしてどうやって復活させればいいのか?takkyuuplayerを使いたいのだが。

ひとまずアカウント自体の存在は分かったのでAssociateTag=takkyuuplayerでAPIを叩いてみたら・・・通った。存在しない(であろう)アカウントAssociateTag=takkyuuplayer0302でAPI叩いてみても・・・・通った。


AssociateTag何でもいいのかよ!

結論: Amazon Product Advertising APIのアカウント管理はイケてない

Amazon Product Advertising APIを使い始めるにあたって、ハマりそうなところをまとめました。AssociateTagはなんでも良いらしいのですが、せっかくなので発行したAssociateTagを使おうと思います。まだ審査結果来てませんが・・・。そしていったいtakkyuuplayer使うにはどうすればいいのか。

2013年12月10日火曜日

Windows8でMerry X'mas! #vgadvent2013

VOYAGE GROUP エンジニアブログ Advent Calendar 2013 10日目の記事です。

去年のAdvent Calenderから1年が経ちました、@takkyuuplayerです。10月末にパソコンを新調し、ついにWindows8機を手に入れました。せっかくなので前々から気になっていたWindows Storeアプリを作ってみようと思います。

前準備

まずは開発環境を整えましょう。Microsoft Visual Studio Express 2013 for Windowsを手順に従ってインストールしてください。特に詰まるところは無いと思います。Windowsをマシンを持っていなくても評価版を使えば開発環境を整えられるようです。

Hello world

このチュートリアルを参考にクリスマスにちなんでHello WorldならぬMerry X'masプロジェクトを作成してみました。https://github.com/takkyuuplayer/Merry-Xmas

ブランクプロジェクトを作成すると、ブランクのくせにいろいろファイルが追加されます。そのブランクプロジェクトを実行したのが↓
ブランクプロジェクト
何もありません。閉じるボタンもないので終了するにはAlt+F4を押して下さい。

最初にデフォルトビューを変更します。MainPage.xamlにその設定が記述されているようです。既存のものはいらないので削除して下さい。

Projects > Add New Item より、新しいMainPage.xamlを作成します。ビューの選択リストにはよく使う(?)テンプレートがまとまっていました。
右側にサンプルビュー
Basicテンプレートを追加(やはりBasicのくせにいろいろファイルを追加する)して、できたMainPage.xamlを編集するとアプリっぽくなります。ボタンにイベントを追加して終了 です。
Basicテンプレート

メリークリスマス!!

感想

Visual Studioは初めて触りましたが「クリック1回でいろいろやりすぎ!」というのが第一印象ですね。今後他のチュートリアルも触ってみつつVisual Studioが背後で何をやっているのか、把握していきたいと思います。

 明日の #vgadvent2013 は @_zoo さんです。

参考

2013年10月3日木曜日

perl の use について調べたのでメモ

perlのuseについて調べたのでメモ。 use Module LISTは perldoc.jp http://perldoc.jp/func/use によると

BEGIN { require Module; Module->import( LIST ); }

と等価らしいです。

#!/usr/bin/perl
use Data::Dumper (qw(Dumper));
warn Dumper 1; # $VAR1 = 1;
#!/usr/bin/perl
BEGIN {require Data::Dumper; Data::Dumper->import(qw(Dumper)); }
warn Dumper 1 ; # $VAR1 = 1;

確かに同じっぽい。なるほど。

パッケージの import メソッドを呼び出したくない場合(例えば、名前空間を 変更したくない場合など)は、明示的に空リストを指定してください:

    use Module ();
これは以下と完全に等価です:

    BEGIN { require Module }

そこは

BEGIN { require Module; Module->import(()); }

と等価ってことでもあるのかな?と思って実験。まず

use Data::Dumper ();
warn Dumper(1); # Undefined subroutine &main::Dumper called

は importされないわけだからエラー。

BEGIN {require Data::Dumper; Data::Dumper->import(()); }
warn Dumper(1); # $VAR1 = 1;

予想が外れた。どうやらimportは完全に呼ばれないらしい。

2013年6月28日金曜日

Chrome の console で jQuery を使いたい

Web開発者たるもの、Webブラウジング中にちょっとDOM要素を弄りたくなって「Chrome のconsoleでjQueryが使えたら楽なのに」と思うことがあります。もし見ているWebページが http://www.takkyuuplayer.com/ のようにjQueryをインポートしているのであればconsole上でもjQueryを使うことができますが、そうでない場合は使えません。

そのようなときは Include jQuery in the Javascript Console - Stack Overflow のようにしてjQueryを入れれば良いのですが・・・

この方法には致命的な欠点があります。それは

  • 常に同じバージョンのjQueryが使えるわけではない
  • そもそもインポート用のスクリプトを覚えられない
ことです。すでに閲覧中のサイトがjQueryをインポートしている場合「サイトのjQueryを使う」か「新しくjQueryをインポートしてサイト上のjQueryを上書きする」かの二択を迫られてしまいます。

どちらもやりたくはないので、既存のjQueryは置き換えずにいつも同じjQueryを使うためのChrome拡張を作りました。chebo.crxをインポートすればconsole上にて、次のようにしてjQueryにアクセスできます。 withCheboの引数として関数を渡してやれば、その中でjQueryが使えるようになります。便利ですね。

Underscore.jsBackbone.jsも使えるようになっているので、ちょいちょいウェブブラウジング中にDOM要素を弄りたくなる方は使ってみてください

2013年6月17日月曜日

local package manager のすすめ

vimをインストールしたいのにmercurialが無い、ncurseが無い。それらをインストールしようにもroot権限が無い。 

そんな風に思ったことはあるでしょう。慣れ親しんだ開発環境を使えないもどかしさ、分かります。大抵ホームディレクトリにmakeでインストールするのですが、環境が変わるたびに最新のソースを探しだし、makeが終わったと思ったらprefix間違えたorzなんて経験おありかと思います。(いや、そんな環境コロコロ変わらないが)

そんな私を救ってくれたのが LPM: Local Package Manager でした。
Linux を使っていて、root は持っていないけど新規にソフトをインストールしたいと思ったことはありませんか? ちゃんとパッケージ化されていないソフトをインストールするのが面倒だと思ったことはありませんか? あなたの環境でコンパイラエラーを回避するために何度も同じパッチを当てなければならなかったことはありませんか? そんな貴方に LPM は手をさしのべます。
( LPM: Local Package Manager, http://www.kasahara.ws/lpm/index_ja.html, 2013/06/17. )
とあるように、便利でした。1ページのDocumentを読めば、すべての使い方が分かります。lpmスクリプトの書き方もわかります。

vimとかzshとかリポジトリになかったので、オレオレlpmスクリプト作成。
オレオレlpm https://github.com/takkyuuplayer/lpm/tree/master/lpm

そのうちサブミッションしてみようかな、と思います。

Wordpress on AWS やめたった

皆様、円安の昨今いかがお過ごしでしょうか?

私の方はというとAWSの1年間無料利用枠が4月で期限切れになりまして、先月よりきっちり従量課金されるようになりました。その額なんと

56.04 [USD] -> 5,720[JPY]

GW中に調子に乗ってWordpressのDBをlocalhostからRDSに変えなきゃよかった・・・。という反省はさておき、大したアクセスもないのに毎月6000円近く取られるのはキツいです。そこで
  • 開発機用EC2インスタンスを閉じ、開発にはVagrantを利用
  • BlogはBloggerに移動し、RDSは閉じる
  • そのついでに静的コンテンツもWordpressからSinatraへ移行
しました。その際困ったのがブログの更新をどうホームページ上で見せるか?というもの。

こんなの


まぁそういうのはフィードを使うと相場は決まっているわけでして、例に漏れずやってみました。

feedzirraを使った更新一覧表示

rubygemでRSSのパーサーを探していたらfeedzirraに出会いました。他にもいろいろ出会いましたがThe Ruby Toolbox - Atom & RSS Feed Parsingによると一番人気があるようだったので利用。コードは以下です。
できました!ですが、なんか重いです。それはそうです。毎回RSS取りに行ってパースするのだから。キャッシュが必要です。最初sinatraでやろうと調べていたのですが、途中でnginxに任せればいいじゃん、という事に気づきました。nginxでプロキシ&キャッシュサーバー « chibiegg日誌を参考に設定。 これでストレスなく?表示されるようになりました。

2012年12月19日水曜日

国会図書館のすすめ [#vgadvent2012]

※この記事はAdvent Calendar 2012 - Voyage Group Engineer blog - の一環として書かれています。

いやはや、Advent Calenderに向けて放置してたブログを書いたりデザインを一新したりする野望を抱えていたのですが、あえなく当日を迎えてしまいました@takkyuuplayerです。

土日は意外とやることが少ない


社会人になって土日の有難さが分かる、とは言いますが私が社会人になって感じたのは規則正しい生活の心地よさと「土日は意外とやることが少ない」ってことです。普段ずっと椅子に座りっぱなしだから運動でもするか!と意気込んでいてもいざ土日を迎えると体を動かす気力を失ってしまいます。そこでお勧めなのが国会図書館です。

自転車で国会図書館へ行こう


もし自宅から国会図書館への距離が10km程度なら、是非自転車で国会図書館へ乗り込みましょう。片道40分ほどでなまった体にはちょうど良い運動量です。




自転車置き場から眺めた国会図書館


なぜ国会図書館なのか?


図書館は近くにあるのに、なぜわざわざ遠い国会図書館まで足を運ぶのか?それは日本で出版された全ての本が読めるからです。国会図書館には納本制度というものがあります。
 「納本制度」とは、図書等の出版物をその国の責任ある公的機関に納入することを発行者等に義務づける制度のことです。わが国では、国立国会図書館法(昭和23年法律第5号)により、国内で発行されたすべての出版物を、国立国会図書館に納入することが義務づけられています。
納本制度|国立国会図書館―National Diet Library http://www.ndl.go.jp/jp/aboutus/deposit.html

国会図書館の本は館外へ持ち出すことはできません。そのため普通の図書館のように借りて家で読むということもできないのですが、代わりに朝一で行けばどんな人気の本でも読めるというメリットがあります。私の場合平日はエンジニアリングの本しか読みませんので、国会図書館では営業の人とかの日報で挙がった非エンジニアリング関係の本や、学生時代に打ち込んだ理数関係の本を読むことにしています。

また国会図書館では一切外に出ることなく丸一日遊べます。なんと館内には「食堂・コンビニ・カフェ」が存在します。食事をしに外へ出る必要は無く、値段も学食と同等の安さです。空調も完璧、電源もあります。さすがに無線LANはありませんが、むしろ気付いたらネットサーフィンにならなくて済むのでよいのではないでしょうか?

もちろん運動のきっかけを作れることも国会図書館へ行く理由の1つです。週に一度とはいえ、往復90分弱のサイクリングはデスクワークで衰えた体を引き締める効果があります。

国会図書館に弱点ってあるの?


一見完璧に見えますが、この世に完璧はありません。国会図書館にももちろん弱点があります。まず致命的なのは日曜日が休館日なことです。図書館は月曜日が休館日と相場が決まっていそうなものを、国会図書館は日曜日に休みます。日曜日もやっていれば土日の使い方は確定したのですが・・・。

もうひとつたまに傷になるのが立地条件です。隣に国会議事堂があるということは、当然そこでデモが開催される可能性があります。図書館という性質上基本は静かなのですが、デモが始まるとやや騒々しくなります。

雨が降ったらOASISへ


いかがでしたでしょうか?国会図書館の魅力は伝わりましたでしょうか?私はそんな国会図書館の魅力に惹かれ、雨の日も風の日も毎週欠かさず行っている、と言いたいところですがさすがに雨が降ると自転車では行けません。かといって電車で行く感じでもないのです。そんな時は会社の図書館OASISへ行きます(盛った)。OASISにはビジネス・テクノロジー・アイデア・マンガという4つのジャンルの本が取り揃えられています。同じIT業界に興味を持った同士、本の趣味も似ていて楽しいです。


社内用ライブラリ OASIS

次回予告

次回のAdvent Calender担当は@hagino3000さんです。