Flutterエンジニアの聖地へ:Fluttercon 2025 Day 1 の記録

こんにちは👋 最近登壇止まらないけど、頑張ってる
アプリチームのルーカス (YOUTRUST / X) です

今回は、Fluttercon 2025に参加した旅路と、現地で過ごした前日と1日目の様子をレポートしたいと思います!

まずは、このような貴重な機会をいただけたことに、改めてチームの皆さんへ感謝したいです 🙇‍♂️ Flutterconは毎年、僕にとって大きな刺激とインスピレーションの源です。 自分の視野を広げ、Flutterという大好きな技術をもっと深く知りたくなる──そんなイベントです。

今年でFlutterconは3回目の開催、そして僕自身も3年連続で登壇者として参加させていただきました!

約14時間のフライトを経てドイツに到着。 その2日後、ベルリンに移動して登壇者向けの前夜祭 (Speaker Party) に参加しました🎉 久しぶりに再会する海外のFlutter仲間たちとの時間は本当に楽しく、情報交換もできて最高のスタートとなりました。

このイベントについては、2日目・3日目のレポートも別記事で公開予定ですので、ぜひお楽しみに!

そして… ドイツに着いて一番最初に食べたかったものといえば、やっぱりケバブ!

正直、日本のケバブとはレベチです。 ジューシーな肉と、ガーリックソース、たっぷりの野菜…最高でした。 「あぁ、帰ってきたな」と感じた瞬間でした 🇩🇪🤤

🎤 Speaker Partyレポート — FlutterCon前夜祭!

駅に降り立った瞬間にもうFlutterConのバナーが! 会場までのテンションが自然と上がっていく仕掛けが最高でした。

今回のスピーカーパーティーは、ベルリンの「Computerspielmuseum(コンピュータゲーム博物館)」で開催されました!

正直、この博物館のことは全然知らなかったのですが… 中に入ってみたら、めっちゃかっこいい!✨

スピーカーパーティーでは、登壇者と運営メンバーが一同に集まり、翌日の本番に向けて交流とテンション爆上げタイムとなります。

share.google

この日、たくさんのFlutter仲間と再会しました。 日本に移住してから久しぶりに会う人ばかりで、ちょっとした同窓会のような気持ちになりました。

展示エリアには、AtariやPCエンジンからNintendo Switchまで、あらゆるゲーム機が揃っていました。

なんと、アーケードゲームも実際に遊べる!

日本だと秋葉原などに行けばまだプレイできる場所がありますが、ドイツではかなりレア。 Flutterエンジニアたちと一緒に懐かしのゲームで盛り上がりました🔥

大好きなSega Mega Drive(メガドライブ)とSonicも展示されてました! これはもうテンションMAX!!!

イベント後はホテルに戻って、プレゼンの最終確認&リハーサル。 でも、長時間のフライトと興奮のせいで、リハ後はすぐに睡魔に負けてダウンしました(笑) (時差ボケおそるべし…)


Keynote

イベント2日目は、ついにFluttercon本番初日! 良い睡眠をとって、朝早くから会場へ。Keynoteは9時から始まりました。

オープニングトークは、Droidconの主催者Greg Fawsonさん、 そしてメインは、GoogleのFlutter/Dart PMであるKevin Mooreさんのセッション。

🧠 Keynoteで印象に残った内容メモ

Kevinさんのトークは、Flutterの未来に直結する超重要アップデート満載の内容でした。

彼が個人的に最も注目している3つの技術とその背景を紹介:

  • WebAssembly
  • RISC-V
  • Linux

そしてこれら3つの技術をFlutterとどう組み合わせていくかが、今後の重要なテーマになると語っていました。

🆕 Enum省略記法が11月に来る!!

Swift風に書ける新構文が登場予定!

// 旧構文
ColoredBox(
  color: Colors.red,
);

// 新構文(11月以降)
ColoredBox(
  color: .red,
);

省略できると、より簡潔&可読性もUP!

🌐 Impeller Webが開発中!

