Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
どうしてもcgoから逃げられなくなったあなたに知ってほしいcgoの使い方入門
Search
H.Saki
June 02, 2023
Technology
3k
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
どうしてもcgoから逃げられなくなったあなたに知ってほしいcgoの使い方入門
23/6/2 Go Conference 2023にて発表
https://gocon.jp/2023/sessions/B7-L/
H.Saki
June 02, 2023
More Decks by H.Saki
See All by H.Saki
さきさん文庫の書籍ができるまで
sakiengineer
0
710
slog.Handlerのよくある実装ミス
sakiengineer
5
870
Goの格言”Errors are values”の本質を読み解く
sakiengineer
10
3k
アプリ側のコードを書いていた人がLambdaに触れて気づいたこと
sakiengineer
0
1.8k
epollによるNetwork I/O in Goランタイム
sakiengineer
3
2.3k
スケジューラから学ぶGoランタイム 〜code reading of runtime pkg〜
sakiengineer
13
5.4k
select文の内部実装見つけました
sakiengineer
1
830
Other Decks in Technology
See All in Technology
AIは推し活である。
kurazuuuuuu
2
1k
HolmesGPTで始めるSREエージェント入門!プラットフォームの障害調査はAIにお任せ 〜
sanghyuk
0
230
2026-09-26 Platform Engineering Kaigi 2026 インフラとアプリの境界線と委譲の設計 / Drawing the Infra and App Line
masasuzu
0
420
認知負荷を吸収し、プロダクトをまたぐPR Preview基盤の設計事例
taiki45
2
520
LT:「このままでいいのかな?」から一歩踏み出した私のデータキャリア選択〜社会人3年目に上京を決意したリアル〜Snowflake女子会 vol.8
snowwmn0824
0
110
.NET WebAssemblyで実現するクライアントサイドAI推論:NuGetからViteまで、2つのエコシステムを繋ぐビルド戦略
yamachu
1
1k
Databricksメトリクスビューはじめてのもくもく会
taka_aki
0
120
「今盗んで、後で解く」に備える ― AWSのポスト量子暗号入門
yama3133
2
270
Lambda MicroVMsが分からなすぎたので使い所を1から考えてみた
tsukuboshi
1
190
あなたの知らないAmazon VPC Route Server/Amazon VPC Route Server you don't know about
masakiokuda
0
110
AI coding 整合正規方法
philipz
0
560
AI臭い文章とは何なのか
nasuvitz
34
66k
Featured
See All Featured
Optimizing for Happiness
mojombo
378
71k
Side Projects
sachag
456
43k
Large-scale JavaScript Application Architecture
addyosmani
515
110k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
141
35k
Navigating Team Friction
lara
192
16k
Reality Check: Gamification 10 Years Later
codingconduct
0
2.3k
How to Grow Your eCommerce with AI & Automation
katarinadahlin
PRO
2
290
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
508
140k
Public Speaking Without Barfing On Your Shoes - THAT 2023
reverentgeek
1
570
Building AI with AI
inesmontani
PRO
1
1.3k
The Cost Of JavaScript in 2023
addyosmani
55
10k
Leveraging Curiosity to Care for An Aging Population
cassininazir
1
520
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