年中アイス

いろいろつらつら

DeploygateでケーブルレスなAndroidアプリ開発

会社で使ってて便利なので簡単に紹介。
私は開発者ではなくPMの立場(開発してないが確認をする)として使ってます。

Deploygate

株式会社ミクシィの提供するAndroid向けプライベートアプリ配布サービスです。
公式はこちらDeployGate - An incredibly easy way to deploy apps in development!

スマートフォン向けアプリのプライベート配信プラットフォーム

ストア公開前のアプリを瞬時に端末へ配布。
アップデート、ログ収集、すべてをワイヤレスでリアルタイムに。

使い方を簡単に

Webサービスと、Androidアプリがあります。要アカウント作成。

  1. Webサービス上で、Androidアプリをアップロードする。
  2. GooglePlayで配布されている、DeploygateのAndroidアプリを開発/テスト端末にインストールする。
  3. 開発/テスターアカウントで、Androidアプリ上でログインする。
  4. 使用できるアプリ一覧が出るのであとはGooglePlayの様に、選択してインストールする。
  5. Webサービス上から、インストール状況や起動状況、クラッシュレポートなどを確認する。

前提としてAndroid開発時の作業

Androidアプリは、基本的にEclipseを使って開発を行い、USBケーブルを使ってAndroid端末にアプリをインストールしながら動作確認をします。*1
開発初期や、開発者のみのときは、USBケーブル繋いでてもいいんですが、実際にアプリを使ってもらったり、動作確認をしてもらうときに、わざわざUSBケーブルをつないで、アプリをその人の端末に入れてあげないといけません。または、Web上にアップロードして、直接URLなどをたたいてもらってインストールしてもらいます。
クラッシュした時は、USBケーブルを端末につないで、ログを遡って例外のStackTraceを探します。

問題点

  • 実機での確認にエンジニアが介在する必要があり、テスターにテストをさせていても作業中断が発生しがち
  • 対象端末、テスト端末がたくさんあると、USB抜き差しが地味に面倒
  • 効率的にクラッシュ時のログを拾えない

Deploygateを使うと便利なこと

  • USBケーブルをつながなくてもアプリを配布できる
  • Webにアプリ(apk)上げるよりも安全
  • 以前のバージョンのアプリもインストール可能
  • 以前のバージョンが入れられるということはアップデートのテストもやりやすい
  • クラッシュ時の情報収集がらくちん
  • 月額とはいえ、Proでも4000円弱/月という低価格。企業なら高いからダメとはまず言われない(と思う)
USBケーブルをつながなくてもアプリを配布できる。

各端末に開発者がアプリを入れなくてよくなります。Deploygateにアプリをアップロードすれば、アプリを利用可能なアカウントでDeploygateアプリが入っている端末に通知が飛び、インストールを促すことができます。

PMや関係者に「あのアプリの最新版入れてよ」ってエンジニアが作業を中断されなくなります。「エンジニアが休んでて、今アプリ入れられない」という状況も避けられます。

Webにアプリ(apkファイル)を上げるよりも安全

USBケーブルをつながなくてもよいように、Web上にアプリ(apkファイル)を上げることもできますが、ベタで置く訳にも行かず*2、認証の設定などが必要なのと、どうしても煩雑になります。
Deploygateでは、任意のユーザにのみアプリのインストールを行わせることができます。

アプリをWebサービスにアップロードするので、案件によっては、事前に使用する確認を取りましょう。

以前のバージョンのアプリもインストール可能

同じアプリも複数世代持っておくことができ*3、手元で簡単に入れ替えられます。
このバージョンで起きるこの現象は一つ前のバージョンでも起きるのかなどが確認しやすいです。
これもまた、エンジニアの負荷を下げられます。

以前のバージョンが入れられるということはアップデートのテストもやりやすい

前のバージョンを入れて、任意の操作をして、新しいバージョンをアップデートインストールします。普通にやろうとすると、新旧のアプリ(apkファイル)を用意して、旧バージョンをadbコマンドでインストールして、操作して、新バージョンをadbで入れて。。。と面倒です。
Deploygateなら、世代一覧のボタンを押して、好きなバージョンをインストールするだけです。開発者じゃなくても手順があれば、テストができます。
Androidの場合は、SQLiteスキーマ変更などでアップデートのバグが出がちなので、そういった確認テストが行いやすくなります。

クラッシュ時の情報収集がらくちん

DeploygateのSDKを組み込んでおく必要*4はありますが、これだけやっておくと、Deploygate経由で配布しているアプリがクラッシュすると、Webの画面にクラッシュレポートがあがってきます。これがすごく便利で、バグの原因究明を容易にしてくれます。Androidは、普段からいろんなアプリからログが垂れ流されがちなので、クラッシュしたときのログもすぐに流れて行ってしまい、確認することが困難です。

「外で使ってたら落ちたんだけど、、、」「どうもこの位置でよく落ちる、、、」と言われても、持ってこられたときには、ログが電子の海に流れ込んで原因にたどり着けず、PCもってわざわざその場所に行くのも大変です。こんな苦労からも解放されます。
あとは、使ってもらってれば勝手にログがでるので、報告がなくても何かが起きたことはわかります。

月額とはいえ、Proプランでも4000円弱/月という低価格。企業なら高いからダメとはまず言われない(と思う)

会社でこういうサービスを導入する場合に、価格もひとつ障壁になるかと思います。(アプリの扱いとかもあると思いますが)
でも、4000円/月としても、開発者の工数単価で簡単に算出すると、
月単価60万円/20営業日/8時間勤務=3,750円/h
大体月に1時間ぐらい効率アップすれば、ペイできるので、すぐです。これなら説得しやすい。

他にもいろいろ

他もいろいろ便利な使い方があります。気が向いたらまたエントリかきます。
とりあえず、アウトプットしたかった分はこれで。
会社で使ってるので、キャプチャ持って来れないのが残念なところ。

*1:エミュレータも提供されてますが、端末依存で動作が異なるので、実機確認が必須です。

*2:apkファイルからのリバースエンジニアリングは比較的容易です。ProGuardつけてたら別かもですが。

*3:プランによって世代数が異なります

*4:公式にあるように1行ぐらいのお手軽作業です。