現在、Flutter Webは描画のパフォーマンス面で一番改善余地があるプラットフォーム。 それに対して、Impeller(Flutterの次世代描画エンジン)をWebでも使えるようにする開発が進行中!

これは超楽しみ!!

✂️ Project Featherlight

MaterialとCupertinoを分割して、それぞれをもっと効率的に開発できるようにする内部プロジェクト。 これにより、メンテナンス性や貢献のしやすさが大幅に改善されるとのこと。

🛠️ Analyzer PluginsがFlutterにも!

今まで custom_lint を使っていた人には朗報!

FlutterのAnalyzer自体がプラグイン対応されることで、 公式にカスタムLintを組み込む道が開かれます。

将来的には custom_lint が不要に!

🤖 Flutter × AI の未来へ

最後に、Flutter開発者がAIをどう活用していけるかという話もありました。

特にすごかったのが、genuiというパッケージの紹介。

これは、AIにただ質問するだけでなく、回答に応じたUIまで生成してくれるという革新的なツール! 🔗 試してみたい方はこちらのリポジトリをチェック:

github.com

🧪 Flutter, Flame, and Fragment Shaders

このセッションを行ったのは僕の友人、Renan。 彼はFlutter界のシェーダー・マスターで、視覚体験に命を吹き込む天才です。

彼のトークを見るたびに、「Flutterってここまでできるのか…!」と毎回驚かされます。

💡 まずはシェーダーとは何か?

シェーダーはピクセル単位で色を直接操作できるプログラム。 すべてのピクセルが並列で描画されるため、非常に高パフォーマンス!

さらに、uniform という外部から渡される変数を使うことで、 インタラクティブな動き(タップなど)に反応することも可能になります。

🧱 Composite Layersの話

続いてはComposite Layer Tree(合成レイヤーツリー)の話。

Composite Layerとは、RenderObjectによって生成される、非常にコストの高い描画要素。 例えば、FlutterのOpacityウィジェットはこのComposite Layerを生成するため、多用は非推奨です。

Composite Layerはレンダリング後に描画されるため、 ポストエフェクトを追加するのに最適なタイミングでもあります。

💧 Liquid Glassエフェクトの実装

Renanが作ったLiquidoというパッケージは、 Liquid GlassのレンダリングエフェクトをFlutterで実現するもの。

このエフェクトでは、「背景」も「テキスト」も両方シェーダーに入力する必要があります。 なぜなら、背景がガラスに映り込む表現を実現するためです。

Renanは通常のテキスト+フェザー(ぼかし)版の2枚を重ねて、 境界線だけにシェーダー効果を適用させるというテクニックを使っています。めっちゃ賢い👏

github.com

🕹️ Flameについて

トークの後半では、Flutter用ゲームエンジンFlameについても紹介されました。

Renanはこのプロジェクトにも深く関わっていて、 Flameはウィジェットとして使えるため、Flutterアプリにも簡単に組み込めるとのこと。

自分も今後、ビジュアルが複雑な箇所でFlameを使うのもアリかもと本気で思いました。 Flutter単体では難しい表現が、Flameでグッと身近になる可能性があります。 📦 気になる方は、Renanのパッケージをぜひチェック!

Renan曰く:

「Flameは、Advanced CustomPainterのようなもの。」

すごく腑に落ちる表現でした。最高のセッション!刺激的!🔥

🧩 Flutter Widgets Probably Haven’t Heard Of

以下は、Majidさんが紹介してくれた「意外と知られてない便利Flutter Widgetたち」です!

  • 📸 SnapshotWidget • 状態に応じてUIを切り替える。 • AsyncSnapshotなどと相性◎。
  • 🧱 RepaintBoundary • このWidgetを挟むと新しいレイヤーが作成され、パフォーマンス向上に繋がる。 • ウィジェットと組み合わせれば画像として保存も可能!
  • 🧮 GridPaper • グリッド線を表示して、UIの整列確認やデバッグに便利。 • デザイナーとの連携時にも使えるかも。
  • ⏱️ TickerMode • AnimationControllerを止める代わりに、 アニメーションの有効/無効を切り替える手段。 • ウィジェットツリー全体に影響を与えるので、効率的に制御可能。
  • 🙈 SensitiveContent • スクリーンショットや画面共有時に機密情報を隠すためのウィジェット。

