Help us understand the problem. What is going on with this article?

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

More than 3 years have 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を触ってみた」です!

kitaharamikiya
Classi 株式会社でAndroid エンジニアなどやってます
classi
学校の先生・生徒・保護者向けのB2B2Cの学習支援Webサービス「Classi(クラッシー)」 を開発・運営している会社です。
https://classi.jp/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした