手順書の構成要素 — 全体像

手順書の役割は「誰でも同じ品質で作業を実行できる」ことです。そのためには、作業の手順を書くだけでなく、 前後の文脈(なぜ・誰が・何を前提として)と、失敗時の対応(ロールバック)、 そして改善のための記録(ヒヤリハット・更新履歴)を含める必要があります。

以下の図は手順書を構成する8要素の配置と関係を示しています。

手順書の8つの構成要素
図1 — 手順書の8つの構成要素とその関係

① 目的(Purpose)

ELEMENT 01
目的 — この手順書が何のためにあるか

目的が明確でない手順書は、「何のために読むのか」がわからないまま作業が始まります。目的を最初に宣言することで、手順の意味が理解しやすくなり、判断が必要な場面での基準にもなります。

目的の記載には次の情報を含めます。

  • この手順書が扱う作業名(例:本番DBへのデータマイグレーション実行)
  • なぜこの手順書が存在するか(例:マイグレーション手順のミスによるデータ損失を防ぐため)
  • この手順書を実行した結果(例:マイグレーション完了後、新スキーマでサービスが稼働する)
❌ 悪い例
DBのマイグレーション手順について記載する。
✅ 良い例
本手順書はuser_profileテーブルへのカラム追加マイグレーションを安全に実行するための手順を定義します。手順に従うことで、ダウンタイムなしにマイグレーションを完了し、失敗時には5分以内にロールバックできます。

② 対象読者(Audience)

ELEMENT 02
対象読者 — 誰が読むか・どのスキルレベルを想定するか

同じ「デプロイ手順書」でも、読む人がシニアエンジニアなのか、インフラ経験のない新メンバーなのかによって、書く詳細度が変わります。対象読者を明記することで、手順の粒度が適切になります。

対象読者の属性手順の書き方への影響
シニアエンジニア(担当業務経験3年以上) コマンドとオプションの意味説明は省略可。注意点と確認コマンドを中心に記載
ジュニアエンジニア(業務経験1年未満) コマンドの意味・オプションの説明・期待する出力例を丁寧に記載
バックアップ担当(他チームメンバー) 事前知識ゼロを想定。用語の定義・前提知識へのリンクを含める
運用チーム全般 最も知識が少ないメンバーに合わせた詳細度で記載する

「最も知識が少ないメンバー」に合わせる

手順書は「知っている人」のためではなく、「知らない人でも実行できる」ためのものです。「これは常識だから書かなくていい」という判断は、ほとんどの場合間違っています。むしろ常識的な内容ほど、暗黙知として省略されがちです。

③ 前提条件(Prerequisites)

ELEMENT 03
前提条件 — 作業開始前に揃っていなければならないもの

前提条件が満たされていない状態で手順を実行すると、途中で詰まったり、最悪の場合は中途半端な状態でシステムが残ります。「作業を始める前に確認すること」を明示することで、準備不足による失敗を防ぎます。

前提条件として記載すべき項目の例を示します。

  • 必要な権限(例:本番DBへの書き込み権限、本番サーバへのSSHアクセス権限)
  • 必要なツール・ソフトウェア(例:psql 15以上、AWS CLI v2)
  • 事前に完了すべき作業(例:DBのバックアップ取得、変更凍結期間外であること)
  • 確認すべき状態(例:現在稼働中のサービスに障害がないこと)
  • 連絡・承認が必要な事項(例:作業開始前にリーダーへSlack通知、変更管理チケットの承認取得)
# 前提条件チェックリストの例 [ ] 本番DBへの書き込み権限を保有している [ ] psql がインストールされている(バージョン 15.x 以上) [ ] DBバックアップを取得済み(バックアップIDをメモ: ____________) [ ] 変更管理チケット #______ が承認済み [ ] 現在のサービス障害がないことを監視ダッシュボードで確認 [ ] 作業開始を #deploy-notifications チャンネルに通知済み

④ 手順ステップ(Steps)

ELEMENT 04
手順ステップ — コピペ可能・期待出力付き・一つのステップで一つの操作

手順ステップは手順書の本体です。曖昧さをなくし、コマンドはコピー&ペーストで実行できる形式で記載します。また各ステップの後に期待される出力例を記載することで、「正しく実行されたか」を判断できます。

手順ステップを書く際の原則:

原則内容悪い例良い例
一ステップ一操作 一つのステップで複数の操作を混在させない 「DBに接続してマイグレーションを実行する」 ステップ1: DBに接続する
ステップ2: マイグレーションを実行する
コピペ可能な形式 コマンドはコードブロックで記載。変数は明示 「psqlで接続してください」 psql -h ${DB_HOST} -U ${DB_USER} -d ${DB_NAME}
期待出力を示す 成功時の出力例を記載 (出力例なし) 「期待する出力: Migration complete. 1 table altered.
所要時間の目安 長い処理には所要時間を記載 (時間の記載なし) 「このコマンドは5〜10分かかります」

⑤ 確認ポイント(Checkpoints)

ELEMENT 05
確認ポイント — 各ステップ後に「正しく実行されたか」を検証する

手順を実行しただけでは「正しく実行できたか」がわかりません。各ステップの後または重要な段階で確認コマンドを実行し、期待される状態になっているかを検証します。

確認ポイントは手順ステップとは分離して記載することをお勧めします。 手順の中に確認を混在させると、「実行した」のか「確認した」のかが不明確になるためです。

## 確認ポイント — マイグレーション後 ### CP-1: テーブル構造の確認 ```sql \d user_profiles; ``` 期待する出力: `new_column` カラムが追加されていること ### CP-2: データ件数の確認 ```sql SELECT COUNT(*) FROM user_profiles; ``` 期待する出力: マイグレーション前の件数と同一であること(メモ: _______件) ### CP-3: アプリケーションからの疎通確認 ```bash curl -I https://api.example.com/health ``` 期待する出力: `HTTP/2 200`

