Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Swift Updates - Learn Languages 2025

Swift Updates - Learn Languages 2025

Strict Concurrency Checkingを中心に、前回2021年からのSwiftのアップデートについて説明します。

Avatar for Yuta Koshizawa

Yuta Koshizawa

September 06, 2025
Tweet

More Decks by Yuta Koshizawa

Other Decks in Programming

Transcript

  1. 2014೥ͷϦϦʔε౰ॳ͔Βnull safetyΛ࣋ͭ let values = [2, 3, 5, 7] if

    let first = values.first { print(first + 1) // ✅ OK: 3 }
  2. ֤ݴޠͰͷ Op$onal / Nullable Type • Kotlin: String? • Python:

    str | None • TypeScript: string | null | undefined • ...
  3. ΠϛϡʔλϒϧΫϥε͸ڞ༗͞Εͯ΋҆શ final class Foo: Sendable { // Sendable४ڌՄ let value:

    Int // ෆม init(value: Int) { self.value = value } } ΠϛϡʔλϒϧΫϥε͸ঢ়ଶ͕มߋ͞Εͳ͍ͷͰɺෳ਺ͷ Isola&on DomainؒͰڞ༗ͯ͠΋σʔλڝ߹ͷݪҼͱͳΒͳ͍
  4. ϛϡʔλϒϧΫϥε͸ڞ༗͞ΕΔͱ҆શͰͳ͍ final class Foo: Sendable { // ίϯύΠϧΤϥʔ var value:

    Int // Մม init(value: Int) { self.value = value } } ෳ਺ͷIsola&on Domain͔Βಉ࣌ʹΞΫηε͞Εͨͱ͖ʹσʔλڝ ߹ͷݪҼͱͳΓಘΔͷͰ Sendable ४ڌͰ͖ͳ͍
  5. ϩοΫ౳Ͱอޢ͢Ε͹ϛϡʔλϒϧΫϥεͰ΋҆શ 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) } }
  6. Actor͸ݸʑͷIsola*on DomainΛ࣋ͭͷͰ҆શ actor Foo { // ҉໧తʹSendable४ڌ var value: Int

    // Մม init(value: Int) { self.value = value } } Actor͸ݸʑͷΠϯελϯε͕Isola*on DomainΛܗ੒͠ɺॴଐ͢ Δίʔυ͕ݸʑͷIsola*on Domain্Ͱ࣮ߦ͞ΕΔ
  7. 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 // σʔλڝ߹Λى͜͠ಘΔ
  8. 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 // σʔλڝ߹Λى͜͞ͳ͍
  9. ଟ༷ͳ༻్Ͱͷར༻ • αʔόʔαΠυ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/
  10. ଟ༷ͳݴޠͱͷ࿈ܞ • 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/
  11. ৽͍͠ݴޠػೳ • ϚΫϩ • ॴ༗ݖ • Parameter PacksʢՄม௕ܕύϥϝʔλʣ • InlineArray

    ʢݻఆ௕഑ྻʣ • Integer Generic Parameters ʢܕύϥϝʔλʹ੔਺Λࢦఆʣ • …
  12. ·ͱΊ • Swi% 6ͰStrict Concurrency Checking͕ಋೖ • Pure Swi%Ͱ͸ίϯύΠϥ͕σʔλڝ߹Λ׬શʹ๷ࢭ •

    ଟ༷ͳϓϥοτϑΥʔϜ΍༻్ʹల։ • ͦͷଞʹ΋ϚΫϩͳͲศརͳ৽ػೳΛ௥Ճ