【イベントレポート】ゼロから立ち上げるFlutter開発組織 - DMMとグロービスの実践事例
こんにちは!グロービス技術広報です。
近年、モバイルアプリ開発現場で注目されている「Flutter」。 手ごろな学習コスト、豊富なライブラリ、コード1つでといった利便性の高さなどの人気のウラで、 Flutterに関する情報量やFutterの知見共有の“つながり”が求められています。
そこで、DMMとグロービスの2社が、Flutterを用いたリアルな開発事例から得た「躓き」「発見」「学び」などをLT(前半)とパネルディスカッション(後半)を通じてシェアするイベントを開催しました!
今回はそのイベントのパネルディスカッション部分の一部をお届けします!
イベントの詳細はこちら↓
登壇者紹介
技術選定時、Flutterを選んだ理由
末永:Flutterを選ぶにあたって決め手になったことはなんですか?
堀尾:さきほどのLTでもお話ししましたが、エンジニアたちが興味を持っている技術だったというのは大きいですね。 ナノ単科はwebとアプリでリリースする必要があったので、1つのコードでどちらも実装できるFlutterはかなり魅力的でした。
末永:私はグロービスのCTOですが、実はこの技術選定には関わっていなくて(笑)。現場判断で進めていただいたところはありますね。 野瀬田さんはいかがでしょうか?
野瀬田:一番の決め手は、既存のiOSアプリでマテリアルデザインを採用していたので、Flutterを採用するとマテリアルデザインをそのまま踏襲してFlutterで共通化できて早くリリースできるから、というところですね。
末永:既存のアプリで活かせるところは活かしながら基盤のところは変えていく、という意思決定だったんですね。 その中で、今後また新しいアプリを作るとなったとき、Flutterを採用するか、でいうとどうでしょうか?
野瀬田:必ずFlutterを採用するかといわれるとそうではないかなと思いますね。Appleプラットフォームとの親和性がまだまだな部分がありますし、サービスの要件やプロジェクトの状況を見ながらの検討にはなるかなと思います。
単純にWebアプリをネイティブ化するとか、iOS/Android単体で作っているものを共通化するとか、そういったシンプルなパターンではFlutterを採用することもあると思います。都度、それぞれの選択肢を並べて検討したいですね。
末永:ありがとうございます。堀尾さんはいかがですか?
堀尾:野瀬田さんに完全に同意ですね。Flutterってまだまだできる範囲が狭いので、ハードウェアのセンサーを使うとか、OSの最新の機能を使うとか、そういうときは iOS,Android単体で作るほうがいいと思いますし、
シンプルなアプリケーションであるならFlutterを採用するんじゃないかなと思います。
末永:お二人のどちらのチームでも、アプリの要件を先に議論したうえで技術選定をするんですね。
<中略>
末永:ひとつSlidoで質問来てまして、「ネイティブアプリエンジニアからFlutter導入に対する反発はありましたか?あったらどう説得しましたか?」とのことです。こちらいかがでしょうか?
野瀬田:DMMでいうと、専任のプロパーが0人だったので反対する人が誰もいない状況で、かつ自分もFlutter未経験だったために自分が「やる」と言えばできる環境だったので、頑張りました(笑)。
堀尾:グロービスではアンケートを取ったのですが、結構みんなFlutterやりたい!と言っていて反対意見はなく、スムーズに導入できました。
末永:堀尾さんのチームはもともと経験者が何人かいたかと思いましたが、その方たちから反発はなかったですか?
堀尾:ネイティブアプリの経験がある人が数名いましたが、Flutterやりたいっていう意見でした。React Nativeも候補には挙がりましたが、でもFlutterのほうがいいじゃん、という雰囲気でしたね。
ゼロからの組織構築時にぶつかった壁とその乗り越え方
末永:先ほどのLTでは、お二人がフローの整備をイチから進めたことが理解できました。
振り返ってみて、一番の壁って何でしたか?また、どう乗り越えましたか?
野瀬田:自社にFlutterのエンジニアが誰もいなかったので、知見がない状態でスタートしたのが一番の壁だったなと思います。
最初は自分しかいないので自分が大量にインプットとアウトプットを繰り返して学習するしかなかったのですが、チームメンバーが増えるにつれて勉強会を開催したりしてナレッジを貯める体制を作っていくことで乗り越えていますね。
末永:すごくプレイングマネージャーっぽいですね。最初はコードをバリバリ書いていたんですか?
野瀬田:最初もそうなんですけど、実は今でも自分が一番コードを書いている状態で(笑)。最初は自分しかいないので、採用も企画も全部自分でやってましたね。
末永:スタートアップみたいな動き方をされているんですね。 堀尾さんは一番の壁とその乗り越え方、いかがですか?
堀尾:Flutter Webって情報もなければ経験者もいないので、その状態から開発を進めないといけないところが一番大きな壁だったなと思います。
開発当初はプロトタイプをガンガン作って本当に動くのか?を検証していって、できないところは代替案を使ってなんとか完成まで進めていったところがありますね。
末永:プロトタイプで検証したあとの壁はありましたか?
堀尾:UIまわりの問題が結構ありましたね。ライブラリが全然対応してないという問題が発覚して、じゃあどうやって別の方法で実現しようかっていうのをデザイナーさんとも協議しながら進めていきました。
末永:技術選定をしたのが2021年ごろなので古い情報かなと思うのですが、最近もそういった「こんな問題もあるんだ」といったようなことはあったりするんでしょうか?
堀尾:最近はそんなにないですね。デザイン通りに作れているっていうのもあるんですけど、デザイナーさんがすごく理解してくれていて、「こういうのは難しいかも」というものは別のやり方で実現できるようにするなどしてくれているのかもしれないです。
末永:デザイナーさんとの協力も結構大切かもしれないですね。ありがとうございます。
逆に、「これはやっててよかったな」ということはありますか?
野瀬田:今回はリニューアルプロジェクトだったのですでにリリースされているアプリがあったのですが、
新たにジョインしたチームメンバーに最初のタスクとして既存の iOS のアプリのすべての画面を確認してどういう通信が走っているのか?を確認してもらうというオンボーディングをやったのはよかったかなと思います。
末永:計画力がすごいですね。計画をするときに意識していることはありますか?
野瀬田:それもバランスかなと思ってて。実際計画を立てているときも、ガントチャートとしてはエピック単位でしか作ってなくて、それよりも詳細な部分はガントチャートには起こしてないです。
ただ、抜け漏れがないようにするとか、個別最適にならないように全体を俯瞰するとか、そういうところは意識して計画しています。
計画において大切なのは、自分が注力しているところ以外に抜け漏れがないかを網羅的に見ることかなと思います。
末永:壁にぶつかるというのが途中途中発生するとなかなか緻密なガントチャートを作成するのは難しそうですもんね。ありがとうございます。
堀尾さんはいかがでしょうか?
堀尾:野瀬田さんのオンボーディングの話に繋がるんですが、ナノ単科チームには「デッチー」という制度があります。丁稚奉公が由来なんですが、それみたいに新人がベテランの方についてオンボーディングするというものです。
それが結構うまくワークしたかなと思っていて、作り始めて時間が経ったプロダクトは全容を理解するのが難しいと思うので、ベテランのエンジニアに教えてもらってオンボーディングする、というのがうまくいったかなと思います。
<中略>
今後の展望
末永:今まで体制を作ってきたかなと思いますが、このチームをこれからどうしていきたいか、どういうチャレンジをしていきたいか教えていただけますか?
堀尾:開発を始めて3年になり技術的負債が溜まってきているので、それを解消できるようなチームが今後必要になるかなと思います。
今まで作ったものの改修がしづらくなってきていて、例えば今はルーティングのライブラリで routemaster を使っているのですが、go_router に変えたいときに routemaster の設定が複雑になっていて剥がせない、などが発生しています。
リファクタリング等で、改修しやすいプロダクトにしていきたいです。
末永:3年経ちますもんね、あとはプラットフォームが進化していくと負債化しやすくなりますもんね。
野瀬田さんはいかがでしょうか?
野瀬田:自律的な活動ができるようなチームにしたいと思っています。
勉強会や振り返りで改善の仕組みは出来ていますが、プロセスとか体制とか、どういったところに課題があるのかを検知してそれを改善していくというのを抽象度高く見れる人とかチームはまだ形成できていないので、
今まで私がやってきた計画や課題設定をチームに委譲してチームで運営できるように目指してやっていきたいと思っています。
末永:今は野瀬田さんがガリガリコード書いているのを、いかにチームでできるようにするかというチャレンジのような気がしますね。ありがとうございます。
これからFlutterを使いたいと思っている方やそんな組織を作っていきたいと思っている方に対してメッセージやコメントをいただけますか?
野瀬田:そうですね、組織づくりに関しては世間一般で確実にやったほうがいいことはなるべく早く取り組んでおくことと、悩むポイントがあればいろんな情報をキャッチアップしてそのうえで判断できるようにしておくこと。
あとは、全体最適はもちろん大事なんですけど、時間軸も考えて暫定対応が必要なら先に対応してあとで全体最適させるとか、そういった使い分けを意識して計画やマネジメントをやっていけるといいのかなと思っています。
末永:やはり計画が重要ですね。堀尾さんはいかがですか?
堀尾:Flutterを触ってみて、すごく実装しやすいですし管理も楽だったりといった大きなメリットを享受しているんですが、
皆さんが利用する前にはまず「自分たちが何を作りたくてどういう要件を満たさないといけないのか」が一番大事なポイントだと思うので、Flutterや選ぼうとしている技術がそれにどれだけマッチしているのかを精査したうえで採用すべきだと思います。
あとはFlutter人材は数年前に比べれば採用ハードルが下がってきているので、このタイミングでFlutterを採用するのはアリだと思います。なのでぜひFlutter使ってみてください。
末永:Flutterから始まるんじゃなくて、何を実現したいのかから始めるということですね。
あとはFlutter人材が増えているということですが、数年前に比べると情報が出ているということもありますが新しいことに向き合うマインドを持つということがエンジニアにも求められているのかもしれないですね。
お二人とも、ありがとうございました。
<中略>
以上はイベントの一部です。
LTや続きが気になった方はぜひアーカイブをご覧ください。
各社採用情報
<合同会社DMM.com>
会員数4,507万人(2024年2月時点)を誇る総合サービスサイト「DMM.com」を運営しています。 現在、動画配信・電子書籍・3Dプリント・web3・AIなど60以上の事業を幅広く展開し、コーポレートメッセージ「誰もが見たくなる未来。」とともに、新しい技術・サービスを追及しながら、領域を問わず挑戦を続けています。 採用情報はこちら
<株式会社グロービス>
グロービスでEdTech領域に注力しているグロービス・デジタル・プラットフォーム部門では、「日本発、世界をリードするEdTechカンパニーになる」をビジョンに掲げ、「学びの未来をつくり出し、人の可能性を広げていく」学習サービスを複数展開しています。
現在グロービスではエンジニアを中心としたメンバー募集を積極的に行なっています。 これから開発組織を一緒につくっていきたい方、教育事業に挑戦したい方ぜひご応募お待ちしております!
ご応募はこちらから!