Edited at
ClassiDay 6

Fabric Beta によるテストアプリの配信

More than 1 year has passed since last update.

Classi Advent Calendar 2016 - Qiita 6日目です。

Classi ネイティブアプリ担当の @kitaharamikiya です。

今回は、Twitter社が提供しているFabricの機能の一つ、

Crashlytics Beta Distribution によるテストアプリ配信で行うようにした経緯を記します。


1.導入前の状況


  • DeployGateによるテスト配信 + New Relicによるクラッシュレポート による運用


2.導入前の問題点

2-1. 運用、管理するネイティブアプリが増えてきた。

2-2. 各サービスによるクラッシュレポートの管理の二重管理

2-3. 各サービスのSDKを導入することにより、アプリ容量が大きくなる

2-4. メールでの配信のみで、クラッシュについて誰も気にしていない(重症)

2-5. 使われていないのに、運用費が掛かっている


3.対応策

Fabricを導入してみました


4.Fabric に決めた理由


4-1.運用、管理するネイティブアプリが増えてきた対策


  • DeployGate :グループ Businessプランに上げれば、20アプリまで登録できる

  • Fabric Beta:無料(2016/12/06現在)


4-2.各サービスによるクラッシュレポートの管理の二重管理対策


  • Fabric Crashlytics:いくつものレポートを見るより、まずCrashlyticsを覚える(学習コストの削減)


4-3.各サービスのSDKを導入することにより、アプリ容量が大きくなる 対策


  • Fabric SDKを導入するのみでOK


4-4. メールでの配信のみで、クラッシュについて誰も気にしていない対策


  • ツールよりも、人間の問題。。。アプリチームで話し合い、Fabricを採用。

  • Slackによる通知も導入しました。(New RericもSlack連携できると思います。)


4-5. 使われていないのに、運用費が掛かる対策


  • Classiは、良いツールに対しては対価を払う意思はあります

  • DeployGateや、New Rericも素晴らしいツールですが、使わないならもったいない(意識の問題)

  • Fabric が無料なので、浮いたお金で社内改善ができる!(かも)


5. 導入方法


5-1 Fabric アカウント登録編



  1. Fabric ホームにて、アカウントを登録する


5-2 Fabric 導入:Androidの場合


  1. Android Studio メニュー => Preferences... => Plugins を開く

  2. 検索窓に「Fabric」と入力する


  3. Fabric for Android Studio をインストールする

  4. Android Studio を再起動する

  5. Fabricのアイコンが表示されます


5-3 Fabric 導入:iOSの場合


  1. アカウントを登録後、IDEでXcodeを選択する

  2. Fabric のMacアプリをダウンロードします


5-4.アプリ側の設定

※ 本題ではないので、ドキュメントを添付します。(コメント下さい)


5-5.Beta配信をする


  1. テストチームをFabricに招待する

  2. 配信するアプリをビルドする


    • iOS版


      1. Mac アプリを起動する

      2. Archive する



    • Android版


      1. プロジェクトを選択して、apkファイルを作成する

      2. Android Studio => Fabricを選択する

      3. 配信したいアプリを選択する

      4. Betaのアイコンをクリックする

      5. apkファイルをアップロードする





  3. アプリを配信する


    1. Mac アプリ => 配信したいアプリ を選択

    2. 配信するバージョンのDistributeボタンを押下する

    3. 配信するメンバーを検索、選択する(事前にチームを作成するとラク)

    4. Release notesを記入する

    5. nextを押下すると、メール配信されます





※ 番外編:Gradle コマンドでapkファイルを配信する


1.ターミナルで、Androidアプリのプロジェクトルートに移動


2../gradlew tasksを実行:下記が表示される

 Incremental java compilation is an incubating feature.

:tasks
------------------------------------------------------------
All tasks runnable from root project
------------------------------------------------------------
Android tasks
-------------
・・・
Other tasks
-----------
crashlyticsUploadDistributionDevDebug - Uploads an APK to Crashlytics for distribution.
crashlyticsUploadDistributionDevRelease - Uploads an APK to Crashlytics for distribution.
crashlyticsUploadDistributionProductDebug - Uploads an APK to Crashlytics for distribution.
crashlyticsUploadDistributionProductRelease - Uploads an APK to Crashlytics for distribution.
crashlyticsUploadDistributionStagingDebug - Uploads an APK to Crashlytics for distribution.
crashlyticsUploadDistributionStagingRelease - Uploads an APK to Crashlytics for distribution.

※ crashlytics を追加すると、Other tasksが追加されます。


3.app/build.config の buildTypes などに下記を追加する

buildTypes {

debug {
applicationIdSuffix ".debug"
debuggable true
//配信チームを設定
ext.betaDistributionGroupAliases = "test_team"
//リリースノートを記入
ext.betaDistributionReleaseNotes = "Release Notes"
}
  release {
  ・・・
  }
}

※ この場合は、デバッグビルドのときのテストアプリ配信グループとリリースノートを登録する

・チームは、あらかじめFabricで作成しておく

※ リリースノートは、外部ファイルの読み込みや、コミットログを登録することもできます


4../gradlew crashlyticsUploadDistributionStagingDebugをターミナルで実行

※ このコマンドは、staging debug 版apkを生成し、Betaに配信する



6. 感想


  • iOSアプリは、Archiveした時点で、Fabricに登録されるのはものすごいラク(Exportしなくていい)

  • DeployGateによる配信を伝達して、やっと慣れたときに方法を変えてしまったので、

    テストやリリース判定を行う部署には、学習コストを増やしてしまい、少し申し訳ないと思う

  • 情報が絞られているため、詳しくない人でも学習コストは低いと思う

    (New Redicは、情報がたくさんある分、テスト・企画チームには見て欲しいと言えなかった)


7. まとめ


  • 使用するツールは、正直何でも良いと思いますが、使うことが大切

  • チーム内でどのツールを使うのかを検討しあい、チームで決めたルールを尊守すること(重要)

  • チームが一丸となって、使いやすいアプリを提供しようとする気持ちをもつ(超重要)


8. TODO


  • Answersも使っているのでカスタムログを導入していきたい。(GAとの住み分けをどうするか)

  • 配信等、出来る限り自動化する(Github + Circle CI + Fabric)

  • クラッシュログを自動でチケット化する。(GitHub or Trello or JIRA)

  • fastlane を導入してみる。


明日は

hachi_eiji による「buildersconで知ったkuba-awsを触ってみた」です!