🦋

【速報記事】FlutterKaigi2025 現地参加レポート

に公開

ブルーモ証券でFlutterをゴリゴリ使っているokeです!

FlutterKaigiに今年も現地参加してきまして、速報記事的に学んだ内容をまとめたいと思います💪

かわいいだしゅまる

↑エントランスに置かれていたかわいい「だしゅまる」

📝 あの日のHot reloadはなぜ動かなかったのか? 〜OSセキュリティ(W^X)とJITコンパイラの攻防〜

少し前に、FlutterがLiquidGlassに対応しないという流れがあった中で、もう一つ話題になっていたのが 「iOS26でDebugビルドできない!?」 という問題でした。

セッションで詳しく解説されていたのですが、Flutterのデバッグビルド時のJITコンパイルにて、メモリへの「書き込み」と「実行」権限周りがiOSのアップデートにて変更されたことが問題だったようです。

印象的だったのは、FlutterチームはiOS26 beta1発表からわずか11日でこの問題を改善していたことでした!

昨今、「Flutterって大丈夫なのか…?」みたいな風潮を感じていますが、上記の問題以外にも各種プラットフォームの問題を様々対応してきているようで、以前よりも安心できる印象を持ちました。

📝 Flutter DevToolsで発見!本番アプリのパフォーマンス問題と改善の実践

「なんかアプリがカクつく」「突然クラッシュした!?」みたいな経験ないですか?

そんな時に便利なのがDevToolsで、セッションでは実際の問い合わせからの原因調査〜DevToolsを使用した原因特定・改善まで解説していました。

普段DevToolsを見ることは割とあるものの、画像のサイズによってクラッシュしてしまった事例で紹介された「"Highlight Oversized Images"で画像サイズが大きいと、色と上下反転で表示される」というのは知らなかったので、一度アプリで使ってみて大丈夫そうかチェックしよう…と思いました!

セッションの後半に下記のようなよく使いそうなDevTools機能をまとめてくださっており、これらのツールを見ると色々改善ポイントがみつかりそうですね✍️

  • Performance Overlay: カクつき検知
  • Highlight Repaints: 不要な再描画を検知できる
  • Count Widget Builds: 不要なbuildを検知できる
  • Diff Snapshots: メモリリークを検知できる
  • CPU Profiler: 時間のかかっている処理を特定できる

ここでお昼のお弁当!美味しかった🥳


📝 Flutterビルドキャッシュの内部構造とテスト高速化への応用

Flutterでビルドしていたら、「なんか2回目以降だとビルド速いな?」みたいに感じることがありますよね?それを仕組みから解説したセッションでした。

具体的にはキャッシュされた.dillファイルがあると速くなるようで、デバッグビルド時やtest実行時にこちらが生成されて、2回目以降は速くなるようです🚀

そして、知らなかったのはビルド時に渡す--dart-defineのkey/valueの順番や値が変わるとキャッシュが効かずビルドが遅くなるということでした!
もし実行時に--dart-defineの渡す順番が変わっているかも?という方はそこを見直すとビルド時間が速くなるかもですね。

また、--dart-defineの値を頻度高く変えてビルドなどをしている場合は、ランタイム環境変数というのを使用すると、キャッシュが効くようになるようです。試してみたいですね✍️(※コンパイル時定数が使えなくなるのは注意が必要そうです)

📝 Dart and Flutter MCP serverで実現するAI駆動E2Eテスト整備と自動操作

「AIが自動でテストしてくれたらなぁ〜」と毎日思っている僕にとって、かなり期待していたセッションです。

Flutter公式が提供しているDart and Flutter MCP serverを用いつつ、E2Eテストを行うのに不十分な箇所は自作のMCP Serverで解決するなど、試行錯誤してAIでのE2Eテスト検証をしていました。

特に、get_widget_treeでWidgetツリーの取得を行う際に、コンテキストウィンドウが大きく圧迫してしまうこと、操作・検証に必要な情報を取得したいということから、SemanticTreeをベースとした情報を返すMCP Serverを作成しており、確かにそれでいける…すごい…となりました。

ただ、上記の試行錯誤の上で、E2Eテスト実行時の課題感として「実行時間がとにかく遅い」「実行に失敗しても手法を変えてシナリオ完遂に取り組んでしまう」などがあり、現状では発表者の方のアプリにおいて実運用では難しいという結論になっていました。(かなり似たようなコンポーネントが多く、AIが見分ける時の相性が悪いなどあるようです)

