Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
配列と所有権
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
ojun
April 10, 2026
Programming
93
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
450
アセットのコンパイルについて
ojun9
0
290
Exit 8 for SwiftUI
ojun9
1
310
Swift Evolution かるた
ojun9
2
150
Xcode 16のPreviewModifierと@Previewableを活用した効率的なプレビュー方法の考察
ojun9
4
1.2k
Catch Up with Swift 5.10
ojun9
2
940
Overview: Swift OpenAPI Generator
ojun9
3
2.7k
if 式と switch 式による SwiftUI のプレビューエラー対策
ojun9
1
2.3k
楽しい夏休み!String Catalogs で新しい発見
ojun9
0
2.6k
Other Decks in Programming
See All in Programming
Webの地図
yosuke_furukawa
PRO
6
4.9k
技術的負債を組織課題として解く-増えすぎたマイクロサービスとの戦い-
reimaru
1
2.5k
Streamlitで実現する自然言語データアプリ開発
ayumu_yamaguchi
1
320
マイコン向けの軽量Ruby「PicoRuby」で各種デバイスを制御するネイティブアプリの実現手法
bash0c7
0
460
Turning Architecture into Unit Tests in the AI Era (NSSpain XIV)
steliosf
PRO
1
120
Vue Fes Japan 2026 タイムテーブル徹底解説
448jp
1
560
Verilogで学ぶCPU自作入門.pdf
uyuki234
8
3.8k
setup-vp GitLab対応の裏側
naokihaba
0
140
AGENTS.md Is Not Enough:Build Skills, Don't Download Them
lx_t
0
130
mrbgem 三角測量 開発
ogom
0
120
パズルゲームの作り方 / how to make puzzle games
kaityo256
PRO
2
240
フロントエンドUIフレームワークのこれまでとこれから
ssssota
5
3k
Featured
See All Featured
How People are Using Generative and Agentic AI to Supercharge Their Products, Projects, Services and Value Streams Today
helenjbeal
1
340
Taking LLMs out of the black box: A practical guide to human-in-the-loop distillation
inesmontani
PRO
3
2.4k
Skip the Path - Find Your Career Trail
mkilby
1
240
KATA
mclloyd
PRO
35
16k
How Software Deployment tools have changed in the past 20 years
geshan
2
34k
Docker and Python
trallard
47
4.2k
4 Signs Your Business is Dying
shpigford
187
23k
Joys of Absence: A Defence of Solitary Play
codingconduct
1
530
Music & Morning Musume
bryan
48
7.4k
Rebuilding a faster, lazier Slack
samanthasiow
85
9.7k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
31
10k
Jamie Indigo - Trashchat’s Guide to Black Boxes: Technical SEO Tactics for LLMs
techseoconnect
PRO
0
680
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 ͷίετແࢹ͢Δ͜ͱ͕Ͱ͖Δ • ͨͩ͠ݻఆͷྻʹͳΔ͜ͱʹཹҙ͢Δඞཁ͋Γ
͋Γ͕ͱ͏͍͟͝·ͨ͠ʂ