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.4k
どうしても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.6k
アプリ側のコードを書いていた人がLambdaに触れて気づいたこと
sakiengineer
0
1.6k
epollによるNetwork I/O in Goランタイム
sakiengineer
3
2.1k
スケジューラから学ぶGoランタイム 〜code reading of runtime pkg〜
sakiengineer
12
4.8k
select文の内部実装見つけました
sakiengineer
1
740
Other Decks in Technology
See All in Technology
スケールアップ企業のQA組織のバリューを最大限に引き出すための取り組み
tarappo
4
860
ウェブアクセシビリティとは
lycorptech_jp
PRO
0
230
数百台のオンプレミスのサーバーをEKSに移行した話
yukiteraoka
0
590
DevOps文化を育むQA 〜カルチャーバブルを生み出す戦略〜 / 20250317 Atsushi Funahashi
shift_evolve
1
100
ルートユーザーの活用と管理を徹底的に深掘る
yuobayashi
6
700
モンテカルロ木探索のパフォーマンスを予測する Kaggleコンペ解説 〜生成AIによる未知のゲーム生成〜
rist
4
1k
30代エンジニアが考える、エンジニア生存戦略~~セキュリティを添えて~~
masakiokuda
4
2k
Compose MultiplatformにおけるiOSネイティブ実装のベストプラクティス
enomotok
1
200
チームの性質によって変わる ADR との向き合い方と、生成 AI 時代のこれから / How to deal with ADR depends on the characteristics of the team
mh4gf
4
320
ソフトウェア開発現代史: なぜ日本のソフトウェア開発は「滝」なのか?製造業の成功体験とのギャップ #jassttokyo
takabow
2
1.4k
PostgreSQL Unconference #52 pg_tde
nori_shinoda
0
180
React Server Componentは 何を解決し何を解決しないのか / What do React Server Components solve, and what do they not solve?
kaminashi
6
1.1k
Featured
See All Featured
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
507
140k
Building Your Own Lightsaber
phodgson
104
6.3k
Side Projects
sachag
452
42k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
45
9.5k
Fireside Chat
paigeccino
37
3.3k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
120k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
28
9.4k
Testing 201, or: Great Expectations
jmmastey
42
7.4k
Making the Leap to Tech Lead
cromwellryan
133
9.2k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
280
13k
Stop Working from a Prison Cell
hatefulcrawdad
268
20k
What’s in a name? Adding method to the madness
productmarketing
PRO
22
3.4k
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