自動化

手作業の繰り返し処理を仕組みに任せ、人の手を介さず実行できるようにすること

効率化開発プラクティス
自動化」の技術書を見る →

自動化とは

自動化とは、これまで人が手作業で繰り返していた処理を、プログラムや仕組みに任せ、人の介在なしに実行できるようにすることだ。IT の現場では、テストの実行、ビルドとデプロイ、サーバーの構築、定型的なデータ処理など、あらゆる反復作業が自動化の対象になる。人為的なミスを減らし、人間がより創造的な仕事に集中できるようにする。

主な対象領域

領域
テストコード変更時に自動でテスト実行
デプロイコードを本番へ自動反映 (CI/CD)
インフラ構築設定をコード化して再現 (IaC)
定型業務集計・通知・データ転送

中でも CI/CD (継続的インテグレーション/デリバリー) は、開発の品質と速度を同時に高める自動化の代表例だ。

なぜ重要か

手作業は、回数が増えるほど時間を奪い、ミスの確率も上がる。自動化は、一度仕組みを作れば何度でも正確に再現でき、その効果は使うほど積み上がる。特に頻繁に繰り返す作業ほど、自動化の投資対効果が高い。「人がやらなくてよいことを、人がやらない」状態をつくることが、生産性の土台になる。

何を自動化すべきか

優先順位を決める手がかりになるのが、Google の SRE Book が定義する「トイル」だ。同書はトイルを、本番サービスの運用に伴う作業のうち、手作業で反復的、自動化が可能で戦術的、恒久的な価値を生まず、サービスの規模に比例して増えていく性質を持つものと説明している。この性質に多く当てはまる作業ほど、自動化の見返りが大きい。同書はさらに、SRE がトイルに費やす時間を 50 % 以下に保ち、残りをエンジニアリングに充てる原則を置いている。放っておけばトイルは膨らみ、改善に使う時間を食い尽くすからだ (詳しくは トイル)。

逆に、規模が大きくなっても量が増えない作業や、その都度人の判断が必要な一回性の作業は、優先度が下がる。

自動化の落とし穴

ただし、何でも自動化すればよいわけではない。めったに実行しない作業を複雑な仕組みで自動化すると、作る手間と保守コストが効果を上回る。また、自動化された処理は中身がブラックボックス化しやすく、壊れたときに誰も直せない状態に陥る危険がある。見極めの目安は、年間の実行回数 × 1 回にかかる時間が、仕組みを作る時間と毎年の保守時間の合計を上回るかどうかだ。ただし本番反映やデータ移行のように失敗したときの被害が大きい作業は、時間の損得ではなく手順を確実に再現できることを理由に自動化する価値がある。いずれにしても、自動化の仕組み自体を理解・保守できる形に保つことが前提になる。

考え方を学ぶには関連書籍が役立つ。

この記事は役に立ちましたか?

関連用語

関連する記事