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

配列と所有権

Sponsored · Ship Features Fearlessly Turn features on and off without deploys. Used by thousands of Ruby developers.
Avatar for ojun ojun
April 10, 2026

 配列と所有権

Avatar for ojun

ojun

April 10, 2026

More Decks by ojun

Other Decks in Programming

Transcript

  1. ࠓ೔ൃද͢Δ͜ͱ • Swift Collections ʹ͍ͭͯ • ͦ΋ͦ΋ͷ Array ͷ࢓૊Έʹ͍ͭͯ •

    Copy on Write ͷಈ͖ʹ͍ͭͯͳͲ • Array ͷ՝୊͔Βͷ UniqueArray ͱ RigidArray ͷొ৔ʹ͍ͭͯ
  2. ࣮ݧ؀ڥ • Apple Swift version 6.2 • swiftlang-6.2.0.19.9 • clang-1700.3.19

    • swift-driver version: 1.127.14.1 • Target: arm64-apple-macosx26.0 • Xcode 26.0 (17A324) • Swift Collections: 1.3.0
  3. Swift Collections ʹ͍ͭͯ • Swift Collections ͸ Swift Ͱར༻Մೳͳσʔλߏ଄ͷ֦ுʹॏ఺Λஔ͍ͨOSS •

    Swift ඪ४ϥΠϒϥϦͷ৽ػೳ։ൃΛଅਐ͢ΔͨΊʹ։ൃ͞Εͨ • ͜Ε·Ͱͷ Swift Algorithms ͳͲͱಉ༷ͷྲྀΕ • Swift ඪ४ϥΠϒϥϦ͸ݱࡏɺArrayɺSetɺDictionary ͷॏཁͳ3ͭͷ൚༻σʔλߏ଄͕࣮ ૷͞Ε͍ͯΔ • ޿͍Ϣʔεέʔεʹద͍ͯͯ͠خ͍͠ • ͔͠͠ɺڊେͳߏ଄Λॲཧ͢Δͱ͖ͳͲ෺଍Γͳ͍έʔε͕͋Δ • Swift Collections ʹΑͬͯɺָ&ΑΓߴ଎&৴པੑ΋͋Δίʔυ͕ॻ͚Δ༷ʹͳΔ
  4. Swift Collections ʹ͍ͭͯ • 2025/09/30 ʹ Swift Collections ͷ ver

    1.3 ͕ϦϦʔε͞Εͨ • ࣮૷͞Εͨػೳ͸ෳ਺͋Δ͕ɺࠓճͷൃදͰ͸ UniqueArray ͱ RigidArray ʹয఺Λ౰ͯΔ
  5. UniqueArray ʹ͍ͭͯ • ʮίϐʔͰ͖ͳ͍ಈత഑ྻʯ • Array ͷ Copy-on-Write (CoW) ͕ഇࢭ͞Ε͍ͯΔ

    • ඇίϐʔܕʢ~CopyableʣͳཁૉΛอ࣋Ͱ͖Δ • ॴ༗ݖ͕ৗʹҰҙ • CoW ʹ൐͏ ༧ظͤ͵ O(n) ίϐʔ ͕ൃੜ͠ͳ͍ • ༰ྔ͸ಈతʹ૿΍ͤΔʢappend ͳͲͰ reallocation ͸͋Γʣ
  6. UniqueArray ʹ͍ͭͯ • ʮίϐʔͰ͖ͳ͍ಈత഑ྻʯ • Array ͷ Copy-on-Write (CoW) ͕ഇࢭ͞Ε͍ͯΔ

    • ඇίϐʔܕʢ~CopyableʣͳཁૉΛอ࣋Ͱ͖Δ • ॴ༗ݖ͕ৗʹҰҙ • CoW ʹ൐͏ ༧ظͤ͵ O(n) ίϐʔ ͕ൃੜ͠ͳ͍ • ༰ྔ͸ಈతʹ૿΍ͤΔʢappend ͳͲͰ reallocation ͸͋Γʣ
  7. UniqueArray ʹ͍ͭͯ • ʮίϐʔͰ͖ͳ͍ಈత഑ྻʯ • Array ͷ Copy-on-Write (CoW) ͕ഇࢭ͞Ε͍ͯΔ

    • ඇίϐʔܕʢ~CopyableʣͳཁૉΛอ࣋Ͱ͖Δ • ॴ༗ݖ͕ৗʹҰҙ • CoW ʹ൐͏ ༧ظͤ͵ O(n) ίϐʔ ͕ൃੜ͠ͳ͍ • ༰ྔ͸ಈతʹ૿΍ͤΔʢappend ͳͲͰ reallocation ͸͋Γʣ
  8. A

  9. A A buffer struct B class [1, 2, 3] struct

    buffer [1, 2, 3, 4] 0x00000007aec100a0 0x0000000100c5edc0
  10. A A buffer struct B class [1, 2, 3] struct

    buffer [1, 2, 3, 4] 0x00000007aec100a0 0x0000000100c5edc0
  11. ͦ͜Ͱ UniqueArray • ʮίϐʔͰ͖ͳ͍ಈత഑ྻʯ • Array ͷ Copy-on-Write (CoW) ͕ഇࢭ͞Ε͍ͯΔ

    • ඇίϐʔܕʢ~CopyableʣͳཁૉΛอ࣋Ͱ͖Δ • ॴ༗ݖ͕ৗʹҰҙ • CoW ʹ൐͏ ༧ظͤ͵ O(n) ίϐʔ ͕ൃੜ͠ͳ͍ • ༰ྔ͸ಈతʹ૿΍ͤΔʢappend ͳͲͰ reallocation ͸͋Γʣ
  12. ͦ͜Ͱ UniqueArray • ʮίϐʔͰ͖ͳ͍ಈత഑ྻʯ • Array ͷ Copy-on-Write (CoW) ͕ഇࢭ͞Ε͍ͯΔ

    • ඇίϐʔܕʢ~CopyableʣͳཁૉΛอ࣋Ͱ͖Δ • ॴ༗ݖ͕ৗʹҰҙ • CoW ʹ൐͏ ༧ظͤ͵ O(n) ίϐʔ ͕ൃੜ͠ͳ͍ • ༰ྔ͸ಈతʹ૿΍ͤΔʢappend ͳͲͰ reallocation ͸͋Γʣ
  13. ͦ͜Ͱ UniqueArray • ʮίϐʔͰ͖ͳ͍ಈత഑ྻʯ • Array ͷ Copy-on-Write (CoW) ͕ഇࢭ͞Ε͍ͯΔ

    • ඇίϐʔܕʢ~CopyableʣͳཁૉΛอ࣋Ͱ͖Δ • ॴ༗ݖ͕ৗʹҰҙ • CoW ʹ൐͏ ༧ظͤ͵ O(n) ίϐʔ ͕ൃੜ͠ͳ͍ • ༰ྔ͸ಈతʹ૿΍ͤΔʢappend ͳͲͰ reallocation ͸͋Γʣ
  14. ·ͱΊ • Array ͸൚༻ͰศརͰ͋Δ͕ɺڊେͳ഑ྻΛѻ͏৔߹ʹ CoW ʹΑΔί ετ΍ reallocation ʹΑΔίετ͕໨ཱͭ •

    Swift Collections ʹ௥Ճ͞Εͨ UniqueArray Λར༻͢Δ͜ͱͰ CoW ͷ ίετΛແࢹ͢Δ͜ͱ͕Ͱ͖Δ • ͞Βʹ RigidArray Λར༻͢Δ͜ͱͰ CoW ͷίετͱซͤͯ reallocation ͷίετ΋ແࢹ͢Δ͜ͱ͕Ͱ͖Δ • ͨͩ͠ݻఆ௕ͷ഑ྻʹͳΔ͜ͱʹཹҙ͢Δඞཁ͋Γ