AWS Amplifyの自動デプロイを減らすために、devをレビュー用ブランチとして使うのをやめた話
Web開発・運用AWS AmplifyGitHubGitCI/CD

AWS Amplifyの自動デプロイを減らすために、devをレビュー用ブランチとして使うのをやめた話

GitHubのdevブランチへpushするたびにAWS Amplifyのデプロイが走っていたため、featureブランチをコードレビュー用、devを検証環境用に分離した実例を紹介します。

公開日 2026年8月8日更新日 2026年8月8日読了 6分

うにラボでは、Next.jsで作ったWebサイトをAWS Amplifyで公開しています。

開発ではGitHubを使っていて、これまでは変更するたびに dev ブランチへpushし、GitHub上で差分を確認することがありました。

ただ、この運用にはひとつ問題がありました。

devへpushするたびにAmplifyのデプロイが走ることです。

小さな文言修正やレビューのためだけの変更でもデプロイされるため、

「GitHubでコードを確認したいだけなのに、毎回検証環境まで更新している」

という状態になっていました。

そこで、ブランチの役割を整理することにしました。

以前の運用

以前は、おおまかに次のような流れでした。

  1. コードを修正する
  2. ローカルで確認する
  3. dev にpushする
  4. GitHub上で差分をレビューする
  5. 修正があれば、また dev にpushする

この方法でも開発はできます。

ただし、dev がAmplifyの検証環境と接続されている場合、pushするたびにビルド・デプロイが発生します。

たとえば、

  • 文言を少し変更
  • レビューで1箇所修正
  • もう一度レビュー
  • 別の小さな機能を追加

という作業をすると、そのたびにデプロイされます。

コードレビューと環境への反映を、同じ操作でやっていたわけです。

本当に必要だったのはGitHub上の差分確認だけだった

今回改めて考えると、毎回必要だったのは検証環境ではありませんでした。

多くの場合は、

  • 変更ファイルが意図どおりか
  • 余計なファイルを変更していないか
  • 指定した文言だけ変わっているか
  • 実装方法に問題がないか

をGitHub上で確認できれば十分です。

つまり、

コードレビューと検証環境へのデプロイを分ければいい

ということでした。

featureブランチをレビュー用にした

そこで、作業ごとに feature/... ブランチを作るようにしました。

たとえば、トップページのブログ表記を変更するときは、

feature/top-blog-branding-review

運営プロジェクトを追加するときは、

feature/operated-projects-review

プライバシーポリシーを修正するときは、

feature/privacy-adsense-review

といった形です。

作業後は、そのfeatureブランチだけGitHubへpushします。

これならGitHub上でコミットやdiffを確認できます。

一方で、dev には触りません。

devの役割を「検証環境」に限定した

整理後の役割はこうしました。

featureブランチ

開発・コードレビュー用。

GitHub上で変更内容を確認するために使います。

dev

検証環境。

実際にブラウザ上で確認したい段階になったときだけ反映します。

main

本番環境。

リリースするときだけ反映します。

この3つを分けることで、

「レビューしたいからdevへpushする」

必要がなくなりました。

レビュー修正は同じfeatureブランチで続ける

レビューで修正点が出た場合も、新しいブランチを毎回作る必要はありません。

たとえば、

feature/privacy-adsense-review

をレビューして、

「この1文だけ表現を変えたい」

となった場合は、同じブランチで修正します。

そして追加commitして、同じfeatureブランチへpushします。

これなら、

  • 最初の実装
  • レビュー
  • 修正
  • 再レビュー

という流れをひとつのブランチの中で追えます。

次の作業では、レビュー済みブランチから新しいfeatureブランチを切る

今回少し特徴的なのは、まだ dev にマージしていない状態で次の作業へ進めていることです。

そのため、レビュー済みのfeatureブランチから、次のfeatureブランチを切っています。

たとえば、

feature/top-blog-branding-review

の変更がレビュー済みになったあと、その状態を引き継いで、

feature/operated-projects-review

を作ります。

こうすると、それまでの変更を保持したまま次の作業へ進めます。

そして、本当に検証環境でまとめて確認したくなった段階で dev に反映します。

ローカル確認は今までどおり行う

featureブランチを使うようにしても、基本的な確認は変わりません。

今回のNext.jsプロジェクトでは、変更後に、

npx tsc --noEmit

と、

npm run build

を実行しています。

つまり、

  • TypeScriptの型チェック
  • Next.jsの本番ビルド

が成功することを確認してからcommitします。

GitHubへpushするのは、その後です。

devへ頻繁にpushしないだけで、レビューは減らしていない

今回の運用変更で重要なのは、

レビュー回数を減らしたわけではない

ということです。

むしろレビュー自体は、これまでどおり変更ごとに行っています。

変えたのは、

「レビューのためにdevを使わない

という点だけです。

以前:

修正 ↓ devへpush ↓ Amplifyデプロイ ↓ レビュー

現在:

修正 ↓ featureブランチへpush ↓ GitHubでレビュー ↓ 必要な段階だけdevへ反映

という流れになりました。

CI/CDでは「push=何が起きるか」を意識する

Gitではpushは単純なコード共有操作に見えます。

ただ、実際の開発環境では、そのブランチにCI/CDが接続されていることがあります。

その場合、

pushは単なるGit操作ではなく、ビルドやデプロイのトリガーでもあります。

今回のケースでは、GitHub上でレビューしたいだけなのに、Amplifyまで動かしていました。

ブランチごとの役割を整理したことで、

  • コードを書く場所
  • レビューする場所
  • 検証する場所
  • 本番へ出す場所

を分けられるようになりました。

大きな仕組み変更ではありませんが、頻繁にAIを使って細かな修正を繰り返す開発では、こうした運用の整理が意外と効きます。

相談につなげる

読んだうえで、自社でどう進めるか相談したい方へ

記事では結論まで整理していますが、実際に自社へ当てはめると優先順位や進め方は変わります。 小規模開発やAI活用の進め方を具体化したい場合は、お問い合わせからご相談ください。

関連記事

続けて読みやすい記事を選びました。