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

blog.syfm

徒然なるままに考えていることなどを書いていくブログ

Amazon Product Advertising API で AWS.InvalidAssociate エラー

ちょっと Amazon Product Advertising API (PAAPI) を利用する必要があって、ドキュメントを読みながら進めていたら、以下のようなエラーに悩まされた。
かなりハマったので備忘録的な感じで書いておきたい。

ちなみに、REST API で ItemSearch を叩いていた。

<?xml version="1.0"?>
<ItemSearchErrorResponse xmlns="http://ecs.amazonaws.com/doc/2005-10-05/">
  <Error>
    <Code>AWS.InvalidAssociate</Code>
    <Message>Your [ACCESS_KEY] is not registered as an Amazon Associate. Please register as an associate at https://affiliate-program.amazon.com/gp/associates/join/landing/main.html.</Message>
  </Error>
  <RequestId>a047206b-9423-48b9-ac8e-ec33265a83c1</RequestId>
</ItemSearchErrorResponse>

ググってみると、Amazon アソシエイトと PAAPI に登録したときに必要なメールアドレスが同じものでないといけないので合わせましょうというような解決策は出てくるけど、自分の場合、同じメールアドレスを使用しているにも関わらず、そのようなエラーが出ていた。
時間を置いてみたり、Scratchpad を使っても同じエラーが出ていたのでどうしたものか…と思っていたけど、webservices.amazon.co.jp にリクエストを送るようにしたら解決した。

具体的には、API を叩くにあたってエンドポイントを指定する必要があるけど、公式のリファレンスには webservices.amazon.com へリクエストを送るようになっている。
そこを webservices.amazon.co.jp へ変更する感じ。
同様にシグネチャ生成の部分も変える必要がある。

変更すると無事リクエストが成功し、結果が返ってきた。
大雑把にググってもこの情報は出てこなかったので、もしかしたらなにかしらの条件下でしか起こらないのかもしれない…。リージョンの問題?

iTunes をコマンドラインから操作するためのツールを書いた

ふと iTunesコマンドラインから操作したいなぁ…と思い、絶対あるだろうとググってみたら案の定あったのですが、いくつか気に入らないところがあるものばかりだったので作りました。
その他の理由としては、UNIX という考え方 という本を読んでいて CLI ツールを書きたくなったからです。

既存の CLI ツールで気に入らなかった点

  1. 独自の対話型インターフェースに入るもの
    自分の場合、作業をするためにコマンドラインに篭っていて、決して iTunes で音楽を聴くためにいるわけではないので、対話型インターフェースはあんまり…という感じでした。

  2. 検索がしんどい
    絶対一致の検索ではないにせよ、検索サブコマンド → 一致した結果が表示される → 再生サブコマンドに曲を入力する といった動作が面倒でした。

今回作ったもの

iTunes CLI という名前で作りました。

github.com

基本的な機能はほかのツールと同じですが、対話方式ではなく、コマンドで完結するようにしています。
また、検索には fuzzy-search ツールを利用することによって、べんりに選択できるようにしました。
fzf、fzy、peco などの任意の fuzzy-search ツールが利用できます。
動作的には以下のような感じです。

https://github.com/lycoris0731/itunes-cli/raw/master/demo.gif

曲名での検索に加え、プレイリストでも検索ができます。

今回のツールも Go 製で、iTunes のコントロールには AppleScript を使用する必要があるので、以下のライブラリを利用させていただきました。

github.com

ただ、このライブラリに少し不都合があり、それを修正したものを PR として投げていますが、まだ取り込まれていません。 その場合、

$ go get github.com/lycoris0731/mack
$ cd $GOPATH/src/github.com/lycoris0731/mack && git checkout output-tell

を実行する必要があります。

無事取り込まれました 🎉

Go から fuzzy-search をするには、パイプで繋いで OS コマンドを実行する必要があるので、mattn さんの以下のライブラリを利用させていただきました。

github.com

ぶっちゃけ、Go を書く時間より AppleScript の読み書きを調べる時間のほうが圧倒的に大きかったです。AppleScript きびしい…。

残課題

  1. 再生モードの切り替え
  2. アーティスト別での検索
  3. アルバム別での検索

一番上は簡単にできると思いますが、下二つはちょっと AppleScript を書かなければいけなさそうなので少しかかるかもしれません。PR ください 🙇

今年読んだ本

一年振り返りエントリから分離した記事です。
技術書・小説・漫画に分けました。

メインのエントリはこちら↓

syfm.hatenablog.com

技術書

マスタリングTCP/IP 入門編 第5版

マスタリングTCP/IP 入門編 第5版

