blog.syfm

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

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年積むことになる。

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

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

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

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

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

早く読みたい。

一年を振り返り… (2016)

f:id:ktr_0731:20161223194846j:plain

今年も早いもので、もう一年が終わろうとしている…。皆様、いかがお過ごしでしょうか。
去年の今頃も一年を振り返ったエントリを書いていたので、今年も書きます。

去年のエントリはこちら↓

syfm.hatenablog.com

去年はやったことを箇条書きにしてましたが、id:ywkw1717 がちょうど同じようなエントリを書いていて、いい感じだったので自分も同じ感じにまとめていきます。
今年読んだ本もここに書こうと思ったのですが、すごく長くなってしまいそうなので別エントリに分けました。

一年で読んだ本はこちら↓

syfm.hatenablog.com

1月

初日の出

f:id:ktr_0731:20161224122627j:plain

大晦日・初日の出は、高校3年のときから高校の同じ部活だった友人らと過ごしているので、今年初のイベントも初日の出だった。すごく綺麗だった。

地元も福島だけど、いわき市なのでほとんど雪が降らないから大変だった。去年は少なかったらしいので今年は死ぬと思う。

山形遠征

f:id:ktr_0731:20161224123317j:plain

突然山形までガルパン劇場版を観に行くことになった。面白かったけど、観終わってからの帰り道がだいぶハードだったっぽい(寝てた)

2月

あんまり記憶に残ることがなかった気がする…。写真を見てみると、友人のバイト先に行った写真とか、郡山のラウンドワン音ゲーをやっている友人を撮った動画とかがあった。

3月

眼鏡

f:id:ktr_0731:20161224195122j:plain

友人が行きつけのラーメン屋で麻婆豆腐の中に眼鏡を落として衝撃的だった。

IoT & Security Hackathon

f:id:ktr_0731:20161224195424j:plain

ハッカソン初参加。アプリ・サービス部門で参加していて、自分は Android アプリを書いていた。なかなか時間がなくて、思うように作れなかったけど優勝できた。

茨城遠征

f:id:ktr_0731:20161224195829j:plain

友人らとガルパン聖地巡礼の為に茨城の大洗に行った。予定では一泊二日くらいだった気がするけど、実際は色々あって三泊四日した。

つくったもの

github.com

IoT & Security Hackathon でつくった、モックアップアプリ。

4月

ディズニーシー

f:id:ktr_0731:20161224200643j:plain

野郎9人でディズニー。最初の計画では全員で同じコスプレをして行こうってなってたけど、最終的には私服になった記憶がある。めっちゃ楽しかった。

入学式

f:id:ktr_0731:20161224200851j:plain

会津大学の入学式に出席した。

GitHub 駆動学習

f:id:ktr_0731:20161224201409p:plain

毎日継続しないと興味が薄れる人間なので、このあたりから GitHub にできるだけ毎日アウトプットしようとおもって始めた。草を見れば視覚的にちゃんとやっているかや、達成感が味わえるのであまり苦でなければおすすめ。

応用情報技術者試験

f:id:ktr_0731:20161224201639p:plain

とりあえず受けた。基本情報技術者試験に高校生の頃、一度落ちているので難しそうだな…と思ったけど余裕だった。

つくったもの

github.com

LINE BOT API Trial を利用してつくった、グルコスのある最短位置のゲーセンを教えてくれる Bot。Trial の提供終了に伴って最近死んだ。

5月

IoT & Security Hackathon 祝賀会

f:id:ktr_0731:20161224202638j:plain

ハッカソンの賞金で祝賀会をした。同期で、同じチームだった id:slme9364 と一緒に東京へ。
昼に Eggs'n Things に男二人で行って、パンケーキを食べてきたけど、二郎よりきつかった。

f:id:ktr_0731:20161224203046j:plain
f:id:ktr_0731:20161224203403j:plain

祝賀会の2次会では Hackers Bar に行った。オリジナルカクテルの名前がすごい…。エンジニアならばまちがいなくニヤッとなるはず。

f:id:ktr_0731:20161224203251j:plain

他にも、お客さんのリクエストを聞いて、ライブコーディングをしてくれる。パーフェクト JavaScript の著者の方だったのですごい驚いた。

f:id:ktr_0731:20161224203728j:plain

CTF for ビギナーズ 長野

f:id:ktr_0731:20160516205412p:plain

CTF for ビギナーズで一番開催地が近かったので長野に行ってきた。初長野。とても勉強になった。

6月

あんまり記憶に残ることがない。

つくったもの

github.com

立川シネマシティのガールズ&パンツァー 劇場版の極上爆音上映を予約するためだけの簡単なスクリプト

7月

山形遠征2

蔵王温泉行ったり、美味しい米沢牛を食べたりしてきた。温泉良い…。

成人

20歳になった。祝ってくれた友人らに感謝。年老いてしまった…。

katagaitai 勉強会#6 - 関東|easy

CTF の勉強会。Web 問題が結構難しくて、もっと勉強せねば…となった。

