19
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Claude Codeで技術面接の壁打ち相手を作ってみませんか

19
Posted at

はじめに

先日、Xで技術面接の質問集を紹介するポストが流れてきました。

「SQLインジェクションが発生する仕組みと対策を説明してください。」
「TypeScriptにおける anyと unknownの違いと、それぞれをどのような場面で使うべきか説明してください。」

眺めてみると、なんとなくは分かるんです。
でも「面接官の前で、自信を持って口頭で説明できるか?」と自問すると、答えられる問題が思ったより少ないことに気づきました。

思い当たる節はありました。
AIが進歩したおかげで、この手の知識はAIが出してくれた説明に「そうだよな」と頷いて確認することが増えています。
分かった気にはなるけれど、自分の記憶に定着しているかは正直怪しい。

そこで、システム開発の基礎的な考え方を定着させるために、Claude Codeのスキルとして技術面接の壁打ちスキルを自作しました。
名前は「engineer-drill」です。ネーミングセンスのなさは自覚しているので、そっとしておいてください笑

この記事では、engineer-drillでできること・使い方・仕組みを紹介します。

ターゲット

対象読者は幅広く想定しています。

  • 基礎を固めたい初学者の人
  • 転職活動中で技術面接の対策をしたい人
  • AIになんとなくの実装を任せてしまっていて、知識の定着に不安がある人

問題バンクは差し替え前提の作りなので、自分の分野に合わせて問題を変更して使ってみてください。

engineer-drill でできること

やることはシンプルで、「出題 → 自分の言葉で回答 → 採点 → 模範解答」のサイクルを回すだけです。

実際のやりとりはこんなイメージです。

AI: 【FE-001】useStateとuseRefの使い分けについて、
    それぞれの特性を踏まえて説明してください。

自分: useStateは値が変わると再レンダリングされて、
      useRefは変えても再レンダリングされない…。
      あとuseRefはDOM要素を参照するときに使います。

AI: 採点: ◯
    カバーできた観点: 再レンダリングの発生有無 / DOM参照用途
    抜けた観点: レンダー間で値が保持されるという共通点

    (抜けた観点を中心に解説が続く)

回答は選択式ではなく、自分の言葉で書きます(口に出しながら書くとより面接っぽくなります)。

そして採点のあとに出てくる模範解答が、このスキルの推しポイントです。
知識の箇条書きではなく、面接官に向かって30〜60秒で話せる「話し言葉」の形で提示されます。

模範解答(例):
「useStateは値の変化をUIに反映したいときに使います。
値を更新すると再レンダリングが走るためです。
一方useRefは、再レンダリングを起こさずにレンダー間で値を保持したいときや、
DOM要素への参照を持ちたいときに使います。
たとえばフォームのinputにフォーカスを当てる処理では…」

技術面接で問われるのは、知識そのものよりも「口頭で筋道立てて説明できるか」です。
知っているのに話せない、を潰せるのがこのスキルの狙いです。

問題バンクは、Markdownで差し替えられる作りです。
そのため、自分の分野に合わせて中身を入れ替えて使ってみてください(差し替え方は後述します)。

Ankiではなくスキルにした理由

最初は、暗記アプリの定番であるAnki(忘却曲線に沿って復習間隔を調整してくれるフラッシュカードアプリ)を使おうと考えていました。

でも、いざ使う場面を想像すると引っかかりました。
カードをめくって「思い出せた / 思い出せなかった」を記録するだけでは、理解を深めたいときに物足りないんです。

私が欲しかったのは次の2つでした。

  • 自分の言葉で回答して、それを採点してほしい
  • 腑に落ちないところは、その場でAIと壁打ちして納得してから次に進みたい

「◯◯の場合はどうなるんですか?」と聞き返せる相手がいる勉強と、一方通行のカードめくりでは、定着のしかたが違います。
この2つを満たせるのはClaude Codeのスキルでした。
そこで、Ankiの良いところ(忘却曲線ベースの復習)だけを設計に取り込んで、スキルとして作ることにしました。

使い方

インストール

npxでインストールできます。

npx skills add takuya-38/claude-skills --skill engineer-drill

リポジトリはこちらです。

スキルをnpxで共有する仕組み自体は、以前の記事で紹介しています。

初回セットアップ

初回だけ、2つの質問に答えます。

  1. 使っている言語・フレームワークと経験年数(例: Next.js/React + RailsAPI、実務2年)
  2. わからなかったときの扱い(すぐ解説してほしい / ヒントをもらって粘りたい)

