🌟

2026/01/01~2026/01/02 ポケモン履歴書アプリ 「ポケメモリア」開発日記

に公開

はじめに

ポケモン好きなよわよわエンジニアが、自己学習も兼ねて以前から作ってみたかったポケモン関連アプリを作っていく日記です。
完全に趣味 & 文章力皆無なので読みやすさはご生憎。
のんびりマイペースに学んでコード書いていきます。

ポケメモリアについて

ドキュメントにまとめました

日記(20260101~20260102)

開発5日目。新年。
新年明けましておめでとうございます。今年から本格的に開発がんばるぞ。

今日やった事

  • dev環境CD構築
    • ビルド用Dockerfile作成。
    • ローカルでdev環境用Dockerビルド・push・デプロイフロー構築。

実施した作業(一部抜粋)

最終的なデプロイフローは以下を目指す。いったんはローカルからのCD構築までのみ実施する。

フェーズ1: GCPプロジェクトの初期設定

設定済みのため割愛

フェーズ2: Artifact Registryの準備

ビルドしたDockerコンテナを格納するGCP上のリポジトリを準備する。

# 1. Dockerリポジトリ作成
gcloud artifacts repositories create ${リポジトリ名} \
  --repository-format=docker \
  --location=asia-northeast1 \
  --description="リポジトリ説明"

# 2. Dockerリポジトリ確認
gcloud artifacts repositories describe ${リポジトリ名} \
    --location=asia-northeast1

# 3. Docker認証設定(初回のみ)
gcloud auth configure-docker asia-northeast1-docker.pkg.dev

フェーズ3: 手動デプロイ(初回テスト用)

事前にCloudRun実行用サービスアカウントを作成しておく。

# プロジェクトルートで実行

# 1. イメージビルド
docker build \
  -f {Dockerfileパス} \
  -t asia-northeast1-docker.pkg.dev/${プロジェクトID}/${リポジトリ名}/app:latest \
  .

# 2. Artifact Registryへプッシュ
docker push asia-northeast1-docker.pkg.dev/${プロジェクトID}/${リポジトリ名}/app:latest

# 3. Cloud Runへデプロイ
gcloud run deploy ${CloudRunサービス名} \
  --image asia-northeast1-docker.pkg.dev/${プロジェクトID}/${リポジトリ名}/app:latest \
  --service-account "${サービスアカウント名}@${プロジェクトID}.iam.gserviceaccount.com" \
  # 公開アクセスを許可
  --no-invoker-iam-check \
  --platform managed \
  # 内部トラフィックと外部ロードバランサーからのアクセスを許可
  --ingress internal-and-cloud-load-balancing \
  --region asia-northeast1 \
  --allow-unauthenticated \
  --port ${ポート} \
  --memory 512Mi \
  --cpu 1 \
  --max-instances 10 \
  --set-env-vars NODE_ENV=production

作成したデプロイ用scripts

明日やる事

  • インフラ
    • HTTPSアクセス対応
    • Dockerコンテナ自動デプロイフロー構築
  • フロントエンド
    • Figma デザイン作成
    • プロトタイプの制作

メモ

  • Dockerコンテナ自動デプロイフロー構築
    cloudbuild.yamlを作成し、GitプッシュでCI/CD実行:
# cloudbuild.yaml(プロジェクトルートに配置)
steps:
  # ビルド
  - name: 'gcr.io/cloud-builders/docker'
    args:
      - 'build'
      - '-f'
      - ${Dockerfileパス}
      - '-t'
      - 'asia-northeast1-docker.pkg.dev/${プロジェクトID}/${リポジトリ名}/app:$SHORT_SHA'
      - '-t'
      - 'asia-northeast1-docker.pkg.dev/${プロジェクトID}/${リポジトリ名}/app:latest'
      - '.'
  
  # Artifact Registryへプッシュ
  - name: 'gcr.io/cloud-builders/docker'
    args:
      - 'push'
      - '--all-tags'
      - 'asia-northeast1-docker.pkg.dev/${プロジェクトID}/${リポジトリ名}/app'
  
  # Cloud Runへデプロイ
  - name: 'gcr.io/google.com/cloudsdktool/cloud-sdk'
    entrypoint: gcloud
    args:
      - 'run'
      - 'deploy'
      - '${サービス名}'
      - '--image'
      - 'asia-northeast1-docker.pkg.dev/${プロジェクトID}/${リポジトリ名}/app:$SHORT_SHA'
      - '--region'
      - 'asia-northeast1'
      - '--platform'
      - 'managed'
      - '--allow-unauthenticated'

images:
  - 'asia-northeast1-docker.pkg.dev/${プロジェクトID}/${リポジトリ名}/app:$SHORT_SHA'
  - 'asia-northeast1-docker.pkg.dev/${プロジェクトID}/${リポジトリ名}/app:latest'

options:
  machineType: 'E2_HIGHCPU_8'

感想

新年から新しいことに挑戦できてほっこり。
GeminiとClaude Codeのお陰で苦手なインフラ周りが一人でもそれなりに構築できて満足。
AIにヒアリングした内容転記で日記の字数水増しも覚えた(チート)。
先にデプロイ構築作成して肝心のアプリ放置しちゃったけど、良い勉強になったので良しとする。

反省

GCPプロジェクト作成時、プロジェクトIDを後から変更出来ないことを知らず、CI/CD構築時にちょっと面倒(というか統一性の観点からあまり良くない状態)になった。
今後はプロジェクト作成前にインフラの設計も軽くする。

Discussion