AppStore申請を
一式まるっと自動化する
デジタルサーカス(株)長谷川智希
長谷川智希
とも き
@tomzoh

とむぞう
開発系趣味
その他趣味
iOSアプリ開発, Webサイト開発
レンタルカートレース, 電子工作(mbed), …
TOMZOH
お仕事 スマホアプリ受託開発 Mgr
デジタルサーカス(株) 副団長CTO
デジタルサーカス(株)
・ Webサイト受託開発
・ スマホアプリ受託開発



・ 自社サービス
(PHP, Drupal, CakePHP)
(iOS, Android)



(http://appbuilder.jp)
Twitter: @tomzoh
Twitter: @tomzoh
今日のテーマ:
AppStore申請を
一式まるっと自動化する
AppBuilder
• WebベースのiOSネイティブアプリ作成ツール
• [申請]ボタン → デジタルサーカス審査 → AppStore申請
• オープン当初は全部手動で申請していた。

→ 今はほぼ自動化出来た。
AppStore申請ステップ
step1 ビルド ソースコードをコンパイルして申請⽤用バイナリを作る。
step2 アプリ作成 iTunes Connectでアプリを登録。
step3 メタデータ登録 説明⽂文、アイコン、スクリーンショット、レーティングなどを登録。
step4 バイナリアップロード 申請⽤用バイナリをアップロードする。
step5 申請 「審査⽤用に提出」ボタンを押して質問に答える。
○
△
△
○
○ △
○ △コマンド実⾏行行や設定ファイルだけでOK。 プログラム(的なもの)を書く必要がある。
使えるツール
• iTunes Connectにメタデータやバイナリを登録する。
• バージョンの作成、申請なども一部可能。
• 一部機能は内部的にiTMSTranspoterを使用。
deliver KrauseFx氏によるCLIコマンド
• WebのUIテスト自動化によく使用される。
• HTMLで手順を記述する。
selenium Webブラウザを外から操作するためのツール
• Xcodeプロジェクトをビルドして.appを作成する。
• .appから.ipaを作成する。
Xcode付属のCLIコマンドxcodebuild / xcrun ○
△
○
$ xcodebuild
-workspace AppBuilder.xcworkspace
-scheme AppBuilder -sdk iphoneos -configuration Release
CODE_SIGN_IDENTIFY="iOS Distribution: Digital Circus, Inc."
PROVISIONING_PROFILE=“50d57162-…-5364e9325e42”
clean archive -archivePath build/AppStore
• Xcodeプロジェクトをビルドして.appを作成する。
• .appから.ipaを作成する。
Xcode付属のCLIコマンドxcodebuild / xcrun
• Xcodeプロジェクトをビルドして.appを作成する。
• .appから.ipaを作成する。
Xcode付属のCLIコマンドxcodebuild / xcrun
$ xcrun
-sdk iphoneos
PackageApplication /path/to/app/AppBuilder.app
-o AppBuilder.ipa
• Xcodeプロジェクトをビルドして.appを作成する。
• .appから.ipaを作成する。
Xcode付属のCLIコマンドxcodebuild / xcrun
使えるツール
• iTunes Connectにメタデータやバイナリを登録する。
• バージョンの作成、申請なども一部可能。
• 一部機能は内部的にiTMSTranspoterを使用。
deliver KrauseFx氏によるCLIコマンド
• WebのUIテスト自動化によく使用される。
• HTMLで手順を記述する。
selenium Webブラウザを外から操作するためのツール
$ sudo gem install deliver
$ deliver
• iTunes Connectにメタデータやバイナリを登録する。
• バージョンの作成、申請なども一部可能。
• 一部機能は内部的にiTMSTranspoterを使用。
deliver KrauseFx氏によるCLIコマンド
deliver KrauseFx氏によるCLIコマンド
.
├── Deliverfile
├── app.ipa
├── appstore-icon.png
├── metadata
│   └── ja-JP
│   ├── description.txt
│   ├── keywords.txt
│   ├── privacy_url.txt
│   ├── software_url.txt
│   ├── support_url.txt
│   └── title.txt
├── ratings-config.json
└── screenshots
└── ja-JP
├── iPhone4-1.png
├── iPhone4-2.png
├── iPhone4-3.png
├── iPhone5-1.png
├── iPhone5-2.png
└── iPhone5-3.png
deliver KrauseFx氏によるCLIコマンド
.
├── Deliverfile
├── app.ipa
├── appstore-icon.png
├── metadata
│   └── ja-JP
│   ├── description.txt
│   ├── keywords.txt
│   ├── privacy_url.txt
│   ├── software_url.txt
│   ├── support_url.txt
│   └── title.txt
├── ratings-config.json
└── screenshots
└── ja-JP
├── iPhone4-1.png
├── iPhone4-2.png
├── iPhone4-3.png
├── iPhone5-1.png
├── iPhone5-2.png
└── iPhone5-3.png
ipa "./app.ipa"
version "2.5.3"
price_tier 0
app_icon './appstore-icon.png'
copyright '2015 Digital Circus Inc.’
primary_category 'Lifestyle'
secondary_category 'Travel'
automatic_release true
ratings_config_path './ratings-config.json'
app_review_information({
first_name: "Tomoki",
last_name: "HASEGAWA",
phone_number: "(+)81-3-5775-4406",
email_address: "foo@example.com",
})
app_identifier “com.dgcircus.foo.bar”
email "foo@example.com"
deliver KrauseFx氏によるCLIコマンド
• iTunes Connectにメタデータやバイナリを登録する。
• バージョンの作成、申請なども一部可能。
• 一部機能は内部的にiTMSTranspoterを使用。
• WebのUIテスト自動化によく使用される。
• HTMLで手順を記述する。
selenium Webブラウザを外から操作するためのツール
• Xcodeプロジェクトをビルドして.appを作成する。
• .appから.ipaを作成する。
Xcode付属のCLIコマンドxcodebuild / xcrun
使えるツール
• WebのUIテスト自動化によく使用される。
• HTMLで手順を記述する。
selenium Webブラウザを外から操作するためのツール
<tr>
<td>[コマンド]</td>
<td>[第1引数(ターゲット)]</td>
<td>[第2引数(バリュー)]</td>
</tr>
基本
構文
• WebのUIテスト自動化によく使用される。
• HTMLで手順を記述する。
selenium Webブラウザを外から操作するためのツール
<tr>
<td>[コマンド]</td>
<td>[第1引数(ターゲット)]</td>
<td>[第2引数(バリュー)]</td>
</tr>
基本
構文
<tr>
<td>open</td>
<td>/WebObjects/iTunesConnect.woa</td>
<td></td>
</tr>
URLを
開く
• WebのUIテスト自動化によく使用される。
• HTMLで手順を記述する。
selenium Webブラウザを外から操作するためのツール
<tr>
<td>[コマンド]</td>
<td>[第1引数(ターゲット)]</td>
<td>[第2引数(バリュー)]</td>
</tr>
基本
構文
<tr>
<td>open</td>
<td>/WebObjects/iTunesConnect.woa</td>
<td></td>
</tr>
URLを
開く
<tr>
<td>type</td>
<td>id=accountname</td>
<td>foo@dgcircus.com</td>
</tr>
文字を
入力
• WebのUIテスト自動化によく使用される。
• HTMLで手順を記述する。
selenium Webブラウザを外から操作するためのツール
<tr>
<td>[コマンド]</td>
<td>[第1引数(ターゲット)]</td>
<td>[第2引数(バリュー)]</td>
</tr>
基本
構文
<tr>
<td>open</td>
<td>/WebObjects/iTunesConnect.woa</td>
<td></td>
</tr>
URLを
開く
<tr>
<td>type</td>
<td>id=accountname</td>
<td>foo@dgcircus.com</td>
</tr>
文字を
入力
<tr>
<td>click</td>
<td>link=サインイン</td>
<td></td>
</tr>
リンクを
クリック
ソースコードをコンパイルして申請⽤用バイナリを作る。
iTunes Connectでアプリを登録。
説明⽂文、アイコン、スクリーンショット、レーティングなどを登録。
申請⽤用バイナリをアップロードする。
「審査⽤用に提出」ボタンを押して質問に答える。
AppStore申請
step1 ビルド
step2 アプリ作成
step3 メタデータ登録
step4 バイナリアップロード
step5 申請
xcodebuild / xcrun
selenium
deliver
selenium
deliverselenium
既存 自作コマンド実⾏行行や設定ファイルだけでOK。 プログラム(的なもの)を書く必要がある。
ソースコードをコンパイルして申請⽤用バイナリを作る。
iTunes Connectでアプリを登録。
説明⽂文、アイコン、スクリーンショット、レーティングなどを登録。
申請⽤用バイナリをアップロードする。
「審査⽤用に提出」ボタンを押して質問に答える。
AppStore申請
step1 ビルド
step2 アプリ作成
step3 メタデータ登録
step4 バイナリアップロード
step5 申請
xcodebuild / xcrun
selenium
deliver
selenium
deliverselenium
初回価格設定だけdeliverでできない
既存 自作コマンド実⾏行行や設定ファイルだけでOK。 プログラム(的なもの)を書く必要がある。
ソースコードをコンパイルして申請⽤用バイナリを作る。
iTunes Connectでアプリを登録。
説明⽂文、アイコン、スクリーンショット、レーティングなどを登録。
申請⽤用バイナリをアップロードする。
「審査⽤用に提出」ボタンを押して質問に答える。
AppStore申請
step1 ビルド
step2 アプリ作成
step3 メタデータ登録
step4 バイナリアップロード
step5 申請
xcodebuild / xcrun
selenium
deliver
selenium
deliverselenium
初回価格設定だけdeliverでできない
本当はdeliverでできるはずだけど現状エラーになる
既存 自作コマンド実⾏行行や設定ファイルだけでOK。 プログラム(的なもの)を書く必要がある。
デモ
step1 ビルド
step2 アプリ作成
step3 メタデータ登録
step4 バイナリアップロード
step5 申請
まとめ
• アプリビルドからAppStore申請まで自動化可能。
• ビルドとパッケージ作成は署名も含めてXcode付属の
CLIコマンドで。
• iTunes ConnectメタデータはdeliverでだいたいOK。
• ツールの 間をSeleniumで埋める。
補足1
• Xcode付属ツールのiTMSTranspoterを使うことでも
iTunes Connectへのメタデータ設定、バイナリアップ
ロードは可能。
• XMLでメタデータを定義する。
• AppStoreから現在設定されているメタデータを取得すること
もできる。
• アイコン設定とかバージョン作成は出来ない。
• deliverはApple Test Flightへのデプロイも可能。
補足2
• NOMADというCLIツール集もある。
• CUPERTINO … UDIDメンテナンス
• HUSTON … PUSH通知送信
• DUBAI … Passbook生成
• VENICE … IAPレシートベリファイ & デコード
• SHENZHEN … ビルド(IPA作成), デプロイ
ありがとうございました。
@tomzoh
JOIN US !!!

PHP, Drupal, スマホ…
デジタルサーカス(株)

AppStore申請を一式まるっと自動化する