QAによるルーティン業務効率化の一例を公開!
こんにちは!オンサイト株式会社の品質保証(Quality Assurance)チームに所属しているAliceです。
今回は品質保証チームとして計画・実践した業務効率化について書きます。
業務を効率化する為のアプローチとして、自動化はとても有効的手法の1つです。
日々の繰り返し作業を何らかの形で自動化することが出来れば、人が頭を使って解決していく本来の仕事に専念することが出来ます。
しかし、全ての工程を自動化することは合理的なのでしょうか?
目指したい地点
ある作業の全行程を自動化するとなると実現の難易度が高いものに手を出すこととなり、多くの時間を要します。
それでは掛けた時間に対してのリターンが少なくなるので、「簡単に実現出来る工程だけを自動化」することを目標とした方が、「全て手作業」或いは「全て自動化」よりも費用対効果が高くなります。
ここを目指します。
現状の把握
大事な工程の1つとして、日々の作業をリストアップすることから始めます。
ここでのポイントは、「単調且つ時間の掛かる繰り返し作業」をピックアップすることです。
その作業に掛かる「時間」と実行する「頻度」を算出しておくことで、次の段階である「計画と見積もり」が可能になります。
計画と見積もりが大事
この工程が最も重要なポイントになります。
作業のリストアップ時に「時間」と「頻度」を算出しました。これらの値が大きいものを優先的に自動化する目標としましょう。
何れかの手法(マクロ、オートメーション、シェルスクリプト等)を用いて自動化が可能か推測します。
自動化が可能であれば、次に全自動化までの工程を設定します。
もし、全ての自動化が容易く少ない時間で実現出来るのであれば良いですが、大抵は実現が難しそうな時間の掛かる箇所が出てきます。
そこで全自動化の工程の中でも「少ない時間で多くの工程を自動化出来る箇所」を見つけます。
実現に時間が掛かる箇所は素直に手作業と割り切り、半自動化によるアウトプットを最大化することが重要です。
見積もりを簡単な式に表すと以下のようになります。
(半自動化に要する時間)/ (短縮できる時間)= 元が取れる実行回数
例: 5h / 0.5h = 10回
「半自動化に要する時間」が少なく「短縮出来る時間」が多ければ、少ない実行回数で元が取れるのでそれ以降はずっと得することになります。
実行してみたこと
調査・選定
まずは日々の作業のリストアップを行います。
いくつかある中でも一際「単調且つ時間の掛かる繰り返し作業」に該当する作業がありました。
それは、あるサーバのDBの中身を別のサーバのDBにコピーするという作業です。
頻度としては「隔週」で行い、要する時間は「35分」。
計画・実行
ターゲットを絞ったので、こちらが実現可能であるか構想を練ります。
作業内容は、シェル上でのコマンド実行が主なので「シェルスクリプト」を用いて自動化出来そうです。
次に全自動化までの工程を設定します。
1 . Aサーバにssh
2 . DBのダンプを取る
3 . Bサーバへダンプを送信
4 . Bサーバへssh
5 . DBのダンプを展開
6 . アプリケーションの反映
sshを跨いでのコマンド実行の実現について5分調べてみましたが、私の理解力では手法を確立することが出来ず、調べたりテストしたりの試行錯誤に時間が掛かりそうだと判断したので、1,4は手動で行うことにしました。
それ以外の箇所は引数とコマンドを組み合わせるだけで簡単に自動化出来そうです。
結果
事前に予測していた結果と大差なく、3hで0.5h分の自動化に成功しました。
先程の式に当てはめると
(半自動化に要する時間)/ (短縮できる時間)= 元が取れる実行回数
3h / 0.5h = 6回
隔週で必ず実行するので約3ヶ月程度で元が取れる結果となりました!
まとめ
要点
- 単調且つ時間の掛かる繰り返し作業をピックアップ
- 簡単に実現出来る工程だけを自動化
- 実現に時間が掛かる箇所は素直に手作業
- (半自動化に要する時間) / (短縮出来る時間) = 元が取れる実行回数
感想
今回は最適な自動化について考えてみました。
掛ける時間に対するリターンを曲線的に理解することが大切なことだと感じます。
また、業務の効率化を行える環境を作ってくださった同じチームの方々に感謝します。
今回手作業とした「sshを跨いでのコマンド実行」についてエンジニアの方に
「Ansible等を利用すると手軽に実現出来そう」とのアドバイスを頂きました。
まだまだ私自身の知識が足りないので次の業務効率化に向けて精進したいと思います。
オンサイトはテックカンパニーとして、ルーチン化したタスクが自動化できないか、社員一人ひとりが常に考えるようにしています。
今後も参考になるような効率化の例を共有していきますので、ぜひご覧いただき、皆さまも作業の効率化に取り組んでみてはいかがでしょうか!
拙い文章でしたが、ここまで読んで頂きありがとうございました。
QA
QAエンジニア歴2年。
よりお客様にサービスを快適に使って頂けるように、 誰よりもお客様の目線でUIやUXの改善を提案できるよう日々努めています。
日々の作業にも疑問を呈し、より効率的で効果的な作業の自動化に励んでいます。