Slide 1

Slide 1 text

4XJGU"#*4UBCJMJUZ .BOJGFTUPΛಡΉ  ҆ୡ༐Ұ Ϋϥεϝιουגࣜձࣾ ೥݄೔ ⡥$MBTTNFUIPE *OD

Slide 2

Slide 2 text

 ҆ୡɹ༐Ұ • 2013/12 ೖࣾ • TwitterID: @UsrNameu1 • Github: https://github.com/ UsrNameu1 • Blog: http://dev.classmethod.jp/ author/yad • ObjC/Swift/Scala/Python(R)

Slide 3

Slide 3 text

4XJGU"#*4UBCJMJUZ.BOJGFTUP  ⡥$MBTTNFUIPE *OD IUUQTHJUIVCDPNBQQMFTXJGUCMPC NBTUFSEPDT"#*4UBCJMJUZ.BOJGFTUPNE

Slide 4

Slide 4 text

ຊ೔ͷτϐοΫ w 4XJGUͷকདྷతͳޓ׵ੑରԠ w "#*ΛֶͿಈػ w "#*ͱ͸ w "#*҆ఆԽ  ⡥$MBTTNFUIPE *OD

Slide 5

Slide 5 text

ຊ೔ͷτϐοΫ w 4XJGUͷকདྷతͳޓ׵ੑରԠ w "#*ΛֶͿಈػ w "#*ͱ͸ w "#*҆ఆԽ  ⡥$MBTTNFUIPE *OD

Slide 6

Slide 6 text

4XJGUͷকདྷతͳޓ׵ੑରԠ w ݹ͍όʔδϣϯͷ4XJGUίʔυͰ΋৽͍͠όʔδϣϯ ͷίϯύΠϥ͕ίϯύΠϧͰ͖ΔΑ͏ʹ w ϞδϡʔϧϑΝΠϧͷϑΥʔϚοτͷ҆ఆԽ w "#*ͷ҆ఆԽ  ⡥$MBTTNFUIPE *OD

Slide 7

Slide 7 text

 ⡥$MBTTNFUIPE *OD

Slide 8

Slide 8 text

ຊ೔ͷτϐοΫ w 4XJGUͷকདྷతͳޓ׵ੑରԠ w "#*ΛֶͿಈػ w "#*ͱ͸ w "#*҆ఆԽ  ⡥$MBTTNFUIPE *OD

Slide 9

Slide 9 text

"#*ΛֶͿಈػ w ඪ४ϥΠϒϥϦͷ஌ࣝΞοϓσʔτਏ͍ w Ұ೥ޙʹ஌͕ࣝݹ͘ͳͬͯΔͷਏ͍  ⡥$MBTTNFUIPE *OD 4XJGUͷΞοϓσʔτਏ͍

Slide 10

Slide 10 text

"#*ΛֶͿಈػ  ⡥$MBTTNFUIPE *OD $ISJT-BUUOFSͷ఩ֶ w $ISJT-BUUOFS 4XJGUͱಉ࣌ʹ--7.ͷ࡞ऀ w "04"ຊষ--7. w ๜ޠ༁ϦϯΫ ɹIUUQNUBLBHJHJUIVCJPBPTBKB

Slide 11

Slide 11 text

"#*ΛֶͿಈػ  ⡥$MBTTNFUIPE *OD $ISJT-BUUOFSͷ఩ֶ ΋͏ͻͱͭɺLLVMΛܰྔͳ··ʹอͪଓ͚͍ͯΔେ͖ͳಛ௃͕͋Δ (ϥΠϒϥϦΛ࢖͏ΫϥΠΞϯτଆ͔ΒݟΔͱࢍ൱྆࿦͕͋Δ)ɻ ͦΕ͸ɺաڈͷܾஅ΋ੵۃతʹݟ௚ͯ͠ɺաڈͱͷޓ׵ੑΛؾʹͤͣʹAPIΛ େ͖͘มߋ͍ͯ͘͠ͱ͍͏͜ͱͩɻ ͨͱ͑͹LLVM IRࣗମʹେ෯ͳมߋΛՃ͑Δʹ͸ɺ͢΂ͯͷ࠷దԽύεͷมߋ ͕ඞཁʹͳΔɻ ͦͯͦ͠Ε͸ɺC++ͷAPIʹ΋େ͖ͳӨڹΛٴ΅͢ɻ LLVMͰ͸աڈʹԿ౓͔ͦ͏͍͏͜ͱ͕͋ͬͨɻ ΫϥΠΞϯτଆʹͱͬͯ͸ਏ͔ͬͨͩΖ͏͕ɺࠓޙͷ։ൃΛॱௐʹਐΊ͍ͯ͘ ͨΊʹ͸ͦ͏͢΂͖ͩͬͨɻ

