blog.syfm

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

ディスプレイを買った

ディスプレイは以前から使っていたけど、貰い物だし古かったので新調しようと思って買った。
買ったのは以下のディスプレイ。

価格は Amazon で大体38000円程度。
秋の情報処理試験でセスペに受かった時の報奨金30000円をヅ大から貰っていて、それを充てたので、実質1万円以下で買えた。とても安い…。

解像度が1920×1080の16:9なので、すごくワイド。特に動画とかを再生すると実感する。
大きさは23.8インチで、目線的にも実用性的にもちょうど良かったので安心した。
他にはノングレア、IPS なのも嬉しい。

EIZO のディスプレイは発色がすごく綺麗なので、お絵かきとかするときにも使える。(以前のディスプレイは発色がひどすぎて、元画像から変色していたため、全く使い物にならなくてターミナル専用機になっていた)

元あったディスプレイの場所に配置すると以下のような感じになった。
f:id:ktr_0731:20170205135621p:plain

届いたばかりなのでまだ全然使ってないけど、個人的には不満点は見つからない。
大満足すぎてもう一枚欲しくなってくる…。

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 ください 🙇