こんにちは、間藤です。
以前、Fabric CrashlyticsKitについての記事を書きましたが、今回DeployGateのアプリ配信機能を試す機会がありましたので、利用してわかったことなどをまとめてみようと思います。
今回はAndroidアプリの配信を試します。(iOSは試してません。いつも中途半端で申し訳ないです。。。)
DeployGateとは
Fablicと同様、AndroidやiOSのネイティブアプリをベータ配信してくれるサービスです。もともとはミクシィの社内ツールだったそうです。
料金プランには、個人用と組織・チーム開発用と選択肢がありますが、今回は個人用のFreeプランを使いました。チーム用だと複数の開発者が共同作業するための機能も提供されるようなのですが、実際どんな機能が提供されるのかは、ざっと見たところ確認できませんでした。ただ、組織・チーム開発向けプランでも、30日間無料で試せるそうですので、事前に確認することはできると思います。
アカウント作成〜アプリ登録
まずはアカウントを作成するところからですが、特に説明は不要と思います。何はともあれ配信するアプリを登録する必要がありますが、手っ取り早く試すのであれば、サンプルアプリが用意されています。(助かります)
Androidのサンプルを登録してみます。すると、ダッシュボードに登録したアプリが表示されるようになります。
次にアプリを配信する端末にDeployGateアプリをインストールしておきます。DeployGateアプリを利用して配信されたアプリをインストールする方法はいくつかあるのですが、まずは作成したアカウントでログインしてみます。すると、登録したアプリが「利用可能」の一覧に表示されるので、これを選択してインスールを行います。
インストールすると、ダッシュボード上の端末一覧にも表示されるようになります。
なお、このサンプルアプリですが、ソースコードがGitHubに公開されていました。
DeployGate/deploygate-android-sdk-sample · GitHub
こちらは、DeployGate SDKのサンプルにもなっていますので、その意味でも確認する価値があると思います。以降では、これを利用して、アプリを更新してみたいと思います。
アプリ配信
実際の運用では、複数のテスターに向けてアプリを配信することになります。私の理解に間違いがなければ、2つの配信パターンがあります。
- DeployGateの別アカウントをテスターとして招待する
- 配布ページを作成してテスターに配布する
別アカウントをテスターとして招待
ダッシュボードから登録したアプリを選択すると、画面右にテスターを登録するためのインターフェースが表示されます。
ここにDeployGateのユーザ名か、メールアドレスを入力して、テスターとして招待します。メールアドレスを入力した場合、そのメールアドレスがDeployGateに登録済みでなければ、テスター登録は完了しません。招待メールが送信されるので、それを受け取った相手がDeployGateのアカウント登録することで、テスターとして認識されます。
つまり、この方法で配信する場合は、テスターすべてがDeployGateのアカウントを持っている必要があります。
テスター登録されると、一覧に表示されるようになります。また、招待されたテスターは、DeployGateアプリで対象のアプリをインストールできるようになります。
配布ページによる配布
テスターの方すべてにDeployGateのアカウント登録してもらうのが難しい場合もあるでしょう。その場合は、配布ページを用意します。
配布ページを作成すると、インストール用URLが割り当てられるので、それをメール等でテスターに知らせます。テスターはそのURLにがアクセスすることでアプリをインストールすることができます。但し、DeployGateアプリをインストールしておく必要があります。
「配布ページの設定」では、テスターに合言葉を求めるように設定することも可能です。
配布ページにアクセスすると、合言葉の入力を求められるようになります。
インストールすると、配布ページの端末一覧に表示されるようになります。
アプリ更新
次に、アプリを更新してみます。GitHubからサンプルをcloneするなりして、ローカル環境でビルドします。更新されたことがわかるように、versionNameとversionCodeを変更しておきます。(GitHubのサンプルはADT用ですが、Android Studio用にマイグレーションしてビルドしています)
defaultConfig { applicationId "com.deploygate.sample" minSdkVersion 15 targetSdkVersion 21 versionCode 3 versionName '1.1' }
また、画面にもバージョン表示されるようにしておきます。そして、ビルドしたapkファイルをアップロードします。
DeployGateアプリでテスターのアカウントでログインしている状態だと、アプリが更新されたことがプッシュ通知されますので、テスターはアプリ更新があったことに気付くことができます。アプリの更新も、DeployGateアプリから行うことができます。
テスターが行った操作は、ダッシュボードから確認できますので、配信したアプリをテスターがインストールしてくれたかも一目瞭然です。
配布ページで配信している場合、アプリ更新は自動的に反映されません。配布ページには、特定バージョンが紐づくようになっているからです。最新のバージョンを配信するには、設定画面で配布バージョンを変更します。
変更すると、やはりテスターの端末にプッシュ通知されます。また、テスターがアプリをインストールすると、配布ページのアクティビティ上に表示されます。
以下、更新後のキャプチャです。
画面(右端/中央やや上)にバージョンが表示されています。アプリ更新が反映されていることが確認できました。
DeployGate SDK
今回利用したサンプルアプリは、DeployGate SDKの利用サンプルにもなっています。せっかくなので、動作確認してみます。もし、ご自分のアプリにSDKを組み込むのであれば、以下に詳しく利用方法が記載されています。
なお、ドキュメントには、リリースビルド(android:debuggable="false")では、DeployGate SDK の機能は自動的に無効化されると記載されています。アプリ配信してテストを行う際は、Proguardを適用するのではないかと思います。そして、大抵の場合、リリースビルド時にProguardを適用することになると思います。リリースビルドでもDeployGate SDK の機能を有効にするには、SDKの初期化メソッドを以下のように書き換える必要があります。(installメソッドの第3引数にtrueを渡す)
//DeployGate.install(this); DeployGate.install(this, null, true);
1つ注意が必要なのが、Proguardの設定です。DeployGate SDK内部でbindServiceしている箇所がありますが、以下の設定を書いておかないと、サービスにバインドできなくなってしまいました。今回利用しているサンプルアプリでは、この設定がされています。
-keep class * extends android.os.IInterface
また、Google Playにアプリを公開する際は、SDKを利用しないようにするのであれば、以前このブログに書いたようにFlavorを追加して、Staging用にだけ依存関係を設定すればよいでしょう。もちろん、この場合はdevelopとproductionでビルドエラーにならないように、DeployGate SDKのラッパークラスを用意するなど、もう一手間必要になります。
dependencies {
・・・(略)
stagingCompile 'com.deploygate:sdk:3.1'
}
クラッシュ
サンプルサプリの一番下に配置されているボタンをタップすると、アプリがクラッシュするようになっているので、実際にクラッシュさせてみます。すると、アクティビティにクラッシュしたことが表示されます。以下は、配信ページから配信している場合の画面キャプチャです。別アカウントユーザに配信している場合は、ダッシュボードの更新情報にクラッシュ情報が表示されます。
また、リンクを辿るとクラッシュログも確認できます。
ログ送信
使い所が限られるのかもしれませんが、DeployGate向けにログ出力を埋め込んでおけば、テスターの操作をさらに詳しく取得することも可能です。
この機能を利用すれば、クラッシュ時の情報をさらに詳細に得られるように工夫することもできるでしょう。
この他にもSDKが提供する機能がありますので、サンプルでいろいろ試してみてください。
その他
アプリのビルドをJenkins等で自動化しているなら、DeployGateへのアプリアップロードも自動化したいでしょう。アプリをアップロードするためのコマンドラインツールや、Web API、Gradleのプラグインも用意されています。これらを利用することで、ビルド〜アプリ配信までを簡単に実現できると思います。また、公式ではないようですが、Jenkins用のプラグインもあります。
jenkinsにDeployGateと連携するためのPlugin – DeployGate Feedback & Customer Support
本格的に利用したわけではないですが(iOSのほうは確認できてませんし)、個人的な感想としては、かなり使いやすいサービスになっているなと感じました。皆さんも是非お試しください。