Flutterで地域金融機関のバンキングアプリの開発に挑戦している話
こんにちは!マネーフォワード エックスカンパニー公式noteです。
エックスカンパニーでは様々なお金の悩みを解決するサービスを提供しています。特に今春リリース予定の個人向けモバイルアプリ『BANK APP』はビジョン達成のために重要なサービスであるので特に開発に力を入れており、iOSとAndroidどちらもいち早く届けるためにクロスプラットフォームフレームワークのFlutterを採用しています。
そこで今回は、Flutterを採用した背景や実際に導入してみてどうだったか、開発リーダーの阿彦さんにお話を伺ってきました!
そもそもマネーフォワードエックスカンパニーって何してるの?という方はこちらもご覧ください。
登場人物
チームの役割について
サービス開発部バンキングアプリグループでは個人向け『BANK APP』と行員向け『BANK 顧客サポート』の開発・運用を担当しています。様々な技術を組み合わせ、お客様にとって使いやすく、また安心・安全なサービスをいち早くとどけることがミッションです。
BANK APPについて
『BANK APP』という地域金融機関とそのお客様向けのサービスを開発しています。地域金融機関のお客さまのお金の繋がりをサポートするとともに、地域金融機関のDXを推進します。開発チームの想いや技術スタック、開発環境はこちらからご覧いただけます。
なぜFlutterを採用したのか
2年ぐらい前にエックスカンパニー内部のモバイルエンジニア同士の会話でFlutterが話題に出てくるようになってきたとき、オフィスの下の書店で参考書を買って、開発チームのみんなで見ながら「こんなことできるんだね」と話してました。当時は不安定と言われている記事が多く、業務で使うにはまだ難しいなぁという印象でした。
少ししてからBANK APPの開発が始まったんですが、ざっくり見積もっただけでもめちゃくちゃ工数がぼーん!と出てきて。これを作るとしたらiOS・Androidエンジニアだけで何人必要になるのか、どうしても人手不足になりそうだなと思いました。どうにかしたいと話している中で、ワンソースでiOSもAndroidどちらも作れるフレームワークの選択肢がでてきました。
似ているフレームワークのメリット・デメリットをみんなで比較し、メリット・デメリット両面で突出したものがなくなっていたので、今ならFlutterを試せるんじゃないか?となり、最終的には「Flutterでできたら面白そう」という気持ちが勝ち、採用しました。
Flutterを実際に使ってみて
コミュニケーションコスト・開発工数の削減に
実際に業務で使ってみてすごい楽だなと感じた点はコミュニケーションコストの削減です。今まではiOSとAndroidそれぞれのエンジニアで作ると同じ仕様でも違うものが出来上がってくることがありました。
その場合、都度関係者を巻き込みながらその差のままいくのか、片方に合わせるのか、または両方修正するのかといったやりとりは結構ありがちですが、こういったやり取りをBANK APPではすることなく現在まで開発を進めることができてるはのはすごく良いと感じています。
もちろん開発そのものもだいぶ楽になっています。他のフレームワークはネイティブの描画にOSごとの差が出てしまうことがあるんですが、Flutterは描画もOS共通のエンジンを使っていて差が無くなり、描画周りの実装工数も削減できています。
バージョンの更新速度に対応する難しさ
覚悟していたよりも想像以上に大変だったのが、OSやFlutterのバージョン変化の激しさです。FlutterはDartという言語で開発されていて、それぞれでバージョンがあがっていくので対応しないといけないんです。でも無闇に取り込むと不具合の元になったりするので、その辺のハンドリングは想像以上に大変だなと実感しています。
最新にしているつもりでも、2週間に一回くらいバージョンアップが走っているので、2ヶ月くらい経つとちょっと古くなるんですよね。最新にしたいけどまだできていないっていう。
最近(2023年4月現在)もバージョンアップの対応をしたのですが、描画ライブラリが今後刷新されるという情報もあり、今は3.7系統なんですけど、4系統になった時はまたガラッと変わるのかなと予想しています。
キャッチアップの量が3倍に
他にも大変だったのは各プラットフォームの英語でのキャッチアップです。第一発信はまず英語なので、なんとか翻訳しながら、ここは変わっているのかもしれない、と模索しながら最新の情報を追っています。それに加えてiOSもAndroidも両方追っていかないといけないので、Flutterだからこそというか、クロスプラットフォームだから苦労するポイントかもしれないですね。
最近だと、Androidの例で、ユーザーの退会をWebからもできるようにしないといけないといったルールが追加されました。これに対応しないとリリース後にGoogle Playからリジェクトされてしまうので、特にルールの変更点のキャッチアップはiOSとAndroid両方に対応しないといけないのが難しいところです。
新しい技術だからこそみんなで学び合っている
マネーフォワード全体でもFlutterエンジニアはまだまだ少ないのが現状です。自分だけで情報をキャッチアップしていくのは限界がありますが、iOSやAndroidの情報を共有するSlackチャンネルがあって、社内のいろいろなメンバーが発信してくれるので、すごく助けられています。
Flutterのチャンネルで自分も定期的に発信していたところ、「Flutterでなんかやっている人もいるらしいぞ」と嗅ぎつけられて社内エンジニア向けの勉強会で発表することもありました(笑)
実際の開発では、自分で色々と調べて実装も行なうのですが、チームメンバーにレビューをしてもらうことで自分の知らない実装方法なども共有し合うことができていて、とても勉強になっています。
Flutterの今後の活用について
エックスカンパニーでは新しいサービスを作ることが多いので、新規開発するときのファーストチョイスになったらなと。アプリを作るにはFlutterだよねとなるくらい知見をためていきたいと考えています。
BANK APPだけでもやりたいことは幅広くいっぱいあるので、今はまずリリースすることに注力していますが、これからはFlutterのメリットを活かしながらやりたいことにどんどん取り組んでいきたいですね。
阿彦さん、ありがとうございました!
エックスカンパニーのエンジニア組織についてもっと知りたいという方は、こちらの記事もご覧ください。
マネーフォワード エックスカンパニーでは一緒に働いていただけるエンジニアを募集しています。この記事を読んでもっと詳しいことが聞きたくなった!という方は是非話を聞きに来てください。
まずはカジュアル面談から進めることもできるのでぜひお気軽に!