自分にできる自動化の手段を整理して弱点を直視する
はじめに
なんでも自動化するエンジニアを名乗ってから4年が経った。
ようするに今の会社に転職してから4年が経ったということで、別に区切りが良いわけでもないけど、これまでの経験を踏まえて自分にできる自動化って何だろう、というのを整理してみる。
私にとっての自動化
整理する前に、私にとっての自動化とはなにかを定義する。
自動(じどう)とは、機械装置が人間などの他の力を必要としないで、能動的に作動することをいう。
とのこと。特に反論はない。
ところで先日、 自動化大好きエンジニアLT会-vol.3 というイベントで久々にLTをしてきた。その中で、自動化を習慣化するには自動化のハードルを下げる ≒ 自分の中で自動化の定義をゆるゆるにしよう、という話をした。
これは本当にそう思っていて、塵も積もれば千里の道もということで、オレオレ alias を追加するでもよし、vim のキーマップを新しく覚えるでもよし、なんなら Android Studio で GitHub のプルリクエストを操作する方法を調べるでもよい。
つまり、自動化が達成されるまでの調査や検証といった行為も含めて自動化と呼んで、俺は毎日自動化しているぞ、という気持ちでやっていこうという話である。
私にできる自動化の手段
まずは自分がよくする自動化の手段を洗い出してみる。
- Vim (コマンド, マクロ, 自作コマンド, プラグイン)
- IDE (ショートカット, プラグイン)
- CLI (自作, CLI, zshのプラグイン)
- Jupyter
- ブラウザ拡張機能
- そもそも自動化したい対象をなくす
あとは、使っているサービスの機能を使ってどうにかすることもある。
洗い出してみると、逆に私が苦手な手段も見えてくる。
- アプリ
- Webサービス
基本的にGUIで解決することを苦手にしている。
今後の方針
GUI で解決することが苦手というのは弱点である。
私の自動化にはGUIを伴わないということは、GUIがなくても扱える人としか共有できないということである。言ってしまえば、私の自動化はせいぜいエンジニアとしか共有できない。
そもそも私は、GUI を利用する時点で自動化できる範囲が最大化されないと考えていた。GUI があるということは、人間がそこで何か操作することが前提になる。人間の操作が必須となる設計をする時点でそのシステムは半自動化が限界になる。自分から全自動化の夢を諦めるなんてナンセンスである、と考えていた。
なので GUI を作るモチベーションはゼロだったのだけど、最近になってというか今更になってというか、解決したい問題によっては GUI を用いるのが最適なものもあると思うようになった。
複数の操作をまとめてやってくれるCLIツールとGUIツールのどちらの方が活用できる人が多いかといえば、そりゃあGUIツールの方が多いわけである。解決したい問題に関わる人が多いところでは、GUIでもって自動化した方が便利なわけである。
ということで重い腰をあげて、苦手意識のある JavaScript と CSS と デザイン(を楽にそれっぽくできる方法)の勉強をやっていこうかなぁ、と思う今日このごろでした。