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
Yuta Koshizawa
September 06, 2025
Programming
2
690
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
750
Swift 6のTyped throwsとSwiftにおけるエラーハンドリングの全体像を学ぶ
koher
4
5.5k
Swift Concurrency時代のiOSアプリの作り方
koher
15
9.1k
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
AIの誤りが許されない業務システムにおいて“信頼されるAI” を目指す / building-trusted-ai-systems
yuya4
7
4.3k
クラウドに依存しないS3を使った開発術
simesaba80
0
220
React 19でつくる「気持ちいいUI」- 楽観的UIのすすめ
himorishige
11
5.3k
大規模Cloud Native環境におけるFalcoの運用
owlinux1000
0
250
.NET Conf 2025 の興味のあるセッ ションを復習した / dotnet conf 2025 quick recap for backend engineer
tomohisa
0
110
Patterns of Patterns
denyspoltorak
0
460
CSC307 Lecture 02
javiergs
PRO
1
760
フルサイクルエンジニアリングをAI Agentで全自動化したい 〜構想と現在地〜
kamina_zzz
0
360
LLMで複雑な検索条件アセットから脱却する!! 生成的検索インタフェースの設計論
po3rin
4
1.1k
AI Agent Dojo #4: watsonx Orchestrate ADK体験
oniak3ibm
PRO
0
130
CSC307 Lecture 04
javiergs
PRO
0
640
16年目のピクシブ百科事典を支える最新の技術基盤 / The Modern Tech Stack Powering Pixiv Encyclopedia in its 16th Year
ahuglajbclajep
5
780
Featured
See All Featured
Designing for Performance
lara
610
70k
The Curse of the Amulet
leimatthew05
0
7.2k
How to make the Groovebox
asonas
2
1.9k
Reflections from 52 weeks, 52 projects
jeffersonlam
355
21k
WCS-LA-2024
lcolladotor
0
410
The agentic SEO stack - context over prompts
schlessera
0
590
SEO for Brand Visibility & Recognition
aleyda
0
4.2k
AI: The stuff that nobody shows you
jnunemaker
PRO
2
170
Being A Developer After 40
akosma
91
590k
HU Berlin: Industrial-Strength Natural Language Processing with spaCy and Prodigy
inesmontani
PRO
0
130
How GitHub (no longer) Works
holman
316
140k
The Anti-SEO Checklist Checklist. Pubcon Cyber Week
ryanjones
0
39
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