FuelBuddy のカスタマーアプリは Progressive Web App として始まりました。Android では動作しましたが、iPhone では壁にぶつかりました。Apple は Web アプリを自社の WebKit エンジン上でしか動かせないようにしており、扱いも二流です。ホーム画面へのインストールが不安定、ストレージが限られ、信頼できるプッシュ通知もなく、しまいにはホーム画面の Web アプリを iOS から完全に削除する方向へ動きました。FuelBuddy にとってこれは、PWA では事実上 iPhone ユーザーに対応できず、彼らに届く信頼できる手段はネイティブアプリしかないことを意味しました。私は、アプリを React Native で書き直したエンジニアリングチームの一員でした。
取り組んだこと
- PWA から React Native へ: アプリをコンパイル済みの React Native アプリケーションとして書き直しました。モバイル UI に注力し、ラップされた Web ページのようではなく iOS と Android の両方でネイティブに感じられるようにしました。
- スタック全体をまたいだ作業: 主な担当はモバイルフロントエンドでしたが、ある機能に新しいデータエンドポイントが必要になったときは、Hasura の GraphQL エンジン上で CRUD API を自分で作りました。そうすることで、別チーム待ちで作業が止まることがありませんでした。
- チームでのリリース: 他の開発者やプロダクトオーナーと密に連携し、要件を完成した機能に落とし込み、リリースを止めずに進めました。
なぜ意味があったか
ネイティブ化により、FuelBuddy は頼れないプラットフォームから抜け出し、iPhone と Android の両方の顧客に対して単一で一貫したアプリを提供できるようになりました。スタック全体に手を広げたことは、チームがリリースのペースを維持する助けになりました。