⑥ ロールバック手順(Rollback)

ELEMENT 06
ロールバック手順 — 失敗時に元の状態に戻す手順

ロールバック手順は「手順書で最も大切な部分のひとつ」と言っても過言ではありません。本番環境での作業が失敗した場合、パニック状態でも迷わず元に戻せることが重要です。

ロールバック手順を記載する際のポイント:

  • ロールバックの判断基準を明記する(例:確認ポイントCP-2でエラーが出た場合)
  • ロールバックの所要時間を記載する(例:ロールバックには約3分かかります)
  • ロールバック後の確認手順も記載する(ロールバックが成功したかを確認する)
  • ロールバック不可能な場合はその旨を明記する(例:このステップ以降はロールバック不可。実行前に上長の承認を取ること)

⚠️ 「ロールバックは不可能」と正直に書く

ロールバック手順が存在しない場合でも、それを隠すのは危険です。「このステップはロールバック不可能です。実行前に必ずXXX担当者に確認してください」と明記することで、慎重な判断を促します。

⑦ ヒヤリハット記録欄

ELEMENT 07
ヒヤリハット記録欄 — 作業中の違和感・迷いを記録する欄

ヒヤリハット記録欄は、通常の手順書にはない特別な要素です。「作業中に感じた違和感」「手順の意味が分からなかった箇所」「もう少しで間違えるところだった」という小さな気付きを記録します。この記録が次の改善サイクルを生み出します。

前記事「ハインリッヒの法則と運用ドキュメント」で解説した通り、 1件の重大障害の背後には29件のインシデントと300件のヒヤリハットがあります。 ヒヤリハット記録欄は、この300件を「記録する場所」として手順書に組み込む仕組みです。

## ヒヤリハット記録 | 日付 | ステップ | 気づいた内容 | 対応 | 担当 | |------|----------|-------------|------|------| | 2026-05-10 | ステップ3 | psqlの接続タイムアウトが30秒で発生。本番DBの応答が重い時間帯がある | 手順に接続前の負荷確認を追加予定 | 鈴木 | | 2026-06-01 | ステップ7 | ロールバックコマンドのDB名が手順書と本番の命名規則が違っていた | 手順書のDB名を修正した | 田中 | **未対応のヒヤリハット**: 1件(鈴木担当 → 2026-07-01までに対応予定)

⑧ 更新履歴(Changelog)

ELEMENT 08
更新履歴 — 誰がいつ何を変更したか

更新履歴は「この手順書の信頼性」を示す証拠です。最終更新日・更新者・変更内容が記載されている手順書は、「誰かが最近確認した」という安心感を与えます。逆に最終更新が3年前の手順書は、内容が現在も正しいか信頼できません。

バージョン日付更新者変更内容
1.0.0 2025-10-01 佐藤 初版作成
1.1.0 2026-02-15 鈴木 ロールバック手順を追加。確認ポイントCP-3を追加
1.2.0 2026-06-01 田中 ヒヤリハット記録に基づきDB名の記載を修正。前提条件に変更管理チケット確認を追加

💡 Gitで管理する場合の考え方

手順書をGitで管理する場合、更新履歴はコミットログが担います。ただし、コミットメッセージに「なぜ変更したか(ヒヤリハットに基づく修正など)」を含める習慣が重要です。

Markdownテンプレート

8つの要素を含んだMarkdownテンプレートです。新しい手順書を作成する際のスタート地点として使用できます。 次のPARTで解説するPythonスクリプトを使えば、このテンプレートから自動生成も可能です。

# [手順書タイトル] ## 目的 - 対象作業: - なぜこの手順書が存在するか: - 実行後の期待状態: ## 対象読者 - 対象: (例:バックエンドエンジニア、インフラ経験1年以上) - 必要な前提知識: (例:SQLの基本的なDDL操作の理解) ## 前提条件 - [ ] 権限: - [ ] ツール: - [ ] 事前作業: - [ ] 承認: ## 手順ステップ ### ステップ1: [ステップ名] ```bash # コマンド ``` 期待する出力: 所要時間目安: ## 確認ポイント ### CP-1: [確認内容] ```bash # 確認コマンド ``` 期待する結果: ## ロールバック手順 ロールバックの判断基準: ロールバック所要時間: ### ロールバック手順1: [内容] ```bash # ロールバックコマンド ``` ## ヒヤリハット記録 | 日付 | ステップ | 気づいた内容 | 対応 | 担当 | |------|----------|-------------|------|------| | | | | | | ## 更新履歴 | バージョン | 日付 | 更新者 | 変更内容 | |-----------|------|-------|---------| | 1.0.0 | | | 初版作成 |

まとめ

手順書の8つの構成要素を整理します。それぞれが独立した役割を持ち、どれかが欠けると手順書の完全性が損なわれます。

要素役割欠けた場合のリスク
① 目的手順書の存在意義を示す「なぜこれをやるか」がわからない
② 対象読者詳細度の基準を定める書き方が曖昧になる。特定の人にしか使えない
③ 前提条件準備不足での実行を防ぐ途中で作業が止まる。中途半端な状態が残る
④ 手順ステップ作業を再現可能にする毎回解釈が違う。作業品質が人によって変わる
⑤ 確認ポイント正しく実行されたか検証する誤った状態に気づかないまま次の手順に進む
⑥ ロールバック失敗時の回復手順を保証するパニック状態での対応が遅延する
⑦ ヒヤリハット記録改善のための情報を収集する同じ問題が繰り返される。改善サイクルが機能しない
⑧ 更新履歴手順書の信頼性を示す内容が現在も正しいか不明。誰も更新しなくなる