Fast LaneでFlutterアプリのAppStore申請を自動化してみた
はじめに
はじめまして、showtikbuyです!
株式会社ジャンボで Flutterエンジニアをしています!
Fastlaneを使った iOSアプリの TestFlight 配布自動化について紹介します!
iOSアプリの申請やTestFlight配布って、
毎回同じ手順なのに意外と手間がかかりますよね。
Fastlaneを使うと、
ビルドからTestFlightへのアップロードまでを1コマンドで実行できます。
今回は
Fastlaneの導入からTestFlight配布までの最小構成を紹介します。
Fastlaneとは?
Fastlaneは、
iOS / Androidアプリの配布作業を自動化できるツールです。
• アーカイブ作成
• TestFlightへのアップロード
• App Store Connect への申請
といった作業を、コマンド1つで実行できます。
また、GitHub Actionsとも連携でき、
「特定ブランチにマージされたら自動で配布」
といった運用も可能です。
今回はまず、ローカルでのTestFlight配布に絞って説明します。
Fastlaneの環境構築
※筆者の開発環境は以下になります。
マシン:Mac mini M4
OS:macOS Tahoe ver 26.2
1 fastlaneをインストールする
brew install fastlane
※Fastlane公式はバージョン管理の観点からbundleでのインストールを推奨していますが今回は紹介がメインなのでbrewでインストールしています!
2 fastlaneのセットアップ
fastlane init
コマンドを実行すると対話形式でセットアップが始まります。
今回は TestFlight配布が目的なので、
表示される選択肢の 2番を選択します。
Apple IDで認証すればセットアップ完了です。

設定ファイルを編集する
fastlane initが完了するとios配下にfastlaneディレクトリが作成され、
その配下には下記ファイルが生成されます。
Appfile
App Store Connect 上で
どのアプリを操作するかを指定する設定ファイルです。
初期設定が正しく完了していれば、
アプリIDなどは自動で入力されます。

※紹介のためにidには適当な値を入れています。
Fastfile
Fastlaneの 自動化処理を書くファイルです。
今回は Flutter アプリなので、
以下のような内容を記述します。
## ios向けのfastlaneだということを宣言している
default_platform(:ios)
## ios向けのlaneだということを宣言している
platform :ios do
# laneの説明
desc "Build Flutter app and upload to TestFlight"
# betaという名前の自動化コマンドを定義する
lane :beta do
# ① Flutterコマンドを実行(Flutter の依存関係を取得)
sh("cd .. && flutter pub get")
# ② Flutterコマンドを実行(Flutter で ipa をビルド)
sh("cd .. && flutter build ipa --release")
# ③ TestFlight にアップロード
upload_to_testflight(
ipa: "../build/ios/ipa/*.ipa"
)
end
end
わかりやすく分解してコメントを入れてみました。
Fastfileは指示書のようなイメージで人間の代わりに作業してくれるコンピュータにやってほしい作業を指示書として用意してそれに沿ってコンピュータが作業してくれるってわけです。
Ansibleやterafromなどと同じような考え方ですね。
実行してみる
fastfileに”beta”という自動化コマンドを定義できたので実際に実行してみましょう!
※Fastlaneはfastlaneディレクトリが配下にあるディレクトリで実行する必要があるので今回はカレントディレクトリをiosにして実行します。
fastlane beta
コマンドを実行するとFastfileに書いたbetaというlaneの処理が走ります。
cd ..で一つ前のディレクトリに戻ってflutterの依存関係を取得していますね。

正常に完了すると下記のようにサマリーが出ます。

App Store Connectを確認してみるとちゃんとTestFlightにアップロードされていました!

まとめ
今回は Fastlaneを使って TestFlight配布を自動化しました。
• 毎回の申請作業をコマンド1つにできヒューマンエラーを防止できる
• 個人開発・チーム開発どちらでも使える
• Githubと連携することでコマンドすら打たない完全な自動化も実現できる
最初はローカル実行だけでも十分便利です。
次回は応用編として、
GitHub Actionsと連携して、マージをトリガーに
TestFlightへ自動アップロードする方法を紹介したいと思います!
株式会社ジャンボの公式テックブログです! ジャンボはスマートフォンアプリを中心に、100%自社で開発を手掛ける企業です。 【積極採用について】 Jamboでは、チームを拡大し、さらなる成長を目指して積極的に新しいメンバーを積極的に採用しています。→ jambo-inc.io/
Discussion