こんにちは。SmartHRでRails顧問業をしているwillnetです。健康のために家の周りをジョギングしているのですが、この時期にそれをすると命の危険があるのでチョコザップに通い始めました。冷房って素晴らしいですね。
さて今回はメタプログラミング問題集の話です。この問題集はSmartHR社内で開催されたメタプログラミングRuby 第2版読書会で生まれたもので、読書会後に誰でもこの問題を通じてメタプログラミングを学べるように改良が加えられました。詳しい経緯については過去のエントリにまとまっています。
- SmartHRでのメタプログラミングRuby読書会と、その成果物 - SmartHR Tech Blog
- Rubyのメタプログラミング問題集をブラッシュアップした話 - SmartHR Tech Blog
改良後にどれくらいの人がこの問題にチャレンジしたのか正確な数字はわかりませんが「やってみた」という声を数件見聞きしたので改良した価値はあったかと思います。
しかしより多くの人にこの問題集を届けたいという気持ちから、新しく2つの要素を問題集に追加しました。
ブラウザで問題を解けるようにした
これまではkinoppyd/reading-metaprogramming-rubyをgit cloneしてbundle installして、といったようにローカルでテストを実行するための環境を用意する必要がありました。Ruby処理系やエディタなどが手元に揃っていれば問題ないですが、そうでない環境だとセットアップが少し面倒に感じてしまう人がいるかもしれません。
ところで最近ではruby.wasmを使ってブラウザ上でRubyを動かすことが容易にできるようになりました。ということはブラウザ上でメタプログラミング問題集を解くこともできるわけです。そこでエイヤと作ってみました。成果物はこれです。
Metaprogramming Challenges in Ruby

8割がたvibe codingで作りました。ブラウザで問題を解きやすくするために1つのファイルにある複数の問題を分割して一つずつ解けるようにしたり、回答例と解説をボタン一つで閲覧できるようにするなど工夫しています。
英語化した
上記スクリーンショットを見た方はお気づきだと思いますが、ブラウザ化するにあたって英語版と日本語版の二種類を用意しました。翻訳もLLMに任せています。
これで日本以外のRubyistにもメタプログラミング問題集に取り組んでもらえるはずです。課題はどうやって英語圏のRuby界隈にこのサイトを知ってもらうかですが、それはこれから考えます*1。
今後の予定
ひとまずキリの良いところまでできたのですが、機能的にはもう少し拡張の余地があります。例えばコードを入力するところはただのtextareaなので、シンタックスハイライトがあると便利です。また、書いたコードをGistなどにアップロードできると解答を中断しやすいし、完成したコードを他の人と共有することができて楽しめそうです。
willnet/metaprogramming-challenges-in-rubyで開発しているので、もしブラウザ版メタプログラミング問題集の改善に興味があったらPRを送ってもらえると嬉しいです。
We Are Hiring!
SmartHR では一緒に SmartHR を作りあげていく仲間を募集中です!
メタプログラミングに興味のある人もない人もお待ちしています。少しでも興味を持っていただけたら、カジュアル面談でざっくばらんにお話ししましょう!
*1:なにかいいアイデアあったら教えてください><