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.7k
どうしても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
slog.Handlerのよくある実装ミス
sakiengineer
5
700
Goの格言”Errors are values”の本質を読み解く
sakiengineer
10
2.8k
アプリ側のコードを書いていた人がLambdaに触れて気づいたこと
sakiengineer
0
1.6k
epollによるNetwork I/O in Goランタイム
sakiengineer
3
2.2k
スケジューラから学ぶGoランタイム 〜code reading of runtime pkg〜
sakiengineer
13
5k
select文の内部実装見つけました
sakiengineer
1
780
Other Decks in Technology
See All in Technology
OSだってコンテナしたい❗Image Modeが切り拓くLinux OS運用の新時代
tsukaman
0
130
The Complete Android UI Testing Landscape: From Journey to Traditional Approaches
alexzhukovich
1
110
AI エージェント活用のベストプラクティスと今後の課題
asei
1
270
How We Built a Secure Sandbox Platform for AI
flatt_security
1
110
ローカルLLM基礎知識 / local LLM basics 2025
kishida
23
8.4k
Building AI Applications with Java, LLMs, and Spring AI
thomasvitale
1
230
信頼性が求められる業務のAIAgentのアーキテクチャ設計の勘所と課題
miyatakoji
0
150
組織の“見えない壁”を越えよ!エンタープライズシフトに必須な3つのPMの「在り方」変革 #pmconf2025
masakazu178
1
870
大規模モノレポの秩序管理 失速しない多言語化フロントエンドの運用 / JSConf JP 2025
shoota
0
360
機械学習を「社会実装」するということ 2025年冬版 / Social Implementation of Machine Learning November 2025 Version
moepy_stats
2
140
レガシーで硬直したテーブル設計から変更容易で柔軟なテーブル設計にする
red_frasco
4
580
ECS組み込みのBlue/Greenデプロイを動かしてELB側の動きを観察してみる
yuki_ink
3
410
Featured
See All Featured
Thoughts on Productivity
jonyablonski
73
4.9k
The Language of Interfaces
destraynor
162
25k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
659
61k
Principles of Awesome APIs and How to Build Them.
keavy
127
17k
Agile that works and the tools we love
rasmusluckow
331
21k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
Build your cross-platform service in a week with App Engine
jlugia
234
18k
Embracing the Ebb and Flow
colly
88
4.9k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.6k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
231
22k
Speed Design
sergeychernyshev
33
1.2k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
48
9.8k
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