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
メタプログラミングRuby問題集の活用
Search
Shinichi Maeshima
November 07, 2025
Technology
2
1.5k
メタプログラミングRuby問題集の活用
RubyWorld Conference2025での発表資料です
Shinichi Maeshima
November 07, 2025
Tweet
Share
More Decks by Shinichi Maeshima
See All by Shinichi Maeshima
rails g authenticationから学ぶRails8.0時代の認証
willnet
5
4.8k
What's a well-behaved Rails extension gem?
willnet
0
800
Sidekiq vs Solid Queue
willnet
14
14k
どうしてこうなった?から理解するActive Recordの関連の裏側
willnet
6
1.6k
Exceptional Rails
willnet
6
8.1k
Breaking the Flaky Test Cycle
willnet
2
2.4k
mrskで広がるインフラの選択肢
willnet
1
1.2k
アプリケーションを長期にわたって無理なく運用するためのたったひとつの方法
willnet
2
2.3k
HotwireからDHHが考えるこれからのRailsとJSの付き合い方を知る
willnet
14
14k
Other Decks in Technology
See All in Technology
Kiroで見直す開発プロセスとAI-DLC
k_adachi_01
0
130
品質を経営にどう語るか #jassttokyo / Communicating the Strategic Value of Quality to Executive Leadership
kyonmm
PRO
3
1.2k
開発チームとQAエンジニアの新しい協業モデル -年末調整開発チームで実践する【QAリード施策】-
qa
0
240
スピンアウト講座04_ルーティン処理
overflowinc
0
1.1k
AI時代のオンプレ-クラウドキャリアチェンジ考
yuu0w0yuu
0
230
AWS Systems Managerのハイブリッドアクティベーションを使用したガバメントクラウド環境の統合管理
toru_kubota
0
150
ADK + Gemini Enterprise で 外部 API 連携エージェント作るなら OAuth の仕組みを理解しておこう
kaz1437
0
180
AI時代のIssue駆動開発のススメ
moongift
PRO
0
160
Bill One 開発エンジニア 紹介資料
sansan33
PRO
5
18k
スピンアウト講座01_GitHub管理
overflowinc
0
1.3k
「コントロールの三分法」で考える「コト」への向き合い方 / phperkaigi2026
blue_goheimochi
0
140
Bref でサービスを運用している話
sgash708
0
190
Featured
See All Featured
Typedesign – Prime Four
hannesfritz
42
3k
My Coaching Mixtape
mlcsv
0
84
Mozcon NYC 2025: Stop Losing SEO Traffic
samtorres
0
180
A designer walks into a library…
pauljervisheath
210
24k
Primal Persuasion: How to Engage the Brain for Learning That Lasts
tmiket
0
300
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
16k
Getting science done with accelerated Python computing platforms
jacobtomlinson
2
150
Fashionably flexible responsive web design (full day workshop)
malarkey
408
66k
Ecommerce SEO: The Keys for Success Now & Beyond - #SERPConf2024
aleyda
1
1.9k
The Invisible Side of Design
smashingmag
302
51k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
17k
So, you think you're a good person
axbom
PRO
2
2k
Transcript
© SmartHR, Inc. メタプログラミングRuby問題集 の活⽤ 2025/11/07 前島 真⼀ 株式会社ウィルネット kinoppyd
株式会社SmartHR
None
kinoppyd - SmartHR のプログラマ - メタプログラミングRuby⼤好き https://kinoppyd.dev/blog @GhostBrain kinoppyd
メタプログラミング Ruby is 名著 of 名著 4
5 🙄 メタプログラミングRubyは名著 これ読まないと死んでしまうな ⽬がバッキバキの⼈
読書会やりましょう - みんなで読むことによって底⼒向上 - でもこれ普通に輪読するのキツそう - 実習形式にすればいいか 6
たくさん買った 7
実習!? 正気か!? めちゃつらいぞ!? 8
つらいっす、でも - 将来JOINした⼈に残せるテキスト - 作問と読書会のまとめを別の⼈が担当 - PublicにすることでRubyに貢献できる 9
将来JOINした⼈に残せるテキスト - ⼊社してくる⼈はRuby初めてかも - 都度勉強会開くのはしんどい - 鍛錬したテキストを残しておこう 10
作問と読書会のまとめを別の⼈が担当 - 参加者にもグラデーションがある - すでに詳しい⼈には僕と⼀緒に作問を - 未読の参加者はその回のテキストまとめを 11
PublicにすることでRubyに貢献できる - 技術顧問のレビューも通ったしいける - 社外の⽬に触れてより鍛錬される - Rubyを使う会社全体で底⼒あげてこ 12
どういう実習をしましたか?
まずレベル分け - 修⾏僧(初学者) - ヌンチャク使い(中級者) - マスター⽼師(メタプロ⼤好き) 14
章を要約して全員の前で講義してもらいます - 初学者が要約 - 中級者がレビュー - テキストは⾮公開(著作権に触れる) 15
⽤意したtestをパスしてもらいます - メタプロ⼤好きなできる⼈が作問 - 講義の後に解いてもらう - 問題は公開 16
17 実際の出題 # Q1. # Hogeクラスは次の仕様を持つ # "hoge" という⽂字列の定数Hogeを持つ #
"hoge" という⽂字列を返すhogehogeメソッドを持つ # HogeクラスのスーパークラスはStringである # ⾃⾝が"hoge"という⽂字列である時(HogeクラスはStringがスーパークラスなの で、当然⾃⾝は⽂字列である)、trueを返すhoge?メソッドが定義されている class Hoge end https://github.com/kinoppyd/reading-metaprogramming-ruby/blob/master/02_object_model/01_hoge.rb
テストをActionsでグリーンに もう残っていませんが、当時 はCIのBadgeをREADMEに 貼って、全員グリーンを⽬指 しました 18
19 https://tech.smarthr.jp/entry/2020/03/13/123745
そして何が残りましたか?
鍛錬された問題集! 21 https://github.com/kinoppyd/reading-met aprogramming-ruby Star me !
あなたも明⽇から メタプログラミング Ruby読書会が始め られます! 22
バトンタッチ! 23
Shinichi Maeshima https://blog.willnet.in Willnet Inc. @netwillnet @willnet
技術顧問業をしています
読書会が終わりメタプログラミング問題集が残った • @willnetは複数社の技術顧問をしている • 他社でもこの問題集を使ってメタプログラ ミングを教えようと思った 26
3社で試した • 進め⽅は次のようにした • メタプログラミングRuby第2版を読む • 要約パートはなし • 問題を解く •
コロナ禍以降での開催だったので基本フルリモートで実 施 27
実施⾵景1 28
SmartHR読書会から⼤きく変えた点 • GitHub上でコード差分を眺めつつ@willnetによる解説をつけ た • SmartHR社内の読書会では時間の問題もありとにかく解く のがメインになっていた • 正答は必ずしも1つとは限らない •
他の⼈が書いた別解を⾒ることで勉強になる • @willnetの解答も合わせて解説した 29
会社の状況に合わせてやり⽅を変えてすすめた • 基本的に週1実施 • モチベーションの⾼い参加者が集まっているか、みんな業務で忙しいかなどで 細かい内容を調整した • 予習ありで30分で終える • 先に本を読んで感想を話す
• 先に問題を解いて参加者の解答例を⾒ながら解説をする • 予習無しで1時間時間を取る • みんなで本を⾳読する • もくもく問題を解く 30
他社での読書会を重ねるごとに問題が洗練されていく • 実際に問題をすすめるとtypoや、問題の裏をかくような解法が⾒つかる • GitHub上で公開されているため、気づいた⼈が修正⽤のPRを出せる 31
参加者の感想 • 難しい! • 基礎問題を解かずにいきなり応⽤問題が始まっている • 対応する章に出てこないメソッドを使わないと解けな い問題が時折ある • コードの差分を眺めることや@willnetの解説は好評だっ
たはず 32
対策 • 応⽤問題前に肩慣らしができる基礎問題を追加した • willnet/reading-metaprogramming-ruby-first-steps • 応⽤問題を解くために必要なメソッドの素振りをする 形の問題 • @willnetが解説するときに楽ができるようにその場で
読める解説と回答例もつけた 33
基礎問題例 34
35
実施⾵景2 36
基礎問題を作ってからのメタプロ読書会 • 応⽤問題はやっぱり難しいけど好評 • @willnetのお⼿伝い先に提供するだけであ ればこれで良さそう 37
でもこれでいいのかな? • でもこんな良いコンテンツを⾃分の⽬の届く 範囲だけしか提供できないというのはもった いない • ⾝近に技術顧問がいないひとでも問題に取り 組めるようにしたい 38
None
• READMEに進め⽅を追加 • 基礎問題集をマージ • 解答例と解説の追加
41
⼀定の認知は得たはず? 42
採⽤にも効果があったらしい 43
でももっと⾊んな⼈ に解いてもらいたい … 44
そんなときに現れたruby.wasm 45
ブラウザで問題を解け るようになればもっと メタプロ問題集にチャ レンジする⼈が増えるの では? 46
英語版を作れば世界中 の⼈がメタプロ問題集 にチャレンジするので は? 47
48 https://willnet.github.io/metaprogramming-challenges-in-ruby/
49 英語と⽇本語を切り替え
50 問題の切り替え
51 問題⽂
52 コードを書く
53 テスト実⾏
54 テスト結果
55 解答例と解説の表⽰
56
仕組み • あらかじめ⽤意しているテストコード(minitest)とフォームに⼊⼒し たコードをあわせて都度実⾏する • 実⾏した後の標準出⼒を画⾯に表⽰する • 標準⼊出⼒はデフォルトだとconsole.log()としてコンソール表⽰ されるので、jsで扱えるようにRubyVMを修正する必要があった •
上記以外は素直にruby.wasmを利⽤するだけでいけた 57
実装 • 可能な限りAIエージェント(主にClaude Code)を利⽤してみた 58
AIエージェントでwasm版を作った感想 • GitHub上の問題をそのままwebにするだけでは扱いづらかったのをAIエージェ ントを利⽤して解決した • 例えば1つの問題として6つのコードを要求する問題がある • web上で解きやすいように1つずつにバラした • エージェントに任せたが問題の切れ⽬がわかっていなかったり等指⽰出しが
難しい • バラしたことによりテストの再構成も必要になりエージェントは詰まりがち • 英語化等はすんなりいった 59
今後の展望 • 英語圏での宣伝 60
まとめ • どのような形でメタプログラミングRuby問題集が⽣ま れ、改善されたかを話しました • 問題を作るというのは⼤変だけど本を読むだけよりも知 識として定着しやすい • ⾃分たち以外の⼈にも残せる •
採⽤にも⼀定影響ある模様 61
みなさんも問題作っ てみませんか? 62