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
Swift ABI Stability Manifestoを読む
Search
Yad
February 08, 2017
Programming
2
2.9k
Swift ABI Stability Manifestoを読む
2017/2/8 Kyobashi.swift x AKIBA.swift 合同勉強会 発表資料
Yad
February 08, 2017
Tweet
Share
More Decks by Yad
See All by Yad
ゲンバのクリーンアーキテクチャ - Scala play プロジェクト設計のお話 -
usrnameu1
15
4.6k
Other Decks in Programming
See All in Programming
マンガアプリViewerの大画面対応を考える
kk__777
0
250
Introduce Hono CLI
yusukebe
6
3.1k
Developer Joy - The New Paradigm
hollycummins
1
370
TransformerからMCPまで(現代AIを理解するための羅針盤)
mickey_kubo
7
5.2k
AkarengaLT vol.38
hashimoto_kei
1
120
Pythonに漸進的に型をつける
nealle
1
120
「ちょっと古いから」って避けてた技術書、今だからこそ読もう
mottyzzz
12
7.1k
Server Side Kotlin Meetup vol.16: 内部動作を理解して ハイパフォーマンスなサーバサイド Kotlin アプリケーションを書こう
ternbusty
3
240
Software Architecture
hschwentner
6
2.3k
登壇は dynamic! な営みである / speech is dynamic
da1chi
0
360
Building, Deploying, and Monitoring Ruby Web Applications with Falcon (Kaigi on Rails 2025)
ioquatix
4
2.5k
The Past, Present, and Future of Enterprise Java
ivargrimstad
0
630
Featured
See All Featured
YesSQL, Process and Tooling at Scale
rocio
173
15k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
34
2.3k
Bash Introduction
62gerente
615
210k
Keith and Marios Guide to Fast Websites
keithpitt
411
23k
Six Lessons from altMBA
skipperchong
29
4k
Agile that works and the tools we love
rasmusluckow
331
21k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
10
890
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
17k
BBQ
matthewcrist
89
9.9k
Code Reviewing Like a Champion
maltzj
526
40k
jQuery: Nuts, Bolts and Bling
dougneiner
65
7.9k
Reflections from 52 weeks, 52 projects
jeffersonlam
353
21k
Transcript
4XJGU"#*4UBCJMJUZ .BOJGFTUPΛಡΉ ҆ୡ༐Ұ Ϋϥεϝιουגࣜձࣾ ݄ ⡥$MBTTNFUIPE *OD
҆ୡɹ༐Ұ • 2013/12 ೖࣾ • TwitterID: @UsrNameu1 • Github:
https://github.com/ UsrNameu1 • Blog: http://dev.classmethod.jp/ author/yad • ObjC/Swift/Scala/Python(R)
4XJGU"#*4UBCJMJUZ.BOJGFTUP ⡥$MBTTNFUIPE *OD IUUQTHJUIVCDPNBQQMFTXJGUCMPC NBTUFSEPDT"#*4UBCJMJUZ.BOJGFTUPNE
ຊͷτϐοΫ w 4XJGUͷকདྷతͳޓੑରԠ w "#*ΛֶͿಈػ w "#*ͱ w "#*҆ఆԽ
⡥$MBTTNFUIPE *OD
ຊͷτϐοΫ w 4XJGUͷকདྷతͳޓੑରԠ w "#*ΛֶͿಈػ w "#*ͱ w "#*҆ఆԽ
⡥$MBTTNFUIPE *OD
4XJGUͷকདྷతͳޓੑରԠ w ݹ͍όʔδϣϯͷ4XJGUίʔυͰ৽͍͠όʔδϣϯ ͷίϯύΠϥ͕ίϯύΠϧͰ͖ΔΑ͏ʹ w ϞδϡʔϧϑΝΠϧͷϑΥʔϚοτͷ҆ఆԽ w "#*ͷ҆ఆԽ ⡥$MBTTNFUIPE
*OD
⡥$MBTTNFUIPE *OD
ຊͷτϐοΫ w 4XJGUͷকདྷతͳޓੑରԠ w "#*ΛֶͿಈػ w "#*ͱ w "#*҆ఆԽ
⡥$MBTTNFUIPE *OD
"#*ΛֶͿಈػ w ඪ४ϥΠϒϥϦͷࣝΞοϓσʔτਏ͍ w Ұޙʹ͕ࣝݹ͘ͳͬͯΔͷਏ͍ ⡥$MBTTNFUIPE *OD 4XJGUͷΞοϓσʔτਏ͍
"#*ΛֶͿಈػ ⡥$MBTTNFUIPE *OD $ISJT-BUUOFSͷֶ w $ISJT-BUUOFS 4XJGUͱಉ࣌ʹ--7.ͷ࡞ऀ w "04"ຊষ--7.
w ޠ༁ϦϯΫ ɹIUUQNUBLBHJHJUIVCJPBPTBKB
"#*ΛֶͿಈػ ⡥$MBTTNFUIPE *OD $ISJT-BUUOFSͷֶ ͏ͻͱͭɺLLVMΛܰྔͳ··ʹอͪଓ͚͍ͯΔେ͖ͳಛ͕͋Δ (ϥΠϒϥϦΛ͏ΫϥΠΞϯτଆ͔ΒݟΔͱࢍ൱͕྆͋Δ)ɻ ͦΕɺաڈͷܾஅੵۃతʹݟͯ͠ɺաڈͱͷޓੑΛؾʹͤͣʹAPIΛ େ͖͘มߋ͍ͯ͘͠ͱ͍͏͜ͱͩɻ ͨͱ͑LLVM
IRࣗମʹେ෯ͳมߋΛՃ͑Δʹɺͯ͢ͷ࠷దԽύεͷมߋ ͕ඞཁʹͳΔɻ ͦͯͦ͠ΕɺC++ͷAPIʹେ͖ͳӨڹΛٴ΅͢ɻ LLVMͰաڈʹԿ͔ͦ͏͍͏͜ͱ͕͋ͬͨɻ ΫϥΠΞϯτଆʹͱͬͯਏ͔ͬͨͩΖ͏͕ɺࠓޙͷ։ൃΛॱௐʹਐΊ͍ͯ͘ ͨΊʹͦ͏͖ͩͬͨ͢ɻ
͏ͻͱͭɺLLVMΛܰྔͳ··ʹอͪଓ͚͍ͯΔେ͖ͳಛ͕͋Δ (ϥΠϒϥϦΛ͏ΫϥΠΞϯτଆ͔ΒݟΔͱࢍ൱͕྆͋Δ)ɻ ͦΕɺաڈͷܾஅੵۃతʹݟͯ͠ɺաڈͱͷޓੑΛؾʹͤͣʹAPIΛ େ͖͘มߋ͍ͯ͘͠ͱ͍͏͜ͱͩɻ ͨͱ͑LLVM IRࣗମʹେ෯ͳมߋΛՃ͑Δʹɺͯ͢ͷ࠷దԽύεͷมߋ ͕ඞཁʹͳΔɻ ͦͯͦ͠ΕɺC++ͷAPIʹେ͖ͳӨڹΛٴ΅͢ɻ LLVMͰաڈʹԿ͔ͦ͏͍͏͜ͱ͕͋ͬͨɻ ΫϥΠΞϯτଆʹͱͬͯਏ͔ͬͨͩΖ͏͕ɺࠓޙͷ։ൃΛॱௐʹਐΊ͍ͯ͘
ͨΊʹͦ͏͖ͩͬͨ͢ɻ "#*ΛֶͿಈػ ⡥$MBTTNFUIPE *OD $ISJT-BUUOFSͷֶ
⡥$MBTTNFUIPE *OD ͱ͍͑ɺਏ͍
"#*ΛֶͿಈػ w "#*ͷ҆ఆԽ w "#*෦ഁյతมߋ͕΄΅ͳ͘ͳΔ ⡥$MBTTNFUIPE *OD 4XJGUҎ߱
"#*ΛֶͿಈػ w "#*·ΘΓͷࣝḊͼͳ͍ w ଞͷਓ͕ͯ͠ͳ͍ωλ͕र͍͘͢ͳΔ ⡥$MBTTNFUIPE *OD ओཁͳಈػ
ຊͷτϐοΫ w 4XJGUͷকདྷతͳޓੑରԠ w "#*ΛֶͿಈػ w "#*ͱ w "#*҆ఆԽ
⡥$MBTTNFUIPE *OD
"#*ͱ ⡥$MBTTNFUIPE *OD w ࣮ߦ࣌ͷόΠφϦ͕ผϥΠϒϥϦΛ ݺͼग़࣌͢ʹ༻͍ΔΠϯλʔϑΣʔε 4XJGU4PVSDF #JOBSZ ֎෦ʹެ։͞Εͨ*'
֎෦ʹެ։͞Εͨ*'
"#*ͱ ⡥$MBTTNFUIPE *OD w ͭ·Γಠཱͨ͠όΠφϦͱͯ͠ίϯύΠϧ͞ΕɺϦϯ Ϋ͞ΕΔ࣌ʹຬ͖ͨ͢όΠφϦ --7.*3 ͷ༷ 4XJGU
4XJGU "#* #JOBSZ
ຊͷτϐοΫ w 4XJGUͷকདྷతͳޓੑରԠ w "#*ΛֶͿಈػ w "#*ͱ w "#*҆ఆԽ
⡥$MBTTNFUIPE *OD
"#*҆ఆԽ ⡥$MBTTNFUIPE *OD w ৽͍͠όʔδϣϯͷίϯύΠϥ͕ޓੑΛอͪͳ͕Β "#*ʹ४ڌͨ͠όΠφϦΛੜ͢ΔΑ͏ʹ"#*ʹറΓ Λ༩͑Δ #FGPSF "#*
#JOBSZ "GUFS
"#*҆ఆԽ ⡥$MBTTNFUIPE *OD w ҆ఆԽͷޙকདྷతʹ"#*BEEJUJWFͳՃ͕ߦΘΕ ΔՄೳੑ͋Γɻͨͩ͜͠ͷՃഁյతมߋͰͳ͍ Ճલ "#* #JOBSZ
Ճޙ
"#*҆ఆԽ ⡥$MBTTNFUIPE *OD w όʔδϣϯ͕ҧ͏ίϯύΠϥͰϏϧυͨ͠ΞϓϦʹ04 ඪ४ϥΠϒϥϦΛಉࠝ͢Δඞཁ͕ͳ͘ͳΔ #FGPSF "#* -JC
#JOBSZ "GUFS "QQ #JOBSZ OFX04 PME04 ͇ ҟͳΔ7FSͷϥΠϒϥϦͰ "#*ޓੑ͕ͳ͍ ɹɹɹɹɹɹɹˣ 04ͷΞοϓσʔτͰ-JCόΠφϦͷ *'Λҡ࣋Ͱ͖ͳ͘ͳΔ
"#*҆ఆԽ ⡥$MBTTNFUIPE *OD w όʔδϣϯ͕ҧ͏ίϯύΠϥͰϏϧυͨ͠ΞϓϦʹ04 ඪ४ϥΠϒϥϦΛಉࠝ͢Δඞཁ͕ͳ͘ͳΔ #FGPSF "#* -JC
#JOBSZ "GUFS "QQ #JOBSZ OFX04 PME04 0 OFX04 PME04
"#*҆ఆԽ ⡥$MBTTNFUIPE *OD w όʔδϣϯ͕ҧ͏ίϯύΠϥͰϏϧυͨ͠ΞϓϦʹ04 ඪ४ϥΠϒϥϦΛಉࠝ͢Δඞཁ͕ͳ͘ͳΔ #FGPSF "GUFS
0 OFX04 PME04 ҟͳΔ7FSͷϥΠϒϥϦͰ "#*ޓੑ͕͋Δ ɹɹɹɹɹɹɹɹˣ 04ͷΞοϓσʔτͰ-JCόΠφϦͷ *'ҡ࣋͞ΕΔ ɹɹɹɹɹɹɹɹˣ "QQόΠφϦ͔Β৽-JCόΠφϦΛ ݺͼग़ͯ͠ͳ͍
"#*҆ఆԽ ⡥$MBTTNFUIPE *OD w όʔδϣϯ͕ҧ͏ίϯύΠϥͰϏϧυͨ͠ΞϓϦʹ04 ඪ४ϥΠϒϥϦΛಉࠝ͢Δඞཁ͕ͳ͘ͳΔ #FGPSF "#* -JC
#JOBSZ "GUFS "QQ #JOBSZ OFX04 PME04 0 OFX04 PME04
"#*҆ఆԽ ⡥$MBTTNFUIPE *OD w ଞʹϥϯλΠϜɺΠϯϥΠϯԽʹؔ͢Δ༷͕҆ఆ Խͷ՝ʹͳ͍ͬͯΔ༷
ࢀߟαΠτ ⡥$MBTTNFUIPE *OD w 4XJGU"#*4UBCJMJUZ.BOJGFTUPSFWGE IUUQTHJUIVCDPNBQQMFTXJGUCMPCNBTUFSEPDT"#*4UBCJMJUZ.BOJGFTUPNE w 4XJGUͷ։ൃͷৼΓฦΓͱ4XJGUͷܭը͕ه͞Εͨϝʔϧͷհ IUUQRJJUBDPNNPOPJUFNTDCGBFFFEC
w 4XJGUΛ͍·͔ΒֶͿ4XJGU&WPMVUJPOΥονϯά IUUQEFWFMPQFSIBUFOBTUB⒎DPNFOUSZMFBSOBCPVUTXJGUQPJOUGSPNTXJGUFWPMVUJPO
ࢀߟαΠτ ⡥$MBTTNFUIPE *OD w 5IF4XJGU"#* IUUQTHJUIVCDPNBQQMFTXJGUCMPCNBTUFSEPDT"#*STU w 5IF4XJGU3VOUJNF IUUQTHJUIVCDPNBQQMFTXJGUCMPCNBTUFSEPDT3VOUJNFNE