
こんにちは!SmartHR広報のokieです。
2025年9月26日〜27日に開催されるKaigi on Rails 2025に向けて、SmartHRで「第1回 SmartHR早押しクイズバトル」を開催しました!本日は、その模様をお届けします。
===========
「SmartHR早押しクイズバトル」とは
Kaigi on RailsにてSmartHRはブース出展を行います。その際、ご来場のみなさまとの交流を深めることを目的に「SmartHR早押しクイズバトル」を実施します。
今回は当日のクイズバトルに向け、運営のリハーサルをかねたクイズバトルを実施。問題の調整や早押しボタン(プロトタイプ)のお披露目を行いました!
挑戦者の紹介&意気込み
クイズバトルに参加したのはSmartHRエンジニアの4名。
今回のクイズバトルの発案者であり作問・工作担当のkinoppydさん(写真左)が今日のクイズバトルの司会を務めます。

クイズバトルの挑戦者は3名。それぞれ自己紹介と意気込みを語っていただきました。
hypermkt:みなさんどうもこんにちは、hypermktです。普段はSmartHR本体機能でモジュラーモノリス化を進めています。Kaigi on Railsでは2日目に登壇予定で、履歴をテーマに発表します。よろしくお願いします!
kaigionrails.org

yuriko:課金基盤チームで開発しているyurikoです。早押しクイズをずっとやってみたかったので、楽しみで夜も眠れませんでした!今回のKaigi on Railsでは、事後勉強会の運営もやっています。10月10日(金)にSmartHR Spaceにて開催します。ぜひご参加くださいね!今日は優勝するぞ〜!
smarthr.connpass.com

nomison:プロダクトエンジニアのnomusonです。普段は、人事評価のプロダクトを担当しています。Kaigi on Railsは去年に続き2回目の参加です。クイズ大会、賞金目指して頑張ります!!

kinoppyd:!?
賞金が出る!?とざわつく運営とkinoppydさん。
ルール説明
賞金はいったんさておき、ルール説明に移ります。
kinoppyd:今回の早押しクイズバトルは、いわゆる「3マル2バツ」という回答ルールで行います。出題される問題を先に3問正解すると勝利となりますが、2問間違えると失格となります。
早押し形式で、ボタンが点灯した人に回答権があります。全員誤答、もしくは問題がスルーされた場合に、もう一度読み上げても回答者がいなければ5秒カウントし、次の問題に移ります。今日は全部で15問用意していますが、様子を見ながらやっていきましょう!
hypermkt:手元にあるこのボタンは?

kinoppyd:PicoRubyで制御された早押しボタンです。私が作りました。Rubyで動いています。一番先に押した方のボタンが光り、音がなります。

一同:おお〜!
kinoppyd:本番はもう少しアップデートしたものができる予定です。
nomusonさん:どんな問題が出題されますか?
kinoppyd:Railsに関する問題、Rubyに関する問題、またはSmartHRについての問題が出題されます。
yuriko:今回優勝したら賞金はありますか?
kinoppyd:賞金……?そうですね、優勝したら……SmartHR王の称号を……。
yuriko:賞金はないのか……!
ちょっと残念そうな一同。
※賞金はスルーされてしまいましたが、Kaigi on Rails当日は、勝者に「SmartHRの増えてくアクキー」をお渡しします!!

約20種類からお好きな柄を選べます。すでに集めてくださっている方は、ぜひお手持ちのアクキーをお持ちくださいね。アクキーの詳細はテックブログの紹介記事もご覧ください!
バトル開始!
それでは早速、第1ラウンドのバトル開始です。
一同:よし、やるぞ〜!

問題:rails newコマンドを実行するとき、何もオプションを付けない場合にデフォルトで選択されるアセットパイプラインライブラリは?
yuriko:……PropShaft?
(ピンポンピンポン!)
一同:おおお〜!
さすが、眠れないほど楽しみにしてくれていたyurikoさん。気合が入っています。次の問題へ。
問題:Rails 8.0がサポートする最も古いRubyのバージョンは?