🖌️ Widget以外で覚えておきたいクラスや機能

  • 🔲 BeveledRectangleBorder • RoundedRectangleBorderと違って、斜めの角が作れるボーダー。 • カードやダイアログの装飾に。
  • 📦 DropdownMenu + CompositedTransformFollower • 通常のDropdownButtonより柔軟でカスタマイズ可能な実装。 • OverlayEntryと組み合わせて、オーバーレイ表示も簡単にできる!

MajidさんのGitHubには、今回紹介したWidgetやテストのコードもあります👇

github.com このリポジトリ、ただのサンプル集ではなくて、なんと:

test/ フォルダ内に、「AIでも書くのが難しい」複雑なテストコードが揃っているんです!

このコードを使えば、AIによるテスト生成もかなり現実的になります。 Flutter × AIを考える人には、めちゃくちゃ参考になります🔥

Majidさん、今回も最高のセッションありがとうございました! 次回は、もっと深掘りしたテスト自動生成の話もぜひ聞いてみたい…!

🛠️ Automation for Enterprise-Scale Flutter Development

AnnaさんはGDEであり、50人以上のFlutterエンジニアを率いるリーダー。 だからこそ、スケーラブルな開発運用の工夫をたくさん紹介してくれました!

💻 1. ローカル開発の自動化

🔧 コード生成の活用

  • build_runnerをベースに以下を活用:
  • freezed
  • retrofit
  • barrel filesの自動生成

🧱 masonで新しいパッケージ雛形を生成

  • API層などをパッケージごとに分割する際に便利。
  • brickhub.dev にあるテンプレートも活用可能。

🧲 Git Hooks

  • コミット前に静的解析やテストを自動実行。
  • CI/CDを壊さないようローカルで事前検出。

🔁 2. プルリクエストの品質担保

✅ CIでのチェック例

  • ライセンスバリデーション:依存パッケージのライセンスチェックを自動化。
  • 画像変更のチェック:画像が変更されたら専用レビュー or 自動圧縮など。

📦 3. ビルド & ディストリビューションの最適化

  • 💻 ローカルでビルドさせない! → 誰が作っても同じバイナリになるように。
  • 🛡️ freerasp(by talsec)を導入してアプリのセキュリティ強化(難読化・改ざん対策)。
  • 🚀 fastlaneでバージョンアップと配信を自動化。
  • ⏰ cronで定期的にバージョン更新
  • 🔢 ビルドごとにbuild numberを自動インクリメント。
  • 🔊 コミットログからChangelogを生成してSlackに投稿する仕組みもおすすめ!

🔄 4. 継続的なメンテナンス

  • ✅ 新しいLintルールをCI/CDに追加
  • 💤 長期間放置されたPRを自動でClose
  • 📦 pubspec.yamlの依存更新を自動化

📑 スライド資料はこちら!

このセッションの詳細なスライド資料は以下のリンクから見られます👇

drive.google.com

🍽️ Lunch & Booths 〜カリーヴルストとFlutterグッズ天国〜

🇩🇪 Berlinに来たらやっぱりこれ!ベルリンといえばやっぱり カリーヴルスト!! ということでランチはもちろんこれ一択。

スパイスの効いたケチャップとジューシーなソーセージの組み合わせがたまらん…! 海外Flutterカンファレンスでこういう現地グルメ体験ができるのも嬉しいですね! 午後はFlutter関連企業のブースをいろいろ見て回りました!

ブースに出展していたのは以下のような企業:

  • 🟡 Very Good Ventures (VGV)
  • 🟢 LeanCode
  • 🔵 Shorebird
  • ⚙️ Industrial Flutter
  • 🟣 Riverpod
  • ⚡ Codemagic

どの企業もFlutterを愛し、発展させようとしてるのが伝わってきて、話していてすごく楽しかったです!

🧦 グッズ報告!

