みなさまはじめまして! Sansan事業部プロダクト開発部Androidエンジニアの原田です。
今回は導入から1年半くらいが経つDeployGateというサービスについて、私のチームがどのように利用しているかご紹介いたします。
背景
突然ですがみなさんは、開発中のアプリをテスターさんに渡すときや、エライ人たちから開発中のアプリがどんなものか触ってみたいって言われたとき、どうしていますか?
私達は1年半ほど前まではUSBケーブルを繋いで1台1台ビルドしたアプリを配布していました。
エライ人がちょっと来たときならそれでも良いのですが、テストで複数台の端末への配布となるととても手間でした。
当時はエンジニアの数も少なく一大プロジェクトの真っ只中であったため、CI/CD周りの整備はやや後回し気味でした。が、テストでの配布にかかる負荷がだんだん無視できないものになってきたため改善を試みました。
DeployGate とは
iOS / Android向けに展開されている「開発版のアプリを端末に展開する」サービスです。
専用の管理アプリも用意されており、ワンボタンでかんたんに開発版をインストールできます。
また、CI環境にもかんたんに組み込めるようになっており、JenkinsやCircleCI、Bitriseへもプラグインを使ってサクッと導入できます。私のチームではBitriseを利用しているためBitrise用プラグインを利用しました。
チームでの使い方
私のチームでのDeployGateの使い方を紹介します。
PullRequestが作られたらDeployGateへ展開する
GithubでPullRequestが作られたとき、Bitriseを利用してLintとテストを行う仕組みはすでに存在していました。
そこへLintとテストの結果が問題なかったらDeployGateへ配信するフローを追加しました。
DeployGateでは単純なバージョンでの管理の他に、任意の名前をつけた「配布ページ」と呼ばれるページごとにアプリのバージョンを管理できます。
これを利用してPullRequestのブランチ名ごとに配布ページを作成し、各PullRequestごとにビルドしたアプリを管理できるようにしました。見やすいですし、別のブランチのビルドを誤ってインストールしてしまうことを防ぎやすくなります。
リリース前のリグレッションテスト時
リリース前にテスターさんにリグレッションテストをお願いしているのですが、データのマイグレーションなどバージョン間で互換性のない更新が起こることもあるため、一つ前のバージョンからアップデートしてテストをしています。
私のチームではリリースもBitriseを使ってPlayConsoleにアップロードしているのですが、その中でDeployGateにもリリースビルドのバイナリを配布するようにしています。
DeployGateにも過去のバージョンが蓄積するため、容易にバージョンアップのテストをすることができます。