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
0
110
メタプログラミング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
3.5k
What's a well-behaved Rails extension gem?
willnet
0
550
Sidekiq vs Solid Queue
willnet
14
13k
どうしてこうなった?から理解するActive Recordの関連の裏側
willnet
6
1.5k
Exceptional Rails
willnet
6
7.8k
Breaking the Flaky Test Cycle
willnet
2
2.2k
mrskで広がるインフラの選択肢
willnet
1
1.1k
アプリケーションを長期にわたって無理なく運用するためのたったひとつの方法
willnet
2
2.2k
HotwireからDHHが考えるこれからのRailsとJSの付き合い方を知る
willnet
14
14k
Other Decks in Technology
See All in Technology
[Journal club] Thinking in Space: How Multimodal Large Language Models See, Remember, and Recall Spaces
keio_smilab
PRO
0
120
次世代のメールプロトコルの斜め読み
hirachan
3
390
AWS re:Invent 2025事前勉強会資料 / AWS re:Invent 2025 pre study meetup
kinunori
0
1.1k
[AWS 秋のオブザーバビリティ祭り 2025 〜最新アップデートと生成 AI × オブザーバビリティ〜] Amazon Bedrock AgentCore で実現!お手軽 AI エージェントオブザーバビリティ
0nihajim
2
360
ピープルウエア x スタートアップ
operando
2
3.4k
GPUをつかってベクトル検索を扱う手法のお話し~NVIDIA cuVSとCAGRA~
fshuhe
0
380
データエンジニアとして生存するために 〜界隈を盛り上げる「お祭り」が必要な理由〜 / data_summit_findy_Session_1
sansan_randd
1
970
CLIPでマルチモーダル画像検索 →とても良い
wm3
2
800
DSPy入門
tomehirata
6
900
Databricks Free Editionで始めるMLflow
taka_aki
0
790
[re:Inent2025事前勉強会(有志で開催)] re:Inventで見つけた人生をちょっと変えるコツ
sh_fk2
2
1.3k
20251029_Cursor Meetup Tokyo #02_MK_「あなたのAI、私のシェル」 - プロンプトインジェクションによるエージェントのハイジャック
mk0721
PRO
6
2.4k
Featured
See All Featured
Stop Working from a Prison Cell
hatefulcrawdad
272
21k
The Cost Of JavaScript in 2023
addyosmani
55
9.1k
VelocityConf: Rendering Performance Case Studies
addyosmani
333
24k
What's in a price? How to price your products and services
michaelherold
246
12k
Writing Fast Ruby
sferik
630
62k
Art, The Web, and Tiny UX
lynnandtonic
303
21k
The Pragmatic Product Professional
lauravandoore
36
7k
RailsConf 2023
tenderlove
30
1.3k
Site-Speed That Sticks
csswizardry
13
940
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
55
3.1k
It's Worth the Effort
3n
187
28k
Raft: Consensus for Rubyists
vanstee
140
7.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