8月

君の名は。

f:id:ktr_0731:20161224212446j:plain

写真は友人。

待ちに待った君の名は。を観てきた。詳細については↓

syfm.hatenablog.com

9月

新海3作品聖地巡礼

f:id:ktr_0731:20161224213054j:plain
f:id:ktr_0731:20161225183658j:plain
f:id:ktr_0731:20161224213227j:plain
f:id:ktr_0731:20161225183717j:plain
f:id:ktr_0731:20161224213256j:plain
f:id:ktr_0731:20161225183855p:plain

東京にいる友人と行ってきた。
写真はそれぞれ、「君の名は。」に出てくる須賀神社、「言の葉の庭」に出てくる新宿御苑、「秒速5センチメートル」に出てくる参宮橋公園付近と対比。

つくったもの

github.com

立川シネマシティの君の名は。の極上爆音上映を予約するためだけのスクリプトcurl を叩いているだけだけど、前のスクリプトより5倍早い。

10月

イラスト

夏っぽいイラストを一枚描いた。オリジナルランキングにランクインしたので嬉しかった。

Aizu CTF #2

f:id:ktr_0731:20161224221559p:plain

会津大学生による Web アプリケーション特化型の CTF。Attack & Defense 方式でめちゃくちゃ楽しかった。

情報セキュリティスペシャリスト試験

f:id:ktr_0731:20161224215221p:plain

今回で廃止されるらしいので受けた。午後I が微妙にわからなくて、実際ギリギリだった。 来季は多分データベーススペシャリスト試験を受ける。

CODE BLUE, AVTOKYO

f:id:ktr_0731:20161224220329j:plain

どちらとも今回は2度目の参加。 去年も参加した CODE BLUE に今年もボランティアスタッフとして参加した。お弁当配りがなかったのですごい楽だった。 同じ週に開催されていたのでちょうどよかった。 CODE BLUE では、「機械学習で Web アプリケーションの脆弱性を見つける方法」という講演が、AVTOKYO では、「Nmap 9つの真実」という講演が、ベクトルは違うけど面白かった。

つくったもの

github.com

Git で CLIP STUDIO PAINT で描かれたイラストを管理するためのツール。なぜかめっちゃバズった。

11月

会津花火

f:id:ktr_0731:20161224221900j:plain

友人らと観に行った。秋(?)祭りには生まれてから一度も参加したことなかったので新鮮だった。

ALT#0x07

Aizu LT。会津大学の大先輩がたくさんいて、LT の内容も面白かった。

つくったもの

github.com

GrooveCoaster の mypage 情報を取得するための非公式ライブラリ。

12月

Midnight LT

f:id:ktr_0731:20161224222557p:plain

友人らによる LT。実際には夕方くらいにやった。自分は、ある企業のサイトで見つかった脆弱性の話をした。

SECCON Online 2016

f:id:ktr_0731:20161224222906p:plain

wabisabi 2度目の SECCON。Web 問を全然解けなくて悔しかった。

つくったもの

github.com

Neovim のリモートプラグインアーキテクチャを利用した Twitter クライアント。

github.com

現在見ているページと重複したページを開いているタブをすべて閉じる Chrome 拡張機能

ネガティブなこととか

ここまでポジティブなことばっかり書いていたので、少しはネガティブな事も書いておきたい。

  1. 大学
    ここまで大学の話題が一切なかったけど、別に意識して出さなかったわけではなくて、大学で楽しかったことがないから。
    大学の数学関連科目の講義は、自分が数学弱者なのでためになるところはあるけども、肝心のコンピュータ関連科目の質が低すぎて退屈で仕方がない。
    質って言っても色々有ると思うけど、受講生の意識、課題の意図するもの、教授の意識…すべてにおいて質が低いとしか思えない。
    15回ほどの講義でやることはすでに知っている内容か、分からなくても時間を掛けても2週間程度かけて参考図書を読むことでそれ以上に理解できることばかり。
    そのくせ自分が行きたいと思ったイベントなんかとテストが被ったりするので、大学が足枷にしかなっていない。
    もちろん、大学に入ることで友人や先輩らとコンピュータの話ができるようになったので、そこは本当にありがたいと思っているけど、それまででしかない。

  2. 拗らせてる

    まずい。
    早く記憶を消せるようになって欲しい。

  3. 将来
    コンピュータは好きだけど、未だに何をやりたいのか具体的にはわからない。
    今のところはないけど、もし飽きや、なにかどうしようもないことによって終わりがきたとき、自分に何が残るのかわからないので怖い。
    でも、できればこれからもコンピュータに携わることをしていきたいとは思っている。

まとめ

今年はあんまり色々できなかったなぁと思っていましたが、挙げてみると意外と色々やっていました。
とはいえ、もっとできるはずなのでやっていきたい…。 特に、ステートレスなツールばっかりつくっているので、何かのサービスを作りたい…。 来年はもっと強くなれるようにがんばります。

では良いお年を!