Flutterイベントのお楽しみといえば…もちろんノベルティグッズ! 特に靴下多すぎ(笑) • 🧦 RevenueCatのジャックポットくじ → 靴下GET! • 🧦 Codemagicからは特別ソックスをプレゼント!

写真撮るの忘れたけど、スーツケースの1/5がソックスになってますたぶん。

🎤 僕の登壇:iOS Extensions ✖️ Flutter

今回のFlutterconでは、iOSのExtensionsの実装方法について発表しました。 特に、FlutterをiOS Extension内に埋め込む方法をテーマにしました。

📌 5つで分かる iOS Extensions ✖️ Flutter 登壇内容

僕の今回の発表では、iOS Extensionsについて紹介しました🔌

iOS Extensionは、アプリ本体とは別に動作する「小さなアプリ」のようなものです。たとえば共有シート、ウィジェット、Siri、写真編集ツール、Safari拡張など、iOSのシステム上で直接動かすことができます。つまり、アプリを起動しなくても、iOSのさまざまな場所で機能を呼び出せるのが大きな魅力です📱✨

実装するには、Xcodeで新しいターゲット(Extension)を追加し、Info.plistで有効化ルールを設定します。UIはSwiftUIでシンプルに構築し、App Groupsを使って本体アプリとデータを共有します📂この仕組みを使えば、例えば設定値や画像などを安全にやり取りできます。

ただし、開発の際に注意すべきなのは、起動時間と安定性です⚠️ iOSの仕様上、Extensionは1秒以内に起動する必要があるため、余計な処理や重たいUIを避ける必要があります。また、App Groupの読み込みに失敗してもアプリがクラッシュしないような堅牢な実装が求められます。

今回はさらに、FlutterのコードをExtension側に組み込む方法についても紹介しました🧩 これにより、FlutterアプリとiOS ExtensionのUIを統一し、スムーズなユーザー体験を実現することができます。Flutterでもここまでできるのか!と驚いてもらえるような内容になったと思います💡

👥 参加者は約80人!

初心者からiOS Extensionの経験者まで、幅広い層のエンジニアが集まってくれて本当に嬉しかったです!「わかりやすかった」と言ってくださる方も多く、ほっと一安心しました。終了後にはたくさんの質問もいただき、自分でもまだまだ深掘りできるポイントがあるなと改めて感じました。Flutterの世界ではiOS Extensionについて語られる機会がまだ少ないからこそ、皆さんの関心の高さがひしひしと伝わってきました。

Using Dart FFI for Compute-Heavy Tasks in Flutter Apps

このセッションは正直かなり複雑で技術的に深い内容だったため、後日もう一度見直す予定ですが、現時点でも以下のような学びがありました:

⚙️ パフォーマンス向上のためのFFI活用

  • FFI (Foreign Function Interface) を使うことで、Flutterアプリの一部の処理をCなどの高速なネイティブ言語で書ける。
  • ただし銀の弾丸ではなく、トレードオフが存在することも強調していました。

🧵 マルチスレッド処理の現状と工夫

  • Dartのスレッド(Isolate)は共有メモリを持たないため、並列処理はできるが通信が必要。
  • TransferableTypedData クラスを使えば、大きなデータを効率的に他のIsolateに渡せる。
  • 作成時間はデータ量に比例する。
  • DartのPort通信は非同期で動く。

🧱 ネイティブバイナリの組み込み

  • 高速化した処理を書いたCのバイナリをNative AssetsとしてFlutterに組み込む方法を紹介。
  • dart build 実行時に自動でバイナリを追加するフックスクリプトも使える。

📚 資料・コード

彼のセッションで使用されたコードはGitHubで公開されています:

github.com

そしてこれにて、Fluttercon 2025 初日が終了! 濃いセッションに再会の喜び、技術の学びと、まさに充実の一日でした。 夜は Codemagic 主催のアフターパーティー に参加して、Flutter仲間たちと乾杯🍻 明日も楽しみなコンテンツが盛りだくさんなので、引き続きレポートしていきます!お楽しみに!