ブログ週間3日目の本日は、2023年11月10日(金)に行われた、 FlutterKaigi2023 に参加したのでレポートいたします!
YOUTRUSTはゴールドスポンサーとして協賛させていただきました!会場は表参道駅近くのナビタイムジャパンさんで、今回は3回目の開催ではじめてのオフライン会場とのことでした。セッションは2レーンあり、各発表は40分で統一されていました。
発表について
基調講演(Flutter's 9 years journey)
Flutterの歴史について振り返る基調講演でした!
後半は自分もリアルタイムにニュースで聞いてきた内容で懐かしい気持ちになりつつ、Flutter の前身である Sky の話などは、 ブログ記事でかいつまんだ知識ぐらいしかなかったので、Googleの人から語られていて本当にそうだったんだ、、!となりました。
出前館におけるFlutterの現在とこれから
出前館さんでは、React Native、Kotlin Multiplatform、Xamarin、 Flutter とクロスプラットフォームツールを使ったアプリをすべてプロダクションで採用したことがあるということで、個人的にとても興味のある発表でした。
2020年ごろ、出前館さんではエンドユーザー向けアプリ(React Native)のほかに加盟店向けアプリ(Xamarin)、ドライバー向けアプリReact Native)を運用していたそうなのですが、それらのアプリをすべてFlutterで置き換えたそうです。
Flutterで置き換えるにあたって、どのようなスケジュールで既存アプリとの並列開発を行なったか、チームビルディングはどうしたか、テストのスコアリング、リグレッションテストはどのような方針で行うかなどのトピックにも触れられていました。
DartによるBFF構築・運用 〜Dart Frog×Melos〜
クライアントとバックエンドで同じモデル(型)を利用できたら気持ち良いだろうな〜と思っていたので、Dartバックエンドを使った記述事例やノウハウに関しては前から気になっていました。
国内でエンタープライズで実際にバックエンドDartを運用しているという話は、個人的には10Xさんでしか聞いたことなかったので、他にも事例があることにまず驚きました。
Dart Frog は、Shelf をベースに構築されていて、Shelf同様軽量なDartバックエンドフレームワークで、Serverpod よりさらに1年くらい後発のものだそうです。Hot Reload も効くそうです。
Melos
は マルチパッケージのモノリポを扱いやすくするようにするためのCLIツールで、 Riverpod でも使われているそうです。
Melos
に関しては自分が大量のマルチパッケージを運用した経験がDartプロジェクトでなかったため、利点があまり想像できなかったのですが、 Ask the speaker で質問したところ、
- 分割したすべてのパッケージに対して
build_runner
を実行するのが簡単になる - プロジェクトが複雑になってきたとしても一つのコマンドで対処できる安心感
から重宝しているそうです。
実際に使ってみたところの感想としては、(まだ初期フェーズで複雑なことをやっていないからかも的な補足はありつつ)大きく困ったところはないとのことでした。
Dartのコード自動生成の仕組みと、コード自動生成のパッケージを自作する方法について
package:anaylzer
と package:build
の説明から始まり、source_gen
の説明、実際に source_gen
を使ってコード生成の仕組みを作る例を紹介されていました。
本来とっつきにくい内容を、日本語のスライド形式で解説されていてかなりありがたい情報源だと思いました!後で録画やスライドが公開されたらじっくり消化したいです。
我々にはなぜ Riverpod が必要なのか - InheritedWidget から始まる app state 管理手法の課題
問題提起とタイトルが素晴らしく、事前にX(Twitter)でも話題になっていたためすごく期待が集まっていた発表だと思います。会場は完全に満員でした!
日本ではすっかり市民権を得てしまった Riverpod ですが、Provider や標準ライブラリのみで解決する方法ではなく何故 Riverpod が必要なのか、冷静に筋の通った説明をするのは、Flutter開発に慣れている方でもなかなか難しいところもあるのではないでしょうか。
WidgetツリーとElementのしくみの話から始まり、アプリ開発の状態管理においてよく発生している問題や、Riverpod を使うことでそのような課題に対するあらかじめ用意されていた解決策を利用できるとのことでした。
また、課題に対する独自の工夫を考える必要性が薄いため、開発者間で共通認識を作りやすく、一般的な課題を把握でき、考慮漏れを防げるのではないかとされていました。
企業ブース
YOUTRUST設営完了しました! #FlutterKaigi pic.twitter.com/vdbIXNmwi6
— kumamo_tone (@kumamo_tone) 2023年11月10日
YOUTRUSTブースでは、Flutter製のYOUTRUSTアプリについて知ってもらいたく、クイズを用意しました。
他社さんのブースも短い時間ですが回らせていただいて、どのブースも面白かったです!
出前館さんのブースでは、ユーザーさん、加盟店さん、配達員さんが使うそれぞれを取り巻く技術アーキテクチャの図や、各アプリのデモを見ることができました。
ゆめみさんのブースでは、Dartコードを修正するクイズと、ゆめみさんの魅力的な福利厚生の中で、来場者の方が一番ほしい福利厚生についてアンケートを取っていました。有給取り放題が人気のようですね。
bitkeyさんのブースでは、実物のデバイスとアプリを組み込んだボードを使ってサービスの説明をされていました。GPS範囲内に入ったときに鍵を操作するジオロケーションを使った実装も Method Channel でされているようで、ネイティブAPIとの連携がうまくできているのが凄いと思いました。
MagicPodさんのブースでは、アンケート回答で宇宙食が当たるくじを用意されていました。競合であるテスト自動化ツールは何でしょうかと、答えづらそうな質問を伺ってしまったところ、定額で使い放題な点と、テスト作成の使用感の違いなどスムーズに説明していただき腑に落ちました!
10Xさんでは Flutter アプリだけでなく、バックエンドDartとFlutter Webも利用しているそうで、実際に使ってみた感想なども伺いました。バックエンド Dart に関してはライブラリなどのサポートは豊富ではないものの、大きな問題を感じていないそうで、Dart言語の高い生産性を再実感しました。
NAVITIME さんのブースでは、開発されている運転免許のFlutter製の学習アプリと、ユニタビというチケットぴあさんと共同で企画・運営したFlutter製のアプリについて紹介していただきました。ユニタビには結構細かいアニメーションが色々実装されていて、見ていて楽しかったです!
よかったノベルティ
エムスリーさんの Flutter 完全に理解したステッカーは、Flutterエンジニアなら一度は見たことがある、DEBUG版アプリのレイアウト崩れの際に見られる表示がステッカーになっており、アイデアがすごい!と唸りました。
GoogleさんのブースではFlutter Tシャツが無料配布されており、これもシンプルに嬉しかったです。チケット代3,000円なのに…!
懇親会
懇親会では、発表に対して意見交換したり、発表者の人に質問したり、インターネット上の記事を読んで以来、疑問に思っていたことを書いた方に質問しに行ったり、しばらく話せてなかった人とお話できたりなど、大変有意義な時間が過ごせました!
おわりに
個人的には初めてのオフラインのFlutterカンファレンスだったのでとても楽しみにしていましたが、興味深い発表がたくさん聞けて、色々な方とお話もできて楽しかったです!個人的には来年もあれば是非参加したいです!
株式会社YOUTRUSTでは、Flutterアプリエンジニアを含む多くのポジションで新しいメンバーを募集しています!