MUSHIKAGO APPS MEMO

TestFlight とりあえずどんなものか

iOSアプリを開発中、AdHoc版を用意するなどして、いくつかの異なるデバイス環境でベータテスティングを行いたい場合がよくあります。
純粋にAdHoc版を作って配布してがんばってきましたが、その労力をかなり軽減させてくれる便利なサービスが「TestFlight」です。

このたび(2012年12月)、Adobe AIRにおいても、Gaming SDKというのがリリースされ、その中にTestFlightに対応したANEが含まれていて、これはとりあえず触ってみないわけにはいかないと思います。(iOSアプリ開発の分野に力を入れまくっているアドビさんが買収しそうな匂いがプンプンしますね^^)[追記(2014.2.26):買収したのはAppleさんでした。→「iOSアプリ開発に便利すぎるTestFlightがAppleへ」]

というわけで、TestFlight環境をセットアップして、とりあえずベータビルドをテストユーザに配布、通知するところまでをMEMOしておきます。

で、実際、TestFlightのベータテスティング環境を作ってみると

と、ちょっと触っただけでもメリットがたくさんあります。

これに加えて、クローズドなフォーラムやバグベース、ソーシャルネットワーク経由での通知、などの機能があったら完璧だと思います。(←たぶん、まだない)
今後に期待ですね。

TestFlightで自分のアプリ用のベータプログラム(Team)を開設する

  1. Sign Up」を押して新規アカウントを作るところから。名前、メールアドレス、パスワードなどを入れた後、DeveloperをONにしてSing Upしときましょう。

  2. ダッシュボードが表示されますが、初期画面では何もないので、まず「Team」という自分のアプリのテスト用メンバーの集まりを作ります。「Create a new team」を選択。

  3. Team Nameに適当な名前をつけます。このチームは、後に自分のアプリを開発段階でテストしてもらう人たちを集めますので、それがわかるような名前がいいです。

  4. 僕の感覚では、なんとなく次のステップでは、チームメンバーを招待するステップだと思ったのですが、流れは、最初のベータ版アプリをアップロードしておく手順になるようです。
    アップロードにはとても便利なデスクトップ用アプリが用意されていますのでゲットしましょう。「The TestFlight Desktop App」の「Download it now」を選択。

  5. アプリを起動して登録したアカウント情報を入れてサインインしましょう。

とりあえず、ここまでで開発ビルドをアップロードする準備ができました。

自分のアプリのベータ版をアップロード

ベータ版には、何かTestFlight用のプログラムを組み込んでおかないといけないのかと思ったのですが、その必要はなく、AdHoc用にビルドしてあげればいいようです。
「Invalid IPA:The keychain-access-group in the embedded.mobileprovision and your binary don’t match.」とか出たり、「Invalid IPA: Couldn’t find executable specified in Info.plist – check the value of your CFBundleExecutable key.」とか出たり、なかなか最初は、苦労するかもしれませんが、流れが出来さえすれば、後はどんどんベータ版を作ってアップロード>通知、していくだけになるので、がんばってみましょう。

  1. まず、AdHoc版をビルドする手順が必要なので、「iOS用アプリのAdHoc版を作る(Xcode)」を参考にAdHoc版用のアーカイブを作ります。大事な点は、Release用のCode SigningをAdHoc版のものにしておく点です。

  2. TestFlightのDesktop Appをインストールしていたら、アーカイブ作成直後に画面右上の方に「New Archive Detected」(新しいアーカイブ発見!)とTestFlightアプリが通知してくれます。この通知、5秒くらいで消えるので、その間がチャンスです。「Upload」ボタンを押しましょう。

  3. もし、この通知の「Upload」ボタンを押し損なったら。。。XcodeのOrganizer>Archivesを開き、対象となるアーカイブを「Show in Finder」で開き、TestFlightのデスクトップアプリ「Drag IPA Here」にドラッグ&ドロップします。


  4. TestFlightでAdHocビルドを作成する準備段階となります。Build SettingsのReleaseで指定したIDと異なるプロビジョニングプロファイルが選択されていると「Next」が押せない状態になっています。(※TitaniumやFlashなどで直接作成したAdHoc用のipaの場合は、このプロビジョニングプロファイルの選択はないと思います。)

  5. Xcodeで指定したものと同じもの(AdHoc用のもの)を選択することで次に進めます。

  6. AdHoc版がビルドされ、リリースノートを書くテキストフィールドが現れると同時にデータがアップロードされます。このビルドに関するリリースノートを書き加え、次に進みます。

  7. このビルドがリリースされた事をテストユーザに通知します。まだチームメンバーを招待していない状態なので、自分だけになっていると思います。

  8. 「Build Submitted」と緑のチェックマークが表示されれば成功です。

