はじめに
今回のグループワークでは、バグを自動で検知し、Claude が自動で修正 PR を作成するワークフローの構築に取り組みました。
題材としてじゃんけんアプリを使用し、アプリに意図的にバグを仕込んだうえで、Sentry がそのエラーを検知すると、Cloud Run Functions が Webhook を受け取って GitHub Actions をトリガーし、Claude が自動でバグを修正して修正 PR を作成するという一連のパイプラインを実現しました。
バグ発生
↓
Sentry(エラー検知)
↓
Cloud Run Functions(Webhook 受信)
↓
GitHub Actions(ワークフロー起動)
↓
Claude(バグ修正・PR作成)
グループは以下の2チームに分かれて取り組みました👥
私はバグ作成チームに所属していましたが、チーム内では主にインフラ周りの構築を担当しました。具体的には以下の2つです👇
- Cloud SQL の構築(Terraform)
- Cloud Build による自動デプロイの導入
1. Cloud SQL の構築(Terraform)
なぜ Terraform を使ったか
データベースは Google Cloud の Cloud SQL(MySQL 8.0)を使用しました。 当初は Google Cloud のコンソール画面から手動で作成する予定でしたが、最終的に Terraform を使って構築することにしました。
理由はこんな感じです👇
- インフラの設定内容をコードとして管理できる(Infrastructure as Code)
- 環境を再現しやすく、設定の差分が発生しにくい
- 後から見返したときに「何をどう設定したか」が明確に分かる
- これまで実務で触れる機会がなかったため、キャッチアップも兼ねて取り組みました🚀
やったこと
Terraform の設定ファイル(infra/main.tf)に Cloud SQL の構成を定義し、以下のコマンドで構築しました👇
terraform init # 初期化
terraform plan # 作成内容の確認
terraform apply # 実際に Cloud SQL を作成
実際に定義した main.tf の Cloud SQL 部分は以下のとおりです👇
resource "google_sql_database_instance" "janken_db" {
name = "janken-db"
database_version = "MYSQL_8_0"
region = var.region
settings {
tier = "db-f1-micro"
disk_size = 10
disk_type = "PD_HDD"
}
deletion_protection = false
}
resource "google_sql_database" "janken" {
name = "janken"
instance = google_sql_database_instance.janken_db.name
}
resource "google_sql_user" "janken_user" {
name = "janken-user"
instance = google_sql_database_instance.janken_db.name
password = var.db_password
host = "%"
}
作成したリソースは以下の3つです👇
良かった点
設定内容がコードとして残るので、後から「どんな設定で作ったか」をすぐに確認できました。
手動作成だと設定を覚えておくか画面キャプチャを取るしかないので、コード管理の恩恵を実感しました。
つまずいた点
- 初めて Terraform を触ったため、リソース定義の書き方自体は Claude に生成してもらいましたが、生成されたソースコードの内容を理解・確認するのに少し時間がかかりました
terraform apply実行時のエラーメッセージが分かりづらく、原因特定に少し時間がかかりました(権限エラーなど)- Google Cloud の認証まわりでも手間がかかりました。通常の
gcloud auth application-default login(ブラウザ認証)に不具合があり使用できなかったため、サービスアカウントキーを発行して認証する方法を取りました。キーファイルの管理(.gitignoreへの追加など)も含めて対応が必要でした
2. Cloud Build による自動デプロイの導入
なぜ Cloud Build を導入したか
アプリがある程度完成した段階で、Cloud Run へのデプロイ作業を自動化するために Cloud Build を導入しました。
…
記事の続きは下のURLをクリック!
https://rightcode.co.jp/blogs/55129
もっと上を目指したあなたへ
現在、ライトコードでは「WEBエンジニア」「データエンジニア」「ゲーム・XRエンジニア」「UI/UXデザイナー」「PM/PMO」などのポジションで積極採用中です!
ライトコードは、技術力に定評のある受託開発をメインにしているIT企業。
有名WEBサービスやアプリの受託開発などの企画、開発案件が目白押しの状況です!
- もっと大きなことに挑戦したい!
- エンジニアとしてもっと成長したい!
- モダンな技術に触れたい!
現状に満足していない方は、まずは一度、【Wantedly内の弊社ページ】をのぞいてみてください。
Wantedly:https://www.wantedly.com/companies/rightcode