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
730
slog.Handlerのよくある実装ミス
sakiengineer
5
890
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
sue445's proposals 2026
sue445
0
120
夫婦で子育てするための育児標準化
codmoninc
PRO
0
480
Classmethod Company Deck
satoshi7
1
750
NDIでApple Vision Proにリアルタイム映像送信
jyouryuusui
0
130
僕のハーネスを紹介します
watany
3
1k
DBについての基礎説明(MySQL編) - コロプラ 2026年度 新卒研修
colopl
0
150
OptunaHub: ブラックボックス最適化のためのプラットフォーム
pfn
PRO
0
150
ウォンテッドリーの最近のプロダクトと技術の紹介
stomk
0
270
Rustuna: Rustによる高速なOptuna実装
pfn
PRO
0
200
Benchmarking Disaggregated Serving on vLLM + Dynamo with a Real Coding-Agent Workload
nttcom
1
210
Running Kotlin + Quarkus with Lambda
nealle
1
4k
「エーアイ」をバズワードにしないために RPA 導入経験と Kiro 上での Claude モデル利用経験から
kazzpapa3
0
100
Featured
See All Featured
The innovator’s Mindset - Leading Through an Era of Exponential Change - McGill University 2025
jdejongh
PRO
1
380
Taking LLMs out of the black box: A practical guide to human-in-the-loop distillation
inesmontani
PRO
3
2.5k
For a Future-Friendly Web
brad_frost
184
10k
Leveraging Curiosity to Care for An Aging Population
cassininazir
1
540
Gemini Prompt Engineering: Practical Techniques for Tangible AI Outcomes
mfonobong
2
590
AI in Enterprises - Java and Open Source to the Rescue
ivargrimstad
0
1.5k
Neural Spatial Audio Processing for Sound Field Analysis and Control
skoyamalab
0
570
The Anti-SEO Checklist Checklist. Pubcon Cyber Week
ryanjones
0
270
Building Better People: How to give real-time feedback that sticks.
wjessup
371
20k
How People are Using Generative and Agentic AI to Supercharge Their Products, Projects, Services and Value Streams Today
helenjbeal
2
360
So, you think you're a good person
axbom
PRO
2
2.2k
Un-Boring Meetings
codingconduct
0
460
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