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
どうしてもcgoから逃げられなくなったあなたに知ってほしいcgoの使い方入門
Search
H.Saki
June 02, 2023
Technology
1
2.6k
どうしてもcgoから逃げられなくなったあなたに知ってほしいcgoの使い方入門
23/6/2 Go Conference 2023にて発表
https://gocon.jp/2023/sessions/B7-L/
H.Saki
June 02, 2023
Tweet
Share
More Decks by H.Saki
See All by H.Saki
Goの格言”Errors are values”の本質を読み解く
sakiengineer
10
2.7k
アプリ側のコードを書いていた人がLambdaに触れて気づいたこと
sakiengineer
0
1.6k
epollによるNetwork I/O in Goランタイム
sakiengineer
3
2.1k
スケジューラから学ぶGoランタイム 〜code reading of runtime pkg〜
sakiengineer
12
4.9k
select文の内部実装見つけました
sakiengineer
1
760
Other Decks in Technology
See All in Technology
地域コミュニティへの「感謝」と「恩返し」 / 20250726jawsug-tochigi
kasacchiful
0
120
データエンジニアがクラシルでやりたいことの現在地
gappy50
3
810
Microsoft Clarityでインサイトを見つけよう
nakasho
0
110
Datasets for Critical Operations by Dataform
kimujun
0
150
AI時代の経営、Bet AI Vision #BetAIDay
layerx
PRO
1
1.2k
帳票構造化タスクにおけるLLMファインチューニングの性能評価
yosukeyoshida
1
220
AI駆動開発 with MixLeap Study【大阪支部 #3】
lycorptech_jp
PRO
0
300
ecspressoの設計思想に至る道 / sekkeinight2025
fujiwara3
12
2.3k
AI人生苦節10年で会得したAIがやること_人間がやること.pdf
shibuiwilliam
1
250
GMOペパボのデータ基盤とデータ活用の現在地 / Current State of GMO Pepabo's Data Infrastructure and Data Utilization
zaimy
3
170
LLM開発を支えるエヌビディアの生成AIエコシステム
acceleratedmu3n
0
360
マルチモーダル基盤モデルに基づく動画と音の解析技術
lycorptech_jp
PRO
4
410
Featured
See All Featured
Bash Introduction
62gerente
613
210k
YesSQL, Process and Tooling at Scale
rocio
173
14k
Fashionably flexible responsive web design (full day workshop)
malarkey
407
66k
Java REST API Framework Comparison - PWX 2021
mraible
31
8.7k
Faster Mobile Websites
deanohume
308
31k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
130
19k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
8
730
A Modern Web Designer's Workflow
chriscoyier
695
190k
Automating Front-end Workflow
addyosmani
1370
200k
Product Roadmaps are Hard
iamctodd
PRO
54
11k
Why Our Code Smells
bkeepers
PRO
337
57k
Writing Fast Ruby
sferik
628
62k
Transcript
どうしてもcgoから逃げられなくなったあなたに知ってほしい cgoの使い方入門 さき(H.Saki) @saki_engineer Go Conference 2023, JUN 2 2023
自己紹介 About Me l ͖͞ )4BLJ ◦ ຊۀͰ"84Λओઓʹͨ͠ ΫϥυΠϯϑϥ͞ΜΛ͍ͯ͠·͢ ◦
5XJUUFS!TBLJ@FOHJOFFS l աڈͷՌ FUDʜ ;FOO ٕज़ॻయ ݄߸ʙ ࿈ࡌதʂʂʂ
本日のテーマ Today’s Theme DHP
本日のテーマ Today’s Theme DΛ HPͷίʔυ͔Βݺͼग़͢
本日のテーマ Today’s Theme DΛ HPͷίʔυ͔Βݺͼग़͢ ࠓͲ͖ͦΜͳ Ϣʔεέʔεຊ ʹ͋Δͷʁʁʁ ϨΠϠΛѻ͏ͱ ͖͔ؔ͠ͳ͍Ͱ
͠ΐʁ (P͕Ͱ͖ͯؒͳ͍ͱ ͖ʹ͍ͬͯͨʹ͑͠ͷ Ҩ࢈͡Όͳ͍ͷʁ
本日のテーマ Today’s Theme ͦΜͳ;͏ʹࢥ͍ͬͯͨ࣌ظ͕ ࢲʹ͋Γ·ͨ͠ʜʜ
ある日のこと Recollection ͋ͷαʔϏε (P ʹ৽ػೳΛՃ͍ͨ͠ ΜͰ͢Α ࢲ ্࢘
ある日のこと Recollection (PͰͲ͏ͬͯ ࣮͢ΔΜͩ ʜʜʁ ʓʓͰ˚˚͢Δػ ೳͳΜͰ͚͢Ͳ ࢲ ্࢘
ある日のこと Recollection · ͡ Ͱ ͢ ͔ ʓʓͷ෦ॺ͕$Ͱ࣮ ͯ͘͠ΕͨͷͰͦΕΛ ΈࠐΜͰ͍ͩ͘͞
ࢲ ্࢘
ある日のこと Recollection ී௨ͷॲཧͩͬͨΒ(PͰ ࣮ͨ͠͠ΔΘ ࢲ
ある日のこと Recollection ઌ΄Ͳ͓͑ͨ͠$ϥ ΠϒϥϦ͓ૹΓ͠·͢ ࢲ ্࢘
ある日のこと Recollection ࢲ VO[JQ
ある日のこと Recollection ࢲ l MJC ◦ GVOD-JCSBSZB l JODMVEF ◦
GVOD-JCSBSZI ◦ FSSPSTI l EPDUYU
ある日のこと Recollection ࢲ l MJC ◦ GVOD-JCSBSZB l JODMVEF ◦
GVOD-JCSBSZI ◦ FSSPSTI l EPDUYU ˡ ੩తϥΠϒϥϦ͚ͩͳͷͰ தͷ࣮͕Θ͔Βͳ͍
ある日のこと Recollection ࢲ PS[
おことわり Notion ͜͜·Ͱͷલஔ͖ϑΟΫγϣϯͰ͢ɻ
アジェンダ Agenda DHPWTQVSF(P DHP%PDVNFOUT $BTF4UVEZ
アジェンダ Agenda DHP WTQVSF(P DHP %PDVNFOUT $BTF4UVEZ
cgo is not Go 1. cgo v.s. pure Go 3PC1JLFࢯͷ֨ݴूz(P1SPWFSCTzʹzDHPJTOPU(Pzͱ͍͏ݴ༿͕͋Γ·͢ɻ
ҙ༁ ॳظͷࠒɺDHPͬͯ؆୯ʹ$ࢿ࢈Λ͑Δ͜ͱΛশࢍ͍ͯ͠Δਓଟ͔ͬͨΑɻ ͰࢲͦΕͱΜͰͳ͍᠘ͩͱࢥ͏ɻ ·͔͋֬ʹผݴޠʹϦϥΠτ͢ΔΑΓͦͷ··׆༻ͨ͠ํ͕͍͍$ࢿ࢈͋ΔΑʁ ͦΕͰࢲDHPΛ͍͍ͨͱࢥΘͳ͍͠ςετҎ֎Ͱͬͨ͜ͱͳ͍Ͷɻ (PʹϝϞϦ҆શੑ͕͋ͬͨΓ(PͷΨϕʔδίϨΫλʔ͕͋ͬͨΓͯ͠ ಛ༗ͷ͍͍ΤίγεςϜ͕͋ΔͷʹɺͦΕΛࠩ͠ஔ͍ͯDHPΛ͓͏ͱࢥΘͳ͍ɻ (PQIFSGFTUc(P1SPWFSCTXJUI3PC1JLFΑΓ
cgoはGoの持つ良さを半減させてしまう 1. cgo v.s. pure Go 3PC1JLFࢯͷݴ༿ʹ͋Δ௨ΓɺDHPΛར༻͢Δͱ͍͏͜ͱ(P͕༷࣋ͭʑͳ ͍͍ੑ࣭Λࡴͯ͠͠·͏͜ͱʹͳΓ·͢ɻ DHPͰࣦΘΕΔͷ ࢀߟzDHPJTOPUHPzr
%BWF$IFOFZ Ϗϧυ͕͘ͳΔ σόοά͕͍͠ ΫϩείϯύΠϧʹ͋Γ ύϑΥʔϚϯεଌఆ͕͍͠ Ռ͕୯ҰόΠφϦͰͳ͍ Φʔόʔϔουͷൃੜ (PͷϓϩϑΝΠϥ (P෦͔͠ੳͰ͖ͳ͍ $ࢿ࢈ͷίϯύΠϧɾϦϯΫΛ ՃͰߦ͏ඞཁ͕͋Δ (P͕αϙʔτ͢Δ શΞʔΩςΫνϟʹ $ࢿ࢈ରԠͤ͞ଓ͚Δඞཁ (PͰͷϥούʔ෦ͱ $ࢿ࢈Λ ೋॏཧ͠ͳ͍ͱ͍͚ͳ͍ (Pͱ$ݴޠͱ͍͏ ͭͷݴޠΛ·͙ͨͷ Φʔόʔϔου $ࢿ࢈෦ͰΫϥογϡͯ͠ (PͰSFDPWFSͰ͖ͳ͍
cgoはGoの持つ良さを半減させてしまう 1. cgo v.s. pure Go 3PC1JLFࢯͷݴ༿ʹ͋Δ௨ΓɺDHPΛར༻͢Δͱ͍͏͜ͱ(P͕༷࣋ͭʑͳ ͍͍ੑ࣭Λࡴͯ͠͠·͏͜ͱʹͳΓ·͢ɻ DHPͰࣦΘΕΔͷ ࢀߟzDHPJTOPUHPzr
%BWF$IFOFZ Ϗϧυ͕͘ͳΔ σόοά͕͍͠ ΫϩείϯύΠϧʹ͋Γ ύϑΥʔϚϯεଌఆ͕͍͠ Ռ͕୯ҰόΠφϦͰͳ͍ Φʔόʔϔουͷൃੜ (PͷϓϩϑΝΠϥ (P෦͔͠ੳͰ͖ͳ͍ $ࢿ࢈ͷίϯύΠϧɾϦϯΫΛ ՃͰߦ͏ඞཁ͕͋Δ (P͕αϙʔτ͢Δ શΞʔΩςΫνϟʹ $ࢿ࢈ରԠͤ͞ଓ͚Δඞཁ (PͰͷϥούʔ෦ͱ $ࢿ࢈Λ ೋॏཧ͠ͳ͍ͱ͍͚ͳ͍ (Pͱ$ݴޠͱ͍͏ ͭͷݴޠΛ·͙ͨͷ Φʔόʔϔου $ࢿ࢈෦ͰΫϥογϡͯ͠ (PͰSFDPWFSͰ͖ͳ͍
cgoはGoの持つ良さを半減させてしまう 1. cgo v.s. pure Go 3PC1JLFࢯͷݴ༿ʹ͋Δ௨ΓɺDHPΛར༻͢Δͱ͍͏͜ͱ(P͕༷࣋ͭʑͳ ͍͍ੑ࣭Λࡴͯ͠͠·͏͜ͱʹͳΓ·͢ɻ DHPͰࣦΘΕΔͷ ࢀߟzDHPJTOPUHPzr
%BWF$IFOFZ Ϗϧυ͕͘ͳΔ σόοά͕͍͠ ΫϩείϯύΠϧʹ͋Γ ύϑΥʔϚϯεଌఆ͕͍͠ Ռ͕୯ҰόΠφϦͰͳ͍ Φʔόʔϔουͷൃੜ (PͷϓϩϑΝΠϥ (P෦͔͠ੳͰ͖ͳ͍ $ࢿ࢈ͷίϯύΠϧɾϦϯΫΛ ՃͰߦ͏ඞཁ͕͋Δ (P͕αϙʔτ͢Δ શΞʔΩςΫνϟʹ $ࢿ࢈ରԠͤ͞ଓ͚Δඞཁ (PͰͷϥούʔ෦ͱ $ࢿ࢈Λ ೋॏཧ͠ͳ͍ͱ͍͚ͳ͍ (Pͱ$ݴޠͱ͍͏ ͭͷݴޠΛ·͙ͨͷ Φʔόʔϔου $ࢿ࢈෦ͰΫϥογϡͯ͠ (PͰSFDPWFSͰ͖ͳ͍
cgoはGoの持つ良さを半減させてしまう 1. cgo v.s. pure Go 3PC1JLFࢯͷݴ༿ʹ͋Δ௨ΓɺDHPΛར༻͢Δͱ͍͏͜ͱ(P͕༷࣋ͭʑͳ ͍͍ੑ࣭Λࡴͯ͠͠·͏͜ͱʹͳΓ·͢ɻ DHPͰࣦΘΕΔͷ ࢀߟzDHPJTOPUHPzr
%BWF$IFOFZ Ϗϧυ͕͘ͳΔ σόοά͕͍͠ ΫϩείϯύΠϧʹ͋Γ ύϑΥʔϚϯεଌఆ͕͍͠ Ռ͕୯ҰόΠφϦͰͳ͍ Φʔόʔϔουͷൃੜ (PͷϓϩϑΝΠϥ (P෦͔͠ੳͰ͖ͳ͍ $ࢿ࢈ͷίϯύΠϧɾϦϯΫΛ ՃͰߦ͏ඞཁ͕͋Δ (P͕αϙʔτ͢Δ શΞʔΩςΫνϟʹ $ࢿ࢈ରԠͤ͞ଓ͚Δඞཁ (PͰͷϥούʔ෦ͱ $ࢿ࢈Λ ೋॏཧ͠ͳ͍ͱ͍͚ͳ͍ (Pͱ$ݴޠͱ͍͏ ͭͷݴޠΛ·͙ͨͷ Φʔόʔϔου $ࢿ࢈෦ͰΫϥογϡͯ͠ (PͰSFDPWFSͰ͖ͳ͍
cgoはGoの持つ良さを半減させてしまう 1. cgo v.s. pure Go 3PC1JLFࢯͷݴ༿ʹ͋Δ௨ΓɺDHPΛར༻͢Δͱ͍͏͜ͱ(P͕༷࣋ͭʑͳ ͍͍ੑ࣭Λࡴͯ͠͠·͏͜ͱʹͳΓ·͢ɻ DHPͰࣦΘΕΔͷ ࢀߟzDHPJTOPUHPzr
%BWF$IFOFZ Ϗϧυ͕͘ͳΔ σόοά͕͍͠ ΫϩείϯύΠϧʹ͋Γ ύϑΥʔϚϯεଌఆ͕͍͠ Ռ͕୯ҰόΠφϦͰͳ͍ Φʔόʔϔουͷൃੜ (PͷϓϩϑΝΠϥ (P෦͔͠ੳͰ͖ͳ͍ $ࢿ࢈ͷίϯύΠϧɾϦϯΫΛ ՃͰߦ͏ඞཁ͕͋Δ (P͕αϙʔτ͢Δ શΞʔΩςΫνϟʹ $ࢿ࢈ରԠͤ͞ଓ͚Δඞཁ (PͰͷϥούʔ෦ͱ $ࢿ࢈Λ ೋॏཧ͠ͳ͍ͱ͍͚ͳ͍ (Pͱ$ݴޠͱ͍͏ ͭͷݴޠΛ·͙ͨͷ Φʔόʔϔου $ࢿ࢈෦ͰΫϥογϡͯ͠ (PͰSFDPWFSͰ͖ͳ͍
cgoはGoの持つ良さを半減させてしまう 1. cgo v.s. pure Go 3PC1JLFࢯͷݴ༿ʹ͋Δ௨ΓɺDHPΛར༻͢Δͱ͍͏͜ͱ(P͕༷࣋ͭʑͳ ͍͍ੑ࣭Λࡴͯ͠͠·͏͜ͱʹͳΓ·͢ɻ DHPͰࣦΘΕΔͷ ࢀߟzDHPJTOPUHPzr
%BWF$IFOFZ Ϗϧυ͕͘ͳΔ σόοά͕͍͠ ΫϩείϯύΠϧʹ͋Γ ύϑΥʔϚϯεଌఆ͕͍͠ Ռ͕୯ҰόΠφϦͰͳ͍ Φʔόʔϔουͷൃੜ (PͷϓϩϑΝΠϥ (P෦͔͠ੳͰ͖ͳ͍ $ࢿ࢈ͷίϯύΠϧɾϦϯΫΛ ՃͰߦ͏ඞཁ͕͋Δ (P͕αϙʔτ͢Δ શΞʔΩςΫνϟʹ $ࢿ࢈ରԠͤ͞ଓ͚Δඞཁ (PͰͷϥούʔ෦ͱ $ࢿ࢈Λ ೋॏཧ͠ͳ͍ͱ͍͚ͳ͍ (Pͱ$ݴޠͱ͍͏ ͭͷݴޠΛ·͙ͨͷ Φʔόʔϔου $ࢿ࢈෦ͰΫϥογϡͯ͠ (PͰSFDPWFSͰ͖ͳ͍
cgoはGoの持つ良さを半減させてしまう 1. cgo v.s. pure Go 3PC1JLFࢯͷݴ༿ʹ͋Δ௨ΓɺDHPΛར༻͢Δͱ͍͏͜ͱ(P͕༷࣋ͭʑͳ ͍͍ੑ࣭Λࡴͯ͠͠·͏͜ͱʹͳΓ·͢ɻ DHPͰࣦΘΕΔͷ ࢀߟzDHPJTOPUHPzr
%BWF$IFOFZ Ϗϧυ͕͘ͳΔ σόοά͕͍͠ ΫϩείϯύΠϧʹ͋Γ ύϑΥʔϚϯεଌఆ͕͍͠ Ռ͕୯ҰόΠφϦͰͳ͍ Φʔόʔϔουͷൃੜ (PͷϓϩϑΝΠϥ (P෦͔͠ੳͰ͖ͳ͍ $ࢿ࢈ͷίϯύΠϧɾϦϯΫΛ ՃͰߦ͏ඞཁ͕͋Δ (P͕αϙʔτ͢Δ શΞʔΩςΫνϟʹ $ࢿ࢈ରԠͤ͞ଓ͚Δඞཁ (PͰͷϥούʔ෦ͱ $ࢿ࢈Λ ೋॏཧ͠ͳ͍ͱ͍͚ͳ͍ (Pͱ$ݴޠͱ͍͏ ͭͷݴޠΛ·͙ͨͷ Φʔόʔϔου $ࢿ࢈෦ͰΫϥογϡͯ͠ (PͰSFDPWFSͰ͖ͳ͍
アジェンダ Agenda DHP WTQVSF(P DHP %PDVNFOUT $BTF4UVEZ
cgoに関するドキュメントは少ない 2. cgo Documents 1VSF(PΛ͏ͷ͕ϝΠϯͷைྲྀͰ͋ΔݱࡏɺDHPʹؔ͢ΔυΩϡϝϯτඇৗ ʹগͳ͍Ͱ͢ɻ DHPͷυΩϡϝϯτ • 5IF(P#MPH $
(P $HP • QLHHPEFW DHP • (Pެࣜ8JLJ DHP
cgoに関するドキュメントは少ない 2. cgo Documents 1VSF(PΛ͏ͷ͕ϝΠϯͷைྲྀͰ͋ΔݱࡏɺDHPʹؔ͢ΔυΩϡϝϯτඇৗ ʹগͳ͍Ͱ͢ɻ DHPͷυΩϡϝϯτ • 5IF(P#MPH $
(P $HP • QLHHPEFW DHP • (Pެࣜ8JLJ DHP • ؆୯ͳ)FMMP8PSME ӈਤ • จࣈྻͷѻ͍ํ • $ͰΞϩέʔτͨ͠ϝϞϦ(P Ͱؔ͠ͳ͍͔Β͖ͪΜͱ GSFFͯ͠Ͷ
cgoに関するドキュメントは少ない 2. cgo Documents 1VSF(PΛ͏ͷ͕ϝΠϯͷைྲྀͰ͋ΔݱࡏɺDHPʹؔ͢ΔυΩϡϝϯτඇৗ ʹগͳ͍Ͱ͢ɻ DHPͷυΩϡϝϯτ • 5IF(P#MPH $
(P $HP • QLHHPEFW DHP • (Pެࣜ8JLJ DHP • DHPσΟϨΫςΟϒʹ͚ΒΕΔΦϓγϣϯৄࡉ • (P͔Β$Λݺͼग़͢؆୯ͳྫ • $͔Β(PΛݺͼग़͢؆୯ͳྫ • HPUPPMDHPίϚϯυͷΦϓγϣϯ ˡ͜͏͍͏ͷ
cgoに関するドキュメントは少ない 2. cgo Documents 1VSF(PΛ͏ͷ͕ϝΠϯͷைྲྀͰ͋ΔݱࡏɺDHPʹؔ͢ΔυΩϡϝϯτඇৗ ʹগͳ͍Ͱ͢ɻ DHPͷυΩϡϝϯτ • 5IF(P#MPH $
(P $HP • QLHHPEFW DHP • (Pެࣜ8JLJ DHP • ؆୯ͳ)FMMP8PSME • $͔Β(PͷίʔυΛݺͼग़͢ํ๏ • (Pͷจࣈྻͱ$ͷจࣈྻͷҧ͍Λ౿·͑ͨѻ͍ํ
cgoに関するドキュメントは少ない 2. cgo Documents 1VSF(PΛ͏ͷ͕ϝΠϯͷைྲྀͰ͋ΔݱࡏɺDHPʹؔ͢ΔυΩϡϝϯτඇৗ ʹগͳ͍Ͱ͢ɻ DHPͷυΩϡϝϯτ • 5IF(P#MPH $
(P $HP • QLHHPEFW DHP • (Pެࣜ8JLJ DHP େنͳطଘ$ࢿ࢈ϥΠϒϥϦΛ ͑ΔΑ͏ʹ͢Δͱ͍͏ใͰͳ͍ ͜ΕͰͲ͏ͬͯઓ͍͍͑Μͩʜʜ
アジェンダ Agenda DHP WTQVSF(P DHP %PDVNFOUT $BTF4UVEZ
アジェンダ Agenda DHP WTQVSF(P DHP %PDVNFOUT $BTF4UVEZ
B ঢ়گઆ໌
状況説明 3. Case Study - Situation Ϣʔεέʔεͱͯ͠ɺʮ(Pͷαʔόʔίʔυͷத͔Βɺ$ݴޠͷϥΠϒϥ ϦΛݺͼग़͢ʯͱ͍͏ͷͰͨ͠ɻ ࢲ l
MJC ◦ GVOD-JCSBSZB l JODMVEF ◦ GVOD-JCSBSZI ◦ FSSPSTI l EPDUYU $ݴޠϥΠϒϥϦ (Pͷαʔόʔίʔυ DBMM
状況説明 3. Case Study - Situation ͜ͷঢ়گͰ͔ͬͨ͠ͷҎԼͷͰ͢ɻ l ੩తϥΠϒϥϦ BϑΝΠϧ
ͷΈख͞Εɺதͷ࣮͕ෆ໌ ◦ (PͰ࠶࣮ͯ͠DHPͷ༻ճආෆՄೳ l ϔομϑΝΠϧͷϓϩτλΠϓએݴͷྔ͕ଟ͍ ◦ ͭͭ(PͰϥούʔΛ࡞͍ͬͯ͘ͷඇݱ࣮త l ໌Β͔ʹ$ ͱࢥΘΕ͠Ϋϥεએݴ͕ϔομϑΝΠϧʹ͋ͬͨ ◦ ެࣜυΩϡϝϯτʹQVSF$Ͱͷใ͋Δ͕ɺ$ ʹؔ͢Δهࡌͳ͠ ◦ චऀɺ$ͷܦݧ͋ΕͲ$ ͬͨ͜ͱͳ͍ śƂŦ ʘ ?P? ʗ
アジェンダ Agenda DHP WTQVSF(P DHP %PDVNFOUT $BTF4UVEZ
B ঢ়گઆ໌ C ٹੈओ 48*(
救世主 - SWIG 3. Case Study - SWIG 48*($$ Ͱॻ͔ΕͨϓϩάϥϜΛଞݴޠͷιʔείʔυ͔Βݺͼग़ͨ͢Ί
ͷϥούʔΠϯλʔϑΣʔείʔυΛੜͤ͞ΔπʔϧͰ͢ɻ $ ϥούʔ 48*( ΠϯλʔϑΣʔε ϑΝΠϧ TXJHrHP TXJHίϚϯυΛ࣮ߦ ॲཧରͷ $ϥΠϒϥϦϔομʔใ FUDʜ (Pίʔυ ࢀߟIUUQTXXXTXJHPSH
SWIGでのラッパーインターフェース生成の様子 3. Case Study - SWIG ͔͜͜Βྫͱͯ͠ʮ͓Έ͘͡ΛҾ͘ʯ$ ϥΠϒϥϦΛ(P͔Βݺͼग़ͤΔΑ ͏ʹ͍ͯ͘͠աఔΛऔΓ্͍͛ͨͱࢥ͍·͢ɻ l
PNJLVKJ ◦ MJC ▪ MJCPNJLVKJB ◦ JODMVEF ▪ PNJLVKJI ▪ FSSPS$PEFI ͓Έ͘͡ػೳΛ࣮ͨ͠੩తϥΠϒϥϦ
SWIGでのラッパーインターフェース生成の様子 3. Case Study - SWIG $ ϥΠϒϥϦʹରԠ͢ΔϔομʔϑΝΠϧͷதҎԼͷ௨ΓͰ͢ɻ l PNJLVKJ
◦ MJC ▪ MJCPNJLVKJB ◦ JODMVEF ▪ PNJLVKJI ▪ FSSPS$PEFI ͓Έ͘͡Λ ͍ΖΜͳܗͰҾ͘ ϝιουͨͪ ͓Έ͘͡ߏମͱ
SWIGでのラッパーインターフェース生成の様子 3. Case Study - SWIG $ ϥΠϒϥϦʹରԠ͢ΔϔομʔϑΝΠϧͷதҎԼͷ௨ΓͰ͢ɻ l PNJLVKJ
◦ MJC ▪ MJCPNJLVKJB ◦ JODMVEF ▪ PNJLVKJI ▪ FSSPS$PEFI ͨ·ʹ͓Έ͘͡ശʹ ෆ۩߹͕ى͖ͯ ࣦഊ͠·͢
SWIGでのラッパーインターフェース生成の様子 3. Case Study - SWIG ͜ͷ͓Έ͘͡ϥΠϒϥϦΛ(P͔Βݺͼग़͢ϥούʔΛੜ͢ΔͨΊʹɺ৽ͨʹ ΠϯλʔϑΣʔεϑΝΠϧ YYYYJ Λ࡞͠·͢ɻ
l PNJLVKJ ◦ MJC ▪ MJCPNJLVKJB ◦ JODMVEF ▪ PNJLVKJI ▪ FSSPS$PEFI ◦ PNJLVKJJ
SWIGでのラッパーインターフェース生成の様子 3. Case Study - SWIG ͜ͷ͓Έ͘͡ϥΠϒϥϦΛ(P͔Βݺͼग़͢ϥούʔΛੜ͢ΔͨΊʹɺ৽ͨʹ ΠϯλʔϑΣʔεϑΝΠϧ YYYYJ Λ࡞͠·͢ɻ
l PNJLVKJ ◦ MJC ▪ MJCPNJLVKJB ◦ JODMVEF ▪ PNJLVKJI ▪ FSSPS$PEFI ◦ PNJLVKJJ ࣗಈੜ͞Εͨ(Pίʔυͷ ύοέʔδ໊Λࢦఆ
SWIGでのラッパーインターフェース生成の様子 3. Case Study - SWIG ͜ͷ͓Έ͘͡ϥΠϒϥϦΛ(P͔Βݺͼग़͢ϥούʔΛੜ͢ΔͨΊʹɺ৽ͨʹ ΠϯλʔϑΣʔεϑΝΠϧ YYYYJ Λ࡞͠·͢ɻ
l PNJLVKJ ◦ MJC ▪ MJCPNJLVKJB ◦ JODMVEF ▪ PNJLVKJI ▪ FSSPS$PEFI ◦ PNJLVKJJ ϥούʔͷରͱͳΔ $$ ͷϔομʔΛࢦఆ
SWIGでのラッパーインターフェース生成の様子 3. Case Study - SWIG ͜ͷ͓Έ͘͡ϥΠϒϥϦΛ(P͔Βݺͼग़͢ϥούʔΛੜ͢ΔͨΊʹɺ৽ͨʹ ΠϯλʔϑΣʔεϑΝΠϧ YYYYJ Λ࡞͠·͢ɻ
l PNJLVKJ ◦ MJC ▪ MJCPNJLVKJB ◦ JODMVEF ▪ PNJLVKJI ▪ FSSPS$PEFI ◦ PNJLVKJJ Ϗϧυͷࡍʹ$$ ίϯύ ΠϥʹΔϑϥάΛࢦఆ • $11'-"(4*Φϓγϣ ϯͰ༻ϔομϑΝΠϧ Λࢦఆ • -%'-"(4-Φϓγϣ ϯͰ༻੩తϥΠϒϥϦ Λࢦఆ
SWIGでのラッパーインターフェース生成の様子 3. Case Study - SWIG ͜ͷ͓Έ͘͡ϥΠϒϥϦΛ(P͔Βݺͼग़͢ϥούʔΛੜ͢ΔͨΊʹɺ৽ͨʹ ΠϯλʔϑΣʔεϑΝΠϧ YYYYJ Λ࡞͠·͢ɻ
l PNJLVKJ ◦ MJC ▪ MJCPNJLVKJB ◦ JODMVEF ▪ PNJLVKJI ▪ FSSPS$PEFI ◦ PNJLVKJJ ͜͜ޙड़
SWIGでのラッパーインターフェース生成の様子 3. Case Study - SWIG 48*(ΠϯλʔϑΣʔεϑΝΠϧ͕Ͱ͖ͨΒɺTXJHίϚϯυΛ࣮ߦ͠·͢ɻ l PNJLVKJ ◦
MJC ▪ MJCPNJLVKJB ◦ JODMVEF ▪ PNJLVKJI ▪ FSSPS$PEFI ◦ PNJLVKJJ ࢲ DEPNJLVKJ TXJHHPD DHP JODMVEFBMM *JODMVEFJOUHPTJ[F PNJLVKJJ
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ͷίʔυΛੜ
SWIGでのラッパーインターフェース生成の様子 3. Case Study - SWIG 48*(ΠϯλʔϑΣʔεϑΝΠϧ͕Ͱ͖ͨΒɺTXJHίϚϯυΛ࣮ߦ͠·͢ɻ l PNJLVKJ ◦
MJC ▪ MJCPNJLVKJB ◦ JODMVEF ▪ PNJLVKJI ▪ FSSPS$PEFI ◦ PNJLVKJJ ࢲ DEPNJLVKJ TXJHHPD DHP JODMVEFBMM *JODMVEFJOUHPTJ[F PNJLVKJJ $ ͷίʔυΛ ॲཧରʹ͢Δ
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,
SWIGでのラッパーインターフェース生成の様子 3. Case Study - SWIG 48*(ΠϯλʔϑΣʔεϑΝΠϧ͕Ͱ͖ͨΒɺTXJHίϚϯυΛ࣮ߦ͠·͢ɻ l PNJLVKJ ◦
MJC ▪ MJCPNJLVKJB ◦ JODMVEF ▪ PNJLVKJI ▪ FSSPS$PEFI ◦ PNJLVKJJ ࢲ DEPNJLVKJ TXJHHPD DHP JODMVEFBMM *JODMVEFJOUHPTJ[F PNJLVKJJ ར༻͢ΔϔομϑΝΠϧͷ ઃఆ
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ʹ ରԠ͚ͮ
SWIGでのラッパーインターフェース生成の様子 3. Case Study - SWIG ͢Δͱɺ$ ͱ(PͷϥούʔΠϯλʔϑΣʔεϑΝΠϧ͕ͦΕͧΕݸੜ͞ Ε·͢ɻ l
PNJLVKJ ◦ MJC ▪ MJCPNJLVKJB ◦ JODMVEF ▪ PNJLVKJI ▪ FSSPS$PEFI ◦ PNJLVKJJ ◦ PNJLVKJ@XSBQDYY ◦ JOUFSOBMHP DHPͰݺͼग़͍͢͠ܗʹܗͨ͠$ ϥούʔ ͦΕΛDHPͰݺͼग़͢(Pίʔυ
アジェンダ Agenda DHP WTQVSF(P DHP %PDVNFOUT $BTF4UVEZ
B ঢ়گઆ໌ C ٹੈओ r 48*( D 48*(Ͱྑ͔ͬͨ͜ͱ ؾΛ͚ͭΔ͜ͱ
SWIGで良かったこと 3. Case Study – Pros & Cons of SWIG
48*(Λͬͯྑ͔ͬͨ͜ͱҎԼͰ͢ɻ l ϔομϑΝΠϧʹେྔʹఆٛ͞ΕͨϓϩτλΠϓએݴ͔ΒίʔυΛࣗಈੜͰ͖Δ ◦ ؾΛݣ͏$$ (Pؒͷͷड͚͠Λ48*(ʹͤΒΕΔͨΊָ l $ ͕͔Βͳͯ͘ͳΜͱ͔ͳͬͨ ◦ $ ಛ༗ͷهड़ΛDHPެࣜʹใ͕͋ͬͨQVSF$ͷΓํʹ߹ΘͤΔ࡞ۀΛ 48*(ʹͤΒΕͨ l ඇϓϦϛςΟϒܕΛֶशίετ͘ѻ͏͜ͱ͕Ͱ͖ͨ ◦ ޙड़
SWIGで良かったこと 3. Case Study – Pros & Cons of SWIG
(P$ݴޠؒͰͷΓͱΓɺϓϦϛςΟϒܕͳΒൺֱత༰қʹͰ͖ΔͷͰ ͕͢ɺͦ͏Ͱͳ͍ͱਖ਼֬ʹͦΕΛ࣮͢ΔͷେมͰ͢ɻ Ϋϥε (P$ݴޠؒͷͷड͚͠ํ๏ $VJOU$MPOHʹ Ωϟετ͢Δ ྻܕ ϙΠϯλܕ $$4USJOHؔ $(P4USJOHؔΛͬͯ͏·͘Δ ʮઌ಄ཁૉͷϙΠϯλΛͯ͠Ͷʯ ͱQLHHPEFWʹॻ͍ͯ͋Δ͚ͩ ܕ จࣈྻܕ DIBS
SWIGで良かったこと 3. Case Study – Pros & Cons of SWIG
(P$ݴޠؒͰͷΓͱΓɺϓϦϛςΟϒܕͳΒൺֱత༰қʹͰ͖ΔͷͰ ͕͢ɺͦ͏Ͱͳ͍ͱਖ਼֬ʹͦΕΛ࣮͢ΔͷେมͰ͢ɻ Ϋϥε (P$ݴޠؒͷͷड͚͠ํ๏ $VJOU$MPOHʹ Ωϟετ͢Δ ྻܕ ϙΠϯλܕ $$4USJOHؔ $(P4USJOHؔΛͬͯ͏·͘Δ ʮઌ಄ཁૉͷϙΠϯλΛͯ͠Ͷʯ ͱQLHHPEFWʹॻ͍ͯ͋Δ͚ͩ ܕ จࣈྻܕ DIBS
SWIGで良かったこと 3. Case Study – Pros & Cons of SWIG
(P$ݴޠؒͰͷΓͱΓɺϓϦϛςΟϒܕͳΒൺֱత༰қʹͰ͖ΔͷͰ ͕͢ɺͦ͏Ͱͳ͍ͱਖ਼֬ʹͦΕΛ࣮͢ΔͷେมͰ͢ɻ Ϋϥε (P$ݴޠؒͷͷड͚͠ํ๏ $VJOU$MPOHʹ Ωϟετ͢Δ ྻܕ ϙΠϯλܕ $$4USJOHؔ $(P4USJOHؔΛͬͯ͏·͘Δ ʮઌ಄ཁૉͷϙΠϯλΛͯ͠Ͷʯ ͱQLHHPEFWʹॻ͍ͯ͋Δ͚ͩ ܕ จࣈྻܕ DIBS
SWIGで良かったこと 3. Case Study – Pros & Cons of SWIG
(P$ݴޠؒͰͷΓͱΓɺϓϦϛςΟϒܕͳΒൺֱత༰қʹͰ͖ΔͷͰ ͕͢ɺͦ͏Ͱͳ͍ͱਖ਼֬ʹͦΕΛ࣮͢ΔͷେมͰ͢ɻ Ϋϥε (P$ݴޠؒͷͷड͚͠ํ๏ $VJOU$MPOHʹ Ωϟετ͢Δ ྻܕ ϙΠϯλܕ $$4USJOHؔ $(P4USJOHؔΛͬͯ͏·͘Δ ʮઌ಄ཁૉͷϙΠϯλΛͯ͠Ͷʯ ͱQLHHPEFWʹॻ͍ͯ͋Δ͚ͩ ܕ จࣈྻܕ DIBS
Cのクラス変数との値の受け渡し 3. Case Study – Pros & Cons of SWIG
$ͷΫϥεมʹؔͯ͠ɺ48*(ʹΑͬͯҎԼͷΑ͏ʹ؆୯ʹͷੜɾड͚ ͕͠Ͱ͖ΔΑ͏ͳؔ܈͕ੜ͞Ε·͢ɻ $ ϔομʔϑΝΠϧ 48*(͕ੜͨ͠(Pϥούʔ $ Ͱఆٛ͞Εͨ 1BQFSΫϥε 4FUUFS(FUUFS͖ͷ (PΠϯλʔϑΣʔε ίϯετϥΫλ σετϥΫλ 1BQFSΫϥεΛҾʹͭ ϝιου ରԠ͢Δ(Pͷϝιουɺ48*(ੜͷ1BQFSΠϯ λʔϑΣʔεΛҾʹ࣋ͭΑ͏ʹઃܭ͞Ε͍ͯΔ
SWIGのインターフェースライブラリの利用 3. Case Study – Pros & Cons of SWIG
48*(ʹDQPJOUFSJDBSSBZJͱ͍ͬͨΠϯλϑΣʔεϥΠϒϥϦ͕༻ҙ͞Εͯ ͓ΓɺͦΕΛར༻͢Δ͜ͱͰศརͳϔϧύʔؔΛੜͤ͞Δ͜ͱ͕Ͱ͖·͢ɻ ྻܕͷ߹ ϙΠϯλܕͷ߹ 1BQFSܕͷྻʹ૬͢ΔมΛੜ ྻͷϝϞϦղ์ ྻͷO൪ͷཁૉͷऔಘ ྻͷO൪ͷཁૉͷηοτ DIBSʹ૬͢ΔมΛੜ ϝϞϦղ์ ϙΠϯλ͕ࢦ͢ͷऔಘ σϦϑΝϨϯε ϙΠϯλ͕ࢦ͢Λߋ৽
(余談)文字列のポインタをどう扱おう? 3. Case Study – Pros & Cons of SWIG
ʮจࣈྻͷϙΠϯλΛҾͱͯ͠͠ɺͦͷதʹ࣮ߦ݁ՌΛ֨ೲͯ͠Β͏ʯͱ ͍͏$ͷ͕ؔ͋Γ·ͨ͠ɻ ΓΤϥʔൃੜ༗ ແͷൖʹ͏ ຊͷॲཧ݁Ռ จࣈྻ Ҿ Ͱͨ͠ϙΠϯλͰड͚औΔ $ ϔομʔϑΝΠϧ TXJHίϚϯυΛ࣮ߦ ࣗಈੜ͞Εͨ(Pϥούʔ
(余談)文字列のポインタをどう扱おう? 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ϝιουͷར༻ྫ
アジェンダ Agenda DHP WTQVSF(P DHP %PDVNFOUT $BTF4UVEZ
B ঢ়گઆ໌ C ٹੈओ r 48*( D 48*(Ͱྑ͔ͬͨ͜ͱ ؾΛ͚ͭΔ͜ͱ E (PMJLFʹ͢ΔͨΊʹվ
(問題)自動生成コードがGo-likeじゃない 3. Case Study – Customize 48*(ʹΑͬͯࣗಈੜ͞Εͨίʔυ$$ ͷؔγάωνϟʹԊͬͨܗʹͳ ͓ͬͯΓɺ(PMJLFͱݴ͑ͳ͍෦͕͋Γ·͢ɻ $$
ϔομʔϑΝΠϧʹهࡌ͞Ε͍ͯΔ༰ ྫ 48*(Ͱੜ͞Εͨ(Pͷϥούʔ ΤϥʔΛJOUͰͳ͘ FSSPSܕʹ͍ͨ͠ Ҿͷ1BQFS࣮ߦ݁ՌΛड͚औΔͨΊͷͷͳͷͰ ΓʹೖΕͯ 1BQFS FSSPS ͱ͍͏ܗʹ͍ͨ͠
(解決策)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*(ੜίʔυΛӅณͰ͖Δʂ
(解決策)Goらしくなるようにさらにラッパーを作ろう 3. Case Study – Customize ͦͷͨΊɺ48*(ͷࣗಈੜίʔυΛ͞Βʹϥοϓ͢ΔΑ͏ͳܗͰύοέʔδΛ ࡞͠·ͨ͠ɻ l PNJLVKJ
◦ JOUFSOBM ▪ MJC • MJCPNJLVKJB ▪ JODMVEF • PNJLVKJI • FSSPS$PEFI ▪ PNJLVKJJ ▪ PNJLVKJ@XSBQDYY ▪ JOUFSOBMHP ◦ PNJLVKJHP (PMJLFͳϝιουγάωνϟʹ͢Δ
(解決策)Goらしくなるようにさらにラッパーを作ろう 3. Case Study – Customize ͦͷͨΊɺ48*(ͷࣗಈੜίʔυΛ͞Βʹϥοϓ͢ΔΑ͏ͳܗͰύοέʔδΛ ࡞͠·ͨ͠ɻ l PNJLVKJ
◦ JOUFSOBM ▪ MJC • MJCPNJLVKJB ▪ JODMVEF • PNJLVKJI • FSSPS$PEFI ▪ PNJLVKJJ ▪ PNJLVKJ@XSBQDYY ▪ JOUFSOBMHP ◦ PNJLVKJHP 48*(ͷϥούʔίʔυΛݺͼग़͢
(解決策)Goらしくなるようにさらにラッパーを作ろう 3. Case Study – Customize ͦͷͨΊɺ48*(ͷࣗಈੜίʔυΛ͞Βʹϥοϓ͢ΔΑ͏ͳܗͰύοέʔδΛ ࡞͠·ͨ͠ɻ l PNJLVKJ
◦ JOUFSOBM ▪ MJC • MJCPNJLVKJB ▪ JODMVEF • PNJLVKJI • FSSPS$PEFI ▪ PNJLVKJJ ▪ PNJLVKJ@XSBQDYY ▪ JOUFSOBMHP ◦ PNJLVKJHP 48*(ίʔυ͔ΒͷJOUΓ͔Β ΤϥʔछผΛผ͢Δ ͠ΤϥʔͳΒFSSPSܕʹͯ͠ Γʹ͢Δ ΤϥʔछผΛTXJUDIͰ ผ͢Δؔ
(解決策)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ܕʹ Ωϟετ͢Δؔ
やっとGoからC/C++資産を呼び出すことに成功 3. Case Study – Customize ͜͏ͯ͠48*(ՌΛ͞Βʹϥοϓͨࣗ͠લͷPNJLVKJύοέʔδΛར༻͢Δ ͜ͱͰɺ$$ ࢿ࢈Λ(PMJLFʹ͑ΔΑ͏ʹͳΓ·ͨ͠ɻ ᶃ$$
ϔομʔϑΝΠϧ ᶄ48*(͕ίʔυΛࣗಈੜ ᶅ48*(ͷίʔυΛ(PMJLFʹϥοϓ ᶆϥούʔϥΠϒϥϦΛར༻
アジェンダ Agenda DHP WTQVSF(P DHP %PDVNFOUT $BTF4UVEZ
B ঢ়گઆ໌ C ٹੈओ r 48*( D 48*(Ͱྑ͔ͬͨ͜ͱ ؾΛ͚ͭΔ͜ͱ E (PMJLFʹ͢ΔͨΊʹվ F ϥΠϒϥϦͷల։
ラッパーライブラリの展開 3. Case Study – Publication ੜͨ͠48*(ࢿ࢈Λਖ਼ৗʹಈ͔ͨ͢ΊʹɺϔομʔϑΝΠϧɾ੩తϥΠϒϥ Ϧͱ(Pϥούʔίʔυͷஔ͕దͳؔʹͳ͍ͬͯΔඞཁ͕͋Γ·͢ɻ l PNJLVKJ
◦ JOUFSOBM ▪ PNJLVKJJ ▪ JOUFSOBMHP ▪ PNJLVKJ@XSBQDYY ▪ MJC • ੩తϥΠϒϥϦ BϑΝΠϧ ▪ JODMVEF • ϔομʔϑΝΠϧ܈ ◦ PNJLVKJHP 48*(ΠϯλʔϑΣʔεϑΝΠϧʹهࡌͨ͠ $11'-"(4-%'-"(4ͷ༰ ࣗಈੜ͞ΕͨίʔυͷDHPσΟϨΫςΟϒʹө TXJHHPD ৄࡉGMHུ
ラッパーライブラリの展開 3. Case Study – Publication ੜͨ͠48*(ࢿ࢈Λਖ਼ৗʹಈ͔ͨ͢ΊʹɺϔομʔϑΝΠϧɾ੩తϥΠϒϥ Ϧͱ(Pϥούʔίʔυͷஔ͕దͳؔʹͳ͍ͬͯΔඞཁ͕͋Γ·͢ɻ l PNJLVKJ
◦ JOUFSOBM ▪ PNJLVKJJ ▪ JOUFSOBMHP ▪ PNJLVKJ@XSBQDYY ▪ MJC • ੩తϥΠϒϥϦ BϑΝΠϧ ▪ JODMVEF • ϔομʔϑΝΠϧ܈ ◦ PNJLVKJHP ࣗಈੜ͞ΕͨίʔυͷDHPσΟϨΫςΟϒʹө • (Pϥούʔίʔυ͕JOUFSOBMσΟϨΫτϦ • ϔομʔϑΝΠϧ͕JOUFSOBMJODMVEFσΟϨΫτϦ • ϥΠϒϥϦ͕JOUFSOBMMJCPNJLVKJJͱ͍͏໊લͰஔ ͱ͍͏ஔؔʹͳ͍ͬͯͳ͍ͱಈ͔ͳ͍ʂ
ラッパーライブラリの展開 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Λஔ͔ͨͬͨ͠ͷͰ͢ɻ
苦肉の策 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
苦肉の策 3. Case Study – Publication ͦͷͨΊɺࠓճHPHFUͰґଘؔΛએݴ ࣮ଶHJUTVCNPEVMFͰऔಘͯ͠ HPNPESFQMBDFͯ͠ࢀরͱ͍͏ೋॏཧΛٽ͘ٽ͘͢Δ͜ͱʹͳΓ·ͨ͠ɻ l
NBJOHP l HPNPE l %PDLFSGJMF l TVCNPEVMFT ◦ PNJLVKJHP ▪ PNJLVKJHP ▪ JOUFSOBM • 48*(ࢿ࢈ SFQMBDFσΟϨΫςΟϒʹΑΓ TVCNPEVMFTԼͷίʔυΛͱʹಈ࡞͢Δ $01:TVCNPEVMFTPNJLVKJ HPJOUFSOBMMJCMJCPNJLVKJB <ίϯςφύε> ͱهड़ͯ͠ϏϧυͰ͖Δ
注釈 3. Case Study – Publication HPNPESFQMBDFTVCNPEVMFΛͬͨ͜ͷΓํ͕ϕεϓϥͩͱશ͘ࢥͬ ͍ͯͳ͍ͷͰɺΑΓྑ͍ํ๏Λ͓࣋ͪͷํͥͻݟΛγΣΞ͍ͯͩ͘͠͞ɻ
アジェンダ Agenda DHP WTQVSF(P DHP %PDVNFOUT $BTF4UVEZ
4VNNBSZ
まとめ Summary l Ҏ্͕ʮ$ ະܦݧ DHPΛ͍׳Ε͍ͯͳ͍ʯͱ͍͏CBDLHSPVOEͷචऀ ͕ߦͬͨࢼߦࡨޡͷهͰ͢ɻ l $ଆͷϝϞϦཧɺෳࡶͳσʔλܕΛDHPͰͲ͏ѻ͍͍͑ͷ͔ͱ͍͏ࣝ ͕ͳͯ͘ɺ48*(ʹΑΔϥούʔίʔυͷࣗಈੜͰ͋Δఔઓ͏͜ͱ͕Ͱ
͖·ͨ͠ɻ l ͨͩʮͱΓ͋͑ͣಈ͘ʯͷͰͳ͘ɺ(PMJLFͳίʔυʹ͍ͨ͠ ίϯςφ ʹ͍ͤ͢ܗʹ͍ͨ͠ͱͳΔͱɺ48*(ͷՌΛͦͷ··ྲྀ༻Ͱͳ͘ ҙΛՃ͑Δඞཁ͕͋Γ·͢ɻ
まとめ Summary l ຊηογϣϯͷ༰͕ϕετϓϥΫςΟε͔Ͳ͏͔Θ͔Γ·ͤΜɻ l ʮ)FMMP8PSMEʯҎ্ͷൃలతͳ༰ʹؔͯ͠ɺެࣜͷDHPͷจݙʹΘ͔Γ ͍͢هड़͕ͳ͍ͱ͍͏ݱঢ়Ͱ͕͢ɺຊηογϣϯͷࣄྫΛਅࣅ͍͢͠αϯ ϓϧͱ͢Δ͜ͱͰଟ͘ͷDHPॳ৺ऀ͕ٹΘΕΔ͜ͱΛئ͍ͬͯ·͢ɻ l ͜ͷ༰͔Βൃలͤͨ݁͞Ռɺͬͱ͍͍։ൃɾӡ༻ϑϩʔ͕Ͱ͖ͨʂͱ͍
͏߹ʹͥͻݟΛγΣΞ͍ͯͩ͘͠͞ʂʂ
5IBOLZPVGPSMJTUFOJOH ຊηογϣϯͰ༻ͨ͠αϯϓϧίʔυͪ͜Β • IUUQTHJUIVCDPNTBLJFOHJOFFSJOHPNJLVKJMJC • IUUQTHJUIVCDPNTBLJFOHJOFFSJOHPNJLVKJHP • IUUQTHJUIVCDPNTBLJFOHJOFFSJOHPNJLVKJTBNQMF