今回の話題は、エンジニアリングにおける作業の自動化についてお話ししようかなと思います。
新しいCICDの方法とか手法とか考え方みたいなのが見つかったみたいな話ではなくて、
単に感じたことっていうのを喋るだけです。
今日は、完全に僕個人の独り語りみたいな感じなので、
持って帰っていただけるものがあるかちょっとわからないですけども、
緩く喋っていこうかなと思ってまして。
僕が本業でやっているポッドキャスト、 カミナシテックFMという番組があります。
文字通り、私が所属する株式会社カミナシのエンジニアメンバーをゲストにお呼びして、
日々の挑戦していることだったり、見ているものとか、取り組んでいること、
向き合っている課題についてお話をしているという番組ですね。
これで前回の配信、最新回の配信で、
弊社の技術顧問をしていただいている大川さんという方をゲストにお呼びして、
彼のキャリアであったり、今後の方針だったりとか、今までのやってきたことみたいなお話を伺いました。
その中で僕が一つ、とても印象的に思ったことがありまして、
彼は過去の経歴でアメリカに飛んでお仕事をされていた経験があります。
確かニュースピックス社にいた時ですね。
その時にアメリカのエンジニアと日本のエンジニアの違いみたいなことってありますか?
っていうのを聞いてみたんですけど、パッと出てきたお答えが、
アメリカのエンジニア、主語が大きいので、彼が一緒に仕事をしたエンジニアだけに絞っていると思いますけど、
そのエンジニアの人たちは、とにかく自動化をしていくと。
意地でも自動化をする。
僕らが手で何かやるとか、手動でやるっていうことを極力嫌うらしいですね。
ここのこだわりが本当に強いとおっしゃってまして、
僕これ聞いた時に、僕は多分合わないんだろうなって思っちゃいました。
僕も別に自動化が嫌いってわけではないし、
自動化できて、僕らの本来やるべきクリエイティブな時間を捻出できるんだったら、
それが一番いいともちろん思ってます。
思ってるんですけど、意地でも自動化したいかというと、僕そうではないんですよね。
一部だけ手動でやったりして、その後に流せるんだったら、
まあまあそれでもいいんじゃないのっていう感じです。
特に定期実行するんだったら話は別ですけど、
なんかワンタイム、もしくは2,3回、あとは年に1,2回ぐらいしかやらない作業で、
ちょっとめんどくさいなあというので、スクリプトを組んだりして自動化すると。
これだったら僕、多分半自動化をして、
自分の手でパッとやった方が早い時はもうそのままやっちゃおうかなって思っちゃうんですよね。
まあ年1,2回ですし。
ちりつもうなので、それだけ自分の時間を奪われるのが嫌だっていうような
考え方としてはすごく理解はできるんですけど、
僕はそんなにほんのちょっとの時間であれば、まあいいんちゃうって思ったりしますね。
ただ、大川さんが一緒に仕事されたエンジニアはそうではなかったということですね。
まあでもこれ、別に主語はアメリカのエンジニアって言ったんですけど、
別に日本のエンジニアでもそういう方々は探せば全然いらっしゃると思いますね。
僕の知ってる人だと、とにかく効率化をしたいので、
手をいちいちマウスに戻して、その後キーボードに戻してっていう、
切り替えるのがマジで嫌なので、
ショートカットをむっちゃくちゃ覚えたりとか、自分でいろいろ設定をして、
キーボードから絶対手を離さないような環境を整えて、
開発をされてるっていう先輩もいらっしゃったり。
逆に全然職の後輩では、キーボード叩くのも早いですけど、
その辺を全部スクリプト組んで、
マウスで一個押せば勝手にそれが走ってくれるみたいなもの。
要はそういうような作業効率化をしてしまって、
あとはマウス24個ぐらいボタンがあるやつ、ゲーミングマウスって言うんですかね。
一個一個設定していて、例えばプルリクエスト作るときもカチッと打ったら、
最後そのメッセージだけ自分で考えるんですけど、
今はAIを使ってメッセージも下手したら自分じゃなくて、
自動化してプルリクを作るみたいなことをやってるかもしれない。
そういう子もいたりして、
とにかく作業の効率化ってやろうと思ったらいくらでもできるし、
やってる人は確かに僕の身近にもいたなっていうところですね。
僕だったらそれぐらいだったら普通に手動でやっても多少はいいんじゃないのっていう気がします。
というのも僕は自動化も好きですけど、
自分の手でやってるところである種の安心感というか、
自動でやってる分これ本当にちゃんとやってんのかなってちょっと不安はありますよね。
一末の不安があったりして、
自分の手でやるほうがいいなっていう面もありますが、
とはいえ人間はミスをする生き物で、
自分をどこまで過信してんのって言われたらそれはおっしゃる通りなので、
むしろ自動化できるような仕組み組んでしまって、
ミスをしない機会にやらせるほうが正しいでしょうっていうのは、
それも僕は共感はしますので、
本当に良いものでいくんだったらやっぱり自動化をして、
人の手を返さない、
いわゆるヒューマンエラーを起こさないっていうのが一番いいというのは納得はしますけど、
そこにリソース組むんだったらもうそこはパッとやってしまって、
本来やりたかったこととか別の業務、作業とかに時間を使いたいなみたいなところはありますね。
でもやってみると楽しいとは思います。
自動化する作業自体って結構エンジニアの人だったら好きな人多いと思っていて、
僕も結構好きではあります。
だけど意地でもって言われたら、
いやそこまでこだわり持ってやるみたいなことはないかなと思いました。
何度かやったことはもちろんありますし、
自分でもやって成功したものもあれば、
ちょっと技術的に敗北だけど、
今回はできなかったっていう風に痛みを飲む時もありましたので、
絶対に自動化を僕はしないという意味ではないし、
やれるんだったらやりたいし、楽しいことは僕も理解している。
皆さんいかがですかね。
物によるとは思いますし、状況によるとは思いますけど、
ただ自動化がもしちょっとでもできるんであったら、
徹底的にまず1回やってみるのは1つかと思います。
僕も基本的には1回は自動化をしようとは試みます。
僕ができなかったら先輩とか後輩とか周りの人に聞いて、
そこはチームの力を借りるという感じです。
自力でできたらかっこいいんですけどね。
できなかったりしたら今回は技術的に敗北だけど、
ちょっとだけ手動を混ぜようみたいな感じで今までやってきて、
今もそうですね。
技術の進歩は本当に著しく、
自動化できないものって結構減ってきていると思う。
少なくとも僕らがパッと、
いやこれはもうめんどくせえな自動化したいなって思えるものは
多分できると思ってはいるんですよ、頭ではね。
ただそれをできるだけの技術力とか知識が自分にないだけ。
そういう知識とか技術力、もしくは経験を持っている人が
周りにいることが結構大事なんで、
そういう時はチームに頼る。
統合力で解決するのが一番だろうなという感じでした。