導入から4年、サイバーエージェント Flutter開発の今

技術・デザイン

2022年11月16日(水)から18日(金)にわたって開催される、Flutterをメインに扱う技術カンファレンス「FlutterKaigi 2022」、サイバーエージェントはゴールドスポンサーとして協賛しています。当社では2018年からクロスプラットフォーム技術を採用し、2022年10月現在グループ全体で9つのプロダクトにおいてFlutterを導入しています。(参考:「サイバーエージェントにおける、モバイルアプリのクロスプラットフォームの取り組みについて」)
グループ全体でのクロスプラットフォーム開発を推進する三島木と、「WINTICKET」でFlutter開発を担う仙石に話を聞きました。

Profile

  • 三島木 一磨
    2010年新卒入社。「アメーバピグ」関連のプロダクトやスマートフォンアプリ、ソーシャルゲームの開発などを経験し、現在はAmeba関連サービスの開発や組織マネジメントを担う。CTO統括室クロスプラットフォーム開発担当。

  • 仙石 晃久
    2018年新卒入社。「Amebaブログ」の iOS アプリの開発に携わった後、2021年より
    競輪・オートレースの投票サービス「WINTICKET」のモバイルアプリエンジニアとして既存アプリのリプレイスを担当している。

Flutterエンジニアだからこその課題解決の楽しさ

── グループ全体でのFlutterの採用動向について教えてください。

三島木:2018年の導入当初(参考:「Flutter導入から見るクロスプラットフォーム開発のリアル」)はメディア事業での新規導入がメインで、ここ数年で複数プロダクトが運用フェーズに入り、ナレッジの共有や共通ライブラリの開発などが進んできました。最近ではAI事業においても、小売業界をはじめとするDX推進分野でのFlutter採用実績が増えてきている状況です。もちろんFlutterではなくKotlin Multiplatform(以下、KMP)の採用を行う事例もありますが、全体としては現状増加傾向ですね。また、モバイルアプリエンジニアを育成するための3ヶ月の特別プログラム「Flutter Academy」経由でも新たに数名エンジニアを採用するなど、Flutterに携わるエンジニアも引き続き増えています。

仙石:モバイルアプリエンジニアの新卒採用でも、Flutterでの開発経験がある人が増えてきていますね。

── Flutter開発に携わるエンジニアとして何が大切だと思いますか?

仙石:あくまで個人的な考えですが、近年ユーザーがプロダクトに対して求める品質がさらに高まっていると感じます。それに応えるべく、深く広い技術力がモバイルアプリエンジニアには重要だと思います。深さに関しては、まずはFlutterの高いスキルが必要不可欠です。例えばFlutterでネイティブアプリと同等のパフォーマンスを実現させるには、Flutterにおける描画の仕組みを理解した上で、大量に存在するFlutterのウィジェットを適切に組み合わせていかなければなりません。
また、広さに関してはFlutterのスキルのみならず、iOSやAndroidのOS機能に関する知識が求められます。Flutterの動向にのみ着目していると、例えば iOS16で登場したロック画面にウィジェットを表示できるLive Activity機能の開発を行わない等、受け身の開発スタイルになってしまい、他社プロダクトとの大きな差が生まれかねません。さらに、知識不足は時に担当アプリの運用に良くない影響を及ぼすこともあります。最近では、Android 13での通知権限やiOSのアカウント削除に関するレビューガイドラインの変更があり、対応が遅れることでアプリが意図した通りに動かなかったり、アプリの更新ができなくなってしまいます。

「WINTICKET」モバイルアプリチームでは、現在SREの取り組みを強化しているため、Webフロント、バックエンドの技術も参考になることが多いです。さらに、開発生産性を向上させるためのツール導入においては、クラウドサービスの知見も欠かせません。

── 4年以上使っているからこそわかるFlutterの魅力と、課題に感じている点があれば教えてください。

