Flutterによるクロスプラットフォーム開発が一般化していく理由とは
ではなぜ、ゆめみはFlutterを活用したクロスプラットフォームでのアプリ開発が一般化されると考えたのか。
「ネイティブアプリ開発だとiOSやAndroidなどプラットフォームごとにコードを書く必要があるが、Flutterだと1ソースで、Android、iOS対応はもちろん、Webやデスクトップ対応も可能となるため、Flutterの習熟度にもよるが開発工数を半分近く減らすことも不可能ではない。どのような案件でも仮に同じ品質なら、工数がかからないに越したことはない。だからクロスプラットフォームは魅力的に映る。クロスプラットフォームフレームワークといってもXamarinやReact Nativeなどいろいろあるが、Flutterはそれらの中でも開発体験が良い という評価を受けている。だからFlutterが一般化していくと考えたのだと思います」(小野氏)
また室山氏は「これまでも、開発者に限らずプロダクトオーナーも含め、プラットフォームごとに開発するのではなく、一つのコードで複数プラットフォーム向けにアプリを提供できないか挑戦してきました。というのも、モバイルアプリユーザーの目が肥え、顧客の要求レベルも高まっているものの、その一方で開発費用が大きくなるわけではありません。費用対効果が重視される傾向にある中で、クロスプラットフォームフレームワークに注目が集まるのは自然な流れだと思います。またクロスプラットフォームフレームワークを採用することで、複数プラットフォーム向けにおける開発体験が統一されます」(室山氏)
Flutterを使う最大のメリットである「開発体験の良さ」には具体的にどんな特徴があるのか。
「ホットリロード機能はその代表例です」と小野氏。ホットリロード機能とはコードの変更を瞬時にUIや動作に反映させるというもの。一般的にiOSやAndroidネイティブアプリ開発では、コーディング後にビルドして実行し、UIや動作を確認する。その確認までの時間が「プロジェクト規模によるが、短いもので数十秒、長いものだと数分かかることもある」と小野氏は言う。だが、Flutterであれば、コードを変更してホットリロードをかけると、数秒程度で反映されるのだ。「ネイティブアプリの開発に比べ、開発と確認のサイクルが非常にスムーズになります。私の場合、UIを2~3倍の効率で組むことができました」(小野氏)
またFlutterは他のクロスプラットフォームフレームワークに比べ、ビルド周りのトラブルが少ないのも特徴だという。「Flutterを使うことで、余計な時間を使うことがなくなり、開発のストレスが少ないです」(小野氏)
FlutterはOSSなので、コードを書いているときにその動作がよく分からなくても、ソースを見れば理解が進む。例えばiOSのネイティブアプリ開発に欠かせないUIKitフレームワークだとブラックボックス化しており、うまく動かないときに勘に頼るような工夫が必要になることもある。Flutterではそういうことが発生しづらい、自信を持って確実な処理が書けるという。
小野氏のこの意見に室山氏も大きくうなずく。「モバイルアプリの開発では、UIの実装は避けて通ることはできません。ホットリロード機能の提供により、FlutterはUIの構築が非常にやりやすい。Androidの世界でもインスタントランという、似たような機能を導入しようとしたが、動作がバギー(バグが多い)で開発体験が悪く、使われなくなりました。そのほかにも、Flutterの開発体験の良さに貢献しているのが、公式ドキュメントの充実度。Flutterは公式ドキュメントを読めば、理解できるという信頼感があります。また開発コミュニティも活発に活動しており。そこで提案され、議論された内容が本体に取り入れられるというエコシステムもできています」(室山氏)
Flutterで開発をしていて、「仕様的にできないこと、苦手なことはほとんどない」と小野氏。ネイティブの処理をする大抵のプラグインはすでに用意されており、たとえなくても、自分でネイティブの処理を書き、Flutterのコードとつなげればなんとかなるという。「多少手間がかかることがあっても、Flutterのせいで開発が行き詰まるような事態に陥ることはありません」(小野氏)
コスト面でも優れるFlutter、それでも導入が進んでいないワケ
Flutterで得られるメリットは、このような技術面だけではない。クロスプラットフォーム対応による、さまざまな観点での工数削減というビジネス面でのメリットもある。一つのコードでiOS、Android双方のアプリが開発できるというコストメリットに加え、教育コストも「Flutterの開発言語であるDartは癖がなく馴染みやすいので、容易に習得できると思います」(小野氏)と言うように、人材育成にかかるコストもKotlinやSwiftよりも低減できるのではと指摘する。また室山氏は「Dartであれば、Javaエンジニアからの移行は比較的容易にできるはず」と言う。「Flutterは人的リソースが有効に活用できる技術だと思います」(室山氏)
iOS、Androidのネイティブアプリ開発者が移行する場合、「多少、戸惑いがあると思う」と小野氏、室山氏は口を揃える。Dartは習得が簡単と話したが、Swift、Kotlinと比べると機能面ではやや劣るからだ。とはいえ「Flutterの成長に伴い、Dartも活発な進化を遂げている」と小野氏。例えばnull安全はその一つで、小野氏が触れた当初はそこに不満があったが、今は対応されている。「唯一、不満点があるとすれば、Kotlinのデータクラスのような仕組みがないこと。それが備われば、元々愛用していたSwiftと比べてトータルで実用上不便に感じることは個人的にはほとんどないレベルです」(小野氏)
技術的、ビジネス的にもメリットのあるFlutterに対する関心は高まっているものの、導入がスムーズに進んでいないこともある。その背景にあるのが「Flutterに精通したモバイルエンジニアが少ないこと」と小野氏は言う。使ったことのある開発者は増えているが、本格的なプロダクション経験を積んだFlutterエンジニアはあまり市場にいないからだ。室山氏も「モバイルエンジニアは自社プロダクトを抱えている有力な企業に属しているケースが多い印象。だから習熟したFlutterエンジニアを探すのはハードルが高い。Flutterは学習ハードルが低い技術なので、社内でできる人を増やしていくアプローチがふさわしい。そういう企業を支援するために、当社はFlutterを活用した内製化支援サービスの提供を開始したのです」(室山氏)
内製化支援サービスでFlutter開発を自走できる組織に
同社の内製化支援サービスは次のようなメニューが用意されている。
- モバイルアプリ技術選定支援(Flutterを採用するかどうか含めたモバイルアプリ開発における技術選定などの支援)
- デザイン支援(「人間中心設計」の考え方を取り入れたサービス設計から、Flutterに即したUIデザインの作成まで幅広く支援)
- 開発内製化体制(Flutterエンジニアによる開発の内製化支援。部分的にネイティブアプリの技術が必要な場合にも対応)
- グロースハック(データ分析を行った上で、グロースハックの支援)
「このサービスはお客さま内でFlutterを活用した開発が自走できるようにするのがゴールです。例えば開発内製化体制というサービスでは、新規アプリ開発の立ち上げを支援するだけではなく、既存アプリの開発支援の場合は、既存資産を生かしてFlutterに移行していくことを支援します」(室山氏)
開発体制内製化の支援でも、Flutterに習熟したエンジニアがいる/いないでアプローチは変わる。まず、Flutterに習熟したエンジニアがいない企業には「2つのアプローチがある」(小野氏)という。一つはプロトタイプ、もしくはリスクの低い社内アプリから採用し始める方法。「実際に作りながら、学んでいくという方法です」(小野氏)
2つ目は工数を本来の1.5~2倍確保して取り組む方法。「前半は学習フェーズと割り切り、壊すことになっても良い前提で作ります。勘所をつかんだところで、必要に応じて作り直すのです。いずれにしてもいきなり本格的なプロダクション開発に採用してしまうと、途中で破綻したり、バグだらけで収拾がつかなくなったり、うまくいかなくなりがちです」(小野氏)
習熟したエンジニアがいる場合は、「その人にプロジェクトをリードしてもらい、さらにゆめみがサポートすることで、他のメンバーはプロジェクトを進めながらFlutterを効率良く習得していけると思います」と小野氏。
今後、ますますモバイルアプリ市場は活性化していく。異なるデバイスのアプリを一つのコードで開発できるクロスプラットフォームフレームワークの活用が加速していくことは間違いない。そしてFlutterは数あるクロスプラットフォームフレームワークの大本命ともいえる。
「ゆめみの内製化支援サービスを通して関わる開発者のFlutter習熟度を高め、私がサポートする余地のないぐらいの人材を多数、育成していきたいですね。そのためには私自身もさらにFlutterの習熟度を高め、知見提供に貢献したいと思います」(小野氏)
「Flutterの採用を検討する企業はこれから増えていくと思います。ゆめみもFlutterを推していく。その結果、Flutter界隈、ひいてはモバイルアプリ界隈が盛り上がり、モバイルアプリ市場が拡大することで、関わる全員にとってハッピーな未来を迎える。内製化支援サービスでそんな未来に導きたいと思います」(室山氏)