ロールバックとは
この記事の結論
- ロールバックとは、変更のあとに問題が見つかったとき、正常に動いていた以前の状態へ戻す操作のことです。
- 同じ言葉でも、公開したアプリを前の版に戻す、Gitで変更を打ち消す、データベースで処理をなかったことにする、の3つの場面で意味が少しずつ違います。
- コードや配信物は戻せても、書き換わったデータや送ってしまったメールは戻りません。何が戻り、何が戻らないかを先に知っておくのが、慌てないための準備です。
ろーるばっく/Rollback
変更のあとに問題が見つかったとき、正常に動いていた以前の状態へ戻す操作のことです。
最終更新: 2026-09-26
ロールバックとは何か(意味と読み方)
ロールバックとは、変更を加えたあとに不具合などが見つかったとき、問題が起きる前の正常な状態へ戻す操作のことです。読み方は「ろーるばっく」、英語の roll back(巻き戻す)から来ています。
開発の現場では、主に次の3つの場面で使われます。
- 公開したアプリ:新しい版を出したら不具合が出たので、1つ前の版を再び本番にする
- Gitの履歴:問題のコミットの変更を打ち消す
- データベース:まとめて行っていた更新を、確定させずに取り消す
日常会話で単に「ロールバックした」と言うときは、1つ目の本番の版を戻す意味であることが多いです。
ロールバックの仕組み:場面ごとの戻し方
公開したアプリの場合、多くのサービスは過去のデプロイを残しているので、どれを本番として扱うかを切り替えるだけで戻せます。Rollbacks(Cloudflare Pages Docs)では、以前の本番デプロイへ即座に戻せると説明されています。戻せる先は、ビルドに成功した本番のデプロイに限られ、プレビューは対象外です。一度古い版に戻したあと、より新しい版へ戻し直すこともできます。
Gitの場合は、git revert を使うのが基本です。git-revert(Git 公式リファレンス)によれば、これは以前のコミットの効果を打ち消す新しいコミットを記録するコマンドです。履歴を消さずに「取り消した」という記録が積まれるので、共有済みの履歴でも安全に使えます。マージのコミットを打ち消すときは、どちらの親を本流とみなすかを -m で指定する必要があります。
データベースの場合は、トランザクション(ひとまとまりの処理)の取り消しを指します。PostgreSQL の ROLLBACK の説明では、現在のトランザクションを取り消し、その中で行ったすべての更新を破棄する命令とされています。確定(COMMIT)したあとの更新は、この命令では戻せません。
AI開発でのロールバックの具体例
たとえばAIコーディングエージェントに直させた変更を本番へ出したところ、ログイン画面が表示されなくなったとします。落ち着いて進める順番は次のとおりです。
- まず本番を戻す:原因探しより先に、配信サービスの管理画面から直前の正常な版へ切り替え、利用者への影響を止めます。
- 次に履歴を直す:問題のコミットを特定し、
git revert <コミットのハッシュ>で打ち消すコミットを作ります。これをプルリクエストにして取り込めば、次のデプロイで同じ不具合が再び出るのを防げます。 - 最後に原因を調べる:本番が落ち着いてから、エラーの内容をAIに渡して原因を探ります。
エラーの伝え方と切り分けの手順はエラーをAIに直させる手順:貼り方・情報の渡し方・切り分けにまとめています。
ロールバックについてのよくある誤解
- 誤解:ロールバックすれば全部元どおりになる → 実際:戻るのはコードや配信物です。新しい版が書き換えたデータ、送ったメール、外部サービスへの通知などは戻りません。
- 誤解:Gitで戻すなら
git reset --hardでよい → 実際:これは手元の未記録の変更を捨て、履歴の位置を動かす操作です。すでに共有したコミットに使うと、ほかの人の手元と食い違います。共有済みなら revert を使います。 - 誤解:ロールバックは失敗の証拠だから避けたい → 実際:影響を早く止めるための通常の手段です。戻すのをためらって直しながら出し直すと、そのあいだ利用者に不具合が見え続けます。
- 誤解:どの版にでも戻せる → 実際:サービスによっては、戻せるのはビルドに成功した本番の版だけで、プレビューは対象外です。
ロールバックに備えるコツ
- 変更を小さく出す:GoogleのSRE Workbook の「Canarying Releases」は、小さく自己完結したリリースのほうが、不具合時に戻すのが安く簡単になると述べています。
- 戻す基準を先に決める:「エラーが出続けたら戻す」のように判断の線を決めておくと、迷う時間が減ります。
- データの変更は戻せる形にする:テーブルの列を消すような変更は、前の版のコードが動かなくなる原因になります。古い版でも動く形で段階的に進めます。
- 一度練習しておく:ステージング環境で戻す手順を試しておくと、本番で手順を探さずに済みます。
戻す手段があるからといって、確認を省いてよいわけではありません。その場しのぎの戻しと出し直しを繰り返すと、あとで技術的負債として返ってきます。
関連用語
関連記事
出典・参考資料
よくある質問
Q1. ロールバックとは何ですか?
変更を加えたあとに不具合などが見つかったとき、問題が起きる前の正常な状態へ戻す操作です。公開したアプリを前の版に戻す場面、Gitで変更を打ち消す場面、データベースで処理を取り消す場面で使われます。
Q2. ロールバックすると、データも元に戻りますか?
通常は戻りません。戻るのはコードや配信しているファイルで、新しい版が書き換えたデータや、送ってしまったメール、外部への通知はそのまま残ります。データの変更を伴うリリースは、戻し方を別に考えておく必要があります。
Q3. git revert と git reset の違いは何ですか?
git revert は、以前のコミットの変更を打ち消す新しいコミットを記録します。履歴が残るので共有済みの変更にも使えます。git reset は履歴の位置そのものを動かす操作で、共有したあとに使うとほかの人の手元と食い違うため、主に手元だけの作業で使います。
Q4. 本番で不具合が出たら、先に直すべきですか、戻すべきですか?
すぐに直せる見込みがなければ、先に戻して利用者への影響を止めるのが一般的です。原因の調査と修正は、本番が落ち着いてから行います。
Q5. ロールバックしやすくするには何をすればよいですか?
変更を小さく分けて出すこと、戻す判断の基準を先に決めておくこと、データの変更は古い版のコードでも動く形で進めること、ステージング環境で一度戻す練習をしておくことが役立ちます。