社内ツール改善

JIRAやGitLab, Slackなど、業務でツールを使っているとどうしても定型作業が出てくる。そういう作業は徹底的に自動化すると、ツール間のスイッチングコストが減って、本質的な作業に集中できる。

そのようなツールをsbtタスクで書いていた。sbtタスクを使うと、タスクを静的型付けで書けて、mavenライブラリをシームレスに使える利点がある。通常、これらのツールはrest apiを用意しているので大体curlとjqを駆使することになるが、使い慣れたScala言語で統一できること、Scalaの表現力が高いことで、ロジックが保守しやすい。書捨てられるもよくあるこれらの処理を第一級の言語で書けるのは良いカルチャーショックだと思う。

ただ、これにはちょっと欠点があって、テストが書きづらい。頑張れば書けなくもないけどscriptのテストってあんまり馴染みが無いと思う。それよりかは普通にscalatestのほうが後々を考えると良いだろう。

というわけでタスクを1つのプロジェクトとし、ロジックをmainメソッドに書き殴るようしてみた。sbtは気軽にマルチプロジェクトを構築できるので、そういうフッ軽な所も好きだ。

書いていると1つ問題が発生してしまった。各SaaSjavaライブラリのラッパーを社内ライブラリとしてパブリッシュしようとおもったが、引き続きsbtタスクをとしても使いたい場面もあったため、scala2.12で書く必要があった。sbtの支援もないのでusingとかもなくてなかなか体験が悪い。複数バージョンでビルドできるが、2.12と3.3だとソースを共有できない場面が多い。辛い。

今の所は2.12ベースで書き直して、sbt2がでたら移行するのが良いかならと思っている。…sbt2いつでるかな?