こんにちは!YOUTRUSTのアプリエンジニアの葉(YOUTRUST)です。
今回は朝日(YOUTRUST / X)とルーカス(YOUTRUST / X) と3人で FlutterNinjas🥷 に参加してきました!
この記事では Day2 を中心に印象に残ったセッションをピックアップしてお届けします。
Day1 は弊社のルーカスがまとめてくれていますので、ぜひそちらもあわせてご覧ください tech.youtrust.co.jp
セッション
🛠️ Let’s Talk About Memory Leaks in Dart and Flutter (Majid Hajian)
Dart/Flutterの GC の仕組み、メモリリークやメモリ膨張(memory bloat)の原因と対策について解説しました。
🚨メモリリーク
特に印象に残ったのは、コールバック経由で BuildContextをウィジェットのライフサイクル外にあるサービスへ渡すことで、参照が残りGCができなくなりメモリリークを引き起こすケースです。
こうした問題を見逃さないためには、Flutter DevToolsのMemoryタブや、Leak Trackerなどのツールを使って参照状況を確認できることが語られました。
📊 List追加のパフォーマンス比較
もうひとつ興味深かったのが、DartにおけるListのデータ追加方法のパフォーマンス比較です。
この4つの方法の違いについてMajidさんに質問したところ、
「中の処理はもちろん異なるけれど、あまり気にしすぎなくて大丈夫。
まずはシンプルに実装して、本当にパフォーマンスが重要になったときに最適化を考えればいい」
とのアドバイスをいただきました。
つい最適化を意識しがちですが、まずはシンプルに書くことが大切だと実感しました。
📣 Majid Hajian さんは 6月7日の Flutter Tokyo #8 にも現地参加予定とのことです。 直接お話ししてみたい方は、ぜひこの貴重な機会をお見逃しなく!
🧠 Haskell: Lead Your Code to the Next Level (Tsuyoshi Chujo)
関数型プログラミングの概念をFlutter/Dartに取り入れ、より良いコードを書く方法についてのセッションでした。
- 純粋関数(Pure Function):副作用を持たず、同じ入力には常に同じ出力を返す関数の重要性。
- 宣言的プログラミング(Declarative Programming):arrow syntax(=>)を使った単一表現でシンプルに実装する手法。
- パターンマッチング(Pattern Matching):switch式を使った状態管理(loading、empty、data)をわかりやすくする方法。
- モナド(Monad)の活用:Maybe、Either、IO Monadなどを使った副作用の管理手法。
- Functional Core, Imperative Shell:ビジネスロジックを純粋関数で実装し、副作用は外側で制御するアーキテクチャの提案。
関数型プログラミング言語Haskellの良い部分をFlutterの開発に取り入れることで、コードがより読みやすく、テストしやすく、動作が予測可能になることがよく理解できました。
🤔 Macros are gone. What now? (Remi Rousselet)
日本でもお馴染みのProvider/Riverpodの作者 Remi さんによる、Dart Macros中止の理由とその代替案についてのセッションです。
数年かけて開発されてきたDartのマクロ機能が正式に中止されました。理由は「複雑すぎるし、Dartらしくないから」とのこと。
代替案として提案されたのは、
- Augmentation Libraries: partファイル不要でクラス拡張
- Primary Constructors: より簡潔なコンストラクタ記法
- Nested Classes: クラス内クラス定義のサポート
さらにFreezedやBuild Runnerなど、今後のエコシステムの進化についても言及されていて、とても興味深かったです。
「マクロが中止されたのは、Dartチームが品質を重視している証拠」とRemiさんが前向きに解釈していたのが印象的でした。
言語機能そのものよりも、コミュニティやパッケージエコシステム全体で安定性を維持し、分裂を避けることを重視する実践的な視点に触れられた、貴重なセッションでした。
終わり
今回の FlutterNinjas🥷 への参加を通して、海外の開発者と交流したり、様々なセッションを聞くことで、自分自身の視野がぐっと広がった気がしています。
また台湾から来ていた開発者の方にも出会い、久しぶりに地元の話ができたのもすごく嬉しかったです!
🚀 We are hiring!
今回のようなカンファレンスへの参加は、YOUTRUSTに入社してから初めてでしたが、ありがたいことに業務として参加させてもらいました。
YOUTRUSTでは、こうした学びの機会も積極的にサポートしてくれる環境があります。
もし少しでも興味を持っていただけたら、ぜひこちらもチェックしてみてください!