回答は profile.md に保存され、以降の解説の深さや粘り方が自分に合わせて固定されます。
毎回自分の前提を説明し直さなくていいのは、スキル化ならではのメリットです。

出題モード

目的に応じて4つのモードを選べます。

モード 使いどころ
ランダム 全分野からまんべんなく。日々の素振りに
分野選択 フロントエンドだけ、と集中して固めたいとき
復習 ✕や△だった問題を優先して出し直してもらう
模擬面接 4分野から1問ずつ、途中の解説なしで通し。本番前の腕試しに

モードを選んだら、あとは1問ずつ「出題 → 回答 → 採点・解説・模範解答」を繰り返すだけです。
n と打てば次の問題に進みます。
納得いかないところがあれば、次に進まずそのまま壁打ちに付き合ってもらえます。

記録が積み上がる仕組み

このスキルは「人は忘れる」という前提で設計しています。
1回解いて終わりではなく、記録を積み上げて何周も回すことで定着させます。

弱点分布が可視化される

採点結果は問題ごとに records/history.md へ記録されます。

records/history.md
| 問題ID | 最新評価 | 最終出題日 | 回数 | メモ |
|--------|----------|------------|------|------|
| FE-001 | △ | 2026-07-11 | 1 | 再レンダリングの説明は正確。DOM参照用途に言及なし |

メモには「前回どこで詰まったか」が残るので、次に同じ問題が出たとき、AIはそこを重点的に見てくれます。
毎回ゼロから壁打ちするのとの一番の違いはここです。
続けるほど、自分の弱点がどの分野に偏っているかも見えてきます。

忘れた頃に再出題される

採点は◎◯△✕の4段階で、評価が低い問題ほど早く復習候補に浮上します。
✕なら3日後、△なら7日後、◯なら14日後、◎なら30日後です。

エビングハウスの忘却曲線を意識した間隔で、「もう忘れたかな」というタイミングを狙って再出題してくれます。
このあたりは、Ankiから拝借した考え方です。

採点は最初の回答だけで確定する

地味なこだわりとして、ヒントをもらって正解にたどり着いても、採点は最初の回答のみで行います。
ヒント後に答えられた事実はメモに残りますが、評価には反映しません。

甘く採点してしまうと、記録が実力を反映しなくなり、復習すべき問題が復習候補から消えてしまうためです。

記録はすべてmdファイルに保存されるので、Claude Codeのセッションを /clear しても失われません。
もう一度「クイズ出して」と言えば続きから再開できます。

自分好みに育てる

問題バンクは questions/ ディレクトリ配下のmdファイルで、1問あたり数行のフォーマットです。

questions/frontend.md
### FE-001: useStateとuseRefの使い分け
- 問題: useStateとuseRefの使い分けについて、それぞれの特性を踏まえて説明してください。
- タグ: react, hooks
- 難易度: ★☆☆
- 評価観点: 再レンダリングの発生有無 / レンダー間の値の保持 / DOM参照用途

評価観点は、AIが採点するときの基準になる論点です。
これを問題ごとに書いておくことで、採点がその日の気分でブレなくなります。

このフォーマットさえ守れば、問題の追加も分野の差し替えも自由です。

  • Xで見かけた面接質問を、その日のうちに1問追加する
  • RailsやGoなど、自分のスタックの分野ファイルを作る
  • 資格試験の頻出論点を口頭で説明する練習に使う

私自身、このスキルはまだ作ってブラッシュアップしている最中です。
完成品を配るというより、お裾分けに近い感覚なので、ぜひ自分好みのスキルに育ててみてください。

最後に

AIの答えに頷くだけの毎日から、「自分の言葉で説明してみたら、思ったより話せなかった」に気づけたのが、このスキルを作って一番良かったことです。
話せなかった悔しさは、カードをめくって「覚えてなかった」と確認するより、ずっと記憶に残ります。

問題バンクはこれからも育てていく予定です。
「こんな問題を入れたら良かった」「こう改造して使っている」という知見があれば、ぜひコメントで教えてください。

株式会社シンシア

株式会社シンシアでは、実務未経験のエンジニアの方や学生エンジニアインターンを採用し一緒に働いています。
※ シンシアにおける働き方の様子はこちら

弊社には年間100人以上の実務未経験の方に応募いただき、技術面接を実施しております。
この記事が少しでも学びになったという方は、ぜひ wantedly のストーリーもご覧いただけるととても嬉しいです!

19
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
19
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?