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.5k
Other Decks in Programming
See All in Programming
Flutterで備える!Accessibility Nutrition Labels完全ガイド
yuukiw00w
0
160
LT 2025-06-30: プロダクトエンジニアの役割
yamamotok
0
730
レベル1の開発生産性向上に取り組む − 日々の作業の効率化・自動化を通じた改善活動
kesoji
0
120
すべてのコンテキストを、 ユーザー価値に変える
applism118
3
1.2k
明示と暗黙 ー PHPとGoの インターフェイスの違いを知る
shimabox
2
480
RailsGirls IZUMO スポンサーLT
16bitidol
0
180
#kanrk08 / 公開版 PicoRubyとマイコンでの自作トレーニング計測装置を用いたワークアウトの理想と現実
bash0c7
1
710
来たるべき 8.0 に備えて React 19 新機能と React Router 固有機能の取捨選択とすり合わせを考える
oukayuka
2
920
Team operations that are not burdened by SRE
kazatohiei
1
310
チームのテスト力を総合的に鍛えて品質、スピード、レジリエンスを共立させる/Testing approach that improves quality, speed, and resilience
goyoki
4
740
Hack Claude Code with Claude Code
choplin
3
960
Porting a visionOS App to Android XR
akkeylab
0
420
Featured
See All Featured
Practical Orchestrator
shlominoach
188
11k
jQuery: Nuts, Bolts and Bling
dougneiner
63
7.8k
Gamification - CAS2011
davidbonilla
81
5.4k
The Language of Interfaces
destraynor
158
25k
The World Runs on Bad Software
bkeepers
PRO
69
11k
Optimizing for Happiness
mojombo
379
70k
The Straight Up "How To Draw Better" Workshop
denniskardys
234
140k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
181
53k
Intergalactic Javascript Robots from Outer Space
tanoku
271
27k
Building Adaptive Systems
keathley
43
2.7k
Code Reviewing Like a Champion
maltzj
524
40k
How GitHub (no longer) Works
holman
314
140k
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