Slide 1

Slide 1 text

どうしてもcgoから逃げられなくなったあなたに知ってほしい cgoの使い方入門 さき(H.Saki) @saki_engineer Go Conference 2023, JUN 2 2023

Slide 2

Slide 2 text

自己紹介 About Me l ͖͞ )4BLJ ○ ຊۀͰ͸"84Λओઓ৔ʹͨ͠ Ϋϥ΢υΠϯϑϥ԰͞ΜΛ͍ͯ͠·͢ ○ 5XJUUFS!TBLJ@FOHJOFFS l աڈͷ੒Ռ෺ FUDʜ ;FOO ٕज़ॻయ ݄߸ʙ ࿈ࡌதʂʂʂ

Slide 3

Slide 3 text

本日のテーマ Today’s Theme DHP

Slide 4

Slide 4 text

本日のテーマ Today’s Theme DΛ HPͷίʔυ͔Βݺͼग़͢

Slide 5

Slide 5 text

本日のテーマ Today’s Theme DΛ HPͷίʔυ͔Βݺͼग़͢ ࠓͲ͖ͦΜͳ Ϣʔεέʔεຊ౰ ʹ͋Δͷʁʁʁ ௿ϨΠϠΛѻ͏ͱ ͖͔ؔ͠܎ͳ͍Ͱ ͠ΐʁ (P͕Ͱ͖ͯؒ΋ͳ͍ͱ ͖ʹ࢖͍ͬͯͨʹ͑͠ͷ Ҩ࢈͡Όͳ͍ͷʁ

Slide 6

Slide 6 text

本日のテーマ Today’s Theme ͦΜͳ;͏ʹࢥ͍ͬͯͨ࣌ظ͕ ࢲʹ΋͋Γ·ͨ͠ʜʜ

Slide 7

Slide 7 text

ある日のこと Recollection ͋ͷαʔϏε (P੡ ʹ৽ػೳΛ௥Ճ͍ͨ͠ ΜͰ͢Α ࢲ ্࢘

Slide 8

Slide 8 text

ある日のこと Recollection (PͰͲ͏΍ͬͯ ࣮૷͢ΔΜͩ ʜʜʁ ʓʓͰ˚˚͢Δػ ೳͳΜͰ͚͢Ͳ ࢲ ্࢘

Slide 9

Slide 9 text

ある日のこと Recollection · ͡ Ͱ ͢ ͔ ʓʓͷ෦ॺ͕$Ͱ࣮૷ ͯ͘͠ΕͨͷͰͦΕΛ ૊ΈࠐΜͰ͍ͩ͘͞ ࢲ ্࢘

Slide 10

Slide 10 text

ある日のこと Recollection ී௨ͷॲཧͩͬͨΒ(PͰ ࣮૷͠௚ͨ͠ΔΘ ࢲ

Slide 11

Slide 11 text

ある日のこと Recollection ઌ΄Ͳ͓఻͑ͨ͠$ϥ ΠϒϥϦ͓ૹΓ͠·͢ ࢲ ্࢘

Slide 12

Slide 12 text

ある日のこと Recollection ࢲ VO[JQ

Slide 13

Slide 13 text

ある日のこと Recollection ࢲ l MJC ○ GVOD-JCSBSZB l JODMVEF ○ GVOD-JCSBSZI ○ FSSPSTI l EPDUYU

Slide 14

Slide 14 text

ある日のこと Recollection ࢲ l MJC ○ GVOD-JCSBSZB l JODMVEF ○ GVOD-JCSBSZI ○ FSSPSTI l EPDUYU ˡ ੩తϥΠϒϥϦ͚ͩͳͷͰ தͷ࣮૷͕Θ͔Βͳ͍

Slide 15

Slide 15 text

ある日のこと Recollection ࢲ PS[

Slide 16

Slide 16 text

おことわり Notion ͜͜·Ͱͷલஔ͖͸ϑΟΫγϣϯͰ͢ɻ

Slide 17

Slide 17 text

アジェンダ Agenda  DHPWTQVSF(P  DHP%PDVNFOUT  $BTF4UVEZ

Slide 18

Slide 18 text

アジェンダ Agenda  DHP WTQVSF(P  DHP %PDVNFOUT  $BTF4UVEZ

Slide 19

Slide 19 text

cgo is not Go 1. cgo v.s. pure Go 3PC1JLFࢯͷ֨ݴूz(P1SPWFSCTzʹ͸zDHPJTOPU(Pzͱ͍͏ݴ༿͕͋Γ·͢ɻ ௒ҙ༁ ॳظͷࠒ͸ɺDHP࢖ͬͯ؆୯ʹ$ࢿ࢈Λ࢖͑Δ͜ͱΛশࢍ͍ͯ͠Δਓ͸ଟ͔ͬͨΑɻ Ͱ΋ࢲ͸ͦΕ͸ͱΜͰ΋ͳ͍᠘ͩͱࢥ͏ɻ ·͔͋֬ʹผݴޠʹϦϥΠτ͢ΔΑΓͦͷ··׆༻ͨ͠ํ͕͍͍$ࢿ࢈΋͋ΔΑʁ ͦΕͰ΋ࢲ͸DHPΛ࢖͍͍ͨͱ͸ࢥΘͳ͍͠ςετҎ֎Ͱ࢖ͬͨ͜ͱ΋ͳ͍Ͷɻ (Pʹ͸ϝϞϦ҆શੑ͕͋ͬͨΓ(PͷΨϕʔδίϨΫλʔ͕͋ͬͨΓͯ͠ ಛ༗ͷ͍͍ΤίγεςϜ͕͋ΔͷʹɺͦΕΛࠩ͠ஔ͍ͯDHPΛ࢖͓͏ͱ͸ࢥΘͳ͍ɻ  (PQIFSGFTUc(P1SPWFSCTXJUI3PC1JLFΑΓ

Slide 20

Slide 20 text

cgoはGoの持つ良さを半減させてしまう 1. cgo v.s. pure Go 3PC1JLFࢯͷݴ༿ʹ΋͋Δ௨ΓɺDHPΛར༻͢Δͱ͍͏͜ͱ͸(P͕༷࣋ͭʑͳ ͍͍ੑ࣭Λࡴͯ͠͠·͏͜ͱʹ΋ͳΓ·͢ɻ DHPͰࣦΘΕΔ΋ͷ ࢀߟzDHPJTOPUHPzr %BWF$IFOFZ Ϗϧυ͕஗͘ͳΔ σόοά͕೉͍͠ ΫϩείϯύΠϧʹ೉͋Γ ύϑΥʔϚϯεଌఆ͕೉͍͠ ੒Ռ෺͕୯ҰόΠφϦͰͳ͍ Φʔόʔϔουͷൃੜ (PͷϓϩϑΝΠϥ͸ (P෦෼͔͠෼ੳͰ͖ͳ͍ $ࢿ࢈ͷίϯύΠϧɾϦϯΫΛ ௥ՃͰߦ͏ඞཁ͕͋Δ (P͕αϙʔτ͢Δ શΞʔΩςΫνϟʹ $ࢿ࢈΋ରԠͤ͞ଓ͚Δඞཁ (PͰͷϥούʔ෦෼ͱ $ࢿ࢈Λ ೋॏ؅ཧ͠ͳ͍ͱ͍͚ͳ͍ (Pͱ$ݴޠͱ͍͏ ͭͷݴޠΛ·͙ͨ෼ͷ Φʔόʔϔου $ࢿ࢈෦෼ͰΫϥογϡͯ͠΋ (PͰ͸SFDPWFSͰ͖ͳ͍

Slide 21

Slide 21 text

cgoはGoの持つ良さを半減させてしまう 1. cgo v.s. pure Go 3PC1JLFࢯͷݴ༿ʹ΋͋Δ௨ΓɺDHPΛར༻͢Δͱ͍͏͜ͱ͸(P͕༷࣋ͭʑͳ ͍͍ੑ࣭Λࡴͯ͠͠·͏͜ͱʹ΋ͳΓ·͢ɻ DHPͰࣦΘΕΔ΋ͷ ࢀߟzDHPJTOPUHPzr %BWF$IFOFZ Ϗϧυ͕஗͘ͳΔ σόοά͕೉͍͠ ΫϩείϯύΠϧʹ೉͋Γ ύϑΥʔϚϯεଌఆ͕೉͍͠ ੒Ռ෺͕୯ҰόΠφϦͰͳ͍ Φʔόʔϔουͷൃੜ (PͷϓϩϑΝΠϥ͸ (P෦෼͔͠෼ੳͰ͖ͳ͍ $ࢿ࢈ͷίϯύΠϧɾϦϯΫΛ ௥ՃͰߦ͏ඞཁ͕͋Δ (P͕αϙʔτ͢Δ શΞʔΩςΫνϟʹ $ࢿ࢈΋ରԠͤ͞ଓ͚Δඞཁ (PͰͷϥούʔ෦෼ͱ $ࢿ࢈Λ ೋॏ؅ཧ͠ͳ͍ͱ͍͚ͳ͍ (Pͱ$ݴޠͱ͍͏ ͭͷݴޠΛ·͙ͨ෼ͷ Φʔόʔϔου $ࢿ࢈෦෼ͰΫϥογϡͯ͠΋ (PͰ͸SFDPWFSͰ͖ͳ͍

Slide 22

Slide 22 text

cgoはGoの持つ良さを半減させてしまう 1. cgo v.s. pure Go 3PC1JLFࢯͷݴ༿ʹ΋͋Δ௨ΓɺDHPΛར༻͢Δͱ͍͏͜ͱ͸(P͕༷࣋ͭʑͳ ͍͍ੑ࣭Λࡴͯ͠͠·͏͜ͱʹ΋ͳΓ·͢ɻ DHPͰࣦΘΕΔ΋ͷ ࢀߟzDHPJTOPUHPzr %BWF$IFOFZ Ϗϧυ͕஗͘ͳΔ σόοά͕೉͍͠ ΫϩείϯύΠϧʹ೉͋Γ ύϑΥʔϚϯεଌఆ͕೉͍͠ ੒Ռ෺͕୯ҰόΠφϦͰͳ͍ Φʔόʔϔουͷൃੜ (PͷϓϩϑΝΠϥ͸ (P෦෼͔͠෼ੳͰ͖ͳ͍ $ࢿ࢈ͷίϯύΠϧɾϦϯΫΛ ௥ՃͰߦ͏ඞཁ͕͋Δ (P͕αϙʔτ͢Δ શΞʔΩςΫνϟʹ $ࢿ࢈΋ରԠͤ͞ଓ͚Δඞཁ (PͰͷϥούʔ෦෼ͱ $ࢿ࢈Λ ೋॏ؅ཧ͠ͳ͍ͱ͍͚ͳ͍ (Pͱ$ݴޠͱ͍͏ ͭͷݴޠΛ·͙ͨ෼ͷ Φʔόʔϔου $ࢿ࢈෦෼ͰΫϥογϡͯ͠΋ (PͰ͸SFDPWFSͰ͖ͳ͍

Slide 23

Slide 23 text

cgoはGoの持つ良さを半減させてしまう 1. cgo v.s. pure Go 3PC1JLFࢯͷݴ༿ʹ΋͋Δ௨ΓɺDHPΛར༻͢Δͱ͍͏͜ͱ͸(P͕༷࣋ͭʑͳ ͍͍ੑ࣭Λࡴͯ͠͠·͏͜ͱʹ΋ͳΓ·͢ɻ DHPͰࣦΘΕΔ΋ͷ ࢀߟzDHPJTOPUHPzr %BWF$IFOFZ Ϗϧυ͕஗͘ͳΔ σόοά͕೉͍͠ ΫϩείϯύΠϧʹ೉͋Γ ύϑΥʔϚϯεଌఆ͕೉͍͠ ੒Ռ෺͕୯ҰόΠφϦͰͳ͍ Φʔόʔϔουͷൃੜ (PͷϓϩϑΝΠϥ͸ (P෦෼͔͠෼ੳͰ͖ͳ͍ $ࢿ࢈ͷίϯύΠϧɾϦϯΫΛ ௥ՃͰߦ͏ඞཁ͕͋Δ (P͕αϙʔτ͢Δ શΞʔΩςΫνϟʹ $ࢿ࢈΋ରԠͤ͞ଓ͚Δඞཁ (PͰͷϥούʔ෦෼ͱ $ࢿ࢈Λ ೋॏ؅ཧ͠ͳ͍ͱ͍͚ͳ͍ (Pͱ$ݴޠͱ͍͏ ͭͷݴޠΛ·͙ͨ෼ͷ Φʔόʔϔου $ࢿ࢈෦෼ͰΫϥογϡͯ͠΋ (PͰ͸SFDPWFSͰ͖ͳ͍

Slide 24

Slide 24 text

cgoはGoの持つ良さを半減させてしまう 1. cgo v.s. pure Go 3PC1JLFࢯͷݴ༿ʹ΋͋Δ௨ΓɺDHPΛར༻͢Δͱ͍͏͜ͱ͸(P͕༷࣋ͭʑͳ ͍͍ੑ࣭Λࡴͯ͠͠·͏͜ͱʹ΋ͳΓ·͢ɻ DHPͰࣦΘΕΔ΋ͷ ࢀߟzDHPJTOPUHPzr %BWF$IFOFZ Ϗϧυ͕஗͘ͳΔ σόοά͕೉͍͠ ΫϩείϯύΠϧʹ೉͋Γ ύϑΥʔϚϯεଌఆ͕೉͍͠ ੒Ռ෺͕୯ҰόΠφϦͰͳ͍ Φʔόʔϔουͷൃੜ (PͷϓϩϑΝΠϥ͸ (P෦෼͔͠෼ੳͰ͖ͳ͍ $ࢿ࢈ͷίϯύΠϧɾϦϯΫΛ ௥ՃͰߦ͏ඞཁ͕͋Δ (P͕αϙʔτ͢Δ શΞʔΩςΫνϟʹ $ࢿ࢈΋ରԠͤ͞ଓ͚Δඞཁ (PͰͷϥούʔ෦෼ͱ $ࢿ࢈Λ ೋॏ؅ཧ͠ͳ͍ͱ͍͚ͳ͍ (Pͱ$ݴޠͱ͍͏ ͭͷݴޠΛ·͙ͨ෼ͷ Φʔόʔϔου $ࢿ࢈෦෼ͰΫϥογϡͯ͠΋ (PͰ͸SFDPWFSͰ͖ͳ͍

Slide 25

Slide 25 text

cgoはGoの持つ良さを半減させてしまう 1. cgo v.s. pure Go 3PC1JLFࢯͷݴ༿ʹ΋͋Δ௨ΓɺDHPΛར༻͢Δͱ͍͏͜ͱ͸(P͕༷࣋ͭʑͳ ͍͍ੑ࣭Λࡴͯ͠͠·͏͜ͱʹ΋ͳΓ·͢ɻ DHPͰࣦΘΕΔ΋ͷ ࢀߟzDHPJTOPUHPzr %BWF$IFOFZ Ϗϧυ͕஗͘ͳΔ σόοά͕೉͍͠ ΫϩείϯύΠϧʹ೉͋Γ ύϑΥʔϚϯεଌఆ͕೉͍͠ ੒Ռ෺͕୯ҰόΠφϦͰͳ͍ Φʔόʔϔουͷൃੜ (PͷϓϩϑΝΠϥ͸ (P෦෼͔͠෼ੳͰ͖ͳ͍ $ࢿ࢈ͷίϯύΠϧɾϦϯΫΛ ௥ՃͰߦ͏ඞཁ͕͋Δ (P͕αϙʔτ͢Δ શΞʔΩςΫνϟʹ $ࢿ࢈΋ରԠͤ͞ଓ͚Δඞཁ (PͰͷϥούʔ෦෼ͱ $ࢿ࢈Λ ೋॏ؅ཧ͠ͳ͍ͱ͍͚ͳ͍ (Pͱ$ݴޠͱ͍͏ ͭͷݴޠΛ·͙ͨ෼ͷ Φʔόʔϔου $ࢿ࢈෦෼ͰΫϥογϡͯ͠΋ (PͰ͸SFDPWFSͰ͖ͳ͍

Slide 26

Slide 26 text

cgoはGoの持つ良さを半減させてしまう 1. cgo v.s. pure Go 3PC1JLFࢯͷݴ༿ʹ΋͋Δ௨ΓɺDHPΛར༻͢Δͱ͍͏͜ͱ͸(P͕༷࣋ͭʑͳ ͍͍ੑ࣭Λࡴͯ͠͠·͏͜ͱʹ΋ͳΓ·͢ɻ DHPͰࣦΘΕΔ΋ͷ ࢀߟzDHPJTOPUHPzr %BWF$IFOFZ Ϗϧυ͕஗͘ͳΔ σόοά͕೉͍͠ ΫϩείϯύΠϧʹ೉͋Γ ύϑΥʔϚϯεଌఆ͕೉͍͠ ੒Ռ෺͕୯ҰόΠφϦͰͳ͍ Φʔόʔϔουͷൃੜ (PͷϓϩϑΝΠϥ͸ (P෦෼͔͠෼ੳͰ͖ͳ͍ $ࢿ࢈ͷίϯύΠϧɾϦϯΫΛ ௥ՃͰߦ͏ඞཁ͕͋Δ (P͕αϙʔτ͢Δ શΞʔΩςΫνϟʹ $ࢿ࢈΋ରԠͤ͞ଓ͚Δඞཁ (PͰͷϥούʔ෦෼ͱ $ࢿ࢈Λ ೋॏ؅ཧ͠ͳ͍ͱ͍͚ͳ͍ (Pͱ$ݴޠͱ͍͏ ͭͷݴޠΛ·͙ͨ෼ͷ Φʔόʔϔου $ࢿ࢈෦෼ͰΫϥογϡͯ͠΋ (PͰ͸SFDPWFSͰ͖ͳ͍

Slide 27

Slide 27 text

アジェンダ Agenda  DHP WTQVSF(P  DHP %PDVNFOUT  $BTF4UVEZ

Slide 28

Slide 28 text

cgoに関するドキュメントは少ない 2. cgo Documents 1VSF(PΛ࢖͏ͷ͕ϝΠϯͷைྲྀͰ͋ΔݱࡏɺDHPʹؔ͢ΔυΩϡϝϯτ͸ඇৗ ʹগͳ͍Ͱ͢ɻ DHPͷυΩϡϝϯτ • 5IF(P#MPH $ (P $HP • QLHHPEFW DHP • (Pެࣜ8JLJ DHP

Slide 29

Slide 29 text

cgoに関するドキュメントは少ない 2. cgo Documents 1VSF(PΛ࢖͏ͷ͕ϝΠϯͷைྲྀͰ͋ΔݱࡏɺDHPʹؔ͢ΔυΩϡϝϯτ͸ඇৗ ʹগͳ͍Ͱ͢ɻ DHPͷυΩϡϝϯτ • 5IF(P#MPH $ (P $HP • QLHHPEFW DHP • (Pެࣜ8JLJ DHP • ؆୯ͳ)FMMP8PSME ӈਤ • จࣈྻͷѻ͍ํ • $ͰΞϩέʔτͨ͠ϝϞϦ͸(P Ͱ͸ؔ஌͠ͳ͍͔Β͖ͪΜͱ GSFFͯ͠Ͷ

Slide 30

Slide 30 text

cgoに関するドキュメントは少ない 2. cgo Documents 1VSF(PΛ࢖͏ͷ͕ϝΠϯͷைྲྀͰ͋ΔݱࡏɺDHPʹؔ͢ΔυΩϡϝϯτ͸ඇৗ ʹগͳ͍Ͱ͢ɻ DHPͷυΩϡϝϯτ • 5IF(P#MPH $ (P $HP • QLHHPEFW DHP • (Pެࣜ8JLJ DHP • DHPσΟϨΫςΟϒʹ෇͚ΒΕΔΦϓγϣϯৄࡉ • (P͔Β$Λݺͼग़͢؆୯ͳྫ • $͔Β(PΛݺͼग़͢؆୯ͳྫ • HPUPPMDHPίϚϯυͷΦϓγϣϯ ˡ͜͏͍͏ͷ

Slide 31

Slide 31 text

cgoに関するドキュメントは少ない 2. cgo Documents 1VSF(PΛ࢖͏ͷ͕ϝΠϯͷைྲྀͰ͋ΔݱࡏɺDHPʹؔ͢ΔυΩϡϝϯτ͸ඇৗ ʹগͳ͍Ͱ͢ɻ DHPͷυΩϡϝϯτ • 5IF(P#MPH $ (P $HP • QLHHPEFW DHP • (Pެࣜ8JLJ DHP • ؆୯ͳ)FMMP8PSME • $͔Β(PͷίʔυΛݺͼग़͢ํ๏ • (Pͷจࣈྻͱ$ͷจࣈྻͷҧ͍Λ౿·͑ͨѻ͍ํ

Slide 32

Slide 32 text

cgoに関するドキュメントは少ない 2. cgo Documents 1VSF(PΛ࢖͏ͷ͕ϝΠϯͷைྲྀͰ͋ΔݱࡏɺDHPʹؔ͢ΔυΩϡϝϯτ͸ඇৗ ʹগͳ͍Ͱ͢ɻ DHPͷυΩϡϝϯτ • 5IF(P#MPH $ (P $HP • QLHHPEFW DHP • (Pެࣜ8JLJ DHP େن໛ͳطଘ$ࢿ࢈ϥΠϒϥϦΛ ࢖͑ΔΑ͏ʹ͢Δͱ͍͏৘ใͰ͸ͳ͍ ͜ΕͰͲ͏΍ͬͯઓ͑͹͍͍Μͩʜʜ

Slide 33

Slide 33 text

アジェンダ Agenda  DHP WTQVSF(P  DHP %PDVNFOUT  $BTF4UVEZ

Slide 34

Slide 34 text

アジェンダ Agenda  DHP WTQVSF(P  DHP %PDVNFOUT  $BTF4UVEZ B ঢ়گઆ໌

Slide 35

Slide 35 text

状況説明 3. Case Study - Situation Ϣʔεέʔεͱͯ͠͸ɺʮ(Pͷαʔόʔίʔυͷத͔Βɺ$ݴޠ੡ͷϥΠϒϥ ϦΛݺͼग़͢ʯͱ͍͏΋ͷͰͨ͠ɻ ࢲ l MJC ○ GVOD-JCSBSZB l JODMVEF ○ GVOD-JCSBSZI ○ FSSPSTI l EPDUYU $ݴޠϥΠϒϥϦ (Pͷαʔόʔίʔυ DBMM

Slide 36

Slide 36 text

状況説明 3. Case Study - Situation ͜ͷঢ়گͰ೉͔ͬͨ͠ͷ͸ҎԼͷ఺Ͱ͢ɻ l ੩తϥΠϒϥϦ BϑΝΠϧ ͷΈख౉͞Εɺதͷ࣮૷͕ෆ໌ ○ (PͰ࠶࣮૷ͯ͠DHPͷ࢖༻ճආ͸ෆՄೳ l ϔομϑΝΠϧ಺ͷϓϩτλΠϓએݴͷྔ͕ଟ͍ ○ ͭͭ(PͰϥούʔΛ࡞͍ͬͯ͘ͷ͸ඇݱ࣮త l ໌Β͔ʹ$ ͱࢥΘΕ͠Ϋϥεએݴ͕ϔομϑΝΠϧ಺ʹ͋ͬͨ ○ ެࣜυΩϡϝϯτʹ͸QVSF$Ͱͷ৘ใ͸͋Δ͕ɺ$ ʹؔ͢Δهࡌ͸ͳ͠ ○ චऀɺ$ͷܦݧ͸͋ΕͲ$ ͸΍ͬͨ͜ͱͳ͍ śƂŦ ʘ ?P? ʗ

Slide 37

Slide 37 text

アジェンダ Agenda  DHP WTQVSF(P  DHP %PDVNFOUT  $BTF4UVEZ B ঢ়گઆ໌ C ٹੈओ  48*(

Slide 38

Slide 38 text

救世主 - SWIG 3. Case Study - SWIG 48*(͸$$ Ͱॻ͔ΕͨϓϩάϥϜΛଞݴޠͷιʔείʔυ͔Βݺͼग़ͨ͢Ί ͷϥούʔΠϯλʔϑΣʔείʔυΛੜ੒ͤ͞ΔπʔϧͰ͢ɻ $ ϥούʔ 48*( ΠϯλʔϑΣʔε ϑΝΠϧ TXJHrHP TXJHίϚϯυΛ࣮ߦ ॲཧର৅ͷ $ϥΠϒϥϦϔομʔ৘ใ FUDʜ (Pίʔυ ࢀߟIUUQTXXXTXJHPSH

Slide 39

Slide 39 text

SWIGでのラッパーインターフェース生成の様子 3. Case Study - SWIG ͔͜͜Β͸ྫͱͯ͠ʮ͓Έ͘͡ΛҾ͘ʯ$ ϥΠϒϥϦΛ(P͔Βݺͼग़ͤΔΑ ͏ʹ͍ͯ͘͠աఔΛऔΓ্͍͛ͨͱࢥ͍·͢ɻ l PNJLVKJ ○ MJC ■ MJCPNJLVKJB ○ JODMVEF ■ PNJLVKJI ■ FSSPS$PEFI ͓Έ͘͡ػೳΛ࣮૷ͨ͠੩తϥΠϒϥϦ

Slide 40

Slide 40 text

SWIGでのラッパーインターフェース生成の様子 3. Case Study - SWIG $ ϥΠϒϥϦʹରԠ͢ΔϔομʔϑΝΠϧͷத਎͸ҎԼͷ௨ΓͰ͢ɻ l PNJLVKJ ○ MJC ■ MJCPNJLVKJB ○ JODMVEF ■ PNJLVKJI ■ FSSPS$PEFI ͓Έ͘͡Λ ͍ΖΜͳܗͰҾ͘ ϝιουͨͪ ͓Έ͘͡ߏ଄ମͱ

Slide 41

Slide 41 text

SWIGでのラッパーインターフェース生成の様子 3. Case Study - SWIG $ ϥΠϒϥϦʹରԠ͢ΔϔομʔϑΝΠϧͷத਎͸ҎԼͷ௨ΓͰ͢ɻ l PNJLVKJ ○ MJC ■ MJCPNJLVKJB ○ JODMVEF ■ PNJLVKJI ■ FSSPS$PEFI ͨ·ʹ͓Έ͘͡ശʹ ෆ۩߹͕ى͖ͯ ࣦഊ͠·͢

Slide 42

Slide 42 text

SWIGでのラッパーインターフェース生成の様子 3. Case Study - SWIG ͜ͷ͓Έ͘͡ϥΠϒϥϦΛ(P͔Βݺͼग़͢ϥούʔΛੜ੒͢ΔͨΊʹɺ৽ͨʹ ΠϯλʔϑΣʔεϑΝΠϧ YYYYJ Λ࡞੒͠·͢ɻ l PNJLVKJ ○ MJC ■ MJCPNJLVKJB ○ JODMVEF ■ PNJLVKJI ■ FSSPS$PEFI ○ PNJLVKJJ

Slide 43

Slide 43 text

SWIGでのラッパーインターフェース生成の様子 3. Case Study - SWIG ͜ͷ͓Έ͘͡ϥΠϒϥϦΛ(P͔Βݺͼग़͢ϥούʔΛੜ੒͢ΔͨΊʹɺ৽ͨʹ ΠϯλʔϑΣʔεϑΝΠϧ YYYYJ Λ࡞੒͠·͢ɻ l PNJLVKJ ○ MJC ■ MJCPNJLVKJB ○ JODMVEF ■ PNJLVKJI ■ FSSPS$PEFI ○ PNJLVKJJ ࣗಈੜ੒͞Εͨ(Pίʔυͷ ύοέʔδ໊Λࢦఆ

Slide 44

Slide 44 text

SWIGでのラッパーインターフェース生成の様子 3. Case Study - SWIG ͜ͷ͓Έ͘͡ϥΠϒϥϦΛ(P͔Βݺͼग़͢ϥούʔΛੜ੒͢ΔͨΊʹɺ৽ͨʹ ΠϯλʔϑΣʔεϑΝΠϧ YYYYJ Λ࡞੒͠·͢ɻ l PNJLVKJ ○ MJC ■ MJCPNJLVKJB ○ JODMVEF ■ PNJLVKJI ■ FSSPS$PEFI ○ PNJLVKJJ ϥούʔͷର৅ͱͳΔ $$ ͷϔομʔΛࢦఆ

Slide 45

Slide 45 text

SWIGでのラッパーインターフェース生成の様子 3. Case Study - SWIG ͜ͷ͓Έ͘͡ϥΠϒϥϦΛ(P͔Βݺͼग़͢ϥούʔΛੜ੒͢ΔͨΊʹɺ৽ͨʹ ΠϯλʔϑΣʔεϑΝΠϧ YYYYJ Λ࡞੒͠·͢ɻ l PNJLVKJ ○ MJC ■ MJCPNJLVKJB ○ JODMVEF ■ PNJLVKJI ■ FSSPS$PEFI ○ PNJLVKJJ Ϗϧυͷࡍʹ$$ ίϯύ Πϥʹ౉ΔϑϥάΛࢦఆ • $11'-"(4*Φϓγϣ ϯͰ࢖༻ϔομϑΝΠϧ Λࢦఆ • -%'-"(4-Φϓγϣ ϯͰ࢖༻੩తϥΠϒϥϦ Λࢦఆ

Slide 46

Slide 46 text

SWIGでのラッパーインターフェース生成の様子 3. Case Study - SWIG ͜ͷ͓Έ͘͡ϥΠϒϥϦΛ(P͔Βݺͼग़͢ϥούʔΛੜ੒͢ΔͨΊʹɺ৽ͨʹ ΠϯλʔϑΣʔεϑΝΠϧ YYYYJ Λ࡞੒͠·͢ɻ l PNJLVKJ ○ MJC ■ MJCPNJLVKJB ○ JODMVEF ■ PNJLVKJI ■ FSSPS$PEFI ○ PNJLVKJJ ͜͜͸ޙड़

Slide 47

Slide 47 text

SWIGでのラッパーインターフェース生成の様子 3. Case Study - SWIG 48*(ΠϯλʔϑΣʔεϑΝΠϧ͕Ͱ͖ͨΒɺTXJHίϚϯυΛ࣮ߦ͠·͢ɻ l PNJLVKJ ○ MJC ■ MJCPNJLVKJB ○ JODMVEF ■ PNJLVKJI ■ FSSPS$PEFI ○ PNJLVKJJ ࢲ DEPNJLVKJ TXJHHPD DHP JODMVEFBMM *JODMVEFJOUHPTJ[F PNJLVKJJ

Slide 48

Slide 48 text

SWIGでのラッパーインターフェース生成の様子 3. Case Study - SWIG 48*(ΠϯλʔϑΣʔεϑΝΠϧ͕Ͱ͖ͨΒɺTXJHίϚϯυΛ࣮ߦ͠·͢ɻ l PNJLVKJ ○ MJC ■ MJCPNJLVKJB ○ JODMVEF ■ PNJLVKJI ■ FSSPS$PEFI ○ PNJLVKJJ ࢲ DEPNJLVKJ TXJH HPD DHP JODMVEFBMM *JODMVEFJOUHPTJ[F PNJLVKJJ PNJLVKJJͷ಺༰͔Β (PͷίʔυΛੜ੒

Slide 49

Slide 49 text

SWIGでのラッパーインターフェース生成の様子 3. Case Study - SWIG 48*(ΠϯλʔϑΣʔεϑΝΠϧ͕Ͱ͖ͨΒɺTXJHίϚϯυΛ࣮ߦ͠·͢ɻ l PNJLVKJ ○ MJC ■ MJCPNJLVKJB ○ JODMVEF ■ PNJLVKJI ■ FSSPS$PEFI ○ PNJLVKJJ ࢲ DEPNJLVKJ TXJHHPD DHP JODMVEFBMM *JODMVEFJOUHPTJ[F PNJLVKJJ $ ͷίʔυΛ ॲཧର৅ʹ͢Δ

Slide 50

Slide 50 text

SWIGでのラッパーインターフェース生成の様子 3. Case Study - SWIG 48*(ΠϯλʔϑΣʔεϑΝΠϧ͕Ͱ͖ͨΒɺTXJHίϚϯυΛ࣮ߦ͠·͢ɻ l PNJLVKJ ○ MJC ■ MJCPNJLVKJB ○ JODMVEF ■ PNJLVKJI ■ FSSPS$PEFI ○ PNJLVKJJ ࢲ DEPNJLVKJ TXJHHPD DHP JODMVEFBMM *JODMVEFJOUHPTJ[F PNJLVKJJ ੒Ռ෺ͰDHPΛར༻ͯ͠0,

Slide 51

Slide 51 text

SWIGでのラッパーインターフェース生成の様子 3. Case Study - SWIG 48*(ΠϯλʔϑΣʔεϑΝΠϧ͕Ͱ͖ͨΒɺTXJHίϚϯυΛ࣮ߦ͠·͢ɻ l PNJLVKJ ○ MJC ■ MJCPNJLVKJB ○ JODMVEF ■ PNJLVKJI ■ FSSPS$PEFI ○ PNJLVKJJ ࢲ DEPNJLVKJ TXJHHPD DHP JODMVEFBMM *JODMVEFJOUHPTJ[F PNJLVKJJ ར༻͢ΔϔομϑΝΠϧͷ ઃఆ

Slide 52

Slide 52 text

SWIGでのラッパーインターフェース生成の様子 3. Case Study - SWIG 48*(ΠϯλʔϑΣʔεϑΝΠϧ͕Ͱ͖ͨΒɺTXJHίϚϯυΛ࣮ߦ͠·͢ɻ l PNJLVKJ ○ MJC ■ MJCPNJLVKJB ○ JODMVEF ■ PNJLVKJI ■ FSSPS$PEFI ○ PNJLVKJJ ࢲ DEPNJLVKJ TXJHHPD DHP JODMVEFBMM *JODMVEFJOUHPTJ[F PNJLVKJJ $ͰͷJOUΛ(PͰͷJOUʹ ରԠ͚ͮ

Slide 53

Slide 53 text

SWIGでのラッパーインターフェース生成の様子 3. Case Study - SWIG ͢Δͱɺ$ ͱ(PͷϥούʔΠϯλʔϑΣʔεϑΝΠϧ͕ͦΕͧΕݸੜ੒͞ Ε·͢ɻ l PNJLVKJ ○ MJC ■ MJCPNJLVKJB ○ JODMVEF ■ PNJLVKJI ■ FSSPS$PEFI ○ PNJLVKJJ ○ PNJLVKJ@XSBQDYY ○ JOUFSOBMHP DHPͰݺͼग़͠΍͍͢ܗʹ੔ܗͨ͠$ ϥούʔ ͦΕΛDHPͰݺͼग़͢(Pίʔυ

Slide 54

Slide 54 text

アジェンダ Agenda  DHP WTQVSF(P  DHP %PDVNFOUT  $BTF4UVEZ B ঢ়گઆ໌ C ٹੈओ r 48*( D 48*(Ͱྑ͔ͬͨ͜ͱ ؾΛ͚ͭΔ͜ͱ

Slide 55

Slide 55 text

SWIGで良かったこと 3. Case Study – Pros & Cons of SWIG 48*(Λ࢖ͬͯྑ͔ͬͨ͜ͱ͸ҎԼͰ͢ɻ l ϔομϑΝΠϧʹେྔʹఆٛ͞ΕͨϓϩτλΠϓએݴ͔ΒίʔυΛࣗಈੜ੒Ͱ͖Δ ○ ؾΛݣ͏$$ (Pؒͷ஋ͷड͚౉͠Λ48*(ʹ೚ͤΒΕΔͨΊָ l $ ͕෼͔Βͳͯ͘΋ͳΜͱ͔ͳͬͨ ○ $ ಛ༗ͷهड़ΛDHPެࣜʹ৘ใ͕͋ͬͨQVSF$ͷ΍Γํʹ߹ΘͤΔ࡞ۀΛ 48*(ʹ೚ͤΒΕͨ l ඇϓϦϛςΟϒܕΛֶशίετ௿͘ѻ͏͜ͱ͕Ͱ͖ͨ ○ ޙड़

Slide 56

Slide 56 text

SWIGで良かったこと 3. Case Study – Pros & Cons of SWIG (P$ݴޠؒͰ஋ͷ΍ΓͱΓ͸ɺϓϦϛςΟϒܕͳΒൺֱత༰қʹͰ͖ΔͷͰ ͕͢ɺͦ͏Ͱͳ͍ͱਖ਼֬ʹͦΕΛ࣮૷͢Δͷ͸େมͰ͢ɻ Ϋϥε (P$ݴޠؒͷ஋ͷड͚౉͠ํ๏ $VJOU΍$MPOHʹ Ωϟετ͢Δ ഑ྻܕ ϙΠϯλܕ $$4USJOHؔ਺΍ $(P4USJOHؔ਺Λ࢖ͬͯ͏·͘΍Δ ʮઌ಄ཁૉͷϙΠϯλΛ౉ͯ͠Ͷʯ ͱQLHHPEFWʹॻ͍ͯ͋Δ͚ͩ ਺஋ܕ จࣈྻܕ DIBS

Slide 57

Slide 57 text

SWIGで良かったこと 3. Case Study – Pros & Cons of SWIG (P$ݴޠؒͰ஋ͷ΍ΓͱΓ͸ɺϓϦϛςΟϒܕͳΒൺֱత༰қʹͰ͖ΔͷͰ ͕͢ɺͦ͏Ͱͳ͍ͱਖ਼֬ʹͦΕΛ࣮૷͢Δͷ͸େมͰ͢ɻ Ϋϥε (P$ݴޠؒͷ஋ͷड͚౉͠ํ๏ $VJOU΍$MPOHʹ Ωϟετ͢Δ ഑ྻܕ ϙΠϯλܕ $$4USJOHؔ਺΍ $(P4USJOHؔ਺Λ࢖ͬͯ͏·͘΍Δ ʮઌ಄ཁૉͷϙΠϯλΛ౉ͯ͠Ͷʯ ͱQLHHPEFWʹॻ͍ͯ͋Δ͚ͩ ਺஋ܕ จࣈྻܕ DIBS

Slide 58

Slide 58 text

SWIGで良かったこと 3. Case Study – Pros & Cons of SWIG (P$ݴޠؒͰ஋ͷ΍ΓͱΓ͸ɺϓϦϛςΟϒܕͳΒൺֱత༰қʹͰ͖ΔͷͰ ͕͢ɺͦ͏Ͱͳ͍ͱਖ਼֬ʹͦΕΛ࣮૷͢Δͷ͸େมͰ͢ɻ Ϋϥε (P$ݴޠؒͷ஋ͷड͚౉͠ํ๏ $VJOU΍$MPOHʹ Ωϟετ͢Δ ഑ྻܕ ϙΠϯλܕ $$4USJOHؔ਺΍ $(P4USJOHؔ਺Λ࢖ͬͯ͏·͘΍Δ ʮઌ಄ཁૉͷϙΠϯλΛ౉ͯ͠Ͷʯ ͱQLHHPEFWʹॻ͍ͯ͋Δ͚ͩ ਺஋ܕ จࣈྻܕ DIBS

Slide 59

Slide 59 text

SWIGで良かったこと 3. Case Study – Pros & Cons of SWIG (P$ݴޠؒͰ஋ͷ΍ΓͱΓ͸ɺϓϦϛςΟϒܕͳΒൺֱత༰қʹͰ͖ΔͷͰ ͕͢ɺͦ͏Ͱͳ͍ͱਖ਼֬ʹͦΕΛ࣮૷͢Δͷ͸େมͰ͢ɻ Ϋϥε (P$ݴޠؒͷ஋ͷड͚౉͠ํ๏ $VJOU΍$MPOHʹ Ωϟετ͢Δ ഑ྻܕ ϙΠϯλܕ $$4USJOHؔ਺΍ $(P4USJOHؔ਺Λ࢖ͬͯ͏·͘΍Δ ʮઌ಄ཁૉͷϙΠϯλΛ౉ͯ͠Ͷʯ ͱQLHHPEFWʹॻ͍ͯ͋Δ͚ͩ ਺஋ܕ จࣈྻܕ DIBS

Slide 60

Slide 60 text

Cのクラス変数との値の受け渡し 3. Case Study – Pros & Cons of SWIG $ͷΫϥεม਺ʹؔͯ͠͸ɺ48*(ʹΑͬͯҎԼͷΑ͏ʹ؆୯ʹ஋ͷੜ੒ɾड͚ ౉͕͠Ͱ͖ΔΑ͏ͳؔ਺܈͕ੜ੒͞Ε·͢ɻ $ ϔομʔϑΝΠϧ 48*(͕ੜ੒ͨ͠(Pϥούʔ $ Ͱఆٛ͞Εͨ 1BQFSΫϥε 4FUUFS(FUUFS෇͖ͷ (PΠϯλʔϑΣʔε ίϯετϥΫλ σετϥΫλ 1BQFSΫϥεΛҾ਺ʹ΋ͭ ϝιου ରԠ͢Δ(Pͷϝιου΋ɺ48*(ੜ੒ͷ1BQFSΠϯ λʔϑΣʔεΛҾ਺ʹ࣋ͭΑ͏ʹઃܭ͞Ε͍ͯΔ

Slide 61

Slide 61 text

SWIGのインターフェースライブラリの利用 3. Case Study – Pros & Cons of SWIG 48*(ʹ͸DQPJOUFSJ΍DBSSBZJͱ͍ͬͨΠϯλϑΣʔεϥΠϒϥϦ͕༻ҙ͞Εͯ ͓ΓɺͦΕΛར༻͢Δ͜ͱͰศརͳϔϧύʔؔ਺Λੜ੒ͤ͞Δ͜ͱ͕Ͱ͖·͢ɻ ഑ྻܕͷ৔߹ ϙΠϯλܕͷ৔߹ 1BQFSܕͷ഑ྻʹ૬౰͢Δม਺Λੜ੒ ഑ྻͷϝϞϦղ์ ഑ྻͷO൪໨ͷཁૉͷऔಘ ഑ྻͷO൪໨ͷཁૉͷ஋ηοτ DIBSʹ૬౰͢Δม਺Λੜ੒ ϝϞϦղ์ ϙΠϯλ͕ࢦ͢஋ͷऔಘ σϦϑΝϨϯε ϙΠϯλ͕ࢦ͢஋Λߋ৽

Slide 62

Slide 62 text

(余談)文字列のポインタをどう扱おう? 3. Case Study – Pros & Cons of SWIG ʮจࣈྻͷϙΠϯλΛҾ਺ͱͯ͠౉͠ɺͦͷதʹ࣮ߦ݁ՌΛ֨ೲͯ͠΋Β͏ʯͱ ͍͏$ͷؔ਺͕͋Γ·ͨ͠ɻ ໭Γ஋͸Τϥʔൃੜ༗ ແͷ఻ൖʹ࢖͏ ຊ౰ͷॲཧ݁Ռ จࣈྻ ͸Ҿ਺ Ͱ౉ͨ͠ϙΠϯλͰड͚औΔ $ ϔομʔϑΝΠϧ TXJHίϚϯυΛ࣮ߦ ࣗಈੜ੒͞Εͨ(Pϥούʔ

Slide 63

Slide 63 text

(余談)文字列のポインタをどう扱おう? 3. Case Study – Pros & Cons of SWIG $$ ͷ DIBSܕ(PͷจࣈྻܕͰͷ஋ͷड͚౉͠ʹ͸DHPͰ༻ҙ͞Εͨઐ໳ ͷ૊ΈࠐΈؔ਺Λ࢖͏ͷΛ૝ఆ͞Ε͍ͯ·͕͢ɺ48*(͸ͦΕʹະରԠͰ͢ɻ ͦͷ͍͔ͤɺࣗಈੜ੒͞ΕͨίʔυҾ਺ʹૉ௚ʹ TUSJOHΛ౉ͯ͠΋͏·͘ಈ͍ ͯ͘Εͣɺ͜͜Ͱ΋DQPJOUFSJΠϯλʔϑΣʔεϥΠϒϥϦΛ࢖༻͠·ͨ͠ɻ ࣗಈੜ੒͞Εͨ(Pϥούʔ ˠ$(P4USJOHؔ਺΍$$4USJOHؔ਺Λ಺෦Ͱར༻͍ͯ͠ͳ͍ %SBX4UBUVTͷҾ਺BSHʹ ͨͩͷWBS T TUSJOHΛ౉ͯ͠΋͏·͍͔͘ͳ͍ʂ DQPJOUFSJͰੜ੒͞Εͨϔϧύʔؔ਺Λ࢖ͬͯ ʮ DIBSʹ૬౰͢Δ TUSJOHม਺ʯΛ࡞ͬͯ౉͞ͳ͍ͱ͍͚ͳ͍ ੜ੒͞Εͨ%SBX4UBUVTϝιουͷར༻ྫ

Slide 64

Slide 64 text

アジェンダ Agenda  DHP WTQVSF(P  DHP %PDVNFOUT  $BTF4UVEZ B ঢ়گઆ໌ C ٹੈओ r 48*( D 48*(Ͱྑ͔ͬͨ͜ͱ ؾΛ͚ͭΔ͜ͱ E (PMJLFʹ͢ΔͨΊʹվ଄

Slide 65

Slide 65 text

(問題)自動生成コードがGo-likeじゃない 3. Case Study – Customize 48*(ʹΑͬͯࣗಈੜ੒͞Εͨίʔυ͸$$ ͷؔ਺γάωνϟʹԊͬͨܗʹͳ ͓ͬͯΓɺ(PMJLFͱ͸ݴ͑ͳ͍෦෼͕͋Γ·͢ɻ $$ ϔομʔϑΝΠϧʹهࡌ͞Ε͍ͯΔ಺༰ ྫ 48*(Ͱੜ੒͞Εͨ(Pͷϥούʔ ΤϥʔΛJOUͰ͸ͳ͘ FSSPSܕʹ͍ͨ͠ Ҿ਺ͷ1BQFS͸࣮ߦ݁ՌΛड͚औΔͨΊͷ΋ͷͳͷͰ ໭Γ஋ʹೖΕͯ 1BQFS FSSPS ͱ͍͏ܗʹ͍ͨ͠

Slide 66

Slide 66 text

(解決策)Goらしくなるようにさらにラッパーを作ろう 3. Case Study – Customize ͦͷͨΊɺ48*(ͷࣗಈੜ੒ίʔυΛ͞Βʹϥοϓ͢ΔΑ͏ͳܗͰύοέʔδΛ ࡞੒͠·ͨ͠ɻ l PNJLVKJ ○ JOUFSOBM ■ MJC ● MJCPNJLVKJB ■ JODMVEF ● PNJLVKJI ● FSSPS$PEFI ■ PNJLVKJJ ■ PNJLVKJ@XSBQDYY ■ JOUFSOBMHP ○ PNJLVKJHP 48*(ʹΑΔίʔυࣗಈੜ੒ʹؔΘΔ΋ͷ • 48*(ΠϯλʔϑΣʔε • $$ ϔομʔϑΝΠϧ • ੩తϥΠϒϥϦ BϑΝΠϧ • ࣗಈੜ੒͞Εͨ(Pϥούʔ ΛશͯJOUFSOBMσΟϨΫτϦ௚ԼʹೖΕΔ JOUFSOBMύοέʔδΛJNQPSUͰ͖Δͷ͸ ͦͷ্͙͢ͷPNJLVKJύοέʔδͷΈͱͳΔͨΊɺ (PMJLFͰ͸ͳ͍VOTBGFͳ48*(ੜ੒ίʔυΛӅณͰ͖Δʂ

Slide 67

Slide 67 text

(解決策)Goらしくなるようにさらにラッパーを作ろう 3. Case Study – Customize ͦͷͨΊɺ48*(ͷࣗಈੜ੒ίʔυΛ͞Βʹϥοϓ͢ΔΑ͏ͳܗͰύοέʔδΛ ࡞੒͠·ͨ͠ɻ l PNJLVKJ ○ JOUFSOBM ■ MJC ● MJCPNJLVKJB ■ JODMVEF ● PNJLVKJI ● FSSPS$PEFI ■ PNJLVKJJ ■ PNJLVKJ@XSBQDYY ■ JOUFSOBMHP ○ PNJLVKJHP (PMJLFͳϝιουγάωνϟʹ͢Δ

Slide 68

Slide 68 text

(解決策)Goらしくなるようにさらにラッパーを作ろう 3. Case Study – Customize ͦͷͨΊɺ48*(ͷࣗಈੜ੒ίʔυΛ͞Βʹϥοϓ͢ΔΑ͏ͳܗͰύοέʔδΛ ࡞੒͠·ͨ͠ɻ l PNJLVKJ ○ JOUFSOBM ■ MJC ● MJCPNJLVKJB ■ JODMVEF ● PNJLVKJI ● FSSPS$PEFI ■ PNJLVKJJ ■ PNJLVKJ@XSBQDYY ■ JOUFSOBMHP ○ PNJLVKJHP 48*(ͷϥούʔίʔυΛݺͼग़͢

Slide 69

Slide 69 text

(解決策)Goらしくなるようにさらにラッパーを作ろう 3. Case Study – Customize ͦͷͨΊɺ48*(ͷࣗಈੜ੒ίʔυΛ͞Βʹϥοϓ͢ΔΑ͏ͳܗͰύοέʔδΛ ࡞੒͠·ͨ͠ɻ l PNJLVKJ ○ JOUFSOBM ■ MJC ● MJCPNJLVKJB ■ JODMVEF ● PNJLVKJI ● FSSPS$PEFI ■ PNJLVKJJ ■ PNJLVKJ@XSBQDYY ■ JOUFSOBMHP ○ PNJLVKJHP 48*(ίʔυ͔ΒͷJOU໭Γ஋͔Β ΤϥʔछผΛ൑ผ͢Δ ΋͠ΤϥʔͳΒFSSPSܕʹ௚ͯ͠ ໭Γ஋ʹ͢Δ ΤϥʔछผΛTXJUDIͰ ൑ผ͢Δؔ਺

Slide 70

Slide 70 text

(解決策)Goらしくなるようにさらにラッパーを作ろう 3. Case Study – Customize ͦͷͨΊɺ48*(ͷࣗಈੜ੒ίʔυΛ͞Βʹϥοϓ͢ΔΑ͏ͳܗͰύοέʔδΛ ࡞੒͠·ͨ͠ɻ l PNJLVKJ ○ JOUFSOBM ■ MJC ● MJCPNJLVKJB ■ JODMVEF ● PNJLVKJI ● FSSPS$PEFI ■ PNJLVKJJ ■ PNJLVKJ@XSBQDYY ■ JOUFSOBMHP ○ PNJLVKJHP 48*(ίʔυ͔Βड͚औΔ1BQFSܕ͸ࣗಈੜ੒͞Εͨ JOUFSOBMύοέʔδͷ΋ͷͳͷͰɺͦΕΛVOTBGFͷ৺഑ ͕ͳ͍ࣗલͷߏ଄ମʹΩϟετ ࣗલͷ1BQFSܕʹ Ωϟετ͢Δؔ਺

Slide 71

Slide 71 text

やっとGoからC/C++資産を呼び出すことに成功 3. Case Study – Customize ͜͏ͯ͠48*(੒Ռ෺Λ͞Βʹϥοϓͨࣗ͠લͷPNJLVKJύοέʔδΛར༻͢Δ ͜ͱͰɺ$$ ࢿ࢈Λ(PMJLFʹ࢖͑ΔΑ͏ʹͳΓ·ͨ͠ɻ ᶃ$$ ϔομʔϑΝΠϧ ᶄ48*(͕ίʔυΛࣗಈੜ੒ ᶅ48*(ͷίʔυΛ(PMJLFʹϥοϓ ᶆϥούʔϥΠϒϥϦΛར༻

Slide 72

Slide 72 text

アジェンダ Agenda  DHP WTQVSF(P  DHP %PDVNFOUT  $BTF4UVEZ B ঢ়گઆ໌ C ٹੈओ r 48*( D 48*(Ͱྑ͔ͬͨ͜ͱ ؾΛ͚ͭΔ͜ͱ E (PMJLFʹ͢ΔͨΊʹվ଄ F ϥΠϒϥϦͷల։

Slide 73

Slide 73 text

ラッパーライブラリの展開 3. Case Study – Publication ੜ੒ͨ͠48*(ࢿ࢈Λਖ਼ৗʹಈ͔ͨ͢Ίʹ͸ɺϔομʔϑΝΠϧɾ੩తϥΠϒϥ Ϧͱ(P੡ϥούʔίʔυͷ഑ஔ͕ద੾ͳؔ܎ʹͳ͍ͬͯΔඞཁ͕͋Γ·͢ɻ l PNJLVKJ ○ JOUFSOBM ■ PNJLVKJJ ■ JOUFSOBMHP ■ PNJLVKJ@XSBQDYY ■ MJC ● ੩తϥΠϒϥϦ BϑΝΠϧ ■ JODMVEF ● ϔομʔϑΝΠϧ܈ ○ PNJLVKJHP 48*(ΠϯλʔϑΣʔεϑΝΠϧʹهࡌͨ͠ $11'-"(4-%'-"(4ͷ಺༰ ࣗಈੜ੒͞ΕͨίʔυͷDHPσΟϨΫςΟϒʹ൓ө TXJHHPD ৄࡉGMHུ

Slide 74

Slide 74 text

ラッパーライブラリの展開 3. Case Study – Publication ੜ੒ͨ͠48*(ࢿ࢈Λਖ਼ৗʹಈ͔ͨ͢Ίʹ͸ɺϔομʔϑΝΠϧɾ੩తϥΠϒϥ Ϧͱ(P੡ϥούʔίʔυͷ഑ஔ͕ద੾ͳؔ܎ʹͳ͍ͬͯΔඞཁ͕͋Γ·͢ɻ l PNJLVKJ ○ JOUFSOBM ■ PNJLVKJJ ■ JOUFSOBMHP ■ PNJLVKJ@XSBQDYY ■ MJC ● ੩తϥΠϒϥϦ BϑΝΠϧ ■ JODMVEF ● ϔομʔϑΝΠϧ܈ ○ PNJLVKJHP ࣗಈੜ੒͞ΕͨίʔυͷDHPσΟϨΫςΟϒʹ൓ө • (Pϥούʔίʔυ͕JOUFSOBMσΟϨΫτϦ಺ • ϔομʔϑΝΠϧ͕JOUFSOBMJODMVEFσΟϨΫτϦ಺ • ϥΠϒϥϦ͕JOUFSOBMMJCPNJLVKJJͱ͍͏໊લͰ഑ஔ ͱ͍͏഑ஔؔ܎ʹͳ͍ͬͯͳ͍ͱಈ͔ͳ͍ʂ

Slide 75

Slide 75 text

ラッパーライブラリの展開 3. Case Study – Publication ͜ͷʮϥούʔϥΠϒϥϦ͕ಈ͘Α͏ͳσΟϨΫτϦߏ଄ʯΛอͭͨΊͷোน͕ɺ චऀͷঢ়گͰ͸ͭ͋Γ·ͨ͠ɻ ωοΫʹͳͬͨ͜ͱ HPHFUͷڍಈ HPNPEVMFϞʔυ (0.0%6-&PO Ͱ͸ɺHPHFU ͨ͠QLH͸؀ڥม਺(0.0%$"$)&ʹ഑ஔ͞Ε·͢ɻ ͕ɺιʔεμ΢ϯϩʔυˠ (0.0%$"$)&௚Լ΁ͷ഑ ஔ͕୯७ͳHJUDMPOFͰ͸ͳ͍ٙ࿭͕͋Γ·ͨ͠ɻ ༰ྔ࡟ݮͷͨΊʹɺਖ਼௚ʹDMPOF͢ΔͷͰ͸ͳ͘Կ͔޻ ෉͕ೖͬͨͱ͍͏࿩Λฉ͍ͨΑ͏ͳʜʜɻ ιʔε͕ݟ͔ͭΒͳ͍ͷͰΨηͷՄೳੑ΋͋Γ·͢ɻٻ Ή৘ใɻ ίϯςφ্Ͱಈ͔͢ΞϓϦͩͬͨ $$ ࢿ࢈Λಈ͔ͨ͢Ίʹ͸ɺ੩తϥΠϒϥϦ B ͕ϫ ʔΫϩʔυ্ʹΠϯετʔϧ͞Ε͍ͯΔඞཁ͕͋Γ·͢ɻ ࠓճ͸ίϯςφ্Ͱಈ͔͢૝ఆͩͬͨͨΊɺ %PDLFSGJMFʹ $01:<ϩʔΧϧͷPNJLVKJB><ίϯςφ಺Ͱͷ഑ஔύε> ͱهड़͢Δ͜ͱʹͳΓ·͢ɻ ͦͷͨΊʹɺ (0.0%$"$)&௚ԼͰ͸ͳ͘ΞϓϦϨϙ δτϦ௚ԼʹPNJLVKJBΛ഑ஔ͔ͨͬͨ͠ͷͰ͢ɻ

Slide 76

Slide 76 text

苦肉の策 3. Case Study – Publication ͦͷͨΊɺࠓճ͸HPHFUͰґଘؔ܎Λએݴ ࣮ଶ͸HJUTVCNPEVMFͰऔಘͯ͠ HPNPESFQMBDFͯ͠ࢀরͱ͍͏ೋॏ؅ཧΛٽ͘ٽ͘͢Δ͜ͱʹͳΓ·ͨ͠ɻ l NBJOHP l HPNPE l %PDLFSGJMF l TVCNPEVMFT ○ PNJLVKJHP ■ PNJLVKJHP ■ JOUFSOBM ● 48*(ࢿ࢈ ࣮ߦίϚϯυ HPHFUͯ͠ύοέʔδΛHPNPEʹهࡌ HPHFUrVHJUIVCDPNTBLJFOHJOFFSJOHPNJLVKJHP TVCNPEVMFऔಘ HJUTVCNPEVMFBEEHJU!HJUIVCDPNTBLJ FOHJOFFSJOHPNJLVKJHPHJU TVCNPEVMFTPNJLVKJHP ύοέʔδͷࢀরઌΛ(0.0%$"$)&௚Լ͔Β TVCNPEVMFT௚Լʹ੾Γସ͑ HPNPEFEJUSFQMBDFHJUIVCDPNTBLJ FOHJOFFSJOHPNJLVKJHPTVCNPEVMFTPNJLVKJHP

Slide 77

Slide 77 text

苦肉の策 3. Case Study – Publication ͦͷͨΊɺࠓճ͸HPHFUͰґଘؔ܎Λએݴ ࣮ଶ͸HJUTVCNPEVMFͰऔಘͯ͠ HPNPESFQMBDFͯ͠ࢀরͱ͍͏ೋॏ؅ཧΛٽ͘ٽ͘͢Δ͜ͱʹͳΓ·ͨ͠ɻ l NBJOHP l HPNPE l %PDLFSGJMF l TVCNPEVMFT ○ PNJLVKJHP ■ PNJLVKJHP ■ JOUFSOBM ● 48*(ࢿ࢈ SFQMBDFσΟϨΫςΟϒʹΑΓ TVCNPEVMFT௚ԼͷίʔυΛ΋ͱʹಈ࡞͢Δ $01:TVCNPEVMFTPNJLVKJ HPJOUFSOBMMJCMJCPNJLVKJB <ίϯςφ಺ύε> ͱهड़ͯ͠ϏϧυͰ͖Δ

Slide 78

Slide 78 text

注釈 3. Case Study – Publication HPNPESFQMBDF΍TVCNPEVMFΛ࢖ͬͨ͜ͷ΍Γํ͕ϕεϓϥͩͱ͸શ͘ࢥͬ ͍ͯͳ͍ͷͰɺΑΓྑ͍ํ๏Λ͓࣋ͪͷํ͸ͥͻ஌ݟΛγΣΞ͍ͯͩ͘͠͞ɻ

Slide 79

Slide 79 text

アジェンダ Agenda  DHP WTQVSF(P  DHP %PDVNFOUT  $BTF4UVEZ  4VNNBSZ

Slide 80

Slide 80 text

まとめ Summary l Ҏ্͕ʮ$ ະܦݧ DHPΛ࢖͍׳Ε͍ͯͳ͍ʯͱ͍͏CBDLHSPVOEͷචऀ ͕ߦͬͨࢼߦࡨޡͷه࿥Ͱ͢ɻ l $ଆͷϝϞϦ؅ཧ΍ɺෳࡶͳσʔλܕΛDHPͰͲ͏ѻ͑͹͍͍ͷ͔ͱ͍͏஌ࣝ ͕ͳͯ͘΋ɺ48*(ʹΑΔϥούʔίʔυͷࣗಈੜ੒Ͱ͋Δఔ౓ઓ͏͜ͱ͕Ͱ ͖·ͨ͠ɻ l ͨͩʮͱΓ͋͑ͣಈ͘ʯͷͰ͸ͳ͘ɺ(PMJLFͳίʔυʹ͍ͨ͠ ίϯςφ ʹ৐ͤ΍͍͢ܗʹ͍ͨ͠ͱͳΔͱɺ48*(ͷ੒Ռ෺Λͦͷ··ྲྀ༻Ͱ͸ͳ͘૑ ҙ޻෉ΛՃ͑Δඞཁ͕͋Γ·͢ɻ

Slide 81

Slide 81 text

まとめ Summary l ຊηογϣϯͷ಺༰͕ϕετϓϥΫςΟε͔Ͳ͏͔͸Θ͔Γ·ͤΜɻ l ʮ)FMMP8PSMEʯҎ্ͷൃలతͳ಺༰ʹؔͯ͠ɺެࣜͷDHPͷจݙʹΘ͔Γ΍ ͍͢هड़͕ͳ͍ͱ͍͏ݱঢ়Ͱ͕͢ɺຊηογϣϯͷࣄྫΛਅࣅ͠΍͍͢αϯ ϓϧͱ͢Δ͜ͱͰଟ͘ͷDHPॳ৺ऀ͕ٹΘΕΔ͜ͱΛئ͍ͬͯ·͢ɻ l ͜ͷ಺༰͔Βൃలͤͨ݁͞Ռɺ΋ͬͱ͍͍։ൃɾӡ༻ϑϩʔ͕Ͱ͖ͨʂͱ͍ ͏৔߹ʹ͸ͥͻ஌ݟΛγΣΞ͍ͯͩ͘͠͞ʂʂ

Slide 82

Slide 82 text

5IBOLZPVGPSMJTUFOJOH ຊηογϣϯͰ࢖༻ͨ͠αϯϓϧίʔυ͸ͪ͜Β • IUUQTHJUIVCDPNTBLJFOHJOFFSJOHPNJLVKJMJC • IUUQTHJUIVCDPNTBLJFOHJOFFSJOHPNJLVKJHP • IUUQTHJUIVCDPNTBLJFOHJOFFSJOHPNJLVKJTBNQMF