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
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
sue445
September 16, 2025
Technology
850
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
180
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.4k
Fix SQL N+1 queries with RuboCop #rubykaigi
sue445
2
7.5k
sue445とOSSと社内ツール #subcul_dev
sue445
0
950
Sentry GKEに リプレイス 1年間の 知見見せます / Migrated to GKE Sentry #pixivdevmeetup
sue445
0
850
Other Decks in Technology
See All in Technology
Claude起点の仕様駆動開発
tanakaseiya
0
280
AI 時代の Azure エンジニアリング ~ 私たちは何を磨き、何を任せるのか ~
chack411
1
290
データ品質を壊しながらSnowflakeのAIに分析させてみた
kawanago
0
360
OpenClawでAzure DevOpsのWiki更新を自動化する - クラウドAIだけでは届かない場所へ
yutakaosada
0
140
検証フェーズはAIの回答を判断するための学習機会
toru_kubota
2
220
GitHub Agentic Workflows を触ってみる
htkym
2
910
10年欲しかった音楽管理アプリを、AIと一緒に作りはじめた
judau
1
200
20260929_AmazonGuardDutyの検出通知メールにAWS DevOpsAgentの調査結果を追加する
yhana
1
410
いちAWSエンジニアのAI活用を振り返る #devio2026 / devio osaka 2026 kawahara
masahirokawahara
2
310
生成AIと進める探索的データ分析(2026.10.03 第122回Tokyo.R勉強会)
tatamiya
1
680
HacobuにおけるFDEとは/登壇資料(戸井田 裕貴)
hacobu
PRO
1
700
オブザーバビリティを高める AI エージェント体験を考える / Designing AI Agent Experiences That Enhance Observability
aoto
PRO
1
170
Featured
See All Featured
How to build an LLM SEO readiness audit: a practical framework
nmsamuel
2
930
Agile Leadership in an Agile Organization
kimpetersen
PRO
0
260
Designing for humans not robots
tammielis
254
26k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
35
2.9k
[Rails World 2026] Durable orchestration on Rails: from continuation to workflow
palkan
1
410
Designing Powerful Visuals for Engaging Learning
tmiket
1
580
Effective software design: The role of men in debugging patriarchy in IT @ Voxxed Days AMS
baasie
1
540
Reality Check: Gamification 10 Years Later
codingconduct
0
2.3k
Getting science done with accelerated Python computing platforms
jacobtomlinson
2
500
Building an army of robots
kneath
307
47k
So, you think you're a good person
axbom
PRO
2
2.2k
My Coaching Mixtape
mlcsv
0
330
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