仙石:ワンソースで複数プラットフォームに応用できることが魅力です。当たり前のことですが、運用フェーズに入ったからこそ多くのメリットを実感しており、その中で大きく2つご紹介できればと思います。
1つはモバイルアプリの開発組織を運用しやすいことです。「コンウェイの法則」のように、iOSとAndroid で別のソースコードで開発していると組織も自然と2つに分かれてしまい、モバイルアプリチームとして方向性を定めることが難しい場合も多いかと思います。ワンソース、ワンチームで開発することで、コミュニケーションコストが削減され、開発生産性が高まると感じています。例えば、新たな施策を打つ際にも、iOSとAndroid双方について理解できるエンジニアがいることで、全体のコミュニケーション効率が格段に上がります。
もう1つは、技術戦略が策定しやすくなったことです。モバイルアプリチームとしてデザインシステムの導入やアクセシビリティの強化に取り組む際、各プラットフォームの状態をほぼ意識せずに進められるのは大きな利点です。共通戦略の下、1つのチームで開発を進めることで、効率的に事業をグロースさせられると考えています。また、Flutterを活用した複数プラットフォームへの展開が望めるため、技術戦略の幅も広がります。例えばデスクトップ向けアプリを担える人材の採用を待たずに、スピード感を持って開発に取り組め、事業を拡大できるメリットもあります。

課題としては、開発コミュニティに依存する点が挙げられるかと思います。FlutterというOSSを使っているため、新たな機能を追加してほしい際にはその障壁が高く、今後さらにFlutterが発展した暁にも、各OSでの新機能に追従していく必要があります。また、ネイティブアプリとのパフォーマンスの差をどう埋めていくのかという点も、今後課題になるのではないでしょうか。ただ、それらをどこまで解決できるかはFlutterエンジニアの楽しさでもあると同時に感じています。
 

サイバーエージェントが
ワンチームとなって励む共同開発

── クロスプラットフォーム開発に関する勉強会「Flutter × Kotlin Multiplatform by CyberAgent 」も主催していますね。

三島木:2020年12月から始めた「Flutter × Kotlin Multiplatform by CyberAgent 」は、約3ヶ月に1度の頻度で開催しており、これまで全7回実施しました。社内で得た知見を継続的に発信することでFlutterコミュニティに貢献し続けていければと考えています。社外向けの勉強会ではあるものの、社内へのナレッジ共有の役割も担っていると思います。

仙石:勉強会の資料は社内メンバーも見ていることが多いですね。Compose Multiplatformに関する発表を聞いた際には、異なるマルチプラットフォームがどのように実現されているか知ることができ、今後のFlutterの開発の参考になると感じました。

三島木:社内のナレッジ共有として最も活発なのは、Slackのチャンネルです。部署や子会社の垣根を超えてFlutterに携わるエンジニアが一同に参加するチャンネルもありますし、メディア事業所属のエンジニアが参加するチャンネルでは、頻繁にバグの共有が行われたり、相談し合う場として機能しています。毎週トピックスを展開している部署もありますし、先日、Flutterの大きなバージョンアップがあった際には、各プロダクトの担当者が細かな状況を共有し合いながら対応を検討していました。1社で多様なサービスを展開する当社ならではのメリットだと感じます。

仙石:その他には、FlutterのUIカタログ「Playbook」もナレッジ共有の事例として上手くいった取り組みの一つだと思います。「WINTICKET」をはじめ社内の様々なプロダクトに導入し、2021年4月にOSSとして公開しました。その後も「WINTICKET」メンバーを中心に新たな機能をコントリビュートしています。グループ全体でワンチームとなり、このような共同開発を今後も上手く機能させたいです。また、Flutterに関するブログも積極的に公開しており、特に2022年6月に公開した「WINTICKET が考えたモダンな Flutter アプリ設計を完全解説」は、著名ライブラリ作者も反応してくださったりと、ありがたいことに大きな反響をいただきました。日々ナレッジが蓄積しているので、今後も積極的に社外に発信していく予定です。

この記事をシェア

オフィシャルブログを見る

記事ランキング

WebパフォーマンスのExpertsが目指す 持続性の高いWeb開発

技術・デザイン

Page Top