◉CLAUDE LABEN
●2.1.301 — vim の % モーション、VS Code パネルでの LaTeX 数式表示、使用量上限待ちのリトライ監視の上限が入りました(10/15)●2.1.299 — 200K トークン超で約54分放置した会話はアイドル圧縮。MCP の許可ルールは名指ししたサーバーだけに一致します●SONNET 4.5 — Claude API での提供終了は 11/30、残り45日。移行先は Sonnet 5.5●WINDOWS — 日本語の環境でだけフックが黙って壊れる報告があり、文字コードの確認が呼びかけられています●FAST MODE — Opus 5.5 の Fast mode がリサーチプレビューを終え、ベータヘッダーが不要になりました(10/15)●NEW — Cowork に渡したフォルダの先頭に、十行の約束ファイルを置いてみました●2.1.301 — vim の % モーション、VS Code パネルでの LaTeX 数式表示、使用量上限待ちのリトライ監視の上限が入りました(10/15)●2.1.299 — 200K トークン超で約54分放置した会話はアイドル圧縮。MCP の許可ルールは名指ししたサーバーだけに一致します●SONNET 4.5 — Claude API での提供終了は 11/30、残り45日。移行先は Sonnet 5.5●WINDOWS — 日本語の環境でだけフックが黙って壊れる報告があり、文字コードの確認が呼びかけられています●FAST MODE — Opus 5.5 の Fast mode がリサーチプレビューを終え、ベータヘッダーが不要になりました(10/15)●NEW — Cowork に渡したフォルダの先頭に、十行の約束ファイルを置いてみました
記事一覧/Claude Code
⟐ Claude Code/2026-05-03中級

Claude Code × Fastlane で iOS/Android 自動デプロイパイプラインを0から構築する

Claude Code と Fastlane を組み合わせてiOS・Androidアプリのリリース作業を完全自動化する方法を解説。Appfile・Fastfile の設計から証明書管理、App Store Connect API 連携まで動作するコード付きで紹介します。

FastlaneiOS26Android7Claude Code265自動デプロイCI/CD19App Store9

Fastlane を設定し終わったはずなのに、いざリリース日に fastlane beta を叩くと証明書エラーで止まる——そんな経験、一度はありませんでしょうか。私自身、複数のアプリを個人で運用する中で、Fastlane の設定ファイルが少し複雑なアプリになった瞬間に迷子になった経験があります。

Claude Code と Fastlane を組み合わせると、この「設定が崩れたときの復旧」が大幅に楽になります。Claude Code は Fastfile の構文を理解した上で修正案を提示し、fastlane env の出力を読んでどの環境変数が不足しているかを自分で判断します。今回は、iOS と Android 両対応のデプロイパイプラインを Claude Code の力を借りて構築する手順をご紹介します。

Fastlane × Claude Code の役割分担

まず「Fastlane に何をさせて、Claude Code には何をさせるか」を整理しておきましょう。

Fastlane が担当する領域:

  • ビルド・署名・アーカイブの実行(xcodebuild / gradle のラッパー)
  • App Store Connect / Google Play Developer Console への自動アップロード
  • スクリーンショット自動生成(snapshot / screengrab)
  • 証明書・プロビジョニングプロファイルの管理(match)

Claude Code が担当する領域:

  • Fastfile の雛形生成と既存設定の読み解き
  • エラーメッセージの診断と Fastfile 修正案の提示
  • 環境変数の不足・型ミスの検出
  • App Store Connect API キーの設定確認と Appfile の最適化

Claude Code は「Fastlane の詳細を知っている開発パートナー」として機能します。自分ではなかなか読み込む気になれない Fastlane の公式ドキュメントを、必要な部分だけかいつまんで教えてくれる存在です。

前提環境の確認

作業を始める前に、以下が揃っているか確認してください。

  • Xcode 26 / Android Studio Meerkat 以降
  • Ruby 3.2 以上(ruby --version で確認)
  • Fastlane 2.225.0 以上(fastlane --version で確認)
  • App Store Connect API キー(.p8 ファイル + Key ID + Issuer ID)
  • Google Play サービスアカウント JSON(Android の場合)

Fastlane がインストールされていない場合、Claude Code に bundle init からの初期設定を任せるのが最も簡単です。

