プロジェクトにfastlaneを導入する
リリースを自動化する
自動化といっても完全な自動化ではないですね。コマンドを実行して、Xcodeを操作せずに、AppStoreやTestFlightにipaファイルをuploadする作業をCLIだけで行いGUIでボタンぽちぽちする作業から解放されます。
fastlaneとは?
公式を翻訳すると...
アプリの自動化を適切に実行
モバイルアプリの構築とリリースを最も簡単にする方法
fastlaneが面倒なタスクを処理するため、開発者の負担を軽減します。
節約できた開発時間
49億286万2878時間
開発とリリースプロセスを自動化
fastlaneは、AndroidとiOSのデプロイメントを簡素化することを目的としたオープンソースプラットフォームです。
fastlaneを使用すると、開発およびリリースワークフローのあらゆる側面を自動化できます。
わかりやすく言うと、リリースする時間を短縮して自動化するツールですね。ローカルだけでも実行できるので、CI/CD無しでもできる。ありにするなら設定が大変(^_^;)
私の場合だと最初は、Flutterで試したのでそのときは、iOSディレクトリに作成しますが、SwiftUIの場合だとプロジェクト直下のディレクトリに配置します。
SpeechStorage/ ← ここでfastlane init
├── SpeechStorage.xcodeproj ← このファイルがある場所
├── SpeechStorage/ ← あなたが今いる場所(ソースコード)
│ ├── ContentView.swift
│ └── ...
└── fastlane/ ← 初期化後に作成される
├── Appfile
└── Fastfile
導入してみる
公式サイトを参考に、homebrewでインストールしましょう。Rubyが必要なのでインストールしておこう。バージョン管理もしておいた方がいいので、rbenvを使うといいでしょう。
Homebrew (macOS)
この方法では、Rubyを別途インストールする必要がなく、代わりにHomebrewがfastlaneに適したRubyバージョンをインストールします。詳細はこのページをご覧ください。
brew install fastlane
システムRuby + RubyGems (macOS/Linux/Windows)
ローカル環境では推奨されませんが、システムRubyの環境にfastlaneをインストールすることも可能です。sudoを使用すると、後でファイルの権限が原因で予期せぬ結果が発生したり、環境の管理が困難になったりすることがよくあります。
sudo gem install fastlane
fastlaneのセットアップ
iOSまたはAndroidアプリのディレクトリに移動し、以下を実行します。
fastlane init

SwiftUIアプリの初回セットアップでは、4. 🛠 Manual setup を選ぶことをおすすめします。
理由:
柔軟性: 必要な機能を段階的に追加できる
学習: fastlaneの仕組みを理解しながら構築できる
カスタマイズ: プロジェクト固有の要件に合わせて設定可能
Manual setupを選ぶと、基本的なAppfileとFastfileが作成され、後から以下のような機能を追加できます:
# 例:Fastfileに後から追加する内容
lane :screenshots do
capture_screenshots
end
lane :beta do
build_app
upload_to_testflight
end
lane :release do
build_app
upload_to_app_store
end
この後はずっとEnter押した。

この後fastlen/配下のファイルを編集する。.gitignoreしてないとゴミみたいにファイルが生成されてGitの差分で読み込まれるので対策が必要。

App Store Connect APIキーなるものと、Appleのアカウントであるメールアドレスと、パスワードが必要なので用意しておきましょう。fastlenにパスワード設定するのですが、以前失敗した設定が残っていたので、一度削除して設定をやり直しました😅
ちなみにパスワードは、123456の6けたでやりましたwww
ここのサイトが参考になった。UI古いので変わってますが!

-
すべてのところを選択して、統合をクリック。

-
チームキーのタブのページでAPIキーを作る。Issuer IDも使用するのでコピーしておく。

- プラスボタンを押して新規でAPI KEYを作成。これは一度しかダウンロードできないので、GoogleDriveなどに保存しておこう。
adminで作成しておく。



ダウンロードしたファイルは、fastlen/配下に配置する。

Appfileを編集
私の場合はここに、BundleIDやapp idのところに、 メールアドレスを書いてます。多分良くない😅
app_identifier("com.junichi.myShoppingCameraApp") # The bundle identifier of your app
apple_id("blu***********@******.com") # Your Apple Developer Portal username
itc_team_id("*****3608") # App Store Connect Team ID
team_id("*****2****") # Developer Portal Team ID
# For more information about the Appfile, see:
# https://docs.fastlane.tools/advanced/#appfile
Gitに証明書用のリポジトリを作成しておく。
GitHubで新しいプライベートリポジトリを作成
名前: ios-certificates-new (ここは毎回変えた方がいい)
可視性: Private
READMEなどは追加しない(空のリポジトリ)
ターミナルでこのリポジトリのURL貼り付けるとファイルなどが、pushされていた。

証明書の設定をやっていく
- matchの初期化
bundle exec fastlane match init
1のgitを選びましょう。

