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
Create Ruby native extension gem with Go
Search
sue445
September 16, 2025
Technology
840
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
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
ruby.wasmとPicoRuby.wasmに対応した仮想DOMライブラリを作ってる話 #kaigieffect_kaigi
sue445
0
190
Road to RubyKaigi 2025 #rubykaigi2026_saisoku
sue445
0
170
Kaigi Effect 2025 #rubykaigi2025_after
sue445
0
1.7k
Road to Go Gem #rubykaigi
sue445
0
3.3k
pixiv Cloud Journey #pixivmeetup
sue445
0
1.8k
Road to RubyKaigi Speaker (case sue445) #rubykaigi2023_after
sue445
0
3.3k
Fix SQL N+1 queries with RuboCop #rubykaigi
sue445
2
7.5k
sue445とOSSと社内ツール #subcul_dev
sue445
0
940
Sentry GKEに リプレイス 1年間の 知見見せます / Migrated to GKE Sentry #pixivdevmeetup
sue445
0
840
Other Decks in Technology
See All in Technology
あるけみー式LTスライド作成術
alchemy1115
1
180
Omarchy Quattro の日本語設定周り
simosako
2
140
From Vanilla Kubernetes to a Batteries-Included Platform: Developer Experience at 1,300+ Clusters
yosshi_
0
680
多層防御と最⼩権限で実現する、安全なAIエージェント設計パターン
lycorptech_jp
PRO
1
260
Claude in Chrome 入門 / Introduction to Claude in Chrome
cielo1985
0
260
AI-DLCって実際どう? 〜聞きたいこと全部聞いてみる〜
news_it_enj
0
260
AI活用の現在地、 ちゃんと見えてますか?/XPfest-2026
visional_engineering_and_design
0
180
enechainの内製セルフサービスプラットフォーム
hiyosi
0
160
OpenTelemetryのメトリクスをCloudWatchに送ってPromQLで見てみた
ota1022
0
120
『止めない』を設計する — 制約の中で、事業の根幹を支える判断
hiroyaterui
0
270
Snowflakeのコスト最適化を支えるアーキテクチャ設計
ktatsuya
1
1.5k
Sigmaユーザーのための有用リソース一挙公開 & Sigmaで使えるMCP #sigma_ucj /useful-resources-for-sigma-computing-users-and-mcps-with-sigma
shinyaa31
0
190
Featured
See All Featured
Highjacked: Video Game Concept Design
rkendrick25
PRO
1
450
Designing for Performance
lara
611
70k
RailsConf 2023
tenderlove
30
1.5k
Between Models and Reality
mayunak
4
450
Effective software design: The role of men in debugging patriarchy in IT @ Voxxed Days AMS
baasie
0
510
Understanding Cognitive Biases in Performance Measurement
bluesmoon
32
3k
Discover your Explorer Soul
emna__ayadi
2
1.3k
Side Projects
sachag
456
43k
From π to Pie charts
rasagy
0
360
Faster Mobile Websites
deanohume
310
32k
Avoiding the “Bad Training, Faster” Trap in the Age of AI
tmiket
0
230
WCS-LA-2024
lcolladotor
0
820
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