Slide 12

Slide 12 text

΋͏ͻͱͭɺLLVMΛܰྔͳ··ʹอͪଓ͚͍ͯΔେ͖ͳಛ௃͕͋Δ (ϥΠϒϥϦΛ࢖͏ΫϥΠΞϯτଆ͔ΒݟΔͱࢍ൱྆࿦͕͋Δ)ɻ ͦΕ͸ɺաڈͷܾஅ΋ੵۃతʹݟ௚ͯ͠ɺաڈͱͷޓ׵ੑΛؾʹͤͣʹAPIΛ େ͖͘มߋ͍ͯ͘͠ͱ͍͏͜ͱͩɻ ͨͱ͑͹LLVM IRࣗମʹେ෯ͳมߋΛՃ͑Δʹ͸ɺ͢΂ͯͷ࠷దԽύεͷมߋ ͕ඞཁʹͳΔɻ ͦͯͦ͠Ε͸ɺC++ͷAPIʹ΋େ͖ͳӨڹΛٴ΅͢ɻ LLVMͰ͸աڈʹԿ౓͔ͦ͏͍͏͜ͱ͕͋ͬͨɻ ΫϥΠΞϯτଆʹͱͬͯ͸ਏ͔ͬͨͩΖ͏͕ɺࠓޙͷ։ൃΛॱௐʹਐΊ͍ͯ͘ ͨΊʹ͸ͦ͏͢΂͖ͩͬͨɻ "#*ΛֶͿಈػ  ⡥$MBTTNFUIPE *OD $ISJT-BUUOFSͷ఩ֶ

Slide 13

Slide 13 text

 ⡥$MBTTNFUIPE *OD ͱ͸͍͑ɺਏ͍

Slide 14

Slide 14 text

"#*ΛֶͿಈػ w "#*ͷ҆ఆԽ w "#*෦෼͸ഁյతมߋ͕΄΅ͳ͘ͳΔ  ⡥$MBTTNFUIPE *OD 4XJGUҎ߱

Slide 15

Slide 15 text

"#*ΛֶͿಈػ w "#*·ΘΓͷ஌ࣝ͸Ḋͼͳ͍ w ଞͷਓ͕࿩ͯ͠ͳ͍ωλ͕र͍΍͘͢ͳΔ  ⡥$MBTTNFUIPE *OD ओཁͳಈػ

Slide 16

Slide 16 text

ຊ೔ͷτϐοΫ w 4XJGUͷকདྷతͳޓ׵ੑରԠ w "#*ΛֶͿಈػ w "#*ͱ͸ w "#*҆ఆԽ  ⡥$MBTTNFUIPE *OD

Slide 17

Slide 17 text

"#*ͱ͸  ⡥$MBTTNFUIPE *OD w ࣮ߦ࣌ͷόΠφϦ͕ผϥΠϒϥϦΛ ݺͼग़࣌͢ʹ༻͍ΔΠϯλʔϑΣʔε 4XJGU4PVSDF #JOBSZ ֎෦ʹެ։͞Εͨ*' ֎෦ʹެ։͞Εͨ*'

Slide 18

Slide 18 text

"#*ͱ͸  ⡥$MBTTNFUIPE *OD w ͭ·Γಠཱͨ͠όΠφϦͱͯ͠ίϯύΠϧ͞ΕɺϦϯ Ϋ͞ΕΔ࣌ʹຬͨ͢΂͖όΠφϦ --7.*3 ͷ࢓༷ 4XJGU 4XJGU "#* #JOBSZ

Slide 19

Slide 19 text

ຊ೔ͷτϐοΫ w 4XJGUͷকདྷతͳޓ׵ੑରԠ w "#*ΛֶͿಈػ w "#*ͱ͸ w "#*҆ఆԽ  ⡥$MBTTNFUIPE *OD

Slide 20

Slide 20 text

"#*҆ఆԽ  ⡥$MBTTNFUIPE *OD w ৽͍͠όʔδϣϯͷίϯύΠϥ͕ޓ׵ੑΛอͪͳ͕Β "#*ʹ४ڌͨ͠όΠφϦΛੜ੒͢ΔΑ͏ʹ"#*ʹറΓ Λ༩͑Δ #FGPSF "#* #JOBSZ "GUFS    

Slide 21

Slide 21 text

