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
Swift6.2時代のconcurrencyを考える会
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
野瀬田 裕樹
September 20, 2025
Technology
1.7k
2
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Swift6.2時代のconcurrencyを考える会
iOSDC 2025 アンカンファレンス資料です
野瀬田 裕樹
September 20, 2025
More Decks by 野瀬田 裕樹
See All by 野瀬田 裕樹
iOS26時代の新規アプリ開発
yuukiw00w
0
240
Swift ConcurrencyでよりSwiftyに
yuukiw00w
0
330
Human Interface Guidelines 2
yuukiw00w
0
64
AI前提で考えるiOSアプリのモダナイズ設計
yuukiw00w
0
270
HIG学習用スライド
yuukiw00w
0
190
FlutterKaigi 2025: What is iOS Assistive Access? UI considerations for Flutter
yuukiw00w
0
62
実践!App Intents対応
yuukiw00w
1
500
App Intents再入門
yuukiw00w
0
87
Flutterで備える!Accessibility Nutrition Labels完全ガイド
yuukiw00w
0
290
Other Decks in Technology
See All in Technology
2026 TECHFRESH 畢業分享會 - 開發日常大解密!從領域驅動到企業級上線
line_developers_tw
PRO
0
1.2k
プロダクト開発から業務改善コンサルまで。事業全体へ「染み出す」ことで広がるエンジニアの可能性
ham0215
0
130
【NRUG vol.18】KubernetesにおけるNew Relicデータ取得量削減の考え方
nrug_member
0
160
2026TECHFRESH畢業分享會 - AI 時代的人生存檔點
line_developers_tw
PRO
0
1.2k
2026TECHFRESH畢業分享會 - 葬送的通靈師:化系統與用戶雜訊成行動訊號
line_developers_tw
PRO
0
1.2k
【2026年版】 ベクトル検索䛸 Embedding最前線
mocobeta
6
2.5k
AIネイティブな開発のサプライチェーンリスク対策 〜激動の開発現場でリスクに立ち向かう〜【ZennFes】
cscengineer
PRO
2
130
小さく始める AI 活用推進 ― 日経電子版 Web チームの事例/nikkei-tech-talk47
nikkei_engineer_recruiting
0
280
攻撃者視点で考えるDetection Engineering
cryptopeg
3
1.9k
Bedrock AgentCore RuntimeでAuth0 Changelog調査AIをアップグレードした話
t5u8a5a
1
170
200個のGitHubリポジトリを横断調査したかった
icck
0
130
iAEONの段階的リアーキテクト戦略 / iAEON's_Gradual_Re-architecture_Strategy
aeonpeople
0
210
Featured
See All Featured
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
508
140k
Digital Ethics as a Driver of Design Innovation
axbom
PRO
1
310
Building Adaptive Systems
keathley
44
3.1k
Leading Effective Engineering Teams in the AI Era
addyosmani
9
2.1k
Ethics towards AI in product and experience design
skipperchong
2
310
The Invisible Side of Design
smashingmag
302
52k
Heart Work Chapter 1 - Part 1
lfama
PRO
7
36k
How STYLIGHT went responsive
nonsquared
100
6.2k
Groundhog Day: Seeking Process in Gaming for Health
codingconduct
0
210
End of SEO as We Know It (SMX Advanced Version)
ipullrank
3
4.2k
Future Trends and Review - Lecture 12 - Web Technologies (1019888BNR)
signer
PRO
0
3.6k
Producing Creativity
orderedlist
PRO
348
40k
Transcript
Swift 6.2時代の concurrencyを考える会 @ynoseda
Swift 6.2の新しい機能 • Approachable concurrency • Default Actor Isolation •
@concurrent
Swift 6.2の新しい機能 • Approachable concurrency • Swift 6だと以下の2つを有効にするのと同じ ◦ NonisolatedNonsendingByDefault
◦ InferIsolatedConformances
Swift 6.2の新しい機能 • Approachable concurrency • Swift 5だと以下の5つを有効にするのと同じ ◦ NonisolatedNonsendingByDefault
◦ InferIsolatedConformances ◦ InferSendableFromCaptures ◦ DisableOutwardActorInference ◦ GlobalActorIsolatedTypesUsability
NonisolatedNonsendingByDefault • nonisolatedな非同期関数の挙動が変わる • https://docs.swift.org/compiler/documentation/diagnostics/nonisolated-nonsen ding-by-default/ • NonisolatedNonsendingByDefaultが無効 ◦ nonisolatedな非同期関数はsendingがデフォルト
• NonisolatedNonsendingByDefaultが有効 ◦ nonisolatedな非同期関数はnonsendingがデフォルト ◦ asyncなnonisolated関数を呼んだとき、呼び出し元の actor上で処理が実行される ◦ MainActorから呼び出すとMainActorで実行されるようになる
InferIsolatedConformances • isolated conformanceの概念が導入される • https://github.com/swiftlang/swift-evolution/blob/main/proposals/0470-isolated- conformances.md • nonisolatedなprotocolをactor隔離された状態でのみ適合する感じ •
MainActorのclassにprotocolの準拠を追加しようとしたとき、protocolが nonisolatedを要求していて困っていた事象が解決される ◦ NonisolatedNonsendingByDefault ◦ InferIsolatedConformances
Default Actor Isolation • 何もactorを指定してない状態のときにnonisolatedとMainActorのどちらをデフォル トにするか設定できる • Default Actor IsolationをMainActorにしているとSwift
5系までと近い感覚で実装 できるようになる
@concurrent • DispatchQueue.globalみたいなもの • バックグラウンドで処理したい関数に@concurrentをつけるだけでよくなる
Swift 6.2時代のconcurrency • Default Actor Isolation = MainActor • Approachable
concurrency = true • こうするとどうなるか?
Swift 6.2時代のconcurrency • Default Actor Isolation = MainActor & Approachable
concurrency = true • 非同期処理が必要になるまでは全てがMainActorになる
Swift 6.2時代のconcurrency • Default Actor Isolation = MainActor & Approachable
concurrency = true • 非同期処理が必要になるまでは全てがMainActorになる ◦ static varも許される ◦ Swift 5系と同じ感覚で実装できる
Swift 6.2時代のconcurrency • Default Actor Isolation = MainActor & Approachable
concurrency = true • 非同期処理が必要になるまでは全てがMainActorになる • 非同期処理が必要な場合も基本的に async 関数にするだけでいい • URLSessionなど標準のAPIのasync関数を叩く時もMainActorから叩いていい • 良い感じに必要ならバックグラウンドスレッドで処理してくれる
• Default Actor Isolation = MainActor & Approachable concurrency =
true • 非同期処理が必要になるまでは全てがMainActorになる • 非同期処理が必要な場合も基本的に async 関数にするだけでいい • 重い処理をバックグラウンドで処理したい場合は@concurrentを付けるだけでいい • 同じactorで処理したい要件が出てくるまで(非同期処理に真面目に向き合う必要 が出るまで)はactorをあまり意識しなくていい Swift 6.2時代のconcurrency
Swift 5からSwift 6で苦しんでいる人へ • Default Actor Isolation = MainActor &
Approachable concurrency = true • この設定でかなり修正量が減るのでおすすめ • Xcode 26対応と合わせてSwift 6対応を進めるのが良い感じ
iOSアプリでどこまでactorを意識する? • 同じactorでも同じスレッドで処理するわけじゃない • 同じactorのインスタンスを作ってawait関数を2回叩いたら、違うスレッドで処理され ることもある • nonisolatedな関数を叩いたときにスレッドが変わる?変わらない • そもそもnonisolatedとかnonsendingとか何
• etc
iOSアプリでどこまでactorを意識する? • Swift5系まで意識しなかったはずのあれこれが、Swift 6~6.1では意識させられるよ うになった • Swift 6.2 x Approachable
Concurrency x Default Actor Isolation = MainActorで 「必要になるまでは意識しない」という環境になった
大規模アプリならactorを意識する? • アーキテクチャーとしてマルチパッケージでわけている場合に、全てをDefault Actor Isolation = MainActorにすべき? • 例えばRepositoryか実際のデータアクセスはactorにすべき? •
Entityはnonisolatedの方がいい?
大規模アプリならactorを意識する? • アーキテクチャーとしてマルチパッケージでわけている場合に、全てをDefault Actor Isolation = MainActorにすべき? ◦ できれば全部MainActorの方が考えることは少ないかも ◦
でも明確にactor isolationを意識する必要がある部分をパッケージにわけているなら、 Default Actor Isolationをnonisolatedにしてもいいかも • 例えばRepositoryか実際のデータアクセスはactorにすべき? ◦ 実際のデータアクセスが例えば URLSessionなら勝手にバックグラウンドスレッドで処理してくれる はずなので、MainActorでいい ◦ 画像のdecode処理などで特定の重い処理を隔離したい場合は actorにする • Entityはnonisolatedの方がいい? ◦ MainActor外からも呼び出される可能性がある場合は nonisolatedが良い ◦ 多分App Intentsとかから呼び出されることとかも考慮すると nonisolatedで良いかも