ネットワーク周りの知識がなさすぎたので読んだ。大体の主要なプロトコルアルゴリズム等がそれなりに詳しく載っていると思う。

スッキリわかるJava入門 第2版 (スッキリシリーズ)

スッキリわかるJava入門 第2版 (スッキリシリーズ)

何故か買った。だいたい知ってる内容だった。分かりやすいけど、プログラミングをやったことない人向けな気がする…。

C 言語でいくつかのコマンドを実装しながら、Linux のプロセスとか、システムコールなどの仕組みを広く浅く解説するような本。無知だったのでためになった。

個人で開発していると、CSS を適当に書きがちだったので、読んだ。色々な設計手法が載っているので、網羅的に学べると思う。

言語仕様、プログラミング手法などの成り立ちなどの概要が載っていて面白かった。

入門UNIXシェルプログラミング―シェルの基礎から学ぶUNIXの世界

入門UNIXシェルプログラミング―シェルの基礎から学ぶUNIXの世界

シェルスクリプト力たったの5か…ゴミめ…。だったので読んだ。すこしだけシェルスクリプト力が上がった気がする。汎用性に重点を置いているので、とてもおすすめ。

JUnit実践入門 ~体系的に学ぶユニットテストの技法 (WEB+DB PRESS plus)

JUnit実践入門 ~体系的に学ぶユニットテストの技法 (WEB+DB PRESS plus)

JUnitJava のテスティングフレームワークだけど、内容はユニットテスト全般の技術も多いので良かった。

新装版 リファクタリング―既存のコードを安全に改善する― (OBJECT TECHNOLOGY SERIES)

新装版 リファクタリング―既存のコードを安全に改善する― (OBJECT TECHNOLOGY SERIES)

リーダブルコードよりかは読むのが難しいかと思うけど、絶対に一度は読むべき本だと思う。使用されている言語は Java なので、オブジェクト指向の知識は必要。

Pythonチュートリアル 第3版

Pythonチュートリアル 第3版

ブックオフで安く売っていた + Python を体系的に勉強したことなかったのでとりあえず読んだ。サンプルコードにはすべて Python3 が使われている。網羅的に、とは言えないけど結構知らないものもあった。

ブロックチェーンの衝撃

ブロックチェーンの衝撃

ブロックチェーンに対してあいまいな知識しかなかったので読んだ。ブロックチェーンでなにができるようになるかを解説した本。どうでもいい(よくない)けど、縦文字で英単語使うのやめて欲しい。

Web API: The Good Parts

Web API: The Good Parts

Web API サーバを書いてて、なんか嫌な設計をしている予感がしたので勉強した。実際ひどかったので書き直したい。
Web API の命名、設計からバージョニング、セキュリティまで幅広く扱ってある。

2016 情報セキュリティスペシャリスト 「専門知識+午後問題」の重点対策 (午後対策シリーズ)

2016 情報セキュリティスペシャリスト 「専門知識+午後問題」の重点対策 (午後対策シリーズ)

とりあえず読んだけど、午後は対策しようがないなと思ってほとんどノー勉だった。でもなんとか受かった。

セキュリティコンテストチャレンジブック -CTFで学ぼう! 情報を守るための戦い方-

セキュリティコンテストチャレンジブック -CTFで学ぼう! 情報を守るための戦い方-

針鼠本。CTFを題材としてセキュリティ周りの知識を得られるような構成。pwn は難しくて、後回しにしてしまったけど、他は読んだ。

プログラミング言語Go (ADDISON-WESLEY PROFESSIONAL COMPUTING SERIES)

プログラミング言語Go (ADDISON-WESLEY PROFESSIONAL COMPUTING SERIES)

A tour of Go をやってみて、なかなか良さそうな言語だなーと思ったので読んだ。言語作者の本なので詳しい。

入門git

入門git

さらっと読めるので一度目を通しておくといい感じ。意外と知らないことが多い。

Go言語によるWebアプリケーション開発

Go言語によるWebアプリケーション開発

読みかけ。あまり高度なことはやっていない。Go ではどう書けばいいかを解説したような本。

マイクロサービスアーキテクチャ

マイクロサービスアーキテクチャ

マイクロサービスをあんまり知らないな…と思って読んだ。結構概念的なことを扱っているでの、一部分かりづらいけど、実践的な部分は分かりやすかった。

Docker

Docker

読みかけ。Docker をあんまり使ったことがなかったので、ちゃんとやろうとおもって読んだ。分かりやすいけど誤植が今まで読んだ本の中で一番多い。

小説 / ラノベ

1 - 14。ブラック企業に務める新人 SE が主人公のラノベ
SE なのにネットワークを構築したり、プロジェクトマネジメント、カスタマーエンジニア、取引先常駐勤務、案件防衛戦、自社サービス開発なんかをやっている。
毎度毎度面白いので、ぜひ読んで欲しい。

