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
ojun
April 10, 2026
Programming
100
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
470
アセットのコンパイルについて
ojun9
0
310
Exit 8 for SwiftUI
ojun9
1
320
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.7k
Other Decks in Programming
See All in Programming
あなたの await、OS まで届いてる? strace で覗く JavaScript の非同期
hasutosasaki
1
2.3k
SFCで実現する病院・医療システムの動的組み立て式UI
koukimiura
1
170
動画プレイヤーはなぜカクつくのか 〜Flutterのレンダリングとネイティブの境界を解剖する〜
naruogram
0
330
baseline으로 마이그레이션, 리팩토링 안전하게 맡기기
fornewid
1
960
Performance Optimization With LLMs
xleitix
0
250
Kotlinize Is Not Just Converting to Kotlin
chigichan24
1
220
Railsのためのパスキー実践入門 〜マルチテナントSaaSでの意思決定〜
utakaha
4
3.7k
AIで開発が速くなった先で、開発チームは何を目指すか
shihochan
1
2k
Event is what happens
moro
2
4k
PyConTW 2026 - AI Coding 不只是工具升級, 區域醫院醫療資訊系統協作開發與資訊團隊轉型實踐
cclai999
0
240
クラウドゲーミングのパフォーマンス最適化に挑む / Cloud Gaming Performance Tuning
vivion
0
330
3回つくってわかった、 定期実行ジョブ基盤の本質情報
takai
4
3.8k
Featured
See All Featured
What the history of the web can teach us about the future of AI
inesmontani
PRO
3
800
Making the Leap to Tech Lead
cromwellryan
135
10k
Chasing Engaging Ingredients in Design
codingconduct
0
390
More Than Pixels: Becoming A User Experience Designer
marktimemedia
3
620
Code Reviewing Like a Champion
maltzj
529
40k
It's Worth the Effort
3n
188
29k
A designer walks into a library…
pauljervisheath
211
25k
Breaking role norms: Why Content Design is so much more than writing copy - Taylor Woolridge
uxyall
1
520
Designing Powerful Visuals for Engaging Learning
tmiket
1
650
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
659
62k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
360
31k
Side Projects
sachag
456
43k
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 ͷίετແࢹ͢Δ͜ͱ͕Ͱ͖Δ • ͨͩ͠ݻఆͷྻʹͳΔ͜ͱʹཹҙ͢Δඞཁ͋Γ
͋Γ͕ͱ͏͍͟͝·ͨ͠ʂ