Flutterがもたらした、Webサービス企業のアプリローンチと開発体験
はじめまして、アプリエンジニアの開沼です。
先日公開された「育休取得経験者のインタビュー記事」では「開発部 Kさん」として出演させていただきました。
記事内でも触れていますが2023年4月にジョインし、クリフォアアプリの開発に携わっています。半年間の育休を頂き、2024年4月から職務復帰しました。今は育児と仕事の両立に向けて日々奮闘していますが、詳しくはインタビュー記事を読んでいただければと思います。
今回はWebサービスしか作ってなかった会社が、アプリの技術としてFlutterを選定し、どのような開発体験がもたらされたについてお話ししたいと思います。
クリフォアアプリとは
Linc'wellでは元々Webサービスでのプロダクト開発をしていましたがアプリの開発は未経験で、初めてiOS/Androidでのアプリ開発を行いました。
それが2023年にローンチしたクリフォアアプリになります。
クリフォアアプリでは、Linc'wellの提供するオンライン診療/対面診療予約機能を通じて、支援先である医療機関クリニックフォアの医療サービス(診療予約、処方薬配送)との連携で診察を受けられる他、
Linc'wellが運営するECサイト上のOTC医薬品等のヘルスケア製品の購入や服薬リマインダーでの服薬管理機能、
後述する体重管理サポートの機能を提供しています。
アプリは2023年5月にiOS版、同年6月にはAndroid版に初期リリースが行われました。
僕がジョインしたのはまさにファーストリリースを控えた最終調整の真っ只中で、慌ただしかったのを覚えています。
開発初期のFlutter採用の経緯
Linc'wellとして初のアプリ開発のための技術選定を実施し、開発フレームワークとしてFlutter / Dartが採用されました。
こちらは技術選定をリードした佐々木さんからヒアリングしました!
クリフォアアプリの企画段階から、単にMVPを目指すのではなく、持続的に開発しやすいかどうかを一番大事にしていました。
具体的には、以下3つの観点で技術選定を行いました。
アプリエンジニアのリソースが潤沢でないため、クロスプラットフォーム開発ができること
複雑なアプリ特有の要件に対応するためにも、アプリエンジニアを採用しやすいこと
言語、フレームワークの開発が活発でコミュニティの規模も大きいこと
GitHubでの開発の活発さの確認はもちろん、求人媒体でクロスプラットフォームのフレームワークごとのエンジニア数を調べたり、日本で行われている勉強会の数なども確認し、上記の観点から最終的にFlutterをフレームワークとして採用しました。
実際に開発を初めて良かったと感じたことは大きく3点です。
UI実装はReactに似てて宣言的でシンプル
Riverpodは可読性が高く、状態管理を容易に実装できた
開発環境の構築も手軽だし、開発体験も全体的に良かった
フロントエンド開発経験のあるエンジニアにとっては、親和性を全体的に高く感じられるフレームワークだと感じました。
また、Web開発の経験も活かせるDart言語の型安全な実装方法や、Reactと同じように宣言的なUIコンポーネントを積み重ねていく実装方法を採用することで開発効率は高かったと思います。
課題に感じた点
一方でFlutterを選択して感じた難しさや注意点についても、合わせて紹介したいと思います。
これはFlutterに限った話ではありませんが比較的新しいフレームワークを採用するとき、特定の問題に対する解決策を探すのに時間がかかるという点は、覚悟しなければいけない課題です。
問題が発生した時、解決策や実装例を探しても世の中に十分に蓄積されていない可能性が高いので、自分たちで解決策を作る必要が発生することもあります。
またエンジニアの採用に関しては、どうしてもプラットフォーム(Android / iOS)ネイティブの開発者の母数に数が劣るので、比較的難航するだろうと想定されますし、筆者がFlutter経験のある正社員アプリエンジニア1号だった事を考えると実際に険しい道のりであったのだろうと感じます。
筆者観点でのFlutter開発のメリット
筆者としても、FlutterがサポートしているHot reloadは開発体験を何倍にも引き上げてくれていると感じています。
実機での動作確認を手元で行う場合、コード修正がオンタイムで反映される体験は他には代え難いと感じます。
また、アプリ開発メンバとしては業務委託の方を含めて3〜4人の体制が続いていますが、基本的に毎スプリント(執筆時点で2週間で1スプリント)に両方のOSでのリリースを実現出来ています。
画面デザインもOSごとに定義する必要がなく、UIを共通化出来るので「開発→リリース」のペースを高頻度で繰り返すことが可能です。
これはクロスプラットフォーム最大の強みである、ソースコードの共通実装がもたらすメリットを享受出来ていると思います。
ローンチ時から提供している診療予約機能や、ビデオチャット使ったオンライン診療の機能がデバイスのパフォーマンスに左右されにくいことも、Flutterとの相性の良さを感じているポイントです。
もともとWebサービスで提供していたこともあり、パフォーマンスチューニングが必要になるような問題は今のところ発生していません。それよりも新機能開発やUI改善に注力出来ていると感じています。
高頻度のリリースができたことで、友達紹介制度という新画面をスピーディかつ改善しながらリリースすることが出来ました。
「アプリでは未提供」といった機能差分を減らすことが出来たので、嬉しく思っています。
これから
現状のクリフォアアプリは多くのコア機能をWebViewで提供している状態なので、よりFlutterで提供出来る画面を増やして、ネイティブならではのリッチなアプリ体験をユーザーに提供したいと考えています!
また、クリフォアアプリは2023年秋に「OS搭載のヘルスケアアプリとの連携機能」をリリースしています。
iOS / Android に入力された体重の情報から「減量の目標達成にクリフォアアプリが伴走する」という機能を提供することが出来ました。こういった
「Webサービスよりもユーザーに近いからこそ出来る、アプリならではのサービスリリース」
も引き続き提供していければと思います。
Linc’wellでは共にクリフォアアプリで「全ての人々に最高の医療体験の提供」をするというVisionに興味を持たれたFlutterエンジニアを募集中です!
少しでも話を聞いてみたいな、と思ったかたは 採用サイト へ!