API Keyは、実行するfastlaneアクションに対応したものを選び、秘密鍵をリモートMacの管理された場所に置いてから低リスク操作で認証を確認します。.p8ファイルをリポジトリ、アプリのコード、公開ログへ入れてはいけません。API Keyはコード署名証明書やProvisioning Profileの代わりにはなりません。
初めてリモートMacでfastlaneの自動アップロードを構成するiOS開発者向けです。
ローカルMacから公開作業を移す小規模チームや、資格情報の保管方法を見直したい開発者にも役立ちます。
最初に切り分ける認証と署名
App Store Connect API Keyは、対応するAPIやfastlaneアクションを認証するための資格情報です。ビルドに必要なコード署名とは役割が異なります。Appleの説明では、API Keyを使うAPIアクセスはJWTで認証されます。AppleのAPI Key作成ガイドで作成方法と認証の概要を確認してください。
公開作業を始める前に、目的を分けます。
- TestFlightへのビルド送信やApp Store Connect上の操作が目的なら、実行するfastlaneアクションがAPI Keyに対応しているか確認します。fastlaneのApp Store Connect API Key設定と対応アクションを参照してください。
- アプリのビルドや署名が目的なら、API Keyとは別に署名証明書とProvisioning Profileを用意します。Appleの開発用Provisioning Profile作成手順で必要なプロファイルを確認できます。
- アカウント上の権限が目的なら、API Keyに割り当てる権限を作業範囲に合わせます。役割ごとの範囲はAppleのApp Store Connectロール一覧で確認してください。
「API認証は成功したが署名で失敗した」という場合、API Keyを作り直す前に署名側を調べます。逆に、署名が通ってもApp Store Connectへの権限が足りなければ、アップロード操作は完了しません。
作成時に決める権限と保管先
API Keyは作業に必要な範囲で発行し、fastlaneで使うアクションと権限を照合します。個人用・チーム用のどちらを使う場合も、実行予定の操作をAppleの権限説明とfastlaneの対応状況に照らして選びます。プロビジョニング関連の操作を含める場合は、API Keyで完結すると決めつけず、利用するアクションの要件も確認してください。
作成時に特に注意する点があります。Appleの案内では、秘密鍵ファイルは作成後にダウンロードできる機会が一度だけです。ダウンロード前に保存先と引き渡し方法を決め、保管できたことを確認してください。AppleのAPI Key管理手順には、作成や管理に関する案内があります。
リモートMacへ渡すときは、管理された資格情報保管方法、またはアクセスを制限できる安全な転送手段を使います。具体的な転送機能や権限設定は環境ごとに異なるため、利用中の環境で実際に確認します。秘密鍵をGitへ追加したり、Fastfileへ内容を貼り付けたり、ターミナル出力やCIログへ表示したりしないでください。
Key ID、Issuer ID、秘密鍵ファイルは別々の情報です。秘密鍵の内容を確認用ログへ出さず、必要な値だけをfastlaneの設定に渡してください。
リモートMacでのfastlane設定
まず、リモートMacで使用するfastlaneのバージョンと、実行予定のアクションを特定します。API Keyをすべてのfastlane操作に使えるとは限りません。対応範囲は公式資料で確認し、アクション固有の引数も調べます。TestFlight送信アクションの引数と使い方は、送信処理を組む際の確認先です。
Fastfileでは、実際の値を直接書かず、管理された環境変数などから読み込む形にします。次は設定の骨格です。環境変数名は利用環境に合わせて変更してください。
api_key = app_store_connect_api_key(
key_id: ENV.fetch("ASC_KEY_ID"),
issuer_id: ENV["ASC_ISSUER_ID"],
key_filepath: ENV.fetch("ASC_KEY_PATH")
)
lane :upload_beta do
upload_to_testflight(api_key: api_key)
end
issuer_idの要否や、アクションが受け取る設定形式は、使用するAPI Keyの種類とfastlaneの仕様を照合してください。秘密鍵の中身を環境変数へコピーするのではなく、fastlaneが参照するファイルのパスを指定します。Key IDやパスが未設定なら処理を止めるようにし、値を画面へ出すデバッグ出力は避けます。
リモートMacの利用手順や環境の準備を確認するときは、NUMACSの利用開始ガイドも参照できます。そこで確認できない資格情報の受け渡し方法やセキュリティ機能を、設定済みと見なさないことが重要です。
認証からアップロードまでの実行順
本番ビルドを送る前に、次の順で確認します。認証エラー、秘密鍵の読み込みエラー、ビルド署名エラーを同じ問題として扱わないためです。
- [ ] リモートMacで、予定しているfastlaneのバージョンとアクションがAPI Keyに対応するか公式資料で確認する。
- [ ] Key ID、必要なIssuer ID、秘密鍵ファイルのパスを照合し、秘密鍵が指定先に存在することを確認する。
- [ ] ファイルの読み取り権限を確認する。ログや出力へ秘密鍵の内容を表示しない。
- [ ] アップロード前に、対象アクションの権限で実行できる読み取り系の低リスク操作を選び、API認証を確かめる。
- [ ] 認証の成功後、ビルドと署名を別工程として確認し、TestFlightへのアップロードを実行する。
- [ ] App Store Connectでビルドの到着と処理状態を確認し、コマンドの終了結果だけで完了と判断しない。
低リスク操作は、使うアクションとfastlaneのバージョンに合わせて選びます。対応状況を確認できない操作を、認証テストとして実行しないでください。
失敗時は、エラーの層を分けて記録します。秘密鍵を読めない場合はパスや読み取り権限、認証できない場合はKey ID・Issuer ID・権限、ビルドが作れない場合は署名とProvisioning Profileを確認します。アップロード後はApp Store Connect上の結果も照合します。
継続運用と失効時の対応
公開フローを移行した後も、鍵の保管場所、利用者、対象アプリ、fastlaneの設定変更を記録します。チームメンバーの変更、鍵の紛失、漏えいの疑いがあれば、Appleの手順に従って該当キーを失効させ、必要な権限を見直した新しいキーで再設定します。AppleのAPI Key失効手順を確認してください。失効したキーは再び有効化できるものとして扱わず、新しい資格情報へ切り替えます。
公開記録には、実行したfastlaneアクション、使用した設定の識別情報、認証結果、App Store Connect上で確認した結果を残します。秘密鍵そのものや認証情報の値は記録しません。これにより、後日失敗したときに「鍵の読み込み」「API権限」「ビルド署名」「アップロード後の処理」を別々に追えます。
よくある質問
リモートMacのfastlaneでAPI Keyを読み込む方法
Fastfileでapp_store_connect_api_keyを使い、Key ID、秘密鍵ファイルのパス、必要な場合はIssuer IDを指定します。作成した設定を、API Keyに対応するfastlaneアクションへ渡してください。認証値や秘密鍵をコードに直書きせず、実際に使うfastlaneの公式仕様とアクションの引数を確認します。
.p8ファイルの配置場所
固定の必須ディレクトリはありません。Git管理外で、ビルドを実行するユーザーだけが読み取れる管理対象の場所に置き、fastlaneへファイルパスを渡します。リモートMacへの転送方法は利用環境の仕組みで確認し、クライアントコードや公開ログへ内容を出さないでください。
TestFlight送信前の認証確認
先に、使用するfastlaneアクションとバージョンがAPI Keyに対応するかを確認します。その後、秘密鍵の内容を表示しない読み取り系操作で認証を検証し、成功してからビルド作成とアップロードに進みます。送信後はApp Store Connectでビルドを確認し、コマンドの成功表示だけで公開準備が完了したと判断しないでください。
API KeyとiOS署名の違い
API KeyはApp Store Connect APIや対応するfastlane操作の認証に使います。コード署名に必要な証明書やProvisioning Profileを置き換えるものではありません。アップロード権限のエラーはAPI認証側で、署名エラーは証明書やプロファイル側で切り分けると、不要な鍵の再発行を避けられます。
自分で管理するMacを常時稼働させる方法は、保守や空き容量の確保、端末の稼働状態の管理が必要です。公開作業が一時的だったり、手元のMacへビルド環境を追加しにくかったりする場合は、リモートMacのレンタルでXcodeとfastlaneを動かす選択肢もあります。長期にわたる安定した高負荷利用や物理接続が必要なら、自前のMacが適する場合もあるため、運用期間と作業条件で選んでください。リモート環境を検討する場合は、NUMACSのプラン案内で利用条件を確認できます。
よくある質問
リモートMacのfastlaneにAPI Keyを読み込ませるには、何を指定しますか?
fastlaneの公式仕様に沿って、Key ID、秘密鍵ファイルのパス、必要な場合はIssuer IDを設定します。FastfileではAPI Keyオブジェクトを作り、対応が確認できたアクションへ渡します。値をソースコードへ直書きせず、実行環境から安全に参照できる形にしてください。
.p8ファイルはリモートMacのどこに保管すればよいですか?
特定の固定ディレクトリが必須というわけではありません。Git管理外で、ビルド実行ユーザーだけが読める管理対象の場所を選び、fastlaneにはそのパスを渡します。秘密鍵の作成後に一度しかダウンロードできないため、配置先へ安全に届けられたことを確認してから元ファイルの保管方法も決めます。
TestFlightへ送る前にAPI Keyの権限をどう確認しますか?
まず実行予定のfastlaneアクションがApp Store Connect API Keyに対応しているか、利用中のfastlaneの公式説明で確かめます。そのうえで、秘密鍵を表示したりアップロードしたりしない読み取り系の低リスク操作で認証を確認し、成功後にアップロードへ進みます。
App Store Connect API KeyだけでiOSアプリの署名もできますか?
できません。API Keyは対応するApp Store Connect APIやfastlane操作の認証に使いますが、アプリのビルドに必要な署名証明書やProvisioning Profileの代わりにはなりません。API認証の成否と署名の成否は別々に記録し、署名設定はAppleの説明に沿って管理してください。
Numacs クラウドMac
iOSアプリの公開環境を、NUMACSの専用物理Macで整えませんか
専用物理Mac miniをリモートで利用でき、ビルドからアップロードまでの作業環境を用意できます。
