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
contributing-to-spinel
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
yamasaki
May 13, 2026
Programming
860
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
contributing-to-spinel
RubyKaigi 2026 アフターイベント〜初参加LT・スポンサー4社のパネル〜
https://mybest.connpass.com/event/392055/
yamasaki
May 13, 2026
More Decks by yamasaki
See All by yamasaki
YJITのBenchmarksに貢献した話
sacckey
0
79
Other Decks in Programming
See All in Programming
作れる、でも消せるか?──安全に「枯らして消す」機能削除術 / Drain, Then Delete
chobishiba
1
110
[ハンズオン]AIへの指示だけで「五目並べ」を作ってみよう
satoshi256kbyte
1
370
パズルゲームの作り方 / how to make puzzle games
kaityo256
PRO
2
290
Simple Storage Service(S3) is not simple
iwatsukayura
0
280
GemmaをJevのように使ってみる / Use Gemma like Jev
kishida
5
780
現場と育てるRailsモデリング 〜Spreadsheetから始めたモデル設計〜
siroemk
2
320
機械に任せるテスト、人が見るテスト ⽣成AIで引き直した、運⽤保守フェーズの線引き
dske104
0
180
Androidだけじゃない、DroidKaigiで広がった私の技術スタック
akkeylab
0
130
IBM Bob Dojo #1 仕様駆動開発入門
oniak3ibm
PRO
0
380
AI時代のコードレビューは人に向けるな、仕組みに向けろ
texmeijin
5
3.6k
ActionController meets Protocol Buffers
sorah
0
240
速習iPhone Duo対応
yuukiw00w
2
980
Featured
See All Featured
Speed Design
sergeychernyshev
33
2.2k
The untapped power of vector embeddings
frankvandijk
2
1.9k
Build your cross-platform service in a week with App Engine
jlugia
234
19k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
12
1.9k
Crafting Experiences
bethany
1
380
Organizational Design Perspectives: An Ontology of Organizational Design Elements
kimpetersen
PRO
1
850
Self-Hosted WebAssembly Runtime for Runtime-Neutral Checkpoint/Restore in Edge–Cloud Continuum
chikuwait
0
890
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.6k
Java REST API Framework Comparison - PWX 2021
mraible
34
9.8k
Claude Code のすすめ
schroneko
67
230k
Conquering PDFs: document understanding beyond plain text
inesmontani
PRO
4
3.2k
Heart Work Chapter 1 - Part 1
lfama
PRO
10
37k
Transcript
Spinelに貢献した話
note inc. ⾃⼰紹介 Yamasaki sacckey • 2020/04 note⼊社 • サーバーサイドエンジニア
◦ 最近は物語投稿サイトTALESの実装 • 個⼈開発/ピアノ/⿇雀 2
note inc. Matz Keynote 3
note inc. Spinel 4 • RubyのAOTコンパイラ • Ruby (.rb) →
parse → type inference → C (.c) → native binary • Rubyプログラムの実⾏速度とポータビリティの向上
note inc. さっそくSpinelを使ってみる % make deps % make % cat
> hello.rb <<'RUBY' def fib(n) n < 2 ? n : fib(n - 1) + fib(n - 2) end puts fib(34) RUBY % ./spinel hello.rb % ./hello # prints 5702887 (instantly) 5
note inc. Ruby Boy (https://github.com/sacckey/rubyboy) • Rubyで動くGame Boyのエミュレーター • ruby.wasmによってブラウザでも動く
◦ https://sacckey.github.io/rubyboy/ • 画⾯描画なしのベンチマークがある ◦ → Spinelでコンパイルしたい ◦ → コンパイル失敗 ◦ → 失敗箇所ごとにPR作成 6
note inc. Spinelに貢献する 7 Contributingを翻訳して抜粋 貢献を歓迎します。課題追跡システムはロードマップとしても機能します。未解決の問題であれば何でも 対象となります。最も有⽤なエントリーポイントは、再現⼿順を⽰すバグ報告(Spinelでは失敗するが CRubyでは成功する5⾏のRubyコードなど)と、そのような報告を解決するコード⽣成による修正です。 • コンパイルに失敗するコードを⼩さく切り出し、CRubyでは動くがSpinelでは落ちるテストを作る
• それを通るようにする
note inc. 貢献1: M::C.new対応 8 # コンパイルできるようになったコード module M class
C def initialize puts "init" end end end M::C.new M::C のような名前空間つきクラスに対して .new できなかった ConstantPathNode がレシーバーになる ケースに対応
note inc. 貢献2: インスタンス変数名とCキーワードの衝突回避 9 # コンパイルできるようになったコード class KeywordIvar def
initialize @if = 40 @iv_if = 1 end def value @if + @iv_if + 1 end end puts KeywordIvar.new.value @if をCコードに変換すると、 Cの if と衝突してしまっていた 生成されるCのフィールド名に iv_ prefixを付 けた 例: @if → iv_if @iv_if → iv_iv_if
note inc. その他の貢献 10 • nested ConstantPath reads • ConstantPath
receiverへのclass method dispatch • polymorphic returnのbox • constructor initialize pathのGC save重複排除
note inc. まとめ • SpinelでRuby Boyをコンパイルしようとしたら、まだ動かないRubyコードが⾒つかった ◦ ⼤きな機能追加ではなく、最⼩再現テストにすることが貢献になった • 「CRubyでは動くがSpinelでは落ちる5⾏のRuby」を⾒つけたら貢献のチャンス
◦ Spinelで遊んで、動かないコードを⾒つけたらPRを出そう! 11
note inc. 12 noteでは仲間を募集中です! https://note.jp/n/nc0fe1a230633 募集職種: • サーバーサイドエンジニア • サーバーサイドエンジニア
(次世代リーダー候補 / 第⼆新卒歓迎) • AIプラットフォームエンジニア 採⽤情報
None