新卒エンジニアに「本番で止まる勘所」を鍛える無料クイズを作った話 — エンジニア瞬発力テストの開発記録

新卒エンジニアに「本番で止まる勘所」を鍛える無料クイズを作った話 — エンジニア瞬発力テストの開発記録
目次

注意事項

  • 本記事で紹介するサイトの問題は、生成 AI の支援を受けて作成し、レビューと機械的な検証を経て掲載しています
  • 問題の内容は一般論と作成時点の情報に基づく一例で、実務での対応や結果を保証するものではありません
  • 実際の業務では、所属組織の規程と最新の公式ドキュメントを優先してください
  • AI の出力結果は常に検証が必要です

はじめに

新卒・若手エンジニア向けの無料クイズサイト「エンジニア瞬発力テスト」を公開しました。

SQL や Linux、Git、クラウドの基礎を、1 問 10 秒前後のテンポで解いていくサイトです。中心に置いているのは「危険察知」という問題群で、本番作業の手順書・コマンド・SQL を見て、実行する前に止めるべき 1 行を見抜けるかを問います。

本記事では、このサイトを作った経緯と、作るうえで考えたこと、生成 AI で作った問題の正しさをどう確かめているかをまとめます。

サイト: https://engineer.keydrop.net/(登録不要・無料。採点はブラウザの中で行います)


作った経緯 — 知識はあるのに、止まれない