hypermkt:うっ、それ……(悩む)。
yuriko:3.0!
(ブー!)
nomusonさん:3.3!
(ブー!)
hypermkt:3.2!
kinoppyd:惜しい、もう一度だけ回答していいです!
hypermkt:3.2.0!
(ピンポンピンポン!)
hypermktさん、見事正解!
SmartHRクイズバトルでは、非常に惜しい場合は出題者の裁量でもう一度回答OKとします。現在、yurikoさんとhypermktさんは1問正解、yurukoさんとnomusonさんは1問間違いです。
yuriko:私達はもう間違えられないということですね。
nomuson:わーそうだ!
yurukoさんとnomusonさんはあと1回で失格。間違えられないという緊張が走ります。
問題:SmartHRのサービスが開始された年は、今年から何年前?
yuriko:10年前!
(ピンポンピンポン!)
kinoppyd:正解!2015年11月ですね。
yurikoさん、優勝までリーチ!しかし、失格までもリーチです。どきどきしながら次の問題へ。
問題:Railsが採用しているオートコードローダーの名前は何?

yuriko:Zeitwerk!
(ピンポンピンポン!)
kinoppyd:お見事!正解!!!
第1ラウンド、最初の優勝者はyurikoさんです!!!!

yuriko:最近Railsガイドを読み込んでいるので、そこからの出題もあり良かったです!
しっかり予習していて素晴らしいですね。
第2ラウンド
問題はまだまだあるので、それぞれの反省や感想を踏まえ、第2ラウンドへ。
問題:rails newコマンドをオプション無しで実行したとき、appディレクトリの下に作成されるディレクトリを昇順で並べると、先頭に来るのはassetsですが、末尾に来るものは何?
hypermkt:locales?
(ブー!)

hypermkt:違うか!
yuriko:workers?
(ブー!)
kinoppyd:もう一度読みます。
rails newコマンドをオプション無しで実行したとき、appディレクトリの下に作成されるディレクトリを昇順で並べると、先頭に来るのはassetsですが、末尾に来るものは何?
nomusonさん:views!

(ピンポンピンポン!)
hypermkt&yuriko:ああ〜〜そうだ〜〜!
hypermkt:良問感がある。
yuriko:耳で聞くと頭が混乱しますね。
kinoppyd:作問時に想定していた引っ掛かりポイントじゃなく、思っていないところで引っかかるという発見がありますね。
感動している一同。非エンジニアの運営は、みなさんが何を言っているかほぼわからないのですが、問題が良問として成立していることにとても感動しています。
hypermktさんとyurikoさんは失格までリーチとなりました。次の問題へ。
問題:Arrayにはfirstメソッドがありますが、ActiveSupportの拡張によってfirst以降も追加されています。それでは、追加されているメソッドのうち最大の数字を示すメソッド名は?
yuriko:42(よんじゅうに)。
kinoppyd:おお、惜しいのでもう一回!
yuriko:48(よんじゅうはち)?
(ブー!)
yuriko:ああ〜失格だ〜!

kinoppyd:もう一回読みます。
Arrayにはfirstメソッドがありますが、アクティブサポートの拡張によってfirst以降も追加されています。それでは、追加されているメソッドのうち最大の数字を示すメソッド名は?
yuriko:あっ!
なにかに気づくyurikoさん。
kinoppyd:(カウント)5、4、3、2、1。正解は「forty_two(42)」です。
yuriko:ああ……焦りましたね。

kinoppyd:Googleの検索窓で「人生、宇宙、すべての答え」と入力すると「42」と表示されることからも広く知られていますね。銀河ヒッチハイクガイドの一節です。では次の問題。
問題:複数のモデルを単一のデータベーステーブルに格納することができる、Railsのパターンはなんという名前?
hypermkt:STI!
(ピンポンピンポン!)
kinoppyd:正解!早い!現在、hypermktさん、nomusonさんが1問ずつ正解、yurikoさんが失格ですね。
yuriko:悔しいです。
問題:Hotwireを構成するコンポーネントはTurbo、Stimulusとなに?
hypermkt&nomuson:……。
時間切れにて回答ならず。
kinoppyd:正解は、「Native」です。TurboNativeとStradaが統合されて、最近Nativeになりました。次の問題へいきますね。
問題:Railsサーバーを起動するとき、特定のIPをバインドするために使うオプションは何?
hypermkt:– b(ハイフンb)。
(ピンポンピンポン!)
hypermkt:よし!!!!!!
hypermktさん、ここまでで2問正解。優勝リーチです。
問題:今日の9時20分時点において、SmartHR最大の人事システムリポジトリのCode of Test ratioはいくつか?
一同:??????
kinoppyd:コードに対してテストがどれくらいあるかってことですね。
一同:???????????????

