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
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Yuta Koshizawa
September 06, 2025
Programming
740
2
Share
Swift Updates - Learn Languages 2025
Strict Concurrency Checkingを中心に、前回2021年からのSwiftのアップデートについて説明します。
Yuta Koshizawa
September 06, 2025
More Decks by Yuta Koshizawa
See All by Yuta Koshizawa
How Swift's Type System Guides AI Agents
koher
0
300
Swiftのstructとイミュータビリティ
koher
4
780
Swift 6のTyped throwsとSwiftにおけるエラーハンドリングの全体像を学ぶ
koher
4
5.8k
Swift Concurrency時代のiOSアプリの作り方
koher
15
9.4k
Swift Zoomin' #8
koher
2
690
async/awaitやactorでiOSアプリ開発がどう変わるか Before & Afterの具体例で学ぶ
koher
9
7.7k
Swift Language Updates - Learn Languages 2021
koher
8
1.8k
先取り! Swift 6 の async/await
koher
15
4.1k
SwiftUIで勘違いした話
koher
1
3k
Other Decks in Programming
See All in Programming
Going Multiplatform with Your Android App (Android Makers 2026)
zsmb
2
450
JAWS-UG横浜 #100 祝・第100回スペシャルAWS は VPC レスの時代へ
maroon1st
0
170
第3木曜LT会 #28
tinykitten
PRO
0
110
Swift Concurrency Type System
inamiy
1
540
How We Benchmarked Quarkus: Patterns and anti-patterns
hollycummins
1
150
forteeの改修から振り返るPHPerKaigi 2026
muno92
PRO
3
290
Spec Driven Development | AI Summit Vilnius
danielsogl
PRO
1
110
クラウドネイティブなエンジニアに向ける Raycastの魅力と実際の活用事例
nealle
2
220
의존성 주입과 모듈화
fornewid
0
150
〜バイブコーディングを超えて〜 チームで実験し続けたAI駆動開発
tigertora7571
0
150
UIの境界線をデザインする | React Tokyo #15 メイントーク
sasagar
2
380
YJITとZJITにはイカなる違いがあるのか?
nakiym
0
240
Featured
See All Featured
B2B Lead Gen: Tactics, Traps & Triumph
marketingsoph
0
100
RailsConf 2023
tenderlove
30
1.4k
How to audit for AI Accessibility on your Front & Back End
davetheseo
0
280
Music & Morning Musume
bryan
47
7.2k
Faster Mobile Websites
deanohume
310
31k
Ecommerce SEO: The Keys for Success Now & Beyond - #SERPConf2024
aleyda
1
1.9k
The Cult of Friendly URLs
andyhume
79
6.8k
Why Mistakes Are the Best Teachers: Turning Failure into a Pathway for Growth
auna
0
120
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
47
8.1k
Kristin Tynski - Automating Marketing Tasks With AI
techseoconnect
PRO
0
230
Navigating Algorithm Shifts & AI Overviews - #SMXNext
aleyda
1
1.2k
Everyday Curiosity
cassininazir
0
200
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