34
27

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

ClassiAdvent Calendar 2016

Day 6

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

Last updated at Posted at 2016-12-05

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ファイルをアップロードする
  1. アプリを配信する
  2. Mac アプリ => 配信したいアプリ を選択
  3. 配信するバージョンのDistributeボタンを押下する
  4. 配信するメンバーを検索、選択する(事前にチームを作成するとラク)
  5. Release notesを記入する
  6. 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を触ってみた」です!

34
27
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
34
27

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?