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活用の進め方を具体化したい場合は、お問い合わせからご相談ください。

関連記事

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