日本初の英語Flutterイベント、FlutterNinjas Tokyo2024に参加してきました！

# はじめに

2024/6/13~2024/6/14にお台場で開催された「**FlutterNinjas Tokyo 2024**」に参加してきました。英語で実施されるFlutterイベントは**日本初**とのことで、かなり豪華なメンバーでした！

Flutterアプリ開発には欠かせない「Riverpod」、「Provider」などのライブラリの作者である「**Remi Rousselet**」さんも登壇されていました。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/600358/833b2e1c-5b4e-037d-e749-04f091b823d2.jpeg" width="200px" />

# セッションの感想
どのセッションも素晴らしかったですが、とても語りきれないので特に印象に残ったセッションについて感想を書きます！

:::note warn
拙い英語力で理解した内容なので間違っていたらすみません！
:::

## Riverpod 3.0, the preview
スピーカー: Remi Rousselet

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/600358/f9c8fc75-5dac-cde1-4192-ac76513527b8.jpeg" width="500px" />


今後公開予定のRriverpod 3.0について紹介でした。主に以下のような内容が紹介されていましたが、特に気になったのはGeneric Providers、リトライ機能、オフライン機能でした。



- 様々なバグ修正
- パフォーマンスの改善
- AutoDisposeやRefの型を整理
- StateNotifier/StateProviderがDeprecatedに
- `<T>`で動的に型を指定できるGeneric Providers
- 自動リトライ機能
- オフライン時に処理を切り替える機能

v2でも多機能で複雑なので使いこなせるかわからないのですが、リリースを楽しみにしています！生のRemiさんをみれてよかった！

## Flutter Add-to-App: The Good, the Bad and the Ugly
スピーカー: Marcin Chudy


<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/600358/33ec17d1-46af-75c6-b946-fed028df38fa.jpeg" width="500px" />

既にあるアプリを段階的にFlutterに移行する方法について紹介されていました。画像のようにFlutterとNativeコードが混在するので、見るだけでとても大変そうでした...。

FlutterとNativeの通信や移行後のテストが大変ということで、**pigeon**や**patrol**などのパッケージの活用についても紹介されていました。
小規模なアプリであれば書き直してしまうのがよさそうです。


https://pub.dev/packages/pigeon

https://pub.dev/packages/patrol


## Building SimCity 2000: Unleashing the Power of Flame Engine and Flutter
スピーカー: Abdelrahman Eba

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/600358/4424bcda-efc6-57e4-f0ef-432191ffb8dc.jpeg" width="500px" />

FlutterでSimCityのようなゲームを作る方法についての紹介でした。
**flame**パッケージを使ってその場でコーディングしながら3次元的なゲームを作るセッションでした。

コードに間違いがあった時には会場の有識者からアドバイスがあり、会場全体でモブプロしている感じでとても面白かったです！



https://pub.dev/packages/flame

Flutterで作ったゲームを競いあう**Global Gamers Challenge**で入賞した**MGame - A waste management game**はスピーカーの方が作成されたということでした。
こんなゲームも作れるFlutterの凄さを改めて実感しました。

**flame**は本来2次元のゲームを作るパッケージなので、3次元への座標変換に数学の知識が必要とのことです。実際に作るのは中々ハードルが高そう...。

https://flutter.dev/global-gamers#winners

https://mgame-8c88b.web.app/




## Workshop: Flutter for Android TV and Apple TV
スピーカー: Sasha Denisov

Android TVとApple TVでFlutterアプリを動かす方法についてのセッションでした。
Flutter公式ではTV系の対応をしていないので、FlutterのEngineをカスタマイズして実行できるようにしたとのことでした。

Flutter自体をカスタマイズして実行するという熱意がすごいと思いました。興味ある方は以下のリポジトリにサンプルがあるので、実行してみてください！

https://github.com/DenisovAV/flutter_tv

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/600358/b0634ef8-830b-91fe-2211-9d975a3fea16.jpeg" width="500px" />





## Monitoring user experience of flutter apps with SLI/SLO
スピーカー: Takuma Osada

サイバーエージェントのエンジニアさんがWINTICKTでユーザー体験を向上させるために計測している SLI/SLO についての紹介でした。アプリのログイン成功率や離脱率などを詳細に計測・可視化している試みを自分が開発しているアプリでも参考にしたいと思いました。

ありがたいことに発表資料を日本語で公開していただいているので、詳細はそちらを見ていただくのが良いと思います！

https://speakerdeck.com/ostk0069/slowoyong-ite-flutterapuride-yuzati-yan-nopin-zhi-wojian-shi-suru

## Implementing a RAG (Retrieval-Augmented Generation) System in Dart
スピーカー: Park JaiChang

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/600358/f5439375-ad7a-c8ac-c8b5-6c26d80c13a9.jpeg" width="500px" />

流行りの生成AIとRAGを組み合わせたシステムをDartを作成する方法についてのセッションでした。PythonやJavascriptでの実装が一般的ですが、langchainを扱うためのDartパッケージも非公式ながら公開されているのでDart Onlyにしたい時などに選択肢に入ると思いました。

スピーカーが韓国の方で、**NewJeans**や**aespa**などのK-POPアイドルを知らないChatGPTにRAGを使って教えるという内容がとても面白かったです笑。

https://pub.dev/packages/langchain






# 終わりに

どれも素晴らしいセッションで、普段では触れない内容について知ることができてとても有意義な時間でした！紹介されていた技術やパッケージなどを今後触っていきたいなと思います。

ぬいぐるみとTシャツもゲットして大満足です！グッズの抽選はルーレット形式もあって大盛り上がりでした！

運営の方々、スピーカーの皆様、素晴らしいイベントを本当にありがとうございました！

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/600358/592a524c-cead-414f-9310-a1be6b3e362f.jpeg" width="500px" />
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/600358/4faebbad-848b-c43b-7b27-c50981a0cf7a.jpeg" width="500px" />