失はれる物語 (角川文庫)

失はれる物語 (角川文庫)

乙一の短編集。表題の作品だけは好きになれなかったけど他は全部面白かった。

アンドロイドは電気羊の夢を見るか? (ハヤカワ文庫 SF (229))

アンドロイドは電気羊の夢を見るか? (ハヤカワ文庫 SF (229))

フィリップ・K・ディックの代表作である SF 小説。
人間とまったく区別のつかないアンドロイドが存在する近未来のお話。

アンドロイドは電気羊の夢を見るか?」と同じように、ウォーカロンという人間と区別の付かない人工生命体が存在する森博嗣の SF シリーズ。

海の見える街 (講談社文庫)

海の見える街 (講談社文庫)

群像劇形式の恋愛小説。
文体が穏やかだけど、中身は結構エグい。

最近映画化したらしい。
友人におすすめされて読んだ。伏線回収がうまい作品が好きなのですごい面白かった。

夏への扉 (ハヤカワ文庫SF)

夏への扉 (ハヤカワ文庫SF)

アンドロイドは電気羊の夢を見るか?と同じくらい有名な SF。タイムスリップ、タイムトラベルモノ。

今日、となりには君がいない。 (講談社ラノベ文庫)

今日、となりには君がいない。 (講談社ラノベ文庫)

2年間積んでいたラノベ。個人的には今まで読んだ本で一番嫌い。

冷たい密室と博士たち (講談社文庫)

冷たい密室と博士たち (講談社文庫)

笑わない数学者 MATHEMATICAL GOODBYE S&M

笑わない数学者 MATHEMATICAL GOODBYE S&M

「すべてが F になる」が第1作となる、森博嗣 S&M シリーズの2、3作目。

魔女の家 エレンの日記

魔女の家 エレンの日記

友人らとやったゲームが面白かったので、小説を読んだ。
ゲーム開始時以前のエピソード。


君の名は。小説群。
上の方はほとんど映画と同じ内容だった。
Another Side はサブキャラ視点の短編集。最後の話が一番面白かった。

向日葵の咲かない夏 (新潮文庫)

向日葵の咲かない夏 (新潮文庫)

後味が悪いとは聞いていた。たしかにその通りだったけど面白かった。

言の葉の庭にちらっと出てくるキャラを主人公にした群像劇。一度映画を見た後に見ると楽しめる。

漫画

全巻。リバイバルという、任意の人物に危険が及ぶ直前に時間が戻る能力を持つ主人公の話。雛月かわいい。

9 - 11。最初は緩い漫画だったけど、最近はシリアスになってきている。

16 - 18。打ち切りだったらしくて微妙な終わり方だった。

1 - 3。デスノートコンビの新作。割と面白い。

6 - 9。最近は惰性で買っている気がする…。

試しに買ったけど、続きはまだ買っていない。

新装版 LUNO (KCデラックス)

新装版 LUNO (KCデラックス)

冬目景の昔の作品。新装版が出たので即買った。

中間管理録トネガワ(1) (ヤングマガジンコミックス)

中間管理録トネガワ(1) (ヤングマガジンコミックス)

1 - 2。カイジ読んでるならば確実に楽しめるはず。

亜人(8) (アフタヌーンKC)

亜人(8) (アフタヌーンKC)

8 - 9。めちゃくちゃ熱いので読もう。佐藤さんがかっこいい。

聖書

1 - 4。高木さんかわいい。

今年読めなかった本

読んでいたけど読みきれなかった本や、積み本になっている本の数々。

DUO 3.0

DUO 3.0

DUO 3.0 / CD復習用

DUO 3.0 / CD復習用

セットで買ったけど、ほとんど手を付けず…。来年はやるぞ!!

サイバーセキュリティプログラミング ―Pythonで学ぶハッカーの思考

サイバーセキュリティプログラミング ―Pythonで学ぶハッカーの思考

俺にセキュリティは難しい

体系的に学ぶ 安全なWebアプリケーションの作り方 脆弱性が生まれる原理と対策の実践

体系的に学ぶ 安全なWebアプリケーションの作り方 脆弱性が生まれる原理と対策の実践

結構分量があって、まだ一部しか読めてない。

葉桜の季節に君を想うということ (文春文庫)

葉桜の季節に君を想うということ (文春文庫)

もうすぐ2年積むことになる。

詩的私的ジャック (講談社文庫)

詩的私的ジャック (講談社文庫)

なかなか読む時間がない。

四畳半神話大系 (角川文庫)

四畳半神話大系 (角川文庫)

早く読みたい。