自動化といえばやはり自動テストとそれに伴う自動デプロイ、などの継続的インテグレーションですね。 そういった大きな話じゃないのですが最近できた自動化を2つ。
1. GitHub wikiのPDF化の自動化
先日、Shibuya.rbへの参加記事 でちょこっと書いた内容なのですが、GitHubのwikiに書かれている文書をPDF化するというのを自動化するというものです。
Shibuya.rbで教わったとおり、phantom.jsをカスタマイズすることでいい感じに作成できるようになりました。
そんなの必要なの?って思う人もいるかもしれませんが、GitHubにアクセスできない/しない人に定型の使い慣れたフォーマットで文書を渡すということが必要になるところもあるのですね(ヽ'ω`)
これでChromeを開いてぬくもりのある手作業でPDFフォーマットで印刷していく作業から解放されることになります。
2. マージすることがわかってるブランチのマージ
いくつかのバージョンにブランチを分けて開発をしているプロダクトについて、一番直近で出る予定のブランチに対して行った変更はあとから出す予定のブランチに当然マージするんですが、それを手動でやっていたのを自動化進めました。 ただ、gitコマンドだけでノールックでマージしちゃうと実はそのブランチだけで止めておいたほうが良い変更でした!ってのが交じる可能性がありそうだったので、hubコマンド(github/hub)を利用して、pull request出すようにしました。これで差分を見て、必要ならマージボタン押すし、だめならリジェクトするという必要な最終チェックだけ人間ができる仕組みを構築しました。
これでわかりきったマージを手動でやったり、あまりにも疲れててマージ先を間違えたりというつらい作業から開放されることになります。
まとめ
わかりきった定型作業を毎日繰り返していると死んだ魚のような目になってくるし精神が崩壊して最悪の場合死に至るので、こういう機械ができる作業はどんどん自動化していくのがいいですね。Chefとかも、手順書に沿ってサーバ作っていく作業をするなら、それをコードで定義してサーバのセットアップが完了してれば最高じゃん!みたいなプロダクトなので、こういう方向で自動化が進むと人類がどんどん幸福になっていく感じしていいですね。
アドバイスをくれた方や、実際に尽力してくれたチームメンバーにはホントにホントに感謝です。
今後も死んだ魚のような目になるタスクが見つかったら自動化していきたいと思います。