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
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
sue445
September 16, 2025
Technology
800
0
Share
Create Ruby native extension gem with Go
ペパボ & GO 〜 夏のGo祭り2025、あの夏〜(
https://pepabo.connpass.com/event/363869/
)の発表資料です
sue445
September 16, 2025
More Decks by sue445
See All by sue445
Road to RubyKaigi 2025 #rubykaigi2026_saisoku
sue445
0
150
Kaigi Effect 2025 #rubykaigi2025_after
sue445
0
1.5k
Road to Go Gem #rubykaigi
sue445
0
3.1k
pixiv Cloud Journey #pixivmeetup
sue445
0
1.7k
Road to RubyKaigi Speaker (case sue445) #rubykaigi2023_after
sue445
0
3k
Fix SQL N+1 queries with RuboCop #rubykaigi
sue445
2
7.3k
sue445とOSSと社内ツール #subcul_dev
sue445
0
920
Sentry GKEに リプレイス 1年間の 知見見せます / Migrated to GKE Sentry #pixivdevmeetup
sue445
0
810
sue445謹製社内ツール十一選 / su445 in-house tools #pixivdevmeetup
sue445
1
570
Other Decks in Technology
See All in Technology
イベントストーミングとKiroの仕様駆動開発で実現する要件の認識合わせプロセス
syobochim
4
280
シンデレラなんかになりたくない!ガラスの靴が割れた時代にどう歩く?
nomizone
0
190
大規模環境でどのように監視を実現する?
yuobayashi
1
140
管理アカウント単一運用からAWS Organizationsに移行するの大変で滅
hiramax
0
230
GitHub Copilot のこれまでとこれから: From Copilot to Collaborative Agents
yuriemori
1
180
ジュニアエンジニアはSREとどう向き合うべきか
nrinetcom
PRO
1
120
【禁断】Obsidianの第二の脳に「知の巨人」と呼ばれた師匠の脳をロードしてみた
nagatsu
0
6.4k
20260528_生成AIを専属DSに_Howの次にすべきことを考える
doradora09
PRO
0
200
サプライチェーン攻撃への備えについて考えている #湘なんか
stefafafan
3
2.4k
「使われるデータ基盤」を目指してデータアナリストとワークショップをやった話
jackojacko_
2
850
Geek Woman の育ち方 〜コミュニティとAIと〜
chicaco
0
410
LLM時代のリファクタリング戦略_AIエージェントによる段階的・安全なTS移行方法
play_inc
0
180
Featured
See All Featured
Art, The Web, and Tiny UX
lynnandtonic
304
21k
Principles of Awesome APIs and How to Build Them.
keavy
128
17k
ラッコキーワード サービス紹介資料
rakko
1
3.4M
The #1 spot is gone: here's how to win anyway
tamaranovitovic
2
1.1k
Designing for Timeless Needs
cassininazir
1
230
How to train your dragon (web standard)
notwaldorf
97
6.6k
Site-Speed That Sticks
csswizardry
13
1.2k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
128
55k
What the history of the web can teach us about the future of AI
inesmontani
PRO
1
570
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
28
3.5k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
360
30k
The Hidden Cost of Media on the Web [PixelPalooza 2025]
tammyeverts
2
310
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