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

この記事からわかること

  • iOS/Xcode自動化ツールFastlane使い方
  • App Store Connectメタ情報を自動化する方法
  • スクリーンショットアプリ概要など

index

[open]

\ アプリをリリースしました /

みんなの誕生日

友達や家族の誕生日をメモ!通知も届く-みんなの誕生日-

posted withアプリーチ

環境

Xcode/iOSアプリでFastlaneを使用してクショやアプリ概要などのメタ情報を設定する方法をまとめていきます。App Store Connectへのリリースとdeliverアクションの使い方は以下を参考にしてくだ際。

スクショやアプリ概要などのメタ情報を設定する方法

公式リファレンス: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種類あるようです。

  1. metadataディレクトリに生成される各種テキストファイルに指定
  2. 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

既に上げていればコマンドを実行することで必要なディレクトリ構成や画像名がわかるようになります。ルールは以下の通りのようです。

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のレビュー情報のメタ情報の項目と連携しています。テキストファイルの中にはメタ情報として掲載したい値のみを記述しておきます。

【Xcode/Fastlane】アップロードからリリース/審査までの自動化!deliverでメタ情報の定義
├── 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に定義されているカテゴリ名です。種類は以下の公式リファレンスを参考にしてください。

公式リファレンス:Choosing a category


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

まだまだ勉強中ですので間違っている点や至らぬ点がありましたら教えていただけると助かります。

ご覧いただきありがとうございました。

searchbox

スポンサー

ProFile

ame

趣味:読書,プログラミング学習,サイト制作,ブログ

IT嫌いを克服するためにITパスを取得しようと勉強してからサイト制作が趣味に変わりました笑
今はCMSを使わずこのサイトを完全自作でサイト運営中〜

New Article

index