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
Create Ruby native extension gem with Go
Search
sue445
September 16, 2025
Technology
0
580
Create Ruby native extension gem with Go
ペパボ & GO 〜 夏のGo祭り2025、あの夏〜(
https://pepabo.connpass.com/event/363869/
)の発表資料です
sue445
September 16, 2025
Tweet
Share
More Decks by sue445
See All by sue445
Road to RubyKaigi 2025 #rubykaigi2026_saisoku
sue445
0
85
Kaigi Effect 2025 #rubykaigi2025_after
sue445
0
1.3k
Road to Go Gem #rubykaigi
sue445
0
1.6k
pixiv Cloud Journey #pixivmeetup
sue445
0
1.5k
Road to RubyKaigi Speaker (case sue445) #rubykaigi2023_after
sue445
0
2.4k
Fix SQL N+1 queries with RuboCop #rubykaigi
sue445
2
6.6k
sue445とOSSと社内ツール #subcul_dev
sue445
0
870
Sentry GKEに リプレイス 1年間の 知見見せます / Migrated to GKE Sentry #pixivdevmeetup
sue445
0
770
sue445謹製社内ツール十一選 / su445 in-house tools #pixivdevmeetup
sue445
1
530
Other Decks in Technology
See All in Technology
入社したばかりでもできる、 アクセシビリティ改善の第一歩
unachang113
2
210
AIでテストプロセスを自動化しよう251113.pdf
sakatakazunori
0
160
AIと共に開発する時代の組織、プロセス設計 freeeでの実践から見えてきたこと
freee
4
730
Javaコミュニティの歩き方 ~参加から貢献まで、すべて教えます~
tabatad
0
130
[mercari GEARS 2025] Building Foundation for Mercari’s Global Expansion
mercari
PRO
1
130
Moto: Latent Motion Token as the Bridging Language for Learning Robot Manipulation from Videos
peisuke
0
150
re:Invent2025 事前勉強会 歴史と愉しみ方10分LT編
toshi_atsumi
0
140
やり方は一つだけじゃない、正解だけを目指さず寄り道やその先まで自分流に楽しむ趣味プログラミングの探求 2025-11-15 YAPC::Fukuoka
sugyan
2
810
LINEスキマニ/LINEバイトにおけるバックエンド開発
lycorptech_jp
PRO
0
230
AIと自動化がもたらす業務効率化の実例: 反社チェック等の調査・業務プロセス自動化
enpipi
0
620
CloudFormationコンソールから、実際に作られたリソースを辿れるようになろう!
amixedcolor
1
190
AIエージェントによるエンタープライズ向けスライド検索!
shibuiwilliam
3
520
Featured
See All Featured
Optimising Largest Contentful Paint
csswizardry
37
3.5k
[RailsConf 2023] Rails as a piece of cake
palkan
57
6.1k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
11
930
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
46
7.8k
Side Projects
sachag
455
43k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3.2k
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
10
670
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
2.6k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
9
970
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.5k
Stop Working from a Prison Cell
hatefulcrawdad
272
21k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.6k
Transcript
Create Ruby native extension gem with Go 2025/09/16 ペパボ &
GO 〜 夏のGo祭り2025、あの夏〜 https://pepabo.connpass.com/event/363869/
About • Go Sueyoshi (a.k.a. sue445) • Gopher since 1982
(43 years old) • pixiv Inc. ◦ Infra Unit ◦ AWS, Google Cloud, 雑用全般 etc...
今日話すこと • RubyのgemをGoで作る話 ◦ Go Conference 2025に出して落ちたプロポーザルの供養 • 余談:この発表資料は https://github.com/k1LoW/deck
で作られていま す
Rubyのgemについて • gemとはRubyのライブラリ • Rubyのgemは 基本的には Rubyで書く
Native extension • 応用的には RubyのgemはRuby以外の言語でも作ることができる • Ruby以外の言語で作ったgemのことをNative extensionと呼ぶ • 公式ではCやRustがサポートされている
• RubyはCで作られているので、Native ExtensionからRubyのCの関数を呼 び出すことができる ◦ C以外で作られたRubyもあるので https://github.com/ruby/ruby のことをCRubyと呼ぶ ことが多い
Native extensionの仕組み(C ver)
cgo • Goのソースコードからshared objectファイル(*.so)を作る機能 • soファイルをCのプログラムから読み込むことでCでGoの機能が使えるよ うになる • さらに応用するとcgoを利用してRubyのgemをGoで作ることができる
Goで作ったNative extension(Go gem)の仕 組み
Go gem Example
github.com/ruby-go-gem/go-gem-wrapper • GoからCRubyの関数を呼び出すためのbindingを提供しているラッパー • ruby.h で定義されている約1,100個の関数からGoのソースコードを自動 生成している • ruby.h をparseするためのparserも作った
◦ https://github.com/ruby-go-gem/ruby_header_parser
ruby.hから自動生成したソースコードの例
Go gemのメリット • GoのエコシステムをRubyから利用できる • RubyからGoの機能を利用できる ◦ goroutineやchannelは他の言語にないGoの大きな強み
https://speakerdeck.com/sue445/road-to-go-gem-number-rubykaigi?slide=139
funnel_http • https://github.com/sue445/funnel_http • 複数のhttpリクエストをgoroutineから実行するためのRubyのgem
Example
https://rubykaigi.org/2025/presentations/sue445.html#day3
https://speakerdeck.com/sue445/road-to-go-gem-number-rubykaigi