あとは、新しいベータバージョンができるたびに、この作業を繰り返すだけで、テストユーザへ通知、配布する事がかなり楽になります。

テストユーザを招待 > 承認

現時点では、メールでの通知しかできないんだと思います。招待するにもメールアドレスが必要そうなので、教えてもらいましょう。(他の招待方法があるのか調べ中)
開発者側は、招待した人からAcceptしてもらうと、自動でそのデバイスのUDIDを受け取ることができます。受け取ったUDIDは手動でiOS Provisioning Portal-Devicesに登録して、AdHoc用のプロビジョニングプロファイルを更新しましょう

  1. ダッシュボードから「Invite People」を選択。

  2. ここで入力するメールアドレスは、テストユーザさんのiPhoneなどでメール確認できるメアドがベターです。通常メインで使っているメアドは確認できるようにしていると思いますが、連絡できるような間柄なら先に確認しておくのもいいでしょう。メールアドレスを入力して、招待する人へメッセージを添えて送信します。「Team Developer?」は開発チームのメンバーでなければOFFにしときましょう。

  3. 招待した人の承認待ちとなります。

追記:テスターの方に簡単に説明できるように以下のグレイで囲まれた部分(テスターのための設定手順部分)にショートURLを用意しておきました。
「http://bit.ly/testflight_tester」です。
このURLを開くとこちらのアンカーリンク部分が表示されます。

TestFlightに招待された人のための設定

「TestFlight」というのは、iOS版アプリの開発段階(アプリをApp Storeに公開する前)に限られた人の間だけでベータテスティング(実際のものに近い段階でのアプリの動作確認)を行う際に、その細かなベータバージョンを配布しやすくしたサービスです。
このサービスを介して、新しいベータバージョンを簡単に(Installボタンを押すだけで)テスターのiOSデバイスにインストールする事ができるようになります。以下の手順で、アカウントを作成していけば、テストに使うデバイスのUDIDも自動的に開発チームに送信してくれます。

  1. 招待された側の人は、テスト機として使いたいデバイスでそのメールを確認します。

  2. メールの「Accept」をタップすると、Safariが立ち上がります。すでにアカウントを持っている人の場合、すぐにその招待状に対してAcceptできます。

    まだ、アカウントを持っていない場合は、TestFlightにSign Upしてアカウントを作ります。


  3. 招待にAcceptが完了し、testerになった旨が表示されます。

  4. 「View All Apps」を選択すると、インストール可能なアプリが表示されます。過去にTestFlightを使ってテストした事があり、デベロッパーがそのデバイスをアプリに登録済みであれば、すぐにインストール可能な最新ビルドが表示されると思います。

    初めてTestFlightを利用するデバイスの場合、「You have no apps yet」と表示されたりします。その場合、「Connect Current Device」(左上のメニューアイコンを押して「Device Information」を見るなど)を選択して、そのデバイスでTestFlightを使えるようにすると同時に、開発者にUDIDを知らせます(自動)。

    「設定」画面で「Install」を押すように言われるので、その手順に従っていきます。




    この作業は、同じアカウントであっても別のデバイスでテストする場合には、必要な作業になります。「完了」を押すとSafariに戻り、「Device successfully conected!」と表示され、新しいビルド待ちとなります。

開発者によって新しいベータバージョンが準備され、テスターへ通知されると、登録したメアドに「noreply@n.testflightapp.com」からメールが届きます。そのメールに書かれている「Install」ボタンを押せば最新ベータバージョンを試す事ができるようになります。
テスト機では、このメールを受信できるようにしておきましょう。

UDIDの登録

テストユーザが上記の作業で新しいデバイスを登録すると、開発者にUDIDの情報がメールで送られてきます。

開発者は、このデバイス情報をiOS Provisioning Portal-Devicesに登録して、AdHoc用のプロビジョニングプロファイルを更新後、新しいバージョンをビルドして、再び、TestFlightへアップロードします。

ここまでくれば、あとは、ビルド>通知、ビルド>通知、の繰り返しになります。

TestFlightにはSDKが用意されており、アプリにプログラムを組み込む事で、ユーザの動作をログする事ができ、デバッグに役立ちます。また、前述したように、Adobe AIRでは、Gaming SDKに含まれるANEを利用することで、簡単にその機能が使えるようです。ここではAdobe AIRアプリでの利用方法はまだMEMOしていませんが試してみる価値ありありです。

追記(2013.2.3):ADC(Adobe Developer Connection)でGaming SDKに関するSIHOさん記事が公開されました。Flash Proを使ってTestFlightによるデバッグを試してみたい方はぜひ。