[23:02:11]: URL of the Git Repo: と表示されたら、照明商用に作成したREADME.mdなしのリポジトリのURLをコピーして貼り付けましょう。

ちなみにリポジトリはこんな名前にした。



IDについては、AppDeveloperとAppStore Connectを見て確認してください。

- 証明書の生成(ここの設定で詰まった。あまり覚えていない)
# App Store用証明書
bundle exec fastlane match appstore
# 開発用証明書(必要に応じて)
bundle exec fastlane match development
bundle exec fastlane match appstoreを実行後に、パスワード入力してとログが出ます。8文字以上のパスワードが望ましいでしょうね。

こんなエラーが出た???

このエラーはDistribution証明書(App Store用)の上限に達していることを示しています。
解決方法:
- Apple Developer Portalで既存の証明書を確認・削除
developer.apple.com → Certificates, Identifiers & Profiles
Certificates → Distribution → 不要な証明書を削除
2. 既存の証明書を再利用する場合
これはダメだった!
# 既存の証明書を強制的に使用
fastlane match appstore --readonly
証明書をリセットして新規作成
# 既存の証明書とプロファイルを削除して再作成
fastlane match nuke distribution
fastlane match appstore

この後エラーで詰まる😅
どうやら証明書を作りすぎたらしい?
上限があるそうだ。。。
不要なものを削除する。古い日付のは消した。
and 9 more at: https://github.com/fastlane/fastlane/search?q=No%20code%20signing%20identity%20found%20and%20cannot%20create%20a%20new%20one%20because%20you%20enabled%20%60readonly%60&type=Issues&utf8=✓
🔗 You can ⌘ + double-click on links to open them directly in your browser.
/Users/hashimotojunichi/.rbenv/versions/3.3.5/lib/ruby/gems/3.3.0/gems/fastlane-2.228.0/fastlane_core/lib/fastlane_core/ui/interface.rb:129:in `crash!': [!] No code signing identity found and cannot create a new one because you enabled `readonly` (FastlaneCore::Interface::FastlaneCrash)
from /Users/hashimotojunichi/.rbenv/versions/3.3.5/lib/ruby/gems/3.3.0/gems/fastlane-2.228.0/fastlane_core/lib/fastlane_core/ui/ui.rb:17:in `method_missing'
from /Users/hashimotojunichi/.rbenv/versions/3.3.5/lib/ruby/gems/3.3.0/gems/fastlane-2.228.0/match/lib/match/runner.rb:202:in `fetch_certificate'
from /Users/hashimotojunichi
AIにどれ残すか聞く
安全な手順:
期限が近いものから削除
Distribution Managed (2025/12/20)
重複している古いDistribution証明書を削除
Distribution (2026/05/23)
iOS Distribution (2026/07/05)
古いDevelopment証明書を削除
Development (2026/05/24)
Development (2026/10/21)
残す証明書:
Development (2026/11/02) - 最新
Distribution (2026/11/02) - 最新
iOS Development (Created via API) - Flutter用

まだ上限があった😅
さらに削除が必要:
Distribution Managed (2025/12/20) - 期限が近い
iOS Distribution (2026/07/05) - Distributionが重複している
これらを削除してから再実行してください:
でもやはり無理だった😅
どうやら制限があるようだ。。。
最後に
参考までにですが、証明書の制限がかかっていないときは、Flutterだとできていた手順をご紹介しておきます。
長いので、折りたたんでおこう。。。
多分やり方は変わらないと思われます。
Flutter iOSでやった場合
Flutter iOS fastlane導入完全ガイド
📋 概要
FlutterアプリのiOS版にfastlaneを導入し、TestFlight自動配布とApp Storeリリースプロセスを自動化するための完全ガイドです。
🛠️ 前提条件
必要なツール
- Xcode(最新版)
- Xcode Command Line Tools
- Ruby 2.6以上
- Bundler
Xcode Command Line Toolsのインストール
xcode-select --install
Bundlerのインストール
gem install bundler
🚀 セットアップ手順
1. fastlane環境構築
Step 1: Gemfileの初期化
cd ios
bundle init
Step 2: fastlaneの追加
bundle add fastlane
Step 3: fastlaneの初期化
bundle exec fastlane init
2. 証明書管理(fastlane match)
Step 1: 証明書保存用リポジトリの作成
- GitHubで新しいプライベートリポジトリを作成
- 名前:
ios-certificates-new - 可視性: Private
- READMEなどは追加しない(空のリポジトリ)
- 名前:
Step 2: matchの初期化
bundle exec fastlane match init
Step 3: 証明書の生成
# App Store用証明書
bundle exec fastlane match appstore
# 開発用証明書(必要に応じて)
bundle exec fastlane match development
3. App Store Connect API Key設定
Step 1: API Keyの作成
- App Store Connectにアクセス
- ユーザとアクセス → キー → App Store Connect API
- **+**ボタンをクリック
- 以下の設定で作成:
-
名前:
fastlane -
アクセス:
App ManagerまたはDeveloper
-
名前:
- 生成をクリック
-
.p8ファイルをダウンロード
Step 2: API Keyファイルの配置
# fastlaneディレクトリに配置
cp ~/Downloads/AuthKey_XXXXXXXXXX.p8 ./fastlane/
Step 3: 環境変数ファイルの作成
ios/fastlane/.envファイルを作成:
APP_STORE_CONNECT_API_KEY_ID=XXXXXXXXXX
APP_STORE_CONNECT_ISSUER_ID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
APP_STORE_CONNECT_API_KEY_PATH=fastlane/AuthKey_XXXXXXXXXX.p8
4. Xcodeプロジェクト設定
Step 1: ワークスペースを開く
open Runner.xcworkspace
Step 2: 署名設定の変更
- Runnerプロジェクトを選択
- Signing & Capabilitiesタブをクリック
-
Release設定で:
- Automatically manage signing: ❌ OFF
-
Provisioning Profile:
match AppStore com.junichi.myShoppingCameraAppを選択 -
Signing Certificate:
Apple Distributionを確認
5. .gitignoreの更新
プロジェクトルートの.gitignoreに以下を追加:
# fastlane関連
ios/fastlane/report.xml
ios/fastlane/Preview.html
ios/fastlane/.env
ios/fastlane/AuthKey_*.p8
# Xcode関連
ios/build/
ios/*.ipa
ios/*.app.dSYM.zip
ios/Runner.xcarchive
ios/DerivedData/
# Ruby/Bundler関連
ios/vendor/
ios/.bundle/
🔧 トラブルシューティング
よくある問題と解決方法
証明書が見つからないエラー
# 証明書を強制的に再取得
bundle exec fastlane match appstore --force
API Keyが見つからないエラー
-
.envファイルのパスが正しいか確認 -
.p8ファイルが存在するか確認
ls -la fastlane/AuthKey_*.p8
プロビジョニングプロファイルの不一致
# 証明書とプロファイルを再生成
bundle exec fastlane match nuke distribution
bundle exec fastlane match appstore
🎯 利用可能なコマンド
TestFlight配布(推奨)
cd ios
bundle exec fastlane ios beta
機能:
- バージョン・ビルド番号自動インクリメント
- App Store証明書でビルド
- TestFlightに自動アップロード
- 内部・外部テスター向け配布
App Store本番リリース
cd ios
bundle exec fastlane ios release
機能:
- App Store Connectへ直接アップロード
- 本番環境リリース準備
- App Store審査提出
ビルドテスト(アップロードなし)
cd ios
bundle exec fastlane ios test_build
機能:
- 署名・ビルドの確認のみ
- IPAファイル作成をスキップ
- CI/CDでのテスト用
🔐 セキュリティ管理
機密情報の取り扱い
-
.envファイル: 環境変数(Git除外対象) -
.p8ファイル: API Key(Git除外対象) - 証明書: 暗号化されたプライベートリポジトリで管理
- パスワード: fastlane matchで暗号化保存
権限設定
- API Key: 必要最小限の権限(App Manager推奨)
- 証明書リポジトリ: プライベート設定必須
- チームメンバー: 適切な権限レベルを設定
📱 日常的な運用
通常のTestFlight配布
cd ios
bundle exec fastlane ios beta
緊急時の手動アップロード
cd ios
bundle exec fastlane ios test_build
open Runner.ipa # Transporterアプリで手動アップロード
バージョン管理
-
メジャーアップデート:
pubspec.yamlでバージョン変更 - マイナーアップデート: fastlaneが自動でビルド番号をインクリメント
✅ チェックリスト
初回セットアップ完了確認
- fastlane環境構築完了
- 証明書管理(match)設定完了
- App Store Connect API Key設定完了
- Xcode署名設定変更完了
- .gitignore更新完了
- TestFlight配布テスト完了
リリース前確認項目
- ビルドが正常に完了する
- 署名が正しく設定されている
- バージョン番号が適切
- TestFlightでのテストが完了
- App Store Connect審査準備完了
🚨 エラー対応
よくあるエラーと対処法
Could not find API key エラー
# ファイルパスを確認
ls -la fastlane/.env
ls -la fastlane/AuthKey_*.p8
Certificate not found エラー
# 証明書を再生成
bundle exec fastlane match appstore --force
Upload timeout エラー
# 手動アップロードに切り替え
bundle exec fastlane ios test_build
open Runner.ipa
📋 まとめ
この設定により、iOS版アプリのリリースプロセスが以下のように改善されます:
- 作業時間短縮: 手動30分 → 自動5分
- エラー削減: 手動作業によるミスを防止
- 標準化: 一貫したビルド・リリースプロセス
- セキュリティ: 証明書とAPI Keyの適切な管理
参考リンク
注意: このREADMEは手動で更新されています。fastlane実行時に自動上書きされることはありません。
Screen Shot
Xcodeの設定を変更する必要もある。久しぶりにM2 Mac mini起動すると、アカウントのログインも必要だった。


Discussion