PairsエンゲージAndroid版リリースまでの話とこれからやりたいこと
こんにちは、@futaboooです。
今回は5月のGW直前あたりから約3ヶ月ほどの開発期間を経て8月末にリリースしたPairsエンゲージAndroid版についてリリースまでの話とこれからやりたいことについてご紹介します。
Pairsエンゲージとは
「Pairsエンゲージ」は、累計会員数1000万!利用率NO.1のマッチングサービス、「ペアーズ」がつくった「結婚コンシェルジュアプリ」です!
◆ 結婚コンシェルジュアプリとは?
1年以内に結婚したい人のための、まったく新しい手軽な婚活体験を提供するアプリです。
マッチングサービスの手頃な価格、たくさんの人に出会える、手軽に使えるといった部分と、結婚相談所の真剣な人だけ、プロセスが確立している、サポートがあるといった部分をかけ合わせたサービスがPairsエンゲージです。
新規Androidアプリ開発時の技術選定について
ひとことで書くと自分が使いたい技術を選びました。
言語
100%Kotlinです。
設計
全体の設計はLayered architecture(like Clean Architecture) + MVVM + Fluxになっています。Android JetpackのData Binding,LiveData,ViewModelを使い、Fluxの単一方向データフローを用いてユーザーのアクション結果をViewModelに反映するような実装をしています。実装するクラスは増えてしまいますが、実装する上で何をどこに書けばいいのかわかりやすくしたいと考えていました。
主要ライブラリー
設計のところでも少し触れていますがAndroid Jetpackをメインで使っています。他に使っている主要なものは下記です。
- Lifecycles
- Navigation
- Room
- CameraX
- Dagger2
- Moshi
- Kotshi
- groupie
- Glide
- Hyperion
CI/CD
BitriseとFastlaneを使ってテストアプリ配信 やリリース作業を行っています。どちらも社内で知見があり、かつPairsエンゲージチームにはiOS開発メインのメンバーの方が多いためAndroidへのコンバートもしやすいようにFastlaneの導入を決めました。
また社内のテストに関してはFabric BetaとInternal App Sharingを積極的に使いテストを行っています。すみ分けとしてはAndroid App Bundleでの動作を見たいときにInternal App Sharingを使い、それ以外ではFabric Betaを使っています。
開発プロセス
タスク管理にはJiraとGitHub Projects、ドキュメントはConfluenceを使っていました。JiraとGitHub Projectsの並行運用になっていたのはJiraの閲覧権限が無いメンバーが居たためです。
GitHub Projectsの運用を初めてやりましたが、Organizationをまたいで作れたりIssueが作られたときに自動でProjectsへ追加することやIssueをcloseしたときに自動でステージの変更をすることなどもできるのでなかなか使えました。
プロダクト全体の流れとしてはやることと優先順位をPOとチームで決定した後はカンバンでの状況確認を毎日やるという形を取っていました。
これからやりたいこと
Redux化
Pairsエンゲージでは自分と相手の状態によって複数の状態を持つことが多くあります。現状はFluxのStoreの中にApplicationScopeでSingletonとなるようなものを作ることで擬似的にsingle source of truthっぽいことを実現している状況です。また複雑な状態の変化に対してテストを十分に書けている状況でもないので、テストを書きやすいコードベースにするためにもRedux化を検討しています。
kotlin-dsl導入
型の恩恵、AndroidStudioのコード補完の恩恵を受けるようにしたいです。
各種自動化
JiraとGitHub Projectの同期はZapierを導入して自動化しようとしています。他にもAndroidJetpackの最新バージョンを確認するようなSchedule BuildをBitriseでやりたいと思います。
おわりに
怒涛の3ヶ月間でリリースまで来ましたが、サービスとしてはこれからが本番ということでもあります。よい体験をユーザーさんにも開発者にも届けられるように引き続きやっていきたいと思います。