# プロジェクトルートで実行
claude "このiOSプロジェクトにFastlaneをセットアップしてください。
Ruby bundlerを使い、Gemfileも作成してください。
App Store Connect APIキーは .env ファイルで管理する方針にしてください"

このプロンプト1つで、Claude Code は Gemfile・fastlane/Appfile・fastlane/Fastfile の雛形を生成し、.env.example に必要な環境変数をリストアップしてくれます。

Fastfile の設計:iOS 編

以下は Claude Code が生成した Fastfile の典型例です。App Store Connect API を使った署名レスのアップロードが肝心なポイントです。

# fastlane/Fastfile(iOS)
default_platform(:ios)
 
platform :ios do
  before_all do
    # .env から環境変数を読み込み(dotenv gem 使用)
    Dotenv.load(".env")
  end
 
  desc "開発環境用ビルドを TestFlight にアップロード"
  lane :beta do
    # App Store Connect API 認証(証明書ファイル不要)
    app_store_connect_api_key(
      key_id: ENV["ASC_KEY_ID"],
      issuer_id: ENV["ASC_ISSUER_ID"],
      key_content: ENV["ASC_KEY_CONTENT"],  # .p8 の内容を base64 エンコードした文字列
      is_key_content_base64: true
    )
 
    # match で証明書を同期(Git リポジトリから取得)
    match(type: "appstore", readonly: true)
 
    # ビルド番号をインクリメント
    increment_build_number(
      build_number: latest_testflight_build_number + 1
    )
 
    # ビルドとアーカイブ
    build_app(
      scheme: ENV["SCHEME_NAME"],
      export_method: "app-store",
      output_directory: "./build",
      output_name: "MyApp.ipa"
    )
 
    # TestFlight にアップロード
    upload_to_testflight(
      skip_waiting_for_build_processing: true,  # 処理完了を待たずに終了
      changelog: "自動デプロイ: #{Time.now.strftime('%Y-%m-%d %H:%M')}"
    )
  end
 
  desc "本番リリース(App Store 審査提出)"
  lane :release do
    beta  # beta レーンを再利用してビルド
    upload_to_app_store(
      submit_for_review: true,
      automatic_release: false,  # 審査通過後も手動で公開
      force: true                # スクリーンショット再アップロードをスキップ
    )
  end
end

ここで重要なのが is_key_content_base64: true の指定です。.p8 ファイルを直接パスで指定する方法もありますが、CI 環境では環境変数でバイナリを渡す方が安全です。.p8 の中身を base64 エンコードする方法は次のコマンドで確認できます。

# .p8 ファイルの内容を base64 エンコード(1行で出力)
base64 -i AuthKey_XXXXXXXXXX.p8 | tr -d '\n'

Fastfile の設計:Android 編

Android の場合は Google Play API とキーストアの管理が中心になります。

# fastlane/Fastfile(Android追記)
platform :android do
  desc "内部テストトラックにアップロード"
  lane :beta do
    gradle(
      task: "bundle",
      build_type: "Release",
      project_dir: "android/",
      properties: {
        "android.injected.signing.store.file" => ENV["KEYSTORE_PATH"],
        "android.injected.signing.store.password" => ENV["KEYSTORE_PASSWORD"],
        "android.injected.signing.key.alias" => ENV["KEY_ALIAS"],
        "android.injected.signing.key.password" => ENV["KEY_PASSWORD"]
      }
    )
 
    upload_to_play_store(
      track: "internal",
      aab: "android/app/build/outputs/bundle/release/app-release.aab",
      json_key: ENV["GOOGLE_PLAY_JSON_KEY_PATH"]
    )
  end
end

キーストアのパスワードを環境変数で渡す設計にすることで、keystore.properties ファイルをリポジトリに含める必要がなくなります。

Claude Code を使ったデバッグの実際

Fastlane で最もつまずくのが証明書・プロビジョニング周りのエラーです。実際に私が遭遇したエラーのデバッグを Claude Code に任せた例を紹介します。

# エラーの例
[!] Your account already has a valid certificate for this
    bundle identifier stored locally. However, the fastlane
    provisioning profile was regenerated.

このエラーをターミナルにコピーして Claude Code に貼ると、「match(force_for_new_devices: true) を追加する」か「match(readonly: false) で証明書を強制再生成する」の2択を文脈付きで提案してくれます。どちらを選ぶべきかの理由も説明してくれるので、Fastlane の内部挙動を学びながら問題解決できます。

