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
Swift Updates - Learn Languages 2025
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Yuta Koshizawa
September 06, 2025
Programming
2
700
Swift Updates - Learn Languages 2025
Strict Concurrency Checkingを中心に、前回2021年からのSwiftのアップデートについて説明します。
Yuta Koshizawa
September 06, 2025
Tweet
Share
More Decks by Yuta Koshizawa
See All by Yuta Koshizawa
Swiftのstructとイミュータビリティ
koher
4
760
Swift 6のTyped throwsとSwiftにおけるエラーハンドリングの全体像を学ぶ
koher
4
5.6k
Swift Concurrency時代のiOSアプリの作り方
koher
15
9.2k
Swift Zoomin' #8
koher
2
660
async/awaitやactorでiOSアプリ開発がどう変わるか Before & Afterの具体例で学ぶ
koher
9
7.5k
Swift Language Updates - Learn Languages 2021
koher
8
1.8k
先取り! Swift 6 の async/await
koher
15
4.1k
SwiftUIで勘違いした話
koher
1
3k
iOSエンジニアのための、SwiftからPythonのライブラリを使って機械学習する方法 / Machine Learning using Python from Swift for iOS Engineer
koher
5
15k
Other Decks in Programming
See All in Programming
FOSDEM 2026: STUNMESH-go: Building P2P WireGuard Mesh Without Self-Hosted Infrastructure
tjjh89017
0
170
AgentCoreとHuman in the Loop
har1101
5
240
AI によるインシデント初動調査の自動化を行う AI インシデントコマンダーを作った話
azukiazusa1
1
730
Fragmented Architectures
denyspoltorak
0
160
0→1 フロントエンド開発 Tips🚀 #レバテックMeetup
bengo4com
0
570
AIで開発はどれくらい加速したのか?AIエージェントによるコード生成を、現場の評価と研究開発の評価の両面からdeep diveしてみる
daisuketakeda
1
2.5k
開発者から情シスまで - 多様なユーザー層に届けるAPI提供戦略 / Postman API Night Okinawa 2026 Winter
tasshi
0
200
humanlayerのブログから学ぶ、良いCLAUDE.mdの書き方
tsukamoto1783
0
190
LLM Observabilityによる 対話型音声AIアプリケーションの安定運用
gekko0114
2
430
高速開発のためのコード整理術
sutetotanuki
1
400
「ブロックテーマでは再現できない」は本当か?
inc2734
0
1k
AIによるイベントストーミング図からのコード生成 / AI-powered code generation from Event Storming diagrams
nrslib
2
1.9k
Featured
See All Featured
Between Models and Reality
mayunak
1
190
The B2B funnel & how to create a winning content strategy
katarinadahlin
PRO
1
270
<Decoding/> the Language of Devs - We Love SEO 2024
nikkihalliwell
1
130
Claude Code どこまでも/ Claude Code Everywhere
nwiizo
61
52k
B2B Lead Gen: Tactics, Traps & Triumph
marketingsoph
0
55
brightonSEO & MeasureFest 2025 - Christian Goodrich - Winning strategies for Black Friday CRO & PPC
cargoodrich
3
100
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1.2k
A better future with KSS
kneath
240
18k
How to Align SEO within the Product Triangle To Get Buy-In & Support - #RIMC
aleyda
1
1.4k
Getting science done with accelerated Python computing platforms
jacobtomlinson
2
110
HU Berlin: Industrial-Strength Natural Language Processing with spaCy and Prodigy
inesmontani
PRO
0
220
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
359
30k
Transcript
Swi$ Yuta Koshizawa @koher
2021 : Swi) 5.5 2025 : Swi) 6.2
Swi$ 5.5ͰSwi$ ConcurrencyΛಋೖ Swi$ Concurrencyͱɺฒߦॲཧؔ࿈ͷػೳ܈
4ؒͰ࠷େͷΞοϓσʔτ Swi% 6ͷϦϦʔεʢ2024ʣ
Ұ൪Өڹ͕େ͖͔ͬͨͷ Strict Concurrency Checking
σʔλڝ߹Λى͜͠ಘΔίʔυ ↓ ⛔ ίϯύΠϧΤϥʔ
ίϯύΠϧ͕௨Δ ↓ ✅ σʔλڝ߹͕ى͜Βͳ͍
Strict Concurrency Checking
Swi$ 6Ͱ Pure Swi)ͰunsafeͳߏจΛΘͳ͚Ε Swi)ͷίʔυσʔλڝ߹Λى͜͞ͳ͍
σʔλڝ߹ͱʁ ෳͷεϨου͔Βಉ͡ϝϞϦྖҬʹಉ࣌ʹΞΫηε͠ɺগͳ͘ ͱͦͷҰ͕ͭॻ͖ࠐΈͰ͋Δͱ͖ʹى͜Δݱ
σʔλڝ߹͕ى͜Δͱ • ະఆٛಈ࡞ • σʔλෆ߹ • Ϋϥογϡ • …
σʔλڝ߹ʹΑΔόάʹରॲͮ͠Β͍ • Λ࠶ݱ͢Δ͜ͱ͕ࠔ • ݪҼ͕σʔλڝ߹Ͱ͋Δͱಥ͖ࢭΊΔͷ͕ࠔ • ίʔυΛमਖ਼ͯ͠ղܾ͞Εͨ͜ͱͷ֬ೝ͕ࠔ
σʔλڝ߹ΛػցతʹࢭͰ͖Δͱ͏Ε͍͠
ݪҼෆ໌ͷΫϥογϡͷ΄ͱΜͲ͕ σʔλڝ߹ʹΑͬͯҾ͖ى͜͞Ε͍ͯͨྫ
ίϯύΠϥ͕ͲͷΑ͏ʹͯ͠ σʔλڝ߹Λ͙ͷ͔
Swi$ίϯύΠϥ ܕΛͬͯσʔλڝ߹Λ͙
Swi$ܕΛݫ֨ʹѻ͏ݴޠ
2014ͷϦϦʔεॳ͔Βnull safetyΛ࣋ͭ let values = [2, 3, 5, 7] print(values.first
+ 1) // ⛔ ίϯύΠϧΤϥʔ
2014ͷϦϦʔεॳ͔Βnull safetyΛ࣋ͭ let values = [2, 3, 5, 7] if
let first = values.first { print(first + 1) // ✅ OK: 3 }
֤ݴޠͰͷ Op$onal / Nullable Type • Kotlin: String? • Python:
str | None • TypeScript: string | null | undefined • ...
Swi$͕ܕΛͬͯ σʔλڝ߹Λ͙ͷSwi$Β͍͠
Ωʔϫʔυ Isola&on Domain ͱ Sendable
Isola&on Domainͱ • Swi%ͷϓϩάϥϜෳͷIsola+on Domainʹׂ͞ΕΔ • ͯ͢ͷॲཧ͍ͣΕ͔ͷIsola+on Domain্Ͱ࣮ߦ͞ΕΔ • ҰͭͷIsola+on
Domain্Ͱɺಉ࣌ʹҰͭͷॲཧ͔࣮͠ߦ͞Ε ͳ͍
⚠ Isola'on DomainεϨουͰͳ͍ ్த·ͰεϨουAͰ࣮ߦ͞Ε ଓ͖͕εϨουBͰ࣮ߦ͞Εͯྑ͍
Isola&on Domainͱ • Swi%ͷϓϩάϥϜʹෳͷIsola+on Domainʹׂ͞ΕΔ • ͯ͢ͷॲཧ͍ͣΕ͔ͷIsola+on Domain্Ͱ࣮ߦ͞ΕΔ • ҰͭͷIsola+on
Domain্Ͱɺಉ࣌ʹҰͭͷॲཧ͔࣮͠ߦ͞Ε ͳ͍
ͲͷΑ͏ͳσʔλ ୯ҰͷIsola&on DomainͰѻ͍ͬͯΔݶΓ σʔλڝ߹ΛҾ͖ى͜͞ͳ͍
ෳͷIsola&on DomainͰ σʔλΛڞ༗͍ͨ͠ͱ͖ʁ
ෳIsola&on DomainͰڞ༗ͯ҆͠શͳܕͱ ҆શͰͳ͍ܕΛ۠ผ͢Δ
ෳIsola&on DomainͰڞ༗ͯ҆͠શͳܕ Sendable
ΠϛϡʔλϒϧΫϥεڞ༗͞Εͯ҆શ final class Foo: Sendable { // Sendable४ڌՄ let value:
Int // ෆม init(value: Int) { self.value = value } } ΠϛϡʔλϒϧΫϥεঢ়ଶ͕มߋ͞Εͳ͍ͷͰɺෳͷ Isola&on DomainؒͰڞ༗ͯ͠σʔλڝ߹ͷݪҼͱͳΒͳ͍
ϛϡʔλϒϧΫϥεڞ༗͞ΕΔͱ҆શͰͳ͍ final class Foo: Sendable { // ίϯύΠϧΤϥʔ var value:
Int // Մม init(value: Int) { self.value = value } } ෳͷIsola&on Domain͔Βಉ࣌ʹΞΫηε͞Εͨͱ͖ʹσʔλڝ ߹ͷݪҼͱͳΓಘΔͷͰ Sendable ४ڌͰ͖ͳ͍
ϩοΫͰอޢ͢ΕϛϡʔλϒϧΫϥεͰ҆શ final class Foo: Sendable { // Sendable४ڌՄ private let
lock: OSAllocatedUnfairLock<Int> var value: Int { get { lock.withLock { $0 } } set { lock.withLock { $0 = newValue } } } init(value: Int) { self.lock = .init(initialState: value) } }
ܕڞ༗͞Εͣίϐʔ͞ΕΔͷͰ҆શ struct Foo: Sendable { // ✅ Sendable४ڌՄ var value:
Int // Մม init(value: Int) { self.value = value } }
ActorݸʑͷIsola*on DomainΛ࣋ͭͷͰ҆શ actor Foo { // ҉తʹSendable४ڌ var value: Int
// Մม init(value: Int) { self.value = value } } ActorݸʑͷΠϯελϯε͕Isola*on DomainΛܗ͠ɺॴଐ͢ Δίʔυ͕ݸʑͷIsola*on Domain্Ͱ࣮ߦ͞ΕΔ
final class Foo { // non-Sendable var value: Int =
42 } actor A { func useFoo(_ foo: Foo) { print(foo.value) // σʔλڝ߹Λى͜͠ಘΔ } } let foo = Foo() let a = A() await a.useFoo(foo) // ⛔ ผͷIsolation Domainʹͤͳ͍ foo.value += 1 // σʔλڝ߹Λى͜͠ಘΔ
struct Foo: Sendable { var value: Int = 42 }
actor A { func useFoo(_ foo: Foo) { print(foo.value) // σʔλڝ߹Λى͜͞ͳ͍ } } let foo = Foo() let a = A() await a.useFoo(foo) // ✅ ผͷIsolation DomainʹͤΔ foo.value += 1 // σʔλڝ߹Λى͜͞ͳ͍
None
ܕͷ Sendable ४ڌΛར༻ͯ͠ ίϯύΠϥ͕σʔλڝ߹Λࢭ
ͦͷଞ
ଟ༷ͳϓϥοτϑΥʔϜͷల։ • Linux • Windows • WebAssembly
ଟ༷ͳ༻్Ͱͷར༻ • αʔόʔαΠυ1 • ϒϥβʢWebAssemblyʣ2 • ΈࠐΈ3 3 ࣄྫ: h%ps:/
/github.com/swi3lang/swi3-playdate-examples 2 ࣄྫ: h%ps:/ /www.youtube.com/watch?v=Q4Tqxe06Pw0 1 ࣄྫ: h%ps:/ /www.swi,.org/blog/swi,-at-apple-migra7ng-the-password-monitoring-service-from-java/
ଟ༷ͳݴޠͱͷ࿈ܞ • C/C++4 • Java5 • JavaScript6 • Python7 7
h$ps:/ /github.com/pvieito/PythonKit 6 h$ps:/ /github.com/swi3wasm/JavaScriptKit 5 h$ps:/ /developer.apple.com/videos/play/wwdc2025/307/ 4 h$ps:/ /www.swi,.org/documenta8on/cxx-interop/
৽͍͠ݴޠػೳ • ϚΫϩ • ॴ༗ݖ • Parameter PacksʢՄมܕύϥϝʔλʣ • InlineArray
ʢݻఆྻʣ • Integer Generic Parameters ʢܕύϥϝʔλʹΛࢦఆʣ • …
·ͱΊ • Swi% 6ͰStrict Concurrency Checking͕ಋೖ • Pure Swi%ͰίϯύΠϥ͕σʔλڝ߹Λશʹࢭ •
ଟ༷ͳϓϥοτϑΥʔϜ༻్ʹల։ • ͦͷଞʹϚΫϩͳͲศརͳ৽ػೳΛՃ
͠Swi$ʹڵຯΛ࣋ͬͨΒ "The Swi) Programming Language"8 ༗ࢤʹΑΔຊޠ൛9͋Γ·͢ 9 h$ps:/ /www.swi,langjp.com/ 8
h$ps:/ /docs.swi/.org/swi/-book/documenta;on/the-swi/-programming-language