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
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
yamasaki
May 13, 2026
Programming
880
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
84
Other Decks in Programming
See All in Programming
Crash Auto Pipelines
veronikapj
1
350
現場と育てるRailsモデリング 〜Spreadsheetから始めたモデル設計〜
siroemk
2
1.2k
そのデザイントークン、Flutterでも同じ見た目になりますか?
nakamizu
0
300
AI時代のFlutter品質設計 — アプリ品質を守るQuality Layers
omatty198
0
350
ActionController meets Protocol Buffers
sorah
1
780
[JA] Domain Modeling with Vanilla Rails: 「操作」から再考するRailsの設計論
yasaichi
4
1.8k
graphql-ruby を Spinel で速くしようとした話
mtsmfm
0
140
FactoryBotをやめればRSpecは速くなるのか?
yuta_onishi_97
0
1.5k
JIS keyboard support in Omarchy
lef237
0
180
Coding with AI: How to trust the storyteller (AWS Community Day Adria, Ljubljana 2026)
slobodan
0
140
社内AIエージェント「Askワンバン」における コストチューニングの取り組み
t0yohei
0
150
Augmenting AI with the Power of Jakarta EE
ivargrimstad
0
570
Featured
See All Featured
For a Future-Friendly Web
brad_frost
184
11k
Mozcon NYC 2025: Stop Losing SEO Traffic
samtorres
1
600
Code Review Best Practice
trishagee
74
20k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
23k
The AI Revolution Will Not Be Monopolized: How open-source beats economies of scale, even for LLMs
inesmontani
PRO
3
3.8k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
16k
Building AI with AI
inesmontani
PRO
1
1.4k
Large-scale JavaScript Application Architecture
addyosmani
516
110k
Docker and Python
trallard
47
4.3k
End of SEO as We Know It (SMX Advanced Version)
ipullrank
3
4.5k
Unlocking the hidden potential of vector embeddings in international SEO
frankvandijk
0
1k
Future Trends and Review - Lecture 12 - Web Technologies (1019888BNR)
signer
PRO
0
3.8k
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