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
配列と所有権
Search
ojun
April 10, 2026
Programming
50
0
Share
配列と所有権
ojun
April 10, 2026
More Decks by ojun
See All by ojun
生成 AI 時代のスナップショットテストってやつを見せてあげますよ(α版)
ojun9
0
350
アセットのコンパイルについて
ojun9
0
220
Exit 8 for SwiftUI
ojun9
1
280
Swift Evolution かるた
ojun9
2
140
Xcode 16のPreviewModifierと@Previewableを活用した効率的なプレビュー方法の考察
ojun9
4
1k
Catch Up with Swift 5.10
ojun9
2
900
Overview: Swift OpenAPI Generator
ojun9
3
2.6k
if 式と switch 式による SwiftUI のプレビューエラー対策
ojun9
1
2.2k
楽しい夏休み!String Catalogs で新しい発見
ojun9
0
2.5k
Other Decks in Programming
See All in Programming
forteeの改修から振り返るPHPerKaigi 2026
muno92
PRO
3
290
PCOVから学ぶコードカバレッジ #phpcon_odawara
o0h
PRO
0
280
Lightning-Fast Method Calls with Ruby 4.1 ZJIT / RubyKaigi 2026
k0kubun
3
980
Back to the roots of date
jinroq
0
300
Liberating Ruby's Parser from Lexer Hacks
ydah
2
1.9k
AIと共に生きる技術選定 2026
sgash708
0
100
レガシーPHP転生 〜父がドメインエキスパートだったのでDDD+Claude Codeでチート開発します〜
panda_program
0
1k
Server-Side Kotlin LT大会 vol.18 [Kotlin-lspの最新情報と Neovimのlsp設定例]
yasunori0418
1
170
実用!Hono RPC2026
yodaka
2
250
VueエンジニアがReactを触って感じた_設計の違い
koukimiura
0
180
アクセシビリティ試験の"その後"を仕組み化する
yuuumiravy
1
170
AI-DLC Deep Dive
yuukiyo
9
4.6k
Featured
See All Featured
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.8k
The Organizational Zoo: Understanding Human Behavior Agility Through Metaphoric Constructive Conversations (based on the works of Arthur Shelley, Ph.D)
kimpetersen
PRO
0
310
Automating Front-end Workflow
addyosmani
1370
200k
How to train your dragon (web standard)
notwaldorf
97
6.6k
How to Ace a Technical Interview
jacobian
281
24k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
35
2.4k
svc-hook: hooking system calls on ARM64 by binary rewriting
retrage
2
220
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3.4k
The browser strikes back
jonoalderson
0
980
SEO Brein meetup: CTRL+C is not how to scale international SEO
lindahogenes
1
2.6k
AI: The stuff that nobody shows you
jnunemaker
PRO
6
580
Ten Tips & Tricks for a 🌱 transition
stuffmc
0
99
Transcript
ojun ྻͱॴ༗ݖ
ࣗݾհ
ࣗݾհ • name: ojun • 2023৽ଔೖࣾ • iOSΤϯδχΞ
ࠓൃද͢Δ͜ͱ
ࠓൃද͢Δ͜ͱ • Swift Collections ʹ͍ͭͯ • ͦͦͷ Array ͷΈʹ͍ͭͯ •
Copy on Write ͷಈ͖ʹ͍ͭͯͳͲ • Array ͷ՝͔Βͷ UniqueArray ͱ RigidArray ͷొʹ͍ͭͯ
࣮ݧڥ
࣮ݧڥ • 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
Swift Collections ʹ͍ͭͯ
Swift Collections ʹ͍ͭͯ • Swift Collections Swift Ͱར༻Մೳͳσʔλߏͷ֦ுʹॏΛஔ͍ͨOSS •
Swift ඪ४ϥΠϒϥϦͷ৽ػೳ։ൃΛଅਐ͢ΔͨΊʹ։ൃ͞Εͨ • ͜Ε·Ͱͷ Swift Algorithms ͳͲͱಉ༷ͷྲྀΕ • Swift ඪ४ϥΠϒϥϦݱࡏɺArrayɺSetɺDictionary ͷॏཁͳ3ͭͷ൚༻σʔλߏ͕࣮ ͞Ε͍ͯΔ • ͍Ϣʔεέʔεʹద͍ͯͯ͠خ͍͠ • ͔͠͠ɺڊେͳߏΛॲཧ͢Δͱ͖ͳͲΓͳ͍έʔε͕͋Δ • Swift Collections ʹΑͬͯɺָ&ΑΓߴ&৴པੑ͋Δίʔυ͕ॻ͚Δ༷ʹͳΔ
Swift Collections ʹ͍ͭͯ • ϦϦʔεॳʹॻ͔ΕͨʮIntroducing Swift Collectionsʯͱ͍͏ϒϩά ͕ࢀߟʹͳΔ • https://www.swift.org/blog/swift-collections/
Swift Collections ʹ͍ͭͯ • 2025/09/30 ʹ Swift Collections ͷ ver
1.3 ͕ϦϦʔε͞Εͨ • ࣮͞Εͨػೳෳ͋Δ͕ɺࠓճͷൃදͰ UniqueArray ͱ RigidArray ʹযΛͯΔ
UniqueArray ʹ͍ͭͯ • ʮίϐʔͰ͖ͳ͍ಈతྻʯ • Array ͷ Copy-on-Write (CoW) ͕ഇࢭ͞Ε͍ͯΔ
• ඇίϐʔܕʢ~CopyableʣͳཁૉΛอ࣋Ͱ͖Δ • ॴ༗ݖ͕ৗʹҰҙ • CoW ʹ͏ ༧ظͤ͵ O(n) ίϐʔ ͕ൃੜ͠ͳ͍ • ༰ྔಈతʹ૿ͤΔʢappend ͳͲͰ reallocation ͋Γʣ
RigidArray ʹ͍ͭͯ • UniqueArray ʹରͯ͠ಈతͳ֦ுΛېࢭͨ͠ྻ • ݻఆͰ͋Δྻ
UniqueArray ʹ͍ͭͯ • ʮίϐʔͰ͖ͳ͍ಈతྻʯ • Array ͷ Copy-on-Write (CoW) ͕ഇࢭ͞Ε͍ͯΔ
• ඇίϐʔܕʢ~CopyableʣͳཁૉΛอ࣋Ͱ͖Δ • ॴ༗ݖ͕ৗʹҰҙ • CoW ʹ͏ ༧ظͤ͵ O(n) ίϐʔ ͕ൃੜ͠ͳ͍ • ༰ྔಈతʹ૿ͤΔʢappend ͳͲͰ reallocation ͋Γʣ
UniqueArray ʹ͍ͭͯ • ʮίϐʔͰ͖ͳ͍ಈతྻʯ • Array ͷ Copy-on-Write (CoW) ͕ഇࢭ͞Ε͍ͯΔ
• ඇίϐʔܕʢ~CopyableʣͳཁૉΛอ࣋Ͱ͖Δ • ॴ༗ݖ͕ৗʹҰҙ • CoW ʹ͏ ༧ظͤ͵ O(n) ίϐʔ ͕ൃੜ͠ͳ͍ • ༰ྔಈతʹ૿ͤΔʢappend ͳͲͰ reallocation ͋Γʣ
Array ͷৼΔ͍ʹ͍ͭͯ
Array ͷৼΔ͍ʹ͍ͭͯ • Array ࢀরܕ
Array ͷৼΔ͍ʹ͍ͭͯ • Array ࢀরܕ
Array ͷৼΔ͍ʹ͍ͭͯ • Array ࢀরܕ • a มΘΒͳ͍
Array ͷৼΔ͍ʹ͍ͭͯ • Array ࢀরܕ • a มΘΒͳ͍ • ෦ͷϝϞϦͲ͏
ಈ͍͍ͯΔͷ͔ʁ
Array ͷৼΔ͍ʹ͍ͭͯ • ֬ೝ͢ΔͨΊʹ baseAddress Λग़ྗ͢Δ ϝιουΛ༻ҙ͢Δ
Array ͷৼΔ͍ʹ͍ͭͯ
Array ͷৼΔ͍ʹ͍ͭͯ
None
None
A
A buffer
A buffer struct class
A buffer struct class [1, 2, 3]
A buffer struct class [1, 2, 3] 0x00000007aec100a0
A A buffer struct B class [1, 2, 3] struct
0x00000007aec100a0
None
A A buffer struct B class [1, 2, 3] struct
0x00000007aec100a0
A A buffer struct B class [1, 2, 3] struct
0x00000007aec100a0
None
A A buffer struct B class [1, 2, 3] struct
0x00000007aec100a0
A A buffer struct B class [1, 2, 3] struct
buffer [1, 2, 3, 4] 0x00000007aec100a0 0x0000000100c5edc0
A A buffer struct B class [1, 2, 3] struct
0x00000007aec100a0
A A buffer struct B class [1, 2, 3] struct
buffer [1, 2, 3, 4] 0x00000007aec100a0 0x0000000100c5edc0
͜ͷίϐʔ͕͍ͭʹͳΔ͔
͜ͷίϐʔ͕͍ͭʹͳΔ͔ • ྻͷཁૉ͕ڊେͰ͋Ε͋Δ͚ͩʹͳΔ • ͦͷ͚ͩίϐʔ͞ΕΔ͔Β
None
None
ͦ͜Ͱ UniqueArray
ͦ͜Ͱ UniqueArray • ʮίϐʔͰ͖ͳ͍ಈతྻʯ • Array ͷ Copy-on-Write (CoW) ͕ഇࢭ͞Ε͍ͯΔ
• ඇίϐʔܕʢ~CopyableʣͳཁૉΛอ࣋Ͱ͖Δ • ॴ༗ݖ͕ৗʹҰҙ • CoW ʹ͏ ༧ظͤ͵ O(n) ίϐʔ ͕ൃੜ͠ͳ͍ • ༰ྔಈతʹ૿ͤΔʢappend ͳͲͰ reallocation ͋Γʣ
None
consume ͕ඞཁ
None
🎉 🎉 🎉
append Λ͏ͱ…ʁ
None
None
None
ͦ͜Ͱ UniqueArray • ʮίϐʔͰ͖ͳ͍ಈతྻʯ • Array ͷ Copy-on-Write (CoW) ͕ഇࢭ͞Ε͍ͯΔ
• ඇίϐʔܕʢ~CopyableʣͳཁૉΛอ࣋Ͱ͖Δ • ॴ༗ݖ͕ৗʹҰҙ • CoW ʹ͏ ༧ظͤ͵ O(n) ίϐʔ ͕ൃੜ͠ͳ͍ • ༰ྔಈతʹ૿ͤΔʢappend ͳͲͰ reallocation ͋Γʣ
ͦ͜Ͱ UniqueArray • ʮίϐʔͰ͖ͳ͍ಈతྻʯ • Array ͷ Copy-on-Write (CoW) ͕ഇࢭ͞Ε͍ͯΔ
• ඇίϐʔܕʢ~CopyableʣͳཁૉΛอ࣋Ͱ͖Δ • ॴ༗ݖ͕ৗʹҰҙ • CoW ʹ͏ ༧ظͤ͵ O(n) ίϐʔ ͕ൃੜ͠ͳ͍ • ༰ྔಈతʹ૿ͤΔʢappend ͳͲͰ reallocation ͋Γʣ
Array ͷৼΔ͍ʹ͍ͭͯ ͦͷ2
Array ͷৼΔ͍ʹ͍ͭͯ ͦͷ2 • Array capacity ͱ͍͏֓೦Λ͓࣋ͬͯΓɺͦͷ capacity Λ͑Δͱϝ
ϞϦͷ֬อΛߦ͏༷ʹͳ͍ͬͯΔ
None
None
None
RigidArray ʹ͍ͭͯ • UniqueArray ʹରͯ͠ಈతͳ֦ுΛېࢭͨ͠ྻ • ݻఆͰ͋Δྻ
None
None
·ͱΊ
·ͱΊ • Array ൚༻ͰศརͰ͋Δ͕ɺڊେͳྻΛѻ͏߹ʹ CoW ʹΑΔί ετ reallocation ʹΑΔίετཱ͕ͭ •
Swift Collections ʹՃ͞Εͨ UniqueArray Λར༻͢Δ͜ͱͰ CoW ͷ ίετΛແࢹ͢Δ͜ͱ͕Ͱ͖Δ • ͞Βʹ RigidArray Λར༻͢Δ͜ͱͰ CoW ͷίετͱซͤͯ reallocation ͷίετແࢹ͢Δ͜ͱ͕Ͱ͖Δ • ͨͩ͠ݻఆͷྻʹͳΔ͜ͱʹཹҙ͢Δඞཁ͋Γ
͋Γ͕ͱ͏͍͟͝·ͨ͠ʂ