Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Flutter Thread Merge - Flutter Tokyo #11
Search
JaiChangPark
November 26, 2025
Technology
370
1
Share
Flutter Thread Merge - Flutter Tokyo #11
Flutter Thread Merge - Flutter Tokyo #11
Jaichangpark, 박제창
JaiChangPark
November 26, 2025
More Decks by JaiChangPark
See All by JaiChangPark
Vibe하게 만드는 Flutter GenUI App With ADK , 박제창, BWAI Incheon 2026
itsmedreamwalker
0
540
DevFest Daegu 2025 - Flutter Agent App A to Z with Gemini, GenUI, A2UI 박제창
itsmedreamwalker
0
110
Flutter On-device AI로 완성하는 오프라인 앱, 박제창 @DevFest INCHEON 2025
itsmedreamwalker
1
310
Building AI Agents with Agent Develeopment Kit Go, 박제창 @DevFest Cloud x Seoul 2025
itsmedreamwalker
1
58
オフライン対応!Flutterアプリに全文検索エンジンを実装する @FlutterKaigi2025
itsmedreamwalker
2
990
Getting Started with On-Device AI in Flutter - Flutter Alliance 2025
itsmedreamwalker
0
190
Flutter with Dart MCP: All You Need - 박제창 2025 I/O Extended Busan
itsmedreamwalker
0
220
Flutter로 Gemini와 MCP를 활용한 Agentic App 만들기 - 박제창 2025 I/O Extended Seoul
itsmedreamwalker
0
230
[Hands-on] How to build Agentic Apps with Flutter - 박제창 @2025 IO Extended Incheon
itsmedreamwalker
0
170
Other Decks in Technology
See All in Technology
サイバーフィジカル社会とは何か / What Is a Cyber-Physical Society?
ks91
PRO
0
160
AI時代に新卒採用、はじめました/junior-engineer-never-die
dmnlk
0
230
最大のアウトプット術は問題を作ること
ryoaccount
0
320
NgRx SignalStore: The Power of Extensibility
rainerhahnekamp
0
130
AWS DevOps Agent or Kiro の使いどころを考える_20260402
masakiokuda
0
190
2026-04-02 IBM Bobオンボーディング入門
yutanonaka
0
260
AI前提とはどういうことか
daisuketakeda
0
160
Cortex Codeでデータの仕事を全部Agenticにやりきろう!
gappy50
0
330
プロンプトエンジニアリングを超えて:自由と統制のあいだでつくる Platform × Context Engineering
yuriemori
0
120
Webアクセシビリティは“もしも”に備える設計
tomokusaba
0
170
組織的なAI活用を阻む 最大のハードルは コンテキストデザインだった
ixbox
1
1.2k
さくらのAI Engineから始める クラウドネイティブ意識
melonps
0
120
Featured
See All Featured
Building a A Zero-Code AI SEO Workflow
portentint
PRO
0
430
Introduction to Domain-Driven Design and Collaborative software design
baasie
1
710
Principles of Awesome APIs and How to Build Them.
keavy
128
17k
The Hidden Cost of Media on the Web [PixelPalooza 2025]
tammyeverts
2
260
エンジニアに許された特別な時間の終わり
watany
106
240k
Facilitating Awesome Meetings
lara
57
6.8k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
659
61k
Producing Creativity
orderedlist
PRO
348
40k
The Invisible Side of Design
smashingmag
302
51k
Pawsitive SEO: Lessons from My Dog (and Many Mistakes) on Thriving as a Consultant in the Age of AI
davidcarrasco
0
110
Prompt Engineering for Job Search
mfonobong
0
250
We Analyzed 250 Million AI Search Results: Here's What I Found
joshbly
1
1.1k
Transcript
Flutter Thread Merge Dart threading changes GDE Dart-Flutter, Flutter Seoul
GDG Golang Korea @jaichangpark Dreamwalker
Advances and Challenges in Foundation Agents: From Brain-Inspired Intelligence to
Evolutionary, Collaborative, and Safe Systems https://arxiv.org/pdf/2504.01990
None
• プロセスは「独立した工場」である。 • 工場は独立した建物(独立したメモリ空間)を持つ。 • 1つのプロセスが落ちても、他のプロセスには影響がない。 ◦ A工場が崩れても、隣のB工場は影響を受けない。 Process
• スレッドは「工場の中で働く従業員」である。 • プロセスには最低1つのスレッド(メインスレッド)が存在する。 ◦ 工場を動かすためには、最低1人以上の従業員が必要である。 • メモリ(Code・Data・Heap)を共有する。 ◦ 従業員は工場内の食堂・倉庫・道具を共有する。
• スレッドのエラーはプロセス全体を停止させる可能性がある。 ◦ 1人の従業員が事故を起こして火事になると、工場全体が停止する。 スレッド Thread
None
None
None
None
動作方式 • Thread A と Thread B が、同じ変数 count に同時にアクセスして更新できる。
メリット • データ共有が非常に速い。(ただ読むだけで良い) • メモリ効率が良い。 デメリット • 同時実行問題(Race Condition) ◦ 複数のスレッドが同時に同じ変数を更新すると値が壊れる。 • ロックが必要 ◦ それを防ぐために「今使っているから待て(Lock)」という制御が必要になる。ロックが複雑になる とデッドロックが発生し、アプリ全体が停止する危険がある Thread A と Thread B が、同じ変数 count に同時にアクセスして更新できる。 メモリ(Heap)を共有する。
Dart(Flutter) が採用している独特の並行処理モデルであり、名前の通り 完全に隔離(Isolate) されている。 核心特徴 • メモリを一切共有しない。 動作方式 • Isolate
A と Isolate B は、完全に独立した別人である。 • それぞれが独自のメモリ空間(Heap)を持つ。 • A から B にデータを渡す場合、メッセージ(Message Passing) を使う。 • このときデータは コピー(Copy) されて送られる。 アイソレート Isolates
メリット • 安全性が高い: メモリ共有がないため、Lock を使う必要がなく、レースコンディションがほ ぼ発生しない。 • GC(ガベージコレクション)の効率が良い • A
が忙しくて GC が走っても、B は停止せずに処理を続けられる。→ UI のカクつきを防ぎ やすい。 デメリット • データ転送コスト ◦ データをコピーして送るため、1GB の画像など巨大なデータのやり取りは遅くなる。 アイソレート Isolates
None
区分 Thread(一般的) Isolate(Dart / Flutter) メモリ 共有する(Shared Memory) 共有しない(No Shared
Memory) 通信方 法 変数に直接アクセス メッセージ通信(Port を利用) 同期 開発者が Lock を管理する(難しい) 不要(自動的に安全) 比喩 同じオフィスで机を共有して働く社員 別々の部屋にいて、電話でやり取りする社 員
• プラットフォームスレッド (Platform thread) • UIスレッド (UI thread) • ラスタースレッド
(Raster thread) • I/Oスレッド (I/O thread) Flutter uses several threads
• プラットフォーム側のメインスレッド。 • プラグインコードが実行される。 • Performance Overlay には表示されない。 プラットフォームスレッド Platform
thread
• Dart コードと Flutter フレームワークが実行されるスレッド。 • レイヤーツリーを生成し、Raster Thread に送る。 •
ブロックしないこと。 • Performance Overlay の 下段に表示。 UIスレッド UI thread
• レイヤーツリーを受け取り、GPU と連携して描画する。 • Skia / Impeller がここで動作。 • 遅い場合は多くが
Dart 側の処理の影響。 • Performance Overlay の 上段に表示。 ラスタースレッド Raster thread
• ファイル、画像デコード、ネットワークなど重い I/O を担当。 • UI / Raster をブロックしないための作業用スレッド。 •
Performance Overlay には表示されない。 I/Oスレッド I/O thread
DEMO Flutter < 3.29
final result = await applyFilterAsync(imageData: _imageBytes!); final result = applyFilterSync(imageData:
_imageBytes!);
ASYNC SYNC
None
None
https://blog.flutter.dev/whats-new-in-flutter-3-29-f90c380c2317
Platform Thread (Kotlin, Swift) UI Thread (Dart Code) Raster Thread
(C++)
問題 • 従来は、非常に簡単なプラットフォーム情報(例:バッテリー残量の取得、ファイ ル存在確認)であっても、 • UI スレッド ↔ Platform スレッド
の通信が必要であった。 0.001ms で終わる処理でも、スレッドをまたぐ必要があり、強制的に async/await を使わざるを得なかった。
Platform Thread Raster Thread Kotlin Swift Dart Code
DEMO Flutter >= 3.29
None
ASYNC SYNC
None
None
軽量タスク • Main Thread でそのまま実行する。 • 例:バッテリー確認、キャッシュ参照、簡単な計算、短時間で終わる FFI 呼び出 し。
重量タスク(> 1ms) • 必ず Isolate に送る。 • 例:ファイル I/O、画像処理、ネットワーク要求、データベース検索。
Thank You!