"#*҆ఆԽ  ⡥$MBTTNFUIPE *OD w ҆ఆԽͷޙ΋কདྷతʹ"#*BEEJUJWFͳ௥Ճ͕ߦΘΕ ΔՄೳੑ͋Γɻͨͩ͜͠ͷ௥Ճ͸ഁյతมߋͰ͸ͳ͍ ௥Ճલ "#* #JOBSZ ௥Ճޙ    

Slide 22

Slide 22 text

"#*҆ఆԽ  ⡥$MBTTNFUIPE *OD w όʔδϣϯ͕ҧ͏ίϯύΠϥͰϏϧυͨ͠ΞϓϦʹ04 ඪ४ϥΠϒϥϦΛಉࠝ͢Δඞཁ͕ͳ͘ͳΔ #FGPSF "#* -JC #JOBSZ "GUFS   "QQ #JOBSZ OFX04 PME04 ͇ ҟͳΔ7FSͷϥΠϒϥϦͰ͸ "#*ޓ׵ੑ͕ͳ͍ ɹɹɹɹɹɹɹˣ 04ͷΞοϓσʔτͰ-JCόΠφϦͷ *'Λҡ࣋Ͱ͖ͳ͘ͳΔ

Slide 23

Slide 23 text

"#*҆ఆԽ  ⡥$MBTTNFUIPE *OD w όʔδϣϯ͕ҧ͏ίϯύΠϥͰϏϧυͨ͠ΞϓϦʹ04 ඪ४ϥΠϒϥϦΛಉࠝ͢Δඞཁ͕ͳ͘ͳΔ #FGPSF "#* -JC #JOBSZ "GUFS   "QQ #JOBSZ OFX04 PME04   0 OFX04 PME04

Slide 24

Slide 24 text

"#*҆ఆԽ  ⡥$MBTTNFUIPE *OD w όʔδϣϯ͕ҧ͏ίϯύΠϥͰϏϧυͨ͠ΞϓϦʹ04 ඪ४ϥΠϒϥϦΛಉࠝ͢Δඞཁ͕ͳ͘ͳΔ #FGPSF "GUFS   0 OFX04 PME04 ҟͳΔ7FSͷϥΠϒϥϦͰ͸ "#*ޓ׵ੑ͕͋Δ ɹɹɹɹɹɹɹɹˣ 04ͷΞοϓσʔτͰ-JCόΠφϦͷ *'͸ҡ࣋͞ΕΔ ɹɹɹɹɹɹɹɹˣ "QQόΠφϦ͔Β৽-JCόΠφϦΛ ݺͼग़ͯ͠΋໰୊ͳ͍

Slide 25

Slide 25 text

"#*҆ఆԽ  ⡥$MBTTNFUIPE *OD w όʔδϣϯ͕ҧ͏ίϯύΠϥͰϏϧυͨ͠ΞϓϦʹ04 ඪ४ϥΠϒϥϦΛಉࠝ͢Δඞཁ͕ͳ͘ͳΔ #FGPSF "#* -JC #JOBSZ "GUFS   "QQ #JOBSZ OFX04 PME04   0 OFX04 PME04

Slide 26

Slide 26 text

"#*҆ఆԽ  ⡥$MBTTNFUIPE *OD w ଞʹ΋ϥϯλΠϜɺΠϯϥΠϯԽʹؔ͢Δ࢓༷͕҆ఆ Խͷ՝୊ʹͳ͍ͬͯΔ໛༷

Slide 27

Slide 27 text

ࢀߟαΠτ  ⡥$MBTTNFUIPE *OD w 4XJGU"#*4UBCJMJUZ.BOJGFTUPSFWGE IUUQTHJUIVCDPNBQQMFTXJGUCMPCNBTUFSEPDT"#*4UBCJMJUZ.BOJGFTUPNE w 4XJGUͷ։ൃͷৼΓฦΓͱ4XJGUͷܭը͕ه͞Εͨϝʔϧͷ঺հ IUUQRJJUBDPNNPOPJUFNTDCGBFFFEC w 4XJGUΛ͍·͔ΒֶͿ4XJGU&WPMVUJPO΢Υονϯά IUUQEFWFMPQFSIBUFOBTUB⒎DPNFOUSZMFBSOBCPVUTXJGUQPJOUGSPNTXJGUFWPMVUJPO

Slide 28

Slide 28 text

ࢀߟαΠτ  ⡥$MBTTNFUIPE *OD w 5IF4XJGU"#* IUUQTHJUIVCDPNBQQMFTXJGUCMPCNBTUFSEPDT"#*STU w 5IF4XJGU3VOUJNF IUUQTHJUIVCDPNBQQMFTXJGUCMPCNBTUFSEPDT3VOUJNFNE