コンパイル中に音楽を流せる sbt プラグインを作りました。

Scalaコンパイルが遅い件は「Scala コンパイル 遅い」とかで適当にググればいいと思います。
https://twitter.com/search?q=Scala%20%E3%82%B3%E3%83%B3%E3%83%91%E3%82%A4%E3%83%AB%20%E9%81%85%E3%81%84


コンパイルが遅いと開発速度が当然鈍りますから、Scala にとっては大きな課題なわけですが、バージョンが上がり機能が増えていけば行くほどコンパイル時間は長くなる傾向にあります。
またマクロや implicit conversion などのコンパイル時に解決を行うような機能を多用したりしてもコンパイル時間は長くなります。
解決策としては

  • 良いマシンを買おう!!

です。

でも良いマシンを使っても遅いもんは遅いです。で、解決策を考えたのですが、思ったんです。逆に考えたらいいんじゃないかって。コンパイル時間長くたっていいんじゃないかって。


というわけで sbt-musical という SBT プラグインを作りました。


https://github.com/tototoshi/sbt-musical


sbt-musical を使うとビルドの間に音楽を流せます。

インストール

まず、bash-itunes というコマンドラインツールをインストールしておいてください。

$ mkdir ~/bin  # if not exists
$ curl https://raw.github.com/illusori/bash-itunes/master/itunes > ~/bin/itunes && chmod 0755 !#:3


次に ~/.sbt/plugins/build.sbt に次の1行を加えます。

addSbtPlugin("com.github.tototoshi" % "sbt-musical" % "0.1.1")


以上です。

注意点ですが、bash-itunesiTunesAppleScript で操作しているので、Mac でしか動きません。
sbt-musical では bash-itunes をラップした scala-itunes (https://github.com/tototoshi/scala-itunes) を使っているので、Windows 対応したければ、scala-itunes に pull request ください。

使い方

「♪」をコマンドに頭につけます。

> ♪ compile

分かりやすいでしょ。そしてずいぶん楽しげなコマンドに見えます。
これでコンパイルしてる間に音楽が流れます。コンパイルが終わると止まります。

「♪」は任意のコマンドに対して使えます。例えば

> ♪ test

これでテストしてる間に音楽が流れます。テストが終わると止まります


ソースの変更を検知してコマンドを連続で実行させる「~」と組み合わせることも可能です。

> ♪ ~compile


ついでな感じですが、iTunes の簡単な操作をするコマンドもつけています。

再生

> itunes-play

一時停止

> itunes-pause

音量設定

> itunes-vol 50

または

> itunes-vol up/down

効果

これで、コンパイル時間の間に好きな音楽を流せるようになるので、コンパイルが楽しくなります。コンパイル時間が長くなるほど音楽がたくさん聞けます。というかコンパイル時間が短いと曲が細切れになりすぎるので逆にイライラしてきます!


選曲についてはお任せしますが、割りとテンションの上がる曲のほうが、「コンパイルはじまったああああ!!!」感があるのでオススメです。逆に落ち着きたい人はお経でも流せばいいんじゃないっすかね。


あと作って初めて気がついたんですが、コンパイルが終わると音楽が止まるので、「コンパイルなげえわ〜」とネットサーフィンし始めてもコンパイルが終わったのにすぐ気づくので時間を無駄にしません。


これで Scalaコンパイル時間の長さは解決されました(断言)。皆さんたくさんコンパイルしましょう。