見出し画像

PickGo for Partner ネイティブアプリをFlutterへリプレイス

はじめに


こんにちは! 今回はCBcloudが運営するPickGo for PartnerのiOS/Android向けアプリをFlutterにフルリプレイスした話をご紹介します。

画像1

https://pickgo.town/partner/


IOSアプリ
Androidアプリ


なぜFlutterにフルリプレイスしたのか?

PickGo for Partnerは2015年にリリースされたアプリです。
元々はSwift/Kotlinで作られていましたが下記の理由からFlutterをすることになりました

・iOS/Androidの両OS提供していく上で、求められる開発スピードに合わない
・サービス上の方向性として、即時性を求められることが多くWebViewの修正だけでは困難な場合がある
・Swift/Kotlinに点在する技術的負債の改善

iOS/Androidの両OS提供していく上で、求められる開発スピードに合わない

PickGo for Partnerでは同時にiOS/Androidアプリの提供を行なっているいましたが、両リリースの時期を合わせようと思うとデザインの違い/開発環境の違い/言語環境の違いを埋める必要があり、思うような開発スピードが出せませんでした。

サービスの性質上、即時性を求められることが多くWebViewの修正だけでは困難な場合がある

これは書いた通りなのですが、サービスの性質上即時性を求められる機会が多くあります。この場合にWebViewで即時性を実現していくことはどうしても難しいためFlutterによるリプレイスをしていくことにしました

Swift/Kotlinに点在する技術的負債の改善

前述の通りPickGo for Partnerアプリは2015年にリリースされたアプリであり、紆余曲折あった仕様やそれを実現するコードなどの技術的負債がありました。今回のリプレイスを行うことで、負債を管理しやすくし、開発スピードを上げていく狙いがありました。

移行の進め方

まず最初にプロトタイプを作成しそこからリプレイスまでに必要な項目を埋めていくようにしました。

PickGo for Partnerではネイティブ部分は少なくほぼWebViewで作成されていたのでまずはログインとWebViewが見えるまでの部分のみ作成しました

また、基本構成はMVVM(のような何か)を目指しつつChangeNotifier + Providerの状態管理構成を採用し、APIにはretrofit + freezedを採用し開発しました。

画像2



移行前の準備

検証方法の容易性を上げる

移行前にQAチームによるQAを実施したり、社員や後述のクローズドテストを実施していく上で検証の容易性を上げていくことが必要でした。

そこでcodemagicを導入し、これまではアプリエンジニアにビルドをしてもらわないとできなかった検証を容易にすることで、品質検証の容易性を向上させました。


クローズドテスト

本格的に移行する前に実際のパートナーさんに2週間程度利用していただいて、検証に協力いただきました。具体的には両OSのクローズドテストの仕組みを活用し、本リリースまでにできる限りのバグを潰しました


今後の展望

ネイティブを生かした機能改善
現在はリプレイスしただけなので、パートナーさんへのメリットを提供できてない状態ですが、今回のリプレイスによってその準備が整ったので、これを生かした機能の拡充を目指していきます

Flutterらしい状態管理手法の導入(riverpod)

Flutterの導入が浅いこともあり、状態管理の手法が確立されていなかったので、MVVMのような管理を採用しており画面ごとに処理が冗長になる危険性があります。まだネイティブの範囲が少ないので許容できる範囲だと思いますが、今後の拡張性を考えて場合にRiverpod を導入し


最後に

今回のリプレイスはもちろん私だけでなく、チームメンバーがコミットメントして実現できました
今後もよりアプリそしてシステム開発を進めていくためにエンジニア募集中です👨‍💻

ぜひ気軽に応募してください〜







この記事が気に入ったらサポートをしてみませんか?