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
81
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
配列と所有権
ojun
April 10, 2026
More Decks by ojun
See All by ojun
生成 AI 時代のスナップショットテストってやつを見せてあげますよ(α版)
ojun9
0
410
アセットのコンパイルについて
ojun9
0
280
Exit 8 for SwiftUI
ojun9
1
300
Swift Evolution かるた
ojun9
2
150
Xcode 16のPreviewModifierと@Previewableを活用した効率的なプレビュー方法の考察
ojun9
4
1.1k
Catch Up with Swift 5.10
ojun9
2
930
Overview: Swift OpenAPI Generator
ojun9
3
2.6k
if 式と switch 式による SwiftUI のプレビューエラー対策
ojun9
1
2.3k
楽しい夏休み!String Catalogs で新しい発見
ojun9
0
2.6k
Other Decks in Programming
See All in Programming
仕様駆動開発の消費期限
watany
17
7.3k
仕様駆動開発へのトライを機に チームに適合する手法を模索し続けている話
freee
PRO
0
450
テーブルをDELETEした
yuzneri
0
140
「寝てても仕事が進む」Claude Codeで組む第二の脳
tomoyafujita2016
0
310
生成AI導入の「期待外れ」を乗り越える ー 開発フロー改革が目指す、真の組織変革
starfish719
0
4.1k
人間の目はかわらない、だからJPEGは30年もつ
yuzneri
12
18k
ソフトウェア設計に溶けるインフラ ― AWS CDK のインフラ認識論
konokenj
3
770
型も通る、synthも通る、それでも危ない 〜AIのCDKの権限とコストを機械で検証する〜 / It Passes Type Checks, It Passes Synth Checks, but It’s Still Risky — Automatically Verifying Permissions and Costs in AI’s CDK —
seike460
PRO
1
540
Claude Code全社展開のためにやったことn選~プラグイン302個・コミッター271人を支えるために~
kenchan
5
1.4k
わからない話を追いかけたら、プログラミング言語を作る側にいた
ydah
3
480
The Past, Present, and Future of Enterprise Java
ivargrimstad
0
550
属人化した知識を、 AIが辿れる地図にする
pkshadeck
PRO
1
150
Featured
See All Featured
How People are Using Generative and Agentic AI to Supercharge Their Products, Projects, Services and Value Streams Today
helenjbeal
1
260
The Anti-SEO Checklist Checklist. Pubcon Cyber Week
ryanjones
0
200
SEO for Brand Visibility & Recognition
aleyda
0
4.7k
Dominate Local Search Results - an insider guide to GBP, reviews, and Local SEO
greggifford
PRO
0
260
Claude Code のすすめ
schroneko
67
230k
Future Trends and Review - Lecture 12 - Web Technologies (1019888BNR)
signer
PRO
0
3.7k
Why Our Code Smells
bkeepers
PRO
340
58k
The AI Search Optimization Roadmap by Aleyda Solis
aleyda
1
6k
Unsuck your backbone
ammeep
672
58k
Color Theory Basics | Prateek | Gurzu
gurzu
0
410
Public Speaking Without Barfing On Your Shoes - THAT 2023
reverentgeek
1
500
技術選定の審美眼(2025年版) / Understanding the Spiral of Technologies 2025 edition
twada
PRO
119
120k
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 ͷίετແࢹ͢Δ͜ͱ͕Ͱ͖Δ • ͨͩ͠ݻఆͷྻʹͳΔ͜ͱʹཹҙ͢Δඞཁ͋Γ
͋Γ͕ͱ͏͍͟͝·ͨ͠ʂ