Mac
Node.js
iTunes
jXA
AmazonDashButton

JXA + Amazon Dash ButtonでiTunesを遠隔操作してみた

2018年夏、猛暑過ぎますね。
今日も引きこもりが捗ります、 @shIbaInu42 です。
最近はお仕事で作業プロセスを自動化したり、
自宅でも自動化に思いを馳せたりしています(自動化は大事、板東は英二)。
今回は JXA(Javascript for Automation)Amazon Dash Button でMacのアプリケーションを遠隔操作したいと思います。

目次

  • 1. 目的
  • 2. 準備するもの
  • 3. 作成と実行
  • 4. まとめ

1. 目的

帰宅時、ソファに座った状態で「iTunes(on Mac)の音楽をすぐ鳴らしたい」という私の欲望を満たすこと。

2. 準備するもの

  • Amazon Dash Button
  • JXAとDash Button のNodeモジュール(↓のインポートを実行)
Command
npm i dash-button
npm i jxa
  • Dash Buttonを開発用にセットアップ
    → 参考

3. 作成と実行

作成(コーディング)

「Dash Buttonが押されたらiTunesを再生/一時停止する」というコードを書く。
【※】5行目の物理アドレスの取得方法はコチラを参照ください。

remoTunes.js
//
//  remoTunes let us remotely control iTunes via ARP
//  [Author]: @shIbaInu42

// Physical address of Dash button
const PHYSIC_ADDR = "XX:XX:XX:XX:XX:XX";

// initialization of valuables
var dBtn = require("dash-button");
var iBtn = new dBtn(PHYSIC_ADDR);
var macApp = require("jxa").Application;
var iTunes = macApp("iTunes");

iBtn.addListener(
  () => {
    iTunes.playpause();
  }
);

実行

作成が完了したら、実行します。

Command
node remoTunes.js

※ハードウェアアクセスの権限がなく、permission deniedされたらsudo node remoTunes.jsしてください

実行確認した動画を次に示します。
動作はこんな感じになります(↓)

実行確認の動画

※流れている音楽は踊ってばかりの国の「!!!(チック・チック・チック)」

4. まとめ

JXAとAmazon Dash Buttonを使ってダイナミックにiTunesを操作してみました。
たった数行でダイナミックな操作ができるようになりました、便利な世の中になったものです。。。

なお、iTunesの操作は他にもトラック情報を取得したり等、様々なコトができますし、
さらに、JXAはiTunesだけでなくFinder等のMacのアプリケーションをコードで操作できるようになります(!)。
自宅や会社で無駄なコトがあったら自動化してみましょう。

「Mac厨は嫌いだよ!世の会社を見てみろ!Windows一択だ!」

という方はJScriptデビューすることをオススメします。
日本の生産性アゲていきましょう。