# Claude Code への質問例(ターミナルから直接)
claude "fastlaneのbetaレーンを実行したら以下のエラーが出ました。
どう修正すればよいですか?
 
[エラーの内容をここにペースト]
 
現在のFastfileの内容は以下です:
[Fastfileの内容をここにペースト]"

コードと文脈を一緒に渡すことで、一般論ではなくこのプロジェクト固有の解決策を提案してくれます。

.env ファイルの設計と秘密情報の管理

# .env.example(リポジトリにコミットするテンプレート)
# App Store Connect API
ASC_KEY_ID=YOUR_KEY_ID
ASC_ISSUER_ID=YOUR_ISSUER_ID
ASC_KEY_CONTENT=BASE64_ENCODED_P8_CONTENT
 
# アプリ設定
SCHEME_NAME=MyApp
BUNDLE_ID=com.example.myapp
 
# Android キーストア
KEYSTORE_PATH=/path/to/release.keystore
KEYSTORE_PASSWORD=YOUR_KEYSTORE_PASSWORD
KEY_ALIAS=release
KEY_PASSWORD=YOUR_KEY_PASSWORD
 
# Google Play
GOOGLE_PLAY_JSON_KEY_PATH=/path/to/service-account.json

.env 自体は .gitignore に追加し、.env.example だけをコミットします。この設計を Claude Code に最初から指示すると、生成される Fastfile も最初から ENV[] 参照で書いてくれます。

まずは fastlane beta を1回走らせてみましょう

環境が整ったら、まず手元のターミナルから bundle exec fastlane beta を実行してみてください。途中でエラーが出たら、その出力を丸ごと Claude Code に渡すのが最も効率的なデバッグ方法です。Fastlane の設定は「最初の1回を通す」ことが最大の山で、一度通ってしまえばその後は安定して動き続けます。

iOS 開発の証明書まわりをもっと深く理解したい場合は Claude Code × App Store Connect API: iOS/Androidアプリ完全自動リリースパイプライン構築ガイド も参考にしてみてください。テスト自動化と組み合わせるなら Claude Code で作る iOS テスト自動化基盤 も合わせてご覧いただけると、リリースまでのパイプライン全体像が見えてきます。

シェア

お読みいただきありがとうございます

Claude Lab は広告なしで運営しており、サーバー費用などの運営コストはメンバーシップのご支援で賄っています。実装コード・ベンチマーク・本番設計パターンなど、実務でお役立ていただける記事を毎日更新しています。もし読んでよかったと感じていただけましたら、ぜひご覧ください。

  • ✦コピー&ペーストで使える実装コード付き
  • ✦毎日新しい上級ガイドを追加
  • ✦¥580/月 または ¥1,480 の永久アクセス
メンバーシップを見る →

もしこの記事がお役に立ちましたら、チップ(¥150)で応援いただけると大変励みになります。広告なしでの運営を続けるため、皆さまのご支援が大きな力になっています。

関連記事

⟐ Claude Code2026-04-15
Claude Code と作る StoreKit 2 × SwiftUI の課金実装 — 審査を通る最小構成と運用の落とし穴
Claude Code を設計パートナーにした StoreKit 2 × SwiftUI の課金実装を、PurchaseManager・サーバー検証・ペイウォールUIまで通しで組み立てます。Ask to Buy や Transaction.updates の遅延など、公式ドキュメントが触れない運用の詰まりどころも扱います。
⟐ Claude Code2026-04-07
Claude Code で Android / Kotlin アプリを Google Play 公開まで持っていく実装ノート
個人で長年運営してきたAndroidアプリ群の現場から得た、Claude Codeで本番品質を保つ実装パターン。Compose × Hilt × Roomの設計判断、ProGuardクラッシュ対応、Google Play公開直前の14項目チェックリストまでをまとめます。
⟐ Claude Code2026-10-12
SPM に移したら、起動した瞬間にアプリが落ちるようになりました — dyld の一行を Claude Code と読み解いた記録
CocoaPods から Swift Package Manager へ移した直後、ビルドは通るのに起動した瞬間に落ちました。dyld の一行から原因を切り分け、直し方と確認コマンドまでをまとめます。