hypermkt:これ、わかるか???
kinoppyd:実はこれ、答えられたら怖い問題です。正解は「1:1.6」です
一同:むずい!!!
問題:あるモデルを更新する際に、関連するモデルの更新日時も同時にアップデートしたいとき、ActiveRecordの関連付けに渡すオプション名は何?
hypermkt&nomuson:……。
yuriko:(そわそわ)
ここで時間切れ。正解は……。
kinoppyd:「touch」です。
yuriko:ですよね!
正解がわかっていたのに、さきほど失格となったため回答権がなく悔しがるyurikoさん。
問題:SmartHRのエンジニア、今何人所属している?
一同:ううう〜ん。
hypermkt:これは、勘で答えたら失格してしまうな……!
nomuson:う〜ん…168人!
(ブー!)
hypermkt:148人?
(ブー!)
hypermkt:失格になってしまった!
kinoppyd:正解は、183人でした!(8月1日時点)
一同:そんなにいるんだ!
二人が失格になったので、nomusonさんが優勝です!粘り勝ち!

第2ラウンド終了後、問題に対してフィードバック。
yuriko:難問と、2バツ失格は相性が悪いかもですね。
hypermkt:戦略的に、難しすぎる問題はあえてスルーしちゃうかも。
nomuson:2バツ自体はスリルがあっていいので残して良さそう。
kinoppyd:確かに。2バツルールは残しつつ、難しい問題は減らしていきましょう。
本番でも、「こんなのわかるか〜!!!」という問題は減らしていきます。ご安心を!
おまけ
kinoppyd:問題数は残り3問となりましたが、せっかくなので最後までやっていきましょう!
問題:Rails 8で、標準で使われるテストランナーはなに?
yuriko:minitest!
(ピンポンピンポン!)
yurikoさん、純粋に強い。
問題:ActionControllerのStrongParametersによって阻止される、リクエストパラメータに本来想定されていない値を渡すことによって意図しないデータ書き換えを引き起こす脆弱性をなんというか?
一同:……。

nomuson:なんだっけな…….。
yuriko:なんだっけ……。
カウントが始まります。
kinoppyd:時間切れ!正解は、「マスアサインメント」です。
yuriko:あ〜〜〜ちょっと浮かんでたな。
問題:multiple、 ordinal、yearsは何のクラスに対するActiveSupportの拡張メソッド?
nomuson:パス(Path)……?
(ブー!)
yuriko:Integer……!
(ピンポンピンポン!)
kinoppyd:正解です!yearsがヒントになりますね。ここで問題は終わりです。お疲れ様でした!

ここまでで用意した問題は終了となりましたが、ちょっと物足りないと感じた運営が慌てていくつか問題を作り、お試し出題してみました。休憩も兼ね、リラックスして回答してもらっています。
問題:Railsの1.0がリリースされたのは西暦何年?
nomuson:勘になっちゃうな。
一同:う〜ん……。
運営:正解は、2005年です!
kinoppyd:ちなみにこの問題、本番でも類題が出る予定です。
問題:Railsの作者、DHHを略さずに言うと?
一同:真ん中が怪しいな……。
yuriko:恐れずに回答してみます!デイビット=ハイネハイム=ハンソン?

運営:惜しい!ハイネマイア=ハンソンです。
hypermkt:いい問題ですね〜!
kinoppyd:これは良問ですね。本番でも使おう。
kinoppyd:これで問題は本当に以上です。今年のSmartHRブースでは、このようなクイズバトルを行う予定です。本番もサクサク進んでいく形になるので、ぜひ皆さんクイズにチャレンジしにブースへお越しください!
感想
最後に、今回のクイズバトル挑戦の感想をお聞きしました。

hypermkt:普段のRailsの知識を問われる内容で勉強になったし、楽しかったです!登壇も頑張ります。
yuriko:コツは、失格を恐れず攻めることです!皆さんも是非、攻めてください!
nomuson:とても勉強になりました!僕もRailsガイドを読み込み、Kaigi on Rails当日はもっと正解できるよう頑張ります!
kinoppyd:問題もRailsガイドを見ながら作っています。Railsガイドは普通に読んでいても有用なので、みんなで読んでほしいですね。yurikoさんは最近読んでると聞いていたのですが、やはり強かった。
会場でお会いしましょう!
今回のリハーサルを踏まえ、本番では問題も、回答ボタンも更にブラッシュアップする予定です。もしかしたらこの記事の問題がヒントになるかもしれません。
会場で皆様とお会いできることを楽しみにしています!ここまでお読みいただきありがとうございました!

元の記事を確認する