【Xcode/Fastlane】スクショやアプリ概要などのメタ情報を自動化する方法!

この記事からわかること
- iOS/Xcodeの自動化ツール:Fastlaneの使い方
- App Store Connectのメタ情報を自動化する方法
- スクリーンショットやアプリの概要など
index
[open]
\ アプリをリリースしました /
環境
- Xcode:15.0.1
- watchOS:10.0
- Swift:5.9
- macOS:Sonoma 14.1
- fastlane:2.221.0
Xcode/iOSアプリでFastlaneを使用してクショやアプリ概要などのメタ情報を設定する方法をまとめていきます。App Store Connectへのリリースとdeliverアクションの使い方は以下を参考にしてくだ際。
スクショやアプリ概要などのメタ情報を設定する方法
Fastlaneを使用してApp Store Connectにビルドをアップロードする際にはストアのメタ情報も一緒に自動化に含めて設定することができます。
アップロードまでの流れを自動化する際に使用するdeliver
アクションは最初に以下のコマンドを実行してストアに掲載する情報を入力する基盤を作成します。このコマンドの実行時にAppfileに記述したバンドルIDのストアページがない場合はエラーになるので先に作成しておく必要があります。
$ bundle exec fastlane deliver init
コマンドを実行するとFastfileと同階層に「DeliverFile」、「metadataディレクトリ」、「screenshotsディレクトリ」の3つが生成されます。
├── プロジェクト
│ ├── プロジェクト.xcodeproj
│ ├── fastlane
│ ├── AppFile
│ ├── Fastfile
│ ├── DeliverFile
│ ├── metadata
│ └── いろいろな設定ファイル
│ └── screenshots
│ └── README.txt
│ ├── etc...
このコマンドを実行した際に既にストアにスクショやメタ情報を記述していた場合はそれが反映された状態で「metadataディレクトリ」、「screenshotsディレクトリ」が生成されます。「DeliverFile」はdeliverアクションのパラメータファイルです。
ちなみにスクリーンショットを除いたストア情報に関しては設定する方法は2種類あるようです。
- metadataディレクトリに生成される各種テキストファイルに指定
- deliverアクションの引数に指定(Deliverfileに記述)
スクリーンショットを設定する
ストアに掲載するスクリーンショットはscreenshots
ディレクトリの中に用意します。ただ適当に画像を入れれば良いわけではなく、適切なディレクトリにまとめて適切な画像名で用意する必要があります。(画像によってはサイズを自動で識別し割り振ってくれます。)
今ストアに上がっているスクリーンショットをダウンロードするにはbundle exec fastlane deliver download_screenshots
コマンドを使用します。--use_live_version
オプションでリリースされているものか準備中のものかを選択できます。
// 準備中のバージョンのスクリーンショット
$ bundle exec fastlane deliver download_screenshots --use_live_version false
// リリースされているバージョンのスクリーンショット
$ bundle exec fastlane deliver download_screenshots --use_live_version true
既に上げていればコマンドを実行することで必要なディレクトリ構成や画像名がわかるようになります。ルールは以下の通りのようです。
- screenshots配下に言語名ディレクトリを配置
- 画像名の命名規則は「[No]_APP_[デバイス名]_[インチ]_[No].png」
2024年6月の時点では必要なスクリーンショットは「iPhone5.5/6.7」と「iPad12.9/13」になるのでディレクトリ構成と画像の命名規則は以下の通りになると思います。iPhoneのスクショは実際には画像名を適切に設定しないでも画像のサイズが正しければ自動で割り振ってくれます。iPadは画像サイズが同じなので適切な命名をしないと期待した通りにアップロードできません。
├── screenshots
│ ├── ja
│ // [No]_APP_[デバイス名]_[インチ]_[No].png形式
│ // iPhone 5.5インチ
│ ├── 0_APP_IPHONE_55_0.png
│ ├── 1_APP_IPHONE_55_1.png
│ ├── 2_APP_IPHONE_55_2.png
│ // iPhone 6.7インチ
│ ├── 0_APP_IPHONE_67_0.png
│ ├── 1_APP_IPHONE_67_1.png
│ ├── 2_APP_IPHONE_67_2.png
│ // iPad 12.9インチ
│ ├── 0_APP_IPAD_PRO_129_0.png
│ ├── 1_APP_IPAD_PRO_129_1.png
│ ├── 2_APP_IPAD_PRO_129_2.png
│ // iPad 13インチ(第三世代)
│ ├── 0_APP_IPAD_PRO_3GEN_129_0.png
│ ├── 1_APP_IPAD_PRO_3GEN_129_1.png
│ └── 2_APP_IPAD_PRO_3GEN_129_2.png
│ └── README.txt
│ ├── metadata
│ ├── etc...
レビュー情報
「review_information」ディレクトリ中のテキストファイルはApp Store Connectのレビュー情報のメタ情報の項目と連携しています。テキストファイルの中にはメタ情報として掲載したい値のみを記述しておきます。

