- 設計
システム手順書の書き方|コピペできるテンプレートとチェック項目30
システムの手順書とは、作業する人が変わっても同じ操作で同じ結果になるように、操作と確かめ方を1行ずつ書いた文書です。 わかりやすさを決めるのは文章のうまさではなく、「1行に1操作」と「期待結果を見える値で書く」の2点です。
この記事では、表紙から作業記録欄までのテンプレートを本文にそのまま載せ、架空の備品予約システムの Web サーバー設定変更を題材に、Linux のコマンドと実際の出力を埋めた記入例を示します。リリース作業に固有の判定表や、運用全体の設計項目には立ち入らず、どの作業にも使える書式と書き方に絞ります。
確認環境:Ubuntu 24.04.4 LTS、nginx 1.24.0、curl 8.5.0、bash 5.2.21、GNU sed 4.9、GNU diffutils 3.10(確認日 2026-10-05)。記入例のコマンドはすべてこの環境で実行し、出力をそのまま載せています。ホスト名とパスは yoyaku-web01、/home/taro/yoyaku-web に置き換えています。
この記事の結論
- 1行に1操作。実行コマンド・期待結果・確認コマンド・NG時の対応を横に並べた表にする。
- 期待結果は「表示される文字列か数値」で書く。出力が出ないのが正しいときは「出力なし」と書く。
- 構成は 表紙 → 事前確認 → 手順本体 → 事後確認 → 切り戻し → 作業記録 の6パート。
- 切り戻しにも期待結果を書き、検証用の環境で一度通して実行してから使う。
- 1回きりの変更は作業手順書、繰り返す作業は運用手順書、全体の説明はマニュアルに分ける。
手順書の構成早見表
| パート | 書くこと | 列(横に並べる項目) |
|---|---|---|
| 表紙 | 目的、対象、日時、作業者・確認者、影響、中止基準、連絡先 | 項目・内容 |
| 事前確認 | 作業を始めてよい状態かどうか | No・確認内容・実行コマンド・期待結果・NG時の対応・結果・時刻 |
| 手順本体 | 変更そのもの(1行に1操作) | No・操作・実行コマンド・期待結果・確認コマンド・NG時の対応・結果・時刻 |
| 事後確認 | 変更が効いたこと、ほかが変わっていないこと | 事前確認と同じ |
| 切り戻し | 変更前の状態へ戻す操作 | 手順本体と同じ |
| 作業記録 | 時刻、結果、手順書と違った点、申し送り | 項目・記入欄 |
本記事の内容は、ご自由にお使いください。
ご利用の際は、出典として本ページへのリンクを記載いただけますようお願いします。
(記載例)出典:株式会社RJC「システム手順書の書き方|コピペできるテンプレートとチェック項目30」
作業手順書・運用手順書・マニュアルの違いと使い分け
呼び名が似ている3つの文書は、書く対象と使う回数で分けると整理できます。
| 文書 | 書く対象 | 使う回数 | 主な読み手 | 中心になる内容 |
|---|---|---|---|---|
| 作業手順書 | 1回の変更作業(設定変更、切り替え、データ修正) | 1回(終われば記録として保管) | その日の作業者と確認者 | 実行コマンド、期待結果、切り戻し、作業記録 |
| 運用手順書 | 定常の作業(日次の確認、月次の棚卸し、アカウント追加) | 繰り返し | 交代で担当する運用メンバー | 実行コマンド、期待結果、NG 時の連絡先、実施のきっかけ |
| マニュアル | システムや業務の全体(機能、画面、ルール) | 必要なときに参照 | 利用者、新しく加わった人 | 全体像、用語、機能ごとの使い方、判断の考え方 |
どれを書くかは、次の条件で決められます。
| 条件 | 選ぶ文書 | 付け加えるもの |
|---|---|---|
| 本番の設定やデータを変える。やり直しがきかない | 作業手順書 | 切り戻し手順と判断基準、作業記録欄 |
| 同じ作業を毎日・毎週・毎月行う | 運用手順書 | 実施のきっかけ(時刻・依頼)と、実施記録の残し方 |
| 障害の連絡を受けてから行う | 運用手順書(障害時用) | 最初の 5 分で見る確認項目と連絡先 |
| 操作ではなく、仕組みや考え方を伝えたい | マニュアル | 図、用語集、手順書への参照番号 |
| 作業手順書を2回以上使い回した | 運用手順書へ作り替える | 日付や値を変数にし、毎回変わる部分に印を付ける |
3つとも表の列は共通にできます。違いは表紙と記録欄で、作業手順書は「その日の日時と切り戻し」、運用手順書は「実施のきっかけと繰り返しの記録」を厚く書きます。
コピペ用テンプレート(Markdown)
かっこの中を書き換えて使います。「結果」は OK / NG、「時刻」は実行した時刻を作業中に書き込みます。
表紙
| 項目 | 書くこと |
|---|---|
| 文書名・版 | 何の作業かが分かる名前と版番号 |
| 対象 | システム名、サーバー名、対象ファイル |
| 目的 | なぜ行うかを1文で |
| 作業日時 | 開始と終了の予定時刻 |
| 作業者・確認者 | 操作する人と、横で結果を見る人 |
| 影響 | 利用者への影響と停止の有無 |
| 前提条件 | 作業を始めてよい状態 |
| 中止・切り戻しの基準 | どうなったら戻すか、誰が決めるか |
| 連絡先 | 開始・終了・異常時の連絡先 |
| 改訂履歴 | 版、日付、変更点、作成者 |
事前確認
| No | 確認内容 | 実行コマンド | 期待結果 | NG時の対応 | 結果 | 時刻 |
|---|---|---|---|---|---|---|
| P-1 | (作業対象のサーバーであること) | (コマンド) | (表示される値) | (作業を始めない、連絡先へ連絡) | ||
| P-2 | (変更前の値) | (コマンド) | (表示される値) | (作業を始めない) | ||
| P-3 | (変更前の動作) | (コマンド) | (表示される値) | (作業を始めない) |
手順本体
| No | 操作 | 実行コマンド | 期待結果 | 確認コマンド | NG時の対応 | 結果 | 時刻 |
|---|---|---|---|---|---|---|---|
| 1 | (バックアップを取る) | (コマンド) | (出力なし、など) | (コマンド) | (中止。変更前なので切り戻し不要) | ||
| 2 | (設定を変更する) | (コマンド) | (出力なし、など) | (コマンド) | (切り戻し R-1 へ) | ||
| 3 | (反映する) | (コマンド) | (表示される文字列) | (コマンド) | (切り戻し R-1 へ) |
事後確認
| No | 確認内容 | 実行コマンド | 期待結果 | NG時の対応 | 結果 | 時刻 |
|---|---|---|---|---|---|---|
| C-1 | (変更後の動作) | (コマンド) | (表示される値) | (切り戻し R-1 へ) | ||
| C-2 | (変更していない機能の動作) | (コマンド) | (表示される値) | (切り戻し R-1 へ) | ||
| C-3 | (ログにエラーが出ていないこと) | (コマンド) | (表示される値) | (切り戻し R-1 へ) |
切り戻し
| No | 操作 | 実行コマンド | 期待結果 | 確認コマンド | NG時の対応 | 結果 | 時刻 |
|---|---|---|---|---|---|---|---|
| R-1 | (バックアップから戻す) | (コマンド) | (出力なし、など) | (コマンド) | (判断者へ連絡) | ||
| R-2 | (反映する) | (コマンド) | (表示される文字列) | (コマンド) | (判断者へ連絡) | ||
| R-3 | (変更前の動作に戻ったこと) | (コマンド) | (表示される値) | (コマンド) | (判断者へ連絡) |
作業記録
| 項目 | 記入欄 |
|---|---|
| 開始時刻・終了時刻 | |
| 結果 | 完了 / 切り戻し / 中止 |
| 手順書と違った点 | |
| 期待結果と違った出力(貼り付け) | |
| 次回への申し送り | |
| 作業者・確認者の署名 |
コピペ用テンプレート(タブ区切り)
表計算ソフトの A1 セルに貼ると、列に分かれます。事前確認と事後確認は「確認コマンド」の列を空欄のまま使います。
区分 No 操作 実行コマンド 期待結果 確認コマンド NG時の対応 結果 時刻
事前確認 P-1 (作業対象のサーバーであること) (コマンド) (表示される値) (作業を始めない、連絡先へ連絡)
事前確認 P-2 (変更前の値) (コマンド) (表示される値) (作業を始めない)
事前確認 P-3 (変更前の動作) (コマンド) (表示される値) (作業を始めない)
手順 1 (バックアップを取る) (コマンド) (出力なし、など) (コマンド) (中止。変更前なので切り戻し不要)
手順 2 (設定を変更する) (コマンド) (出力なし、など) (コマンド) (切り戻し R-1 へ)
手順 3 (反映する) (コマンド) (表示される文字列) (コマンド) (切り戻し R-1 へ)
事後確認 C-1 (変更後の動作) (コマンド) (表示される値) (切り戻し R-1 へ)
事後確認 C-2 (変更していない機能の動作) (コマンド) (表示される値) (切り戻し R-1 へ)
事後確認 C-3 (ログにエラーが出ていないこと) (コマンド) (表示される値) (切り戻し R-1 へ)
切り戻し R-1 (バックアップから戻す) (コマンド) (出力なし、など) (コマンド) (判断者へ連絡)
切り戻し R-2 (反映する) (コマンド) (表示される文字列) (コマンド) (判断者へ連絡)
切り戻し R-3 (変更前の動作に戻ったこと) (コマンド) (表示される値) (コマンド) (判断者へ連絡)
表紙と作業記録は次の2列です。
項目 内容
文書名・版
対象
目的
作業日時
作業者・確認者
影響
前提条件
中止・切り戻しの基準
連絡先
改訂履歴
開始時刻・終了時刻
結果 完了 / 切り戻し / 中止
手順書と違った点
期待結果と違った出力(貼り付け)
次回への申し送り
作業者・確認者の署名
記入例:Webサーバーの設定変更手順書
題材は、架空の社内向け備品予約システムです。添付ファイルの上限を広げるため、nginx の client_max_body_size を 1m から 20m に変更します。nginx の公式ドキュメントでは、この値の既定は 1m で、超えた要求には 413(Request Entity Too Large)を返すと説明されています。
表紙
| 項目 | 書くこと | 記入例 |
|---|---|---|
| 文書名・版 | 何の作業かが分かる名前と版番号 | 備品予約システム Webサーバー設定変更手順書 1.0 版 |
| 対象 | システム名、サーバー名、対象ファイル | yoyaku-web01 / conf.d/yoyaku.conf |
| 目的 | なぜ行うかを1文で | 添付ファイルの上限を 1MB から 20MB に広げる |
| 作業日時 | 開始と終了の予定時刻 | 2026-10-05 23:00〜23:30 |
| 作業者・確認者 | 操作する人と、横で結果を見る人 | 作業者:山田 / 確認者:佐藤 |
| 影響 | 利用者への影響と停止の有無 | 停止なし(設定の再読み込みのみ) |
| 前提条件 | 作業を始めてよい状態 | nginx が起動中、変更前の値が 1m、ディスクに空きがある |
| 中止・切り戻しの基準 | どうなったら戻すか、誰が決めるか | 事後確認が1つでも期待結果と違えば切り戻す。判断者:佐藤 |
| 連絡先 | 開始・終了・異常時の連絡先 | 運用チームのチャット、内線 0000 |
| 改訂履歴 | 版、日付、変更点、作成者 | 1.0 / 2026-10-05 / 初版 / 山田 |
事前確認
| No | 確認内容 | 実行コマンド | 期待結果 | NG時の対応 |
|---|---|---|---|---|
| P-1 | 対象サーバーにログインしている | hostname |
yoyaku-web01 と表示 |
ログアウトし、接続先を確かめ直す |
| P-2 | 作業ディレクトリへ移動する | cd /home/taro/yoyaku-web |
出力なし | パスを確かめる。作業は始めない |
| P-3 | nginx が起動している | ps -o pid,user,args -p "$(cat nginx.pid)" |
nginx: master process の行が1行出る |
作業を始めず、運用チームへ連絡 |
| P-4 | 変更前の値が 1m である | grep -n client_max_body_size conf.d/yoyaku.conf |
4: client_max_body_size 1m; の1行だけ |
値や行数が違えば作業を始めない(手順書の前提と違う) |
| P-5 | テスト用の 2MB ファイルを作る | head -c 2097152 /dev/zero > /tmp/test_2mb.bin |
出力なし | /tmp の空きを確かめる |
| P-6 | 変更前は 2MB の送信が 413 になる | (下のコマンド欄 A) | 413 と表示 |
200 なら既に変更済みの可能性。作業を始めず確認者と相談 |
| P-7 | ディスクに空きがある | df -h . |
Avail が 1G 以上 | 空きを作るまで作業を始めない |
コマンド欄 A(2MB のファイルを送り、HTTP の状態コードだけを表示する)
curl -s -o /dev/null -w '%{http_code}\n' -X POST --data-binary @/tmp/test_2mb.bin http://127.0.0.1:9890/upload
手順本体
| No | 操作 | 実行コマンド | 期待結果 | 確認コマンド | NG時の対応 |
|---|---|---|---|---|---|
| 1 | 設定ファイルをバックアップする | cp -p conf.d/yoyaku.conf conf.d/yoyaku.conf.bak_20261005 |
出力なし | diff conf.d/yoyaku.conf conf.d/yoyaku.conf.bak_20261005 → 出力なし |
中止する(まだ何も変えていない) |
| 2 | 上限値を 1m から 20m に書き換える | sed -i 's/client_max_body_size 1m;/client_max_body_size 20m;/' conf.d/yoyaku.conf |
出力なし | diff conf.d/yoyaku.conf.bak_20261005 conf.d/yoyaku.conf → 4行目の1か所だけ差分が出る |
差分が出ない・2か所以上出るときは R-1 へ |
| 3 | 設定の文法を検査する | nginx -c /home/taro/yoyaku-web/nginx.conf -t |
syntax is ok と test is successful の2行 |
(実行コマンドの出力で確認) | [emerg] が出たら反映せず R-1 へ |
| 4 | 設定を再読み込みする | nginx -c /home/taro/yoyaku-web/nginx.conf -s reload |
signal process started の1行 |
事後確認 C-1 へ進む | [emerg] や [error] が出たら R-1 へ |
事後確認
| No | 確認内容 | 実行コマンド | 期待結果 | NG時の対応 |
|---|---|---|---|---|
| C-1 | 2MB の送信が通る | (下のコマンド欄 A) | 200 と表示 |
R-1 へ |
| C-2 | 25MB のテストファイルを作る | head -c 26214400 /dev/zero > /tmp/test_25mb.bin |
出力なし | /tmp の空きを確かめる |
| C-3 | 上限を超える 25MB は止まる | (下のコマンド欄 B) | 413 と表示 |
200 なら上限が効いていない。R-1 へ |
| C-4 | トップページが表示される | curl -s http://127.0.0.1:9890/ |
yoyaku top と表示 |
R-1 へ |
| C-5 | エラーログに重大な記録がない | grep -c -e emerg -e alert -e crit logs/error.log |
0 と表示 |
件数が 1 以上ならログの該当行を記録欄に貼り、R-1 へ |
| C-6 | nginx の親プロセスが変わっていない | ps -o pid,user,args -p "$(cat nginx.pid)" |
P-3 と同じ PID の行が出る | 運用チームへ連絡 |
| C-7 | テストファイルを消す(切り戻す場合は R-4 のあと) | rm /tmp/test_2mb.bin /tmp/test_25mb.bin |
出力なし | ファイル名を確かめて消し直す |
コマンド欄 B(25MB のファイルを送る)
curl -s -o /dev/null -w '%{http_code}\n' -X POST --data-binary @/tmp/test_25mb.bin http://127.0.0.1:9890/upload
切り戻し
| No | 操作 | 実行コマンド | 期待結果 | 確認コマンド | NG時の対応 |
|---|---|---|---|---|---|
| R-1 | バックアップから設定を戻す | cp -p conf.d/yoyaku.conf.bak_20261005 conf.d/yoyaku.conf |
出力なし | grep -n client_max_body_size conf.d/yoyaku.conf → 4: client_max_body_size 1m; |
判断者へ連絡 |
| R-2 | 設定の文法を検査する | nginx -c /home/taro/yoyaku-web/nginx.conf -t |
syntax is ok と test is successful の2行 |
(実行コマンドの出力で確認) | 反映せず判断者へ連絡 |
| R-3 | 設定を再読み込みする | nginx -c /home/taro/yoyaku-web/nginx.conf -s reload |
signal process started の1行 |
R-4 へ進む | 判断者へ連絡 |
| R-4 | 変更前の動作に戻ったことを確かめる | (下のコマンド欄 A) | 413 と表示 |
(実行コマンドの出力で確認) | 判断者へ連絡 |
記入例のタブ区切り版
区分 No 操作・確認内容 実行コマンド 期待結果 確認コマンド NG時の対応
事前確認 P-1 対象サーバーにログインしている hostname yoyaku-web01 と表示 ログアウトし、接続先を確かめ直す
事前確認 P-2 作業ディレクトリへ移動する cd /home/taro/yoyaku-web 出力なし パスを確かめる。作業は始めない
事前確認 P-3 nginx が起動している ps -o pid,user,args -p "$(cat nginx.pid)" nginx: master process の行が1行出る 作業を始めず、運用チームへ連絡
事前確認 P-4 変更前の値が 1m である grep -n client_max_body_size conf.d/yoyaku.conf 4: client_max_body_size 1m; の1行だけ 値や行数が違えば作業を始めない(手順書の前提と違う)
事前確認 P-5 テスト用の 2MB ファイルを作る head -c 2097152 /dev/zero > /tmp/test_2mb.bin 出力なし /tmp の空きを確かめる
事前確認 P-6 変更前は 2MB の送信が 413 になる curl -s -o /dev/null -w '%{http_code}\n' -X POST --data-binary @/tmp/test_2mb.bin http://127.0.0.1:9890/upload 413 と表示 200 なら既に変更済みの可能性。作業を始めず確認者と相談
事前確認 P-7 ディスクに空きがある df -h . Avail が 1G 以上 空きを作るまで作業を始めない
手順 1 設定ファイルをバックアップする cp -p conf.d/yoyaku.conf conf.d/yoyaku.conf.bak_20261005 出力なし diff conf.d/yoyaku.conf conf.d/yoyaku.conf.bak_20261005 → 出力なし 中止する(まだ何も変えていない)
手順 2 上限値を 1m から 20m に書き換える sed -i 's/client_max_body_size 1m;/client_max_body_size 20m;/' conf.d/yoyaku.conf 出力なし diff conf.d/yoyaku.conf.bak_20261005 conf.d/yoyaku.conf → 4行目の1か所だけ差分が出る 差分が出ない・2か所以上出るときは R-1 へ
手順 3 設定の文法を検査する nginx -c /home/taro/yoyaku-web/nginx.conf -t syntax is ok と test is successful の2行 (実行コマンドの出力で確認) [emerg] が出たら反映せず R-1 へ
手順 4 設定を再読み込みする nginx -c /home/taro/yoyaku-web/nginx.conf -s reload signal process started の1行 事後確認 C-1 へ進む [emerg] や [error] が出たら R-1 へ
事後確認 C-1 2MB の送信が通る curl -s -o /dev/null -w '%{http_code}\n' -X POST --data-binary @/tmp/test_2mb.bin http://127.0.0.1:9890/upload 200 と表示 R-1 へ
事後確認 C-2 25MB のテストファイルを作る head -c 26214400 /dev/zero > /tmp/test_25mb.bin 出力なし /tmp の空きを確かめる
事後確認 C-3 上限を超える 25MB は止まる curl -s -o /dev/null -w '%{http_code}\n' -X POST --data-binary @/tmp/test_25mb.bin http://127.0.0.1:9890/upload 413 と表示 200 なら上限が効いていない。R-1 へ
事後確認 C-4 トップページが表示される curl -s http://127.0.0.1:9890/ yoyaku top と表示 R-1 へ
事後確認 C-5 エラーログに重大な記録がない grep -c -e emerg -e alert -e crit logs/error.log 0 と表示 件数が 1 以上ならログの該当行を記録欄に貼り、R-1 へ
事後確認 C-6 nginx の親プロセスが変わっていない ps -o pid,user,args -p "$(cat nginx.pid)" P-3 と同じ PID の行が出る 運用チームへ連絡
事後確認 C-7 テストファイルを消す(切り戻す場合は R-4 のあと) rm /tmp/test_2mb.bin /tmp/test_25mb.bin 出力なし ファイル名を確かめて消し直す
切り戻し R-1 バックアップから設定を戻す cp -p conf.d/yoyaku.conf.bak_20261005 conf.d/yoyaku.conf 出力なし grep -n client_max_body_size conf.d/yoyaku.conf → 4: client_max_body_size 1m; 判断者へ連絡
切り戻し R-2 設定の文法を検査する nginx -c /home/taro/yoyaku-web/nginx.conf -t syntax is ok と test is successful の2行 (実行コマンドの出力で確認) 反映せず判断者へ連絡
切り戻し R-3 設定を再読み込みする nginx -c /home/taro/yoyaku-web/nginx.conf -s reload signal process started の1行 R-4 へ進む 判断者へ連絡
切り戻し R-4 変更前の動作に戻ったことを確かめる curl -s -o /dev/null -w '%{http_code}\n' -X POST --data-binary @/tmp/test_2mb.bin http://127.0.0.1:9890/upload 413 と表示 (実行コマンドの出力で確認) 判断者へ連絡
記入例を実際に実行したログ
上の手順書を上から順に実行した出力です。[終了コード n] は直前のコマンドの終了コードを表示するために付けた行です。
事前確認のログ
$ hostname
yoyaku-web01
[終了コード 0]
$ ps -o pid,user,args -p "$(cat nginx.pid)"
PID USER COMMAND
4858 root nginx: master process nginx -c /home/taro/yoyaku-web/nginx.conf
[終了コード 0]
$ grep -n client_max_body_size conf.d/yoyaku.conf
4: client_max_body_size 1m;
[終了コード 0]
$ head -c 2097152 /dev/zero > /tmp/test_2mb.bin
[終了コード 0]
$ curl -s -o /dev/null -w '%{http_code}\n' -X POST --data-binary @/tmp/test_2mb.bin http://127.0.0.1:9890/upload
413
[終了コード 0]
$ df -h .
Filesystem Size Used Avail Use% Mounted on
/dev/vda 252G 35G 6.9G 84% /
[終了コード 0]
手順本体のログ
$ cp -p conf.d/yoyaku.conf conf.d/yoyaku.conf.bak_20261005
[終了コード 0]
$ diff conf.d/yoyaku.conf conf.d/yoyaku.conf.bak_20261005
[終了コード 0]
$ sed -i 's/client_max_body_size 1m;/client_max_body_size 20m;/' conf.d/yoyaku.conf
[終了コード 0]
$ diff conf.d/yoyaku.conf.bak_20261005 conf.d/yoyaku.conf
4c4
< client_max_body_size 1m;
---
> client_max_body_size 20m;
[終了コード 1]
$ nginx -c /home/taro/yoyaku-web/nginx.conf -t
nginx: the configuration file /home/taro/yoyaku-web/nginx.conf syntax is ok
nginx: configuration file /home/taro/yoyaku-web/nginx.conf test is successful
[終了コード 0]
$ nginx -c /home/taro/yoyaku-web/nginx.conf -s reload
2026/10/05 23:14:48 [notice] 4873#4873: signal process started
[終了コード 0]
事後確認のログ
$ curl -s -o /dev/null -w '%{http_code}\n' -X POST --data-binary @/tmp/test_2mb.bin http://127.0.0.1:9890/upload
200
[終了コード 0]
$ head -c 26214400 /dev/zero > /tmp/test_25mb.bin
[終了コード 0]
$ curl -s -o /dev/null -w '%{http_code}\n' -X POST --data-binary @/tmp/test_25mb.bin http://127.0.0.1:9890/upload
413
[終了コード 0]
$ curl -s http://127.0.0.1:9890/
yoyaku top
[終了コード 0]
$ grep -c -e emerg -e alert -e crit logs/error.log
0
[終了コード 1]
$ ps -o pid,user,args -p "$(cat nginx.pid)"
PID USER COMMAND
4858 root nginx: master process nginx -c /home/taro/yoyaku-web/nginx.conf
[終了コード 0]
切り戻しのログ
切り戻しは、使わずに済むのがいちばんですが、使えることを確かめておくと安心して作業に入れます。事後確認のあと、続けて切り戻しを通しました。
$ cp -p conf.d/yoyaku.conf.bak_20261005 conf.d/yoyaku.conf
[終了コード 0]
$ grep -n client_max_body_size conf.d/yoyaku.conf
4: client_max_body_size 1m;
[終了コード 0]
$ nginx -c /home/taro/yoyaku-web/nginx.conf -t
nginx: the configuration file /home/taro/yoyaku-web/nginx.conf syntax is ok
nginx: configuration file /home/taro/yoyaku-web/nginx.conf test is successful
[終了コード 0]
$ nginx -c /home/taro/yoyaku-web/nginx.conf -s reload
2026/10/05 23:14:49 [notice] 4886#4886: signal process started
[終了コード 0]
$ curl -s -o /dev/null -w '%{http_code}\n' -X POST --data-binary @/tmp/test_2mb.bin http://127.0.0.1:9890/upload
413
[終了コード 0]
$ rm /tmp/test_2mb.bin /tmp/test_25mb.bin
[終了コード 0]
2MB の送信が 413 に戻り、変更前と同じ動作になりました。最後の rm は C-7 のテストファイルの削除です。
エラーになる例と、NG時の対応の書き方
「NG時の対応」の列は、起こりそうな表示を先に見ておくと具体的に書けます。手順 2 の書き換えで文字を誤った場合を、検証用の環境で再現しました。
行末の ; を落とした場合の手順 3 の出力です。
$ nginx -c /home/taro/yoyaku-web/nginx.conf -t
2026/10/05 23:08:01 [emerg] 1751#1751: directive "client_max_body_size" is not terminated by ";" in /home/taro/yoyaku-web/conf.d/yoyaku.conf:6
nginx: configuration file /home/taro/yoyaku-web/nginx.conf test failed
[終了コード 1]
値を 20mb と書いた場合の出力です。
$ nginx -c /home/taro/yoyaku-web/nginx.conf -t
2026/10/05 23:08:01 [emerg] 1753#1753: "client_max_body_size" directive invalid value in /home/taro/yoyaku-web/conf.d/yoyaku.conf:4
nginx: configuration file /home/taro/yoyaku-web/nginx.conf test failed
[終了コード 1]
この2つから、手順 3 の NG 時の対応は「[emerg] が出たら反映せず R-1 へ」と書けます。対応の書き方は次の3種類に絞ると、作業中に迷いません。
| NG時の対応の型 | 使う場面 | 書き方の例 |
|---|---|---|
| 中止する | まだ何も変えていない段階 | 作業を始めない。確認者へ連絡する |
| 切り戻しへ進む | 変更を始めたあと | R-1 へ進む |
| 判断者へ連絡する | 切り戻しの途中、または手順書にない表示が出たとき | 操作を止め、表示を記録欄に貼って判断者(内線 0000)へ連絡する |
あいまいな表現の言い換え表
読む人によって操作が変わる言葉を、コマンド・値・番号に置き換えます。
| あいまいな書き方 | 言い換えた書き方 | 直す理由 |
|---|---|---|
| 設定を適宜変更する | conf.d/yoyaku.conf の 4 行目の 1m を 20m に書き換える |
どのファイルのどこを何にするかが決まる |
| 正常に動いていることを確認する | curl -s http://127.0.0.1:9890/ を実行し yoyaku top と表示されることを確認する |
「正常」を見える値に置き換える |
| エラーが出ていないことを確認する | grep -c -e emerg -e alert -e crit logs/error.log の結果が 0 であることを確認する |
見るログと探す文字列が決まる |
| しばらく待つ | 30 秒待ってから次の手順へ進む | 待つ長さが人によって変わらない |
| 必要に応じて再起動する | C-1 の結果が 200 以外のときは R-1 へ進む |
条件と行き先を書く |
| バックアップを取っておく | cp -p 変更元 変更元.bak_日付 を実行し、diff で出力がないことを確認する |
取り方と、取れたことの確かめ方が決まる |
| 問題があれば連絡する | 期待結果と違う表示が出たら、操作を止めて確認者(内線 0000)へ連絡する | 「問題」の基準と連絡先を書く |
| 念のため確認する | (何を、どのコマンドで、どの値なら良いかを書く。書けない確認は行から外す) | 目的のない確認は時間だけ使う |
| サーバーにログインする | ssh taro@yoyaku-web01 でログインし、hostname が yoyaku-web01 であることを確認する |
接続先の取り違えを防ぐ |
| など・等 | 対象をすべて並べる(3 ファイルなら 3 行に分ける) | 「など」の中身は読む人には分からない |
| 前回と同じ手順で行う | 手順を省略せずに書く。共通部分は別紙の番号を指定する | 前回を知らない人も作業できる |
| 最新のファイルを使う | yoyaku.conf.bak_20261005 のように日付入りのファイル名で指定する |
「最新」は時点で変わる |
レビュー用チェック項目30
書き終えたら、作業者以外の人がこの表で確かめます。タブ区切り版は表計算ソフトに貼って、結果の列に OK / NG を入れて使えます。
| No | 区分 | チェック項目 | 結果 |
|---|---|---|---|
| 1 | 表紙と前提 | 目的が1文で書かれている | □ |
| 2 | 表紙と前提 | 対象のサーバー名とファイル名がフルパスで書かれている | □ |
| 3 | 表紙と前提 | 作業日時と所要時間の見込みが書かれている | □ |
| 4 | 表紙と前提 | 作業者と確認者が別の人になっている | □ |
| 5 | 表紙と前提 | 利用者への影響と停止の有無が書かれている | □ |
| 6 | 表紙と前提 | 中止・切り戻しの判断基準と判断者が書かれている | □ |
| 7 | 手順の書き方 | 1つの行に操作が1つだけ書かれている | □ |
| 8 | 手順の書き方 | コマンドはコピーしてそのまま貼れる形で書かれている | □ |
| 9 | 手順の書き方 | コマンドを実行するディレクトリとユーザーが書かれている | □ |
| 10 | 手順の書き方 | ファイル名・値・行番号が具体的に書かれている(「適宜」「など」がない) | □ |
| 11 | 手順の書き方 | 手順の番号が上から順に振られ、飛び先は番号で指定されている | □ |
| 12 | 手順の書き方 | 日付や版など毎回変わる部分に印が付いている | □ |
| 13 | 手順の書き方 | 取り消せない操作(削除・上書き)の前に確認の行がある | □ |
| 14 | 手順の書き方 | 待ち時間は秒や分の数値で書かれている | □ |
| 15 | 期待結果と確認 | すべての行に期待結果が書かれている | □ |
| 16 | 期待結果と確認 | 期待結果は表示される文字列か数値で書かれている | □ |
| 17 | 期待結果と確認 | 出力が何も出ないのが正しい行は「出力なし」と書かれている | □ |
| 18 | 期待結果と確認 | 事前確認に「変更前の値」を確かめる行がある | □ |
| 19 | 期待結果と確認 | 事後確認に「変更した機能」と「変更していない機能」の両方がある | □ |
| 20 | 期待結果と確認 | 事後確認にログの確認が入っている | □ |
| 21 | NG時の対応と切り戻し | すべての行に NG 時の対応が書かれている | □ |
| 22 | NG時の対応と切り戻し | NG 時の行き先が番号(R-1 など)で書かれている | □ |
| 23 | NG時の対応と切り戻し | バックアップを取る行が変更より前にある | □ |
| 24 | NG時の対応と切り戻し | バックアップが取れたことを確かめる行がある | □ |
| 25 | NG時の対応と切り戻し | 切り戻し手順にも期待結果と確認コマンドがある | □ |
| 26 | NG時の対応と切り戻し | 切り戻し後に「変更前の動作に戻った」ことを確かめる行がある | □ |
| 27 | 記録と保守 | 結果と時刻を書く欄がある | □ |
| 28 | 記録と保守 | 手順書と違った点を書く欄がある | □ |
| 29 | 記録と保守 | 検証用の環境で一度通して実行し、期待結果を実際の出力に合わせてある | □ |
| 30 | 記録と保守 | 改訂履歴に版・日付・変更点が書かれている | □ |
No 区分 チェック項目 結果
1 表紙と前提 目的が1文で書かれている □
2 表紙と前提 対象のサーバー名とファイル名がフルパスで書かれている □
3 表紙と前提 作業日時と所要時間の見込みが書かれている □
4 表紙と前提 作業者と確認者が別の人になっている □
5 表紙と前提 利用者への影響と停止の有無が書かれている □
6 表紙と前提 中止・切り戻しの判断基準と判断者が書かれている □
7 手順の書き方 1つの行に操作が1つだけ書かれている □
8 手順の書き方 コマンドはコピーしてそのまま貼れる形で書かれている □
9 手順の書き方 コマンドを実行するディレクトリとユーザーが書かれている □
10 手順の書き方 ファイル名・値・行番号が具体的に書かれている(「適宜」「など」がない) □
11 手順の書き方 手順の番号が上から順に振られ、飛び先は番号で指定されている □
12 手順の書き方 日付や版など毎回変わる部分に印が付いている □
13 手順の書き方 取り消せない操作(削除・上書き)の前に確認の行がある □
14 手順の書き方 待ち時間は秒や分の数値で書かれている □
15 期待結果と確認 すべての行に期待結果が書かれている □
16 期待結果と確認 期待結果は表示される文字列か数値で書かれている □
17 期待結果と確認 出力が何も出ないのが正しい行は「出力なし」と書かれている □
18 期待結果と確認 事前確認に「変更前の値」を確かめる行がある □
19 期待結果と確認 事後確認に「変更した機能」と「変更していない機能」の両方がある □
20 期待結果と確認 事後確認にログの確認が入っている □
21 NG時の対応と切り戻し すべての行に NG 時の対応が書かれている □
22 NG時の対応と切り戻し NG 時の行き先が番号(R-1 など)で書かれている □
23 NG時の対応と切り戻し バックアップを取る行が変更より前にある □
24 NG時の対応と切り戻し バックアップが取れたことを確かめる行がある □
25 NG時の対応と切り戻し 切り戻し手順にも期待結果と確認コマンドがある □
26 NG時の対応と切り戻し 切り戻し後に「変更前の動作に戻った」ことを確かめる行がある □
27 記録と保守 結果と時刻を書く欄がある □
28 記録と保守 手順書と違った点を書く欄がある □
29 記録と保守 検証用の環境で一度通して実行し、期待結果を実際の出力に合わせてある □
30 記録と保守 改訂履歴に版・日付・変更点が書かれている □
確かめて分かったこと
記入例を実行して分かった、期待結果を書くときの注意点です。
sed -iは置換する文字列が見つからなくても、出力なし・終了コード 0 で終わります。 置換前の文字列を2mと誤って実行したところ、エラーは出ず、ファイルも変わりませんでした。手順 2 の確認コマンドをdiffにして「1か所だけ差分が出る」ことを期待結果にしているのはこのためです。diffは差分があるとき終了コード 1 を返します。 手順 2 の確認では差分が出るのが正しいので、期待結果は終了コードではなく「4行目の1か所だけ差分が出る」と表示の内容で書きます。grep -cは件数が 0 のとき、0と表示して終了コード 1 を返します。 C-5 は「0と表示」を期待結果にします。終了コードで判定する書き方にすると、良い結果を NG と読み違えます。- 文法に誤りのある設定で再読み込みを指示しても、nginx は変更前の設定のまま動き続けました。
20mbと書いた設定で-s reloadを実行すると[emerg]が表示され、その後の 2MB の送信は直前の設定どおり200のままでした。nginx の公式ドキュメントにも、新しい設定を適用できないときは変更を取り消して以前の設定で動作を続けると書かれています。再読み込みの成否は、コマンドの表示に加えて事後確認の動作で確かめます。 - バックアップのファイル名を
.confで終わる名前にすると、設定として読み込まれます。conf.d/yoyaku_bak.confという名前で置いたところ、nginx -tは成功しつつconflicting server name "yoyaku.example.internal" on 127.0.0.1:9890, ignoredという警告を出しました。記入例でyoyaku.conf.bak_20261005としているのは、*.confの読み込み対象から外すためです。
よくある質問
Q. 手順書とマニュアルの違いは何ですか? A. 手順書は「この作業をこの順番で行う」を1行ずつ書いた文書で、マニュアルは仕組みや機能の全体を説明する文書です。手順書は上から順に実行するもの、マニュアルは必要な箇所を探して読むもの、と分けると書き分けやすくなります。
Q. 手順書はどこまで細かく書けばよいですか? A. 「そのシステムを初めて触る人が、質問せずに最後まで進められる」細かさが目安です。ログイン先の確認、移動するディレクトリ、出力が出ない場合の「出力なし」まで書きます。
Q. 手順書は Excel と Markdown のどちらで作るのがよいですか? A. 作業中に結果と時刻を書き込むなら表計算ソフト、変更の差分をレビューしたいなら Markdown が向いています。この記事のテンプレートは同じ列構成なので、どちらにも貼り付けられます。
Q. 切り戻し手順が書けない作業はどうすればよいですか? A. 戻せない操作(データの削除など)の直前に「ここから先は戻せない」と明記し、その手前に確認者の判断を入れる行を置きます。あわせて、バックアップから復元する手順を切り戻しの代わりに書きます。
まとめ
- 手順書は 1行に1操作で、実行コマンド・期待結果・確認コマンド・NG時の対応を横に並べる。
- 期待結果は表示される文字列か数値で書き、「出力なし」も明記する。
- 構成は 表紙・事前確認・手順本体・事後確認・切り戻し・作業記録の6パート。
- 事前確認で変更前の値を、事後確認で変更した機能と変更していない機能の両方を確かめる。
- 切り戻しにも期待結果を書き、検証用の環境で一度通す。
- 「適宜」「正常に」「など」は、コマンド・値・番号に言い換える。
- 仕上げにチェック項目30で、作業者以外の人がレビューする。
参考・出典
- nginx 公式ドキュメント「Module ngx_http_core_module」client_max_body_size(https://nginx.org/en/docs/http/ngx_http_core_module.html)2026-10-05 閲覧
- nginx 公式ドキュメント「Controlling nginx」設定の再読み込み(https://nginx.org/en/docs/control.html)2026-10-05 閲覧
本記事の内容は、ご自由にお使いください。
ご利用の際は、出典として本ページへのリンクを記載いただけますようお願いします。
(記載例)出典:株式会社RJC「システム手順書の書き方|コピペできるテンプレートとチェック項目30」
株式会社RJC ― SI事業・SES事業・AI駆動開発。RJCは一緒に成長を楽しめる会社です。
WE ARE HIRING
RJCで一緒に開発しながら、
成長を楽しみませんか?
RJCは、Web・モバイル・AIを活用した開発プロジェクトで、テックリードやPM・PMOも活躍するシステム開発会社です。会社を知る、待遇を確かめる、話を聞いてみる。気になるところ見てみてください!
- 127日年間休日
- 12時間平均残業時間
- 毎日ガチャ遊びココロも大切にする福利厚生。アマギフなどの賞品ラインナップ!
ほかにも、チケットレストラン、書籍読み放題、2年ごとの慰労報奨(休暇 or 金一封)、11期連続の黒字決算。