Diverse developer blog

株式会社Diverse(ダイバース) 開発者ブログです。

FlutterKaigi 2023に参加してきました

はじめに

2023年11月10日(金)に開催されたFlutterのカンファレンス、FlutterKaigi2023 に参加してきましたので、その感想を綴ろうと思います。

イベント概要

FlutterKaigiは、日本において開催されるFlutter技術情報の共有とコミュニケーションを目的としたカンファレンスです。

行動規範 | flutterkaigi

flutterkaigi.jp

WebサイトもアプリもFlutter製!

FlutterKaigiは今年で3回目でオフライン開催は今年が初!

会場は、表参道のナビタイムジャパン社の1Fフロアをセッションブース2つとスポンサーブースに分かれて使用。

時間は、10:00~18:20 +after party(懇親会)のスケジュールで行われました。

印象に残ったセッション

基調講演

Googleの方による、2015年から今にいたるまでのFlutterの歴史を振り返る内容でした。

弊社はFlutter v1 がリリースされる前である2018年からFlutter開発に着手し初めていたので、発表を聞きながら回想に浸っていました。

リリースから現在に至るまで安定性とパフォーマンスアップに注力し、ドキュメントも充実しており、いい意味で枯れた技術となった現在新規プロジェクトでFlutterを採用することに躊躇する必要はないと確信しました。 またWeb〜Linux・3Dゲームに至るまでカバーしていくとのことでますます今後のFlutterの成長が楽しみになりました。

また発表中に状態管理の話題もでて、Googleの方もriverpodを使っているとのことでした。

Flutterアプリにおけるテスト戦略の見直しと自動テストの導入

発表者のチームにe2e自動テスト導入までの背景と導入時のツール選定、どこまで網羅するかの線引きの話など事例をまとめた、かなり密度が濃い発表。

Unit TestやVRTで自動テストやり尽くしたが、さらにQC効果をあげるためにe2eの導入を検討しているプロダクトを抱えてる方には大変参考になる発表でした。

Add Material touch ripples

NavitimeのKosuke MatsumuraさんによるMaterialデザインにおけるタッチエフェクトについての解説でした。 普段の開発において見落としがちなボタンへのタッチエフェクトについて、その大切さを改めて認識させてくれるスピーチでした。 個人的にはKosuke Matsumuraさんが角丸の範囲を超えてタッチエフェクトがついているボタンを見ると許せないとおっしゃっていたのが面白かったです。 基本のInkWellの他に、InkResponse, TableRowInkWell等知らなかったWidgetも紹介されていました。

Master of flutter lifecycle

まずスライドデザインがアプリ風でおしゃれだった発表。

Flutterによる基本的なlifecycleの紹介と、現状最新版であるFlutter v3.13.0とそれ以前で実装の差分について紹介する内容。

AppLifecycleListenerの登場によって、StatefulWidgetからlifecycleの実装が剥がせるようになるのは衝撃でした。

3.13.0で追加されたhiddenは主にweb用のためアプリでは気にしなくてよいというTipsも知見を得ることができました。

詳解!Flutterにおける課金実装

アプリからカレーを注文できるTOKYO MIX CURRYでの課金の実装について解説されていました。 TOKYO MIX CURRYでは購入できるのがカレーという実物のため、クレジットカードやバーコード決済、タッチ決済など多岐な決済手段を実装しています。 前半と後半に分かれており、前半では元々Swift製だったものがいかにしてFlutterに変わっていくのかのお話をされていました。 スピーカーの方が最初Flutterを採用するのは厳しいという意見だったのが、今にして思えば全然杞憂だったと言っていたのが印象的でした。

後半では実店舗での注文〜決済までできるアプリについての解説でした。 同時注文されたり、途中でキャンセルされたまま放置されることによって引き起こされるバグなどをお話しされており、アプリだけで閉じてるサービスでは想定できないバグが起きるのは興味深かったです。

今度TOKYO MIX CURRYで注文してみたいと思いました!

Dartのコード自動生成の仕組みとコード自動生成のパッケージを自作する方法について

Dartの自動生成におけるツールの紹介、コードでの実装方法の紹介を基本編、実践編の三段構成の発表。

基本編はサンプルのコードをコピーする内容だったが、数行書くだけで自動生成できるのは衝撃でした。

実践編は内容が濃く、スライドに加えてGitHubのコードを実際に触りながら学習するとよさそうな内容でした。

Flutterアプリのセキュリティ対策を考えてみる

debug/releaseビルドでの内部の仕組みの違いの紹介から、Flutterでの基本的なセキュリティ対策の紹介から便利なpluginの紹介までの発表。

リリースして満足しがちだけど、そのアプリ本当に大丈夫?と改めて考えさせられる内容で、

スライドがとても簡潔にまとめられていて、学びの多かった発表でした。

通信の中間者攻撃を防ぐためにSSLのfinger printをサーバー経由で受け渡してセットする方法が紹介されていましたがスピーチ終わりの質問でそのfinger printを受け渡しするAPIが攻撃を受けた場合にどうするのか?という質問もあり、セキュリティとは常にイタチごっこなんだなと改めて考えさせられました。

最終的にはサービスの提供者がセキュリティリスクをどこまで許容するのかしないのかの線引きをきっちりしてそれに合わせた対応をしていくことが重要なんだなと認識させられました。

魅せろ! Flutter で目を惹く UI デザインを実装する

Flutterでユーザーの目を惹くUIデザインの作り方をFlutterの奥深くにあるclass等のカスタマイズ方法や、riveによるUIデザインについて紹介されていました。 Flutter Puzzle Hackで自信を持って提出したゲームが入選せず、何かの間違いかなと思ったけど他のゲームを見てみるとすごいアニメーションで納得の結果だということをおっしゃっていて、特にゲームなどは業務アプリとは異なるレベルでUI,アニメーションに力を入れる必要があるのだと思いました。 実際に公開されているゲームもやってみましたが、私からみると十分すごかったです。

tomohiko-tanihata.github.io

個人的にはスピーチのテンポもよく、人を惹きつけるような話し方で聞いていて楽しかったです。

印象に残ったスポンサーブース

フロアは広々としてて、回りやすかったです。

弊社もシルバースポンサーで参加していました!

ノベルティでバズっていたm3社のステッカーがこちら。

Flutter開発してる人は一度は遭遇したことあるエラーをモチーフにしてて、アイデアが秀逸でした(笑)Flutter完全に理解したステッカーは完全には理解できてなかったようです。

また、ゆめみ様のブースでは、Dartのコードに関する問題が2問出題されていて、回答できたらノベルティをいただけるものでした。

Dart3のsyntaxに関するものや、riverpodに関する良問で興味深いものでした。

最後に

私個人としてはオフラインでのカンファレンス参加が久しぶりで、熱量高い参加者から刺激を受けました。

セッションも現状の他者事例や運用、開発体制などの知見が得られて身になるものばかりで、充実した時間を過ごすことができました。

来年の開催もぜひ楽しみにしています!ありがとうございました!

(写真は主宰であるkikuchyさん挨拶時の様子です)