├── fastlane
│ ├── metadata
│ ├── copyright.txt
│ ├── review_information
│ ├── demo_password.txt // サインインデモパスワード
│ ├── demo_user.txt // サインインデモユーザーID
│ ├── email_address.txt // 連絡先メールアドレス
│ ├── first_name.txt // 連絡先姓
│ ├── last_name.txt // 連絡先名
│ ├── notes.txt // メモ
│ └── phone_number.txt // 連絡先電話番号
│ ├── etc...
例えばphone_number.txt
には電話番号を記述します。日本なら最初の0
を+81
にする必要があるので注意してください。
+8190XXXXXXXXXX
DeliverFileで指定する
submission_information({
contact_first_name: "XXXXXXX",
contact_last_name: "XXXXXXX",
contact_email: "sample@sample.com",
contact_phone: "+8190XXXXXXXXXX"
})
著作権
「copyright.txt」ディレクトリ中のテキストファイルはApp Store Connectの著作権のメタ情報の項目と連携しています。
├── fastlane
│ ├── metadata
│ ├── copyright.txt
│ ├── etc...
著作権は年数と自身の名前などを以下のように指定することが多いです。これはテキストファイルより「DeliverFile」に指定することで関数が使用できるようになり変更する手間が省けるのでおすすめです。
2024 XXXXX
DeliverFileで指定する
copyright("#{Time.now.year} XXXXX")
カテゴリ
アプリのカテゴリは「metadata」ディレクトリ直下に用意されている「primary_category.txt」などに 記述していきます。
├── fastlane
│ ├── metadata
│ ├── primary_category.txt // アプリの主要カテゴリ
│ ├── primary_first_sub_category.txt // アプリの主要カテゴリに関連する第1サブカテゴリ
│ ├── primary_second_sub_category.txt // アプリの主要カテゴリに関連する第2サブカテゴリ
│ ├── secondary_category.txt // アプリの第2のカテゴリ
│ ├── secondary_first_sub_category.txt // アプリの第2のカテゴリに関連する第1サブカテゴリ
│ ├── secondary_second_sub_category.txt // アプリの第2のカテゴリに関連する第2サブカテゴリ
中に指定する値はあらかじめAppleに定義されているカテゴリ名です。種類は以下の公式リファレンスを参考にしてください。
Books
アプリ情報
アプリに関する情報は言語ごとにファイルが用意されておりその中に用意します。
├── fastlane
│ ├── metadata
│ ├── copyright.txt
│ ├── ja
│ ├── apple_tv_privacy_policy.txt // Apple TVアプリのプライバシーポリシーURL
│ ├── privacy_url.txt // アプリのプライバシーポリシーURL
│ ├── description.txt // アプリの説明文
│ ├── promotional_text.txt // プロモーション用のテキスト
│ ├── keywords.txt // アプリを検索しやすくするためのキーワード
│ ├── release_notes.txt // アプリのアップデート内容を記述
│ ├── marketing_url.txt // アプリのマーケティング用URL
│ ├── subtitle.txt // アプリのサブタイトルを記述
│ ├── name.txt // アプリの名前
│ └── support_url.txt // サポート用のURL
│ ├── en-US // 異なる言語対応
│ ├── apple_tv_privacy_policy.txt
│ ├── privacy_url.txt
│ ├── description.txt
│ ├── promotional_text.txt
│ ├── keywords.txt
│ ├── release_notes.txt
│ ├── marketing_url.txt
│ ├── subtitle.txt
│ ├── name.txt
│ └── support_url.txt
│ ├── etc...
利用可能な言語コード
ar-SA, ca, cs, da, de-DE, el, en-AU, en-CA, en-GB, en-US, es-ES, es-MX, fi, fr-CA, fr-FR, he, hi, hr, hu, id, it, ja, ko, ms, nl-NL, no, pl, pt-BR, pt-PT, ro, ru, sk, sv, th, tr, uk, vi, zh-Hans, zh-Hant
まだまだ勉強中ですので間違っている点や至らぬ点がありましたら教えていただけると助かります。
ご覧いただきありがとうございました。