ですが、E2EテストをAIができるのではと思いつつ全然試せていなかった僕にとって、ここまで検証・試行を繰り返してきた発表を聴けて良かったです🙌
今後のAIの進化にも期待したいです。

📝 RenderObject とは何か?animated_to に学ぶレイアウト計算と描画の仕組み

ブルーモ証券のアプリではUI/UXにこだわっており、アニメーションも適度に入れるようにしています。
ただ、僕自身はRenderObjectを直接触ってアニメーションをつけたことはほぼありませんでした。

RenderObjectには注意する点がいくつかあるようで、例えばRenderObjectを継承した際に実装するpaintメソッドは、performLayoutメソッドに比べて予想外に多く呼ばれたり(呼ばれなくなったり?)するそうで、カスタムで実装する際は気をつけた方が良いこともあるようでした。

そこで登場したのがanimated_to(!!!)
RenderObjectのレイヤーで実装されているほか、FlutterのImplicit Animationsに影響を受けているため、アニメーション追加時にControllerなどを追加しなくて良いのが特徴のようです。

Sliver関連は未対応であったり、ネストができないなどの課題感はあるようでしたが、普段書いている実装にこのパッケージを加えるだけでアニメーションが追加できてしまう、とても魅力的なものに感じました。

📝 DartASTとその活用

ASTとは「Abstract Syntax Tree: 抽象構文木」でコードの構造を解析したものであり、コードをASTに変換することによって、プログラムで「このコードではこのクラスのこのメソッドを呼んでいる」などのコード構造の理解がしやすくなる、というものです。

このASTを実際に使用する場面として「カスタムLintルールの作成」などがあると思うのですが、普段はAIに書かせることが多く、これまでASTについては深く理解していませんでした。

このセッションでは上記のような「ASTとは何か」ということから、それをどのように使っていくかまで説明しており、いままで実装していたコードと比べて「そういうことだったのか!」となることが多かったです。

例えばRecursiveAstVisitorは実際に使っており、これは再起的に子ASTノードを見に行ってくれるため、「ファイル内でこのクラスを呼び出しているか」の確認で使っていることがわかりました。

CustomLintについてはUIが絡まずunitテストで担保できAIと相性が良いと感じているのですが、これからはAIが生成してくれたコードについて内部のことを把握した上で自信を持ってレビューできそうです。

📝 アプリバイナリに対する不正対策とセキュリティ向上

セキュリティ面は個人アプリでバッと作ってしまう時などに軽視しがちな部分ですが、ちゃんと考慮しておかないと後々ヒヤリとすることがありそうですよね…。

このセッションでは「位置情報の偽造」や「サーバーリクエストの改ざん」などからどうアプリを守るかの具体的な方法について解説していました。

「サーバーリクエストの改ざん」では「中間者攻撃(攻撃者がユーザーとサービスの間に割り込む)」や「逆コンパイル」など色々考えることがあります。

その際にApp Checkというサービスが一つの手段として有効という話がありました。

App CheckはFirebaseのサービスの一つで、Androidでは「Play Integrity」、iOSでは「App Attest」または「Device Check」を利用して、アプリの完全性(正規のアプリのリクエストか?など)を担保してくれるものです。

Firebaseサービスを利用してシステムを組んでいる際は導入を検討してみると良さそうですね!

ただ、セキュリティはいたちごっこという話もあり、「これをやったから安心!」と慢心せず、「自分のアプリ大丈夫かな?」と疑惑の目を持つことが大切そうですね。

最後に

今年もたくさん楽しいお話を聴くことができました!🙌
FlutterKaigi2025のStaffやSponsorのみなさま、ありがとうございました!!

どのセッションも勉強になり、来年は自分も登壇できるといいな…と思っています。
Flutterライフをまだまだ楽しんでいきますっ!!

※発表一回で聴き逃している・間違っていることもあるかもしれないので、その際はご指摘ください!🙇‍♂️

We are hiring!

ブルーモではエンジニアを積極採用中です。

少しでも興味がある方は僕か各種SNS経由でお声がけ頂ければ、
カジュアル面談でも、もう少しざっくばらんに食事しながらお話などもできますので、お気軽にどうぞ!

https://careers.bloomo.co.jp/

https://x.com/oke331

ブルーモ証券 プロダクトチームブログ

Discussion