エンジニアとして 18 年、サービスの立ち上げや、大規模案件の PM、超短期の案件などに関わってきました。PM・PG・SE の立場から相談を受けることも多いのですが、新人がつまずく場面には共通点があります。

  • WHERE を付け忘れた UPDATE を、本番の DB でそのまま実行してしまう
  • 変数が空のまま rm -rf "$DIR"/* が走る
  • 接続先が本番なのか検証なのかを確かめずに作業を始める
  • 「確認しました」「了解です」が、何を確認したのか分からないまま進む

どれも、知識としては知っていることです。研修でも教わりますし、聞けば「危ないですよね」と答えられます。それでも事故が起きるのは、手を動かしている最中に「ここで止まる」という反射が出ないからだと考えています。

ベテランは、手順書を読んだ瞬間に「この行は危ない」と引っかかります。これは知識量というより、見た瞬間に違和感を覚える回数を積んできた結果です。そこで、その「引っかかる回数」を、本番で事故を起こす前に安全な場所で積めるようにしたい、というのが出発点でした。


鍛えたいのは「瞬発力」

サイト名に「瞬発力」と付けたのは、速さも採点に入れているからです。得点は「難易度の基礎点 × 速さの係数」で決まり、正確に速く答えるほど高くなります。

速さを測るのは、急がせたいからではありません。本番作業の現場では、手順書の 1 行を何十秒もかけて読み込む余裕はありません。読んだ瞬間に違和感に気づけるかを鍛えるには、制限時間があるほうが向いていると考えました。

扱っているジャンルは、公開時点で 16 ジャンル・約 720 問です。

分類ジャンル
中心危険察知、AI の出力チェック
技術の基礎SQL、Linux・シェル、Git、HTTP・Web、ネットワーク、Docker
クラウドAWS、Google Cloud、Azure
仕事の進め方実務シチュエーション、伝達ミス・認識ズレ、指摘・レビュー、セキュリティ、エンジニア英語

「AI の出力チェック」は、AI が書いた SQL やコマンドをそのまま使ってよいかを見抜く問題です。実在しないパッケージやオプションを提案される、WHERE の条件に頼んでいない OR が足される、テストを通すために skip を付ける、といった場面を扱います。AI を使うのが当たり前になった今、新人に一番必要な「止まる力」の 1 つだと考えています。


設計で決めたこと

出題形式は 3 つだけ

最初は、挿入位置を選ぶ・並べ替える・対応付けるなど、10 種類の形式を用意していました。実際に解いてみると、「この問題はどう操作するのか」を読み取るのに時間を取られることが分かり、4 択・○×・記述式の 3 つに絞りました。

鍛えたいのは問題の中身を読む力で、操作方法を読み解く力ではありません。形式を増やすほど、測りたいものから離れていきます。

問題を解いている画面には、余計なものを出さない

出題中は、問題と選択肢と進み具合だけを出します。難易度・目安時間・得点・操作説明も出しません。広告も、問題を表示している画面には置かず、数問ごとの休憩画面と結果画面だけにしています。

また、正解でも不正解でも自動では次に進みません。当てずっぽうで正解した人にも解説を読んでほしいからです。解説を読んでいる時間は得点に数えません。

正答は「一般論」に限る

レビューや報告の仕方を問う問題は、現場によって作法が違います。そこで、特定の会社のやり方ではなく、どの現場でも通る考え方だけを正答にする、という決まりを作りました。期限は日付・時刻・タイムゾーンで確定させる、本番の変更は事前に件数を確かめる、決める権限のある人に確認して記録に残す、などです。

クラウドは「調べる順番」を問う

AWS・Google Cloud・Azure では、知識を問う問題に加えて、「CloudFront 経由でサイトが 403 になる。どの順で調べるか」のように疑う順番を問う問題を入れました。

状況: 本番ドメインで / も /index.html も 403。本文は S3 の AccessDenied の XML。
      バケットポリシーは検証用のものをそのまま使っている。
 A Route 53 のレコード
 B S3 のブロックパブリックアクセスを外して試す
 C バケットポリシーの AWS:SourceArn が本番の配信 ID か
 D 本番ディストリビューションに OAC が付いているか
→ 正答: C → D → A → B

エラー本文が S3 から返っているなら、DNS も CloudFront も通っています。そういう手がかりから層を絞る考え方こそ、ベテランが無意識にやっていることなので、順番が手がかりから一意に決まるように作っています。


生成 AI で作った問題を、どう確かめているか

問題と解説は、生成 AI(Claude)の支援を受けて作りました。ただ、AI が作った問題をそのまま載せると、もっともらしい誤りが混ざります。そこで、次のように何重にも確かめています。

  1. 作る担当とは別の AI にレビューさせる:正答が本当に正しく一意か、誤答が「状況次第で正しい」になっていないか、公式ドキュメントと食い違っていないかを見させます
  2. 実行して確かめる:SQL の問題は、正答の SQL を SQLite で実際に実行し、期待する結果と一致するものだけを載せています。シェルの問題も、実行できるものは実行します
  3. 構造を検査する:正答が選択肢の範囲にあるか、解説が十分な長さか、参考 URL が公式ドキュメントか、などをビルドのたびに検査し、不備があれば公開できないようにしています
  4. 作問の偏りを検査する:受験者が「一番長い選択肢を選ぶ」「とりあえず × を選ぶ」だけで当てられないよう、偏りもテストで検出しています

4 つ目は作ってから気づいたことです。英語の問題で、正答の選択肢が最も長い問題が 94% もありました。偶然なら 25% 前後のはずです。AI に作らせると、正答だけ丁寧に説明し、誤答は短く済ませる傾向があるようです。誤答を具体的に書き直して 19% まで下げ、再発を防ぐテストを入れました。○× でも、ジャンルによって答えが × に大きく偏っていました。


回答のデータで、問題を直していく

解いた問題の番号、正誤、選んだ選択肢、所要時間を、匿名の統計として集めています(記述式は SQL・コマンド・英単語だけで、日本語の自由記述はありません)。これを毎週集計し、見直したほうがよい問題を自動で洗い出します。

  • 識別力が低い問題:実力と関係なく当たり外れが出ている
  • 実力のある人ほど選ぶ誤答:問題文があいまいか、その誤答も正しい可能性がある
  • ほとんど誰にも選ばれない誤答:誤答として機能していない

結果画面で、任意でエンジニア歴を答えてもらう仕組みも入れました。ベテランほど間違える問題があれば、それは特定の現場の作法を正解にしてしまっている疑いがあります。経験年数で正答率に差がつく問題こそ、このサイトで鍛えたい「勘所」を測れている問題だと考えています。


研修でも使えるように

新卒研修や勉強会で使えるよう、問題を選んで URL で配れる「研修で使う」機能を付けています。サーバーには何も保存せず、URL 自体が問題セットになります。間違えた問題を 1 日後・3 日後・7 日後・14 日後に出し直す弱点復習もあります。


おわりに

本番で事故を起こした新人を責めても、次の新人がまた同じ事故を起こします。必要なのは、事故を起こす前に「ここで止まる」経験を積める場所だと考えています。

問題の誤りや「この場面も入れてほしい」という要望があれば、サイトの運営者情報の連絡先からお知らせください。

エンジニア瞬発力テスト: https://engineer.keydrop.net/