Upgrade to Pro — share decks privately, control downloads, hide ads and more …

どうしてもcgoから逃げられなくなったあなたに知ってほしいcgoの使い方入門

 どうしてもcgoから逃げられなくなったあなたに知ってほしいcgoの使い方入門

23/6/2 Go Conference 2023にて発表
https://gocon.jp/2023/sessions/B7-L/

H.Saki

June 02, 2023
Tweet

More Decks by H.Saki

Other Decks in Technology

Transcript

  1. 自己紹介 About Me l ͖͞ )4BLJ ◦ ຊۀͰ͸"84Λओઓ৔ʹͨ͠ Ϋϥ΢υΠϯϑϥ԰͞ΜΛ͍ͯ͠·͢ ◦

    5XJUUFS!TBLJ@FOHJOFFS l աڈͷ੒Ռ෺ FUDʜ ;FOO ٕज़ॻయ ݄߸ʙ ࿈ࡌதʂʂʂ
  2. ある日のこと Recollection ࢲ l MJC ◦ GVOD-JCSBSZB l JODMVEF ◦

    GVOD-JCSBSZI ◦ FSSPSTI l EPDUYU ˡ ੩తϥΠϒϥϦ͚ͩͳͷͰ தͷ࣮૷͕Θ͔Βͳ͍
  3. cgo is not Go 1. cgo v.s. pure Go 3PC1JLFࢯͷ֨ݴूz(P1SPWFSCTzʹ͸zDHPJTOPU(Pzͱ͍͏ݴ༿͕͋Γ·͢ɻ

    ௒ҙ༁ ॳظͷࠒ͸ɺDHP࢖ͬͯ؆୯ʹ$ࢿ࢈Λ࢖͑Δ͜ͱΛশࢍ͍ͯ͠Δਓ͸ଟ͔ͬͨΑɻ Ͱ΋ࢲ͸ͦΕ͸ͱΜͰ΋ͳ͍᠘ͩͱࢥ͏ɻ ·͔͋֬ʹผݴޠʹϦϥΠτ͢ΔΑΓͦͷ··׆༻ͨ͠ํ͕͍͍$ࢿ࢈΋͋ΔΑʁ ͦΕͰ΋ࢲ͸DHPΛ࢖͍͍ͨͱ͸ࢥΘͳ͍͠ςετҎ֎Ͱ࢖ͬͨ͜ͱ΋ͳ͍Ͷɻ (Pʹ͸ϝϞϦ҆શੑ͕͋ͬͨΓ(PͷΨϕʔδίϨΫλʔ͕͋ͬͨΓͯ͠ ಛ༗ͷ͍͍ΤίγεςϜ͕͋ΔͷʹɺͦΕΛࠩ͠ஔ͍ͯDHPΛ࢖͓͏ͱ͸ࢥΘͳ͍ɻ  (PQIFSGFTUc(P1SPWFSCTXJUI3PC1JLFΑΓ
  4. cgoはGoの持つ良さを半減させてしまう 1. cgo v.s. pure Go 3PC1JLFࢯͷݴ༿ʹ΋͋Δ௨ΓɺDHPΛར༻͢Δͱ͍͏͜ͱ͸(P͕༷࣋ͭʑͳ ͍͍ੑ࣭Λࡴͯ͠͠·͏͜ͱʹ΋ͳΓ·͢ɻ DHPͰࣦΘΕΔ΋ͷ ࢀߟzDHPJTOPUHPzr

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

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

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

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

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

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

    %BWF$IFOFZ Ϗϧυ͕஗͘ͳΔ σόοά͕೉͍͠ ΫϩείϯύΠϧʹ೉͋Γ ύϑΥʔϚϯεଌఆ͕೉͍͠ ੒Ռ෺͕୯ҰόΠφϦͰͳ͍ Φʔόʔϔουͷൃੜ (PͷϓϩϑΝΠϥ͸ (P෦෼͔͠෼ੳͰ͖ͳ͍ $ࢿ࢈ͷίϯύΠϧɾϦϯΫΛ ௥ՃͰߦ͏ඞཁ͕͋Δ (P͕αϙʔτ͢Δ શΞʔΩςΫνϟʹ $ࢿ࢈΋ରԠͤ͞ଓ͚Δඞཁ (PͰͷϥούʔ෦෼ͱ $ࢿ࢈Λ ೋॏ؅ཧ͠ͳ͍ͱ͍͚ͳ͍ (Pͱ$ݴޠͱ͍͏ ͭͷݴޠΛ·͙ͨ෼ͷ Φʔόʔϔου $ࢿ࢈෦෼ͰΫϥογϡͯ͠΋ (PͰ͸SFDPWFSͰ͖ͳ͍
  11. cgoに関するドキュメントは少ない 2. cgo Documents 1VSF(PΛ࢖͏ͷ͕ϝΠϯͷைྲྀͰ͋ΔݱࡏɺDHPʹؔ͢ΔυΩϡϝϯτ͸ඇৗ ʹগͳ͍Ͱ͢ɻ DHPͷυΩϡϝϯτ • 5IF(P#MPH $

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

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

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

    (P $HP • QLHHPEFW DHP • (Pެࣜ8JLJ DHP େن໛ͳطଘ$ࢿ࢈ϥΠϒϥϦΛ ࢖͑ΔΑ͏ʹ͢Δͱ͍͏৘ใͰ͸ͳ͍ ͜ΕͰͲ͏΍ͬͯઓ͑͹͍͍Μͩʜʜ
  15. 状況説明 3. Case Study - Situation Ϣʔεέʔεͱͯ͠͸ɺʮ(Pͷαʔόʔίʔυͷத͔Βɺ$ݴޠ੡ͷϥΠϒϥ ϦΛݺͼग़͢ʯͱ͍͏΋ͷͰͨ͠ɻ ࢲ l

    MJC ◦ GVOD-JCSBSZB l JODMVEF ◦ GVOD-JCSBSZI ◦ FSSPSTI l EPDUYU $ݴޠϥΠϒϥϦ (Pͷαʔόʔίʔυ DBMM
  16. 状況説明 3. Case Study - Situation ͜ͷঢ়گͰ೉͔ͬͨ͠ͷ͸ҎԼͷ఺Ͱ͢ɻ l ੩తϥΠϒϥϦ BϑΝΠϧ

    ͷΈख౉͞Εɺதͷ࣮૷͕ෆ໌ ◦ (PͰ࠶࣮૷ͯ͠DHPͷ࢖༻ճආ͸ෆՄೳ l ϔομϑΝΠϧ಺ͷϓϩτλΠϓએݴͷྔ͕ଟ͍ ◦ ͭͭ(PͰϥούʔΛ࡞͍ͬͯ͘ͷ͸ඇݱ࣮త l ໌Β͔ʹ$ ͱࢥΘΕ͠Ϋϥεએݴ͕ϔομϑΝΠϧ಺ʹ͋ͬͨ ◦ ެࣜυΩϡϝϯτʹ͸QVSF$Ͱͷ৘ใ͸͋Δ͕ɺ$ ʹؔ͢Δهࡌ͸ͳ͠ ◦ චऀɺ$ͷܦݧ͸͋ΕͲ$ ͸΍ͬͨ͜ͱͳ͍ śƂŦ ʘ ?P? ʗ
  17. 救世主 - SWIG 3. Case Study - SWIG 48*(͸$$ Ͱॻ͔ΕͨϓϩάϥϜΛଞݴޠͷιʔείʔυ͔Βݺͼग़ͨ͢Ί

    ͷϥούʔΠϯλʔϑΣʔείʔυΛੜ੒ͤ͞ΔπʔϧͰ͢ɻ $ ϥούʔ 48*( ΠϯλʔϑΣʔε ϑΝΠϧ TXJHrHP TXJHίϚϯυΛ࣮ߦ ॲཧର৅ͷ $ϥΠϒϥϦϔομʔ৘ใ FUDʜ (Pίʔυ ࢀߟIUUQTXXXTXJHPSH
  18. SWIGでのラッパーインターフェース生成の様子 3. Case Study - SWIG $ ϥΠϒϥϦʹରԠ͢ΔϔομʔϑΝΠϧͷத਎͸ҎԼͷ௨ΓͰ͢ɻ l PNJLVKJ

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

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

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

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

    l PNJLVKJ ◦ MJC ▪ MJCPNJLVKJB ◦ JODMVEF ▪ PNJLVKJI ▪ FSSPS$PEFI ◦ PNJLVKJJ Ϗϧυͷࡍʹ$$ ίϯύ Πϥʹ౉ΔϑϥάΛࢦఆ • $11'-"(4*Φϓγϣ ϯͰ࢖༻ϔομϑΝΠϧ Λࢦఆ • -%'-"(4-Φϓγϣ ϯͰ࢖༻੩తϥΠϒϥϦ Λࢦఆ
  23. SWIGでのラッパーインターフェース生成の様子 3. Case Study - SWIG 48*(ΠϯλʔϑΣʔεϑΝΠϧ͕Ͱ͖ͨΒɺTXJHίϚϯυΛ࣮ߦ͠·͢ɻ l PNJLVKJ ◦

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

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

    MJC ▪ MJCPNJLVKJB ◦ JODMVEF ▪ PNJLVKJI ▪ FSSPS$PEFI ◦ PNJLVKJJ ࢲ DEPNJLVKJ TXJHHPD DHP JODMVEFBMM *JODMVEFJOUHPTJ[F PNJLVKJJ ར༻͢ΔϔομϑΝΠϧͷ ઃఆ
  28. 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ʹ ରԠ͚ͮ
  29. SWIGでのラッパーインターフェース生成の様子 3. Case Study - SWIG ͢Δͱɺ$ ͱ(PͷϥούʔΠϯλʔϑΣʔεϑΝΠϧ͕ͦΕͧΕݸੜ੒͞ Ε·͢ɻ l

    PNJLVKJ ◦ MJC ▪ MJCPNJLVKJB ◦ JODMVEF ▪ PNJLVKJI ▪ FSSPS$PEFI ◦ PNJLVKJJ ◦ PNJLVKJ@XSBQDYY ◦ JOUFSOBMHP DHPͰݺͼग़͠΍͍͢ܗʹ੔ܗͨ͠$ ϥούʔ ͦΕΛDHPͰݺͼग़͢(Pίʔυ
  30. アジェンダ Agenda  DHP WTQVSF(P  DHP %PDVNFOUT  $BTF4UVEZ

    B ঢ়گઆ໌ C ٹੈओ r 48*( D 48*(Ͱྑ͔ͬͨ͜ͱ ؾΛ͚ͭΔ͜ͱ
  31. SWIGで良かったこと 3. Case Study – Pros & Cons of SWIG

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

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

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

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

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

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

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

    ʮจࣈྻͷϙΠϯλΛҾ਺ͱͯ͠౉͠ɺͦͷதʹ࣮ߦ݁ՌΛ֨ೲͯ͠΋Β͏ʯͱ ͍͏$ͷؔ਺͕͋Γ·ͨ͠ɻ ໭Γ஋͸Τϥʔൃੜ༗ ແͷ఻ൖʹ࢖͏ ຊ౰ͷॲཧ݁Ռ จࣈྻ ͸Ҿ਺ Ͱ౉ͨ͠ϙΠϯλͰड͚औΔ $ ϔομʔϑΝΠϧ TXJHίϚϯυΛ࣮ߦ ࣗಈੜ੒͞Εͨ(Pϥούʔ
  39. (余談)文字列のポインタをどう扱おう? 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ϝιουͷར༻ྫ
  40. アジェンダ Agenda  DHP WTQVSF(P  DHP %PDVNFOUT  $BTF4UVEZ

    B ঢ়گઆ໌ C ٹੈओ r 48*( D 48*(Ͱྑ͔ͬͨ͜ͱ ؾΛ͚ͭΔ͜ͱ E (PMJLFʹ͢ΔͨΊʹվ଄
  41. (問題)自動生成コードがGo-likeじゃない 3. Case Study – Customize 48*(ʹΑͬͯࣗಈੜ੒͞Εͨίʔυ͸$$ ͷؔ਺γάωνϟʹԊͬͨܗʹͳ ͓ͬͯΓɺ(PMJLFͱ͸ݴ͑ͳ͍෦෼͕͋Γ·͢ɻ $$

    ϔομʔϑΝΠϧʹهࡌ͞Ε͍ͯΔ಺༰ ྫ 48*(Ͱੜ੒͞Εͨ(Pͷϥούʔ ΤϥʔΛJOUͰ͸ͳ͘ FSSPSܕʹ͍ͨ͠ Ҿ਺ͷ1BQFS͸࣮ߦ݁ՌΛड͚औΔͨΊͷ΋ͷͳͷͰ ໭Γ஋ʹೖΕͯ 1BQFS FSSPS ͱ͍͏ܗʹ͍ͨ͠
  42. (解決策)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*(ੜ੒ίʔυΛӅณͰ͖Δʂ
  43. (解決策)Goらしくなるようにさらにラッパーを作ろう 3. Case Study – Customize ͦͷͨΊɺ48*(ͷࣗಈੜ੒ίʔυΛ͞Βʹϥοϓ͢ΔΑ͏ͳܗͰύοέʔδΛ ࡞੒͠·ͨ͠ɻ l PNJLVKJ

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

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

    ◦ JOUFSOBM ▪ MJC • MJCPNJLVKJB ▪ JODMVEF • PNJLVKJI • FSSPS$PEFI ▪ PNJLVKJJ ▪ PNJLVKJ@XSBQDYY ▪ JOUFSOBMHP ◦ PNJLVKJHP 48*(ίʔυ͔ΒͷJOU໭Γ஋͔Β ΤϥʔछผΛ൑ผ͢Δ ΋͠ΤϥʔͳΒFSSPSܕʹ௚ͯ͠ ໭Γ஋ʹ͢Δ ΤϥʔछผΛTXJUDIͰ ൑ผ͢Δؔ਺
  46. (解決策)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ܕʹ Ωϟετ͢Δؔ਺
  47. アジェンダ Agenda  DHP WTQVSF(P  DHP %PDVNFOUT  $BTF4UVEZ

    B ঢ়گઆ໌ C ٹੈओ r 48*( D 48*(Ͱྑ͔ͬͨ͜ͱ ؾΛ͚ͭΔ͜ͱ E (PMJLFʹ͢ΔͨΊʹվ଄ F ϥΠϒϥϦͷల։
  48. ラッパーライブラリの展開 3. Case Study – Publication ੜ੒ͨ͠48*(ࢿ࢈Λਖ਼ৗʹಈ͔ͨ͢Ίʹ͸ɺϔομʔϑΝΠϧɾ੩తϥΠϒϥ Ϧͱ(P੡ϥούʔίʔυͷ഑ஔ͕ద੾ͳؔ܎ʹͳ͍ͬͯΔඞཁ͕͋Γ·͢ɻ l PNJLVKJ

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

    ◦ JOUFSOBM ▪ PNJLVKJJ ▪ JOUFSOBMHP ▪ PNJLVKJ@XSBQDYY ▪ MJC • ੩తϥΠϒϥϦ BϑΝΠϧ ▪ JODMVEF • ϔομʔϑΝΠϧ܈ ◦ PNJLVKJHP ࣗಈੜ੒͞ΕͨίʔυͷDHPσΟϨΫςΟϒʹ൓ө • (Pϥούʔίʔυ͕JOUFSOBMσΟϨΫτϦ಺ • ϔομʔϑΝΠϧ͕JOUFSOBMJODMVEFσΟϨΫτϦ಺ • ϥΠϒϥϦ͕JOUFSOBMMJCPNJLVKJJͱ͍͏໊લͰ഑ஔ ͱ͍͏഑ஔؔ܎ʹͳ͍ͬͯͳ͍ͱಈ͔ͳ͍ʂ
  50. ラッパーライブラリの展開 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Λ഑ஔ͔ͨͬͨ͠ͷͰ͢ɻ
  51. 苦肉の策 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
  52. 苦肉の策 3. Case Study – Publication ͦͷͨΊɺࠓճ͸HPHFUͰґଘؔ܎Λએݴ ࣮ଶ͸HJUTVCNPEVMFͰऔಘͯ͠ HPNPESFQMBDFͯ͠ࢀরͱ͍͏ೋॏ؅ཧΛٽ͘ٽ͘͢Δ͜ͱʹͳΓ·ͨ͠ɻ l

    NBJOHP l HPNPE l %PDLFSGJMF l TVCNPEVMFT ◦ PNJLVKJHP ▪ PNJLVKJHP ▪ JOUFSOBM • 48*(ࢿ࢈ SFQMBDFσΟϨΫςΟϒʹΑΓ TVCNPEVMFT௚ԼͷίʔυΛ΋ͱʹಈ࡞͢Δ $01:TVCNPEVMFTPNJLVKJ HPJOUFSOBMMJCMJCPNJLVKJB <ίϯςφ಺ύε> ͱهड़ͯ͠ϏϧυͰ͖Δ
  53. まとめ Summary l Ҏ্͕ʮ$ ະܦݧ DHPΛ࢖͍׳Ε͍ͯͳ͍ʯͱ͍͏CBDLHSPVOEͷචऀ ͕ߦͬͨࢼߦࡨޡͷه࿥Ͱ͢ɻ l $ଆͷϝϞϦ؅ཧ΍ɺෳࡶͳσʔλܕΛDHPͰͲ͏ѻ͑͹͍͍ͷ͔ͱ͍͏஌ࣝ ͕ͳͯ͘΋ɺ48*(ʹΑΔϥούʔίʔυͷࣗಈੜ੒Ͱ͋Δఔ౓ઓ͏͜ͱ͕Ͱ

    ͖·ͨ͠ɻ l ͨͩʮͱΓ͋͑ͣಈ͘ʯͷͰ͸ͳ͘ɺ(PMJLFͳίʔυʹ͍ͨ͠ ίϯςφ ʹ৐ͤ΍͍͢ܗʹ͍ͨ͠ͱͳΔͱɺ48*(ͷ੒Ռ෺Λͦͷ··ྲྀ༻Ͱ͸ͳ͘૑ ҙ޻෉ΛՃ͑Δඞཁ͕͋Γ·͢ɻ