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 アカウント登録編
- Fabric ホームにて、アカウントを登録する
5-2 Fabric 導入:Androidの場合
- Android Studio メニュー => Preferences... => Plugins を開く
- 検索窓に「Fabric」と入力する
-
Fabric for Android Studio
をインストールする - Android Studio を再起動する
- Fabricのアイコンが表示されます
5-3 Fabric 導入:iOSの場合
- アカウントを登録後、IDEでXcodeを選択する
- Fabric のMacアプリをダウンロードします
5-4.アプリ側の設定
※ 本題ではないので、ドキュメントを添付します。(コメント下さい)
5-5.Beta配信をする
- テストチームをFabricに招待する
- 配信するアプリをビルドする
- iOS版
- Mac アプリを起動する
- Archive する
- Android版
- プロジェクトを選択して、apkファイルを作成する
- Android Studio => Fabricを選択する
- 配信したいアプリを選択する
- Betaのアイコンをクリックする
- apkファイルをアップロードする
- アプリを配信する
- Mac アプリ => 配信したいアプリ を選択
- 配信するバージョンのDistributeボタンを押下する
- 配信するメンバーを検索、選択する(事前にチームを作成するとラク)
- Release notesを記入する
- 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を触ってみた」です!