自作の聞き方クイズを自分で解いて2問落とした。誤答解説と分野別出題を足すまで

開発mdx-playground

自作の聞き方クイズを自分で解いて2問落とした。誤答解説と分野別出題を足すまで

前の日に、聞き方についての本を元にした場面判定式のクイズをスキルとして作ってあった。 全31項目、1項目につき1問。 「こういう場面で、聞き手として最も適切な振る舞いはどれか」を4択で答える。

朝いちばんに、自分でそれを受けた。 初回は先頭の6問が出る。

4問正解、2問誤答。

落としたのは、聞き手が自分の話をどこまでしていいかを扱う項目と、愚痴の受け止め方を扱う項目だった。 どちらも「聞き手は何をする側なのか」の線引きに関わる。 人に共感する力が高いほうではない自覚があるので、順当な結果だと思った。

選択肢を外したあとに、何も残らない

解いてみて見えたのは、自分の作った出題のほうの穴だった。

選択肢は4つある。 外した3つが、それぞれなぜダメなのかはどこにも書かれていない。 解説は1問につき1つで、正解しても誤答しても同じ文が出る。 中身は「なぜ正解が正しいか」だけだった。 設問によっては解説文の中でたまたま他の選択肢に触れているが、そうなっていない問のほうが多い。

誤答したときに一番知りたいのは、自分が選んだものがなぜ違うのかだ。 そこが空白だと、正解を読んでも「へえ」で終わる。

置き場所を変えた

最初は、別プロジェクトで動いている問題集の仕組みに載せるつもりだった。 既存の実装パターンを調べさせ、31項目の全体像を図にして、計画書と3択の決裁フォームまで立てた。

そこまで作ってから、置き場所を変えた。 あの問題集に並べる種類の中身ではない、と判断した。

代わりに、CSSもJavaScriptも同じファイルに入れた単一HTMLを作らせた。 31問すべて入っていて、そのまま友人に渡せる。 計画書は消さずに残した。 中止の経緯まで書いてあれば、検討した記録として使えるからだ。

その後、設問ごとの状況を画像にして、サイトの1ページとして公開した。 検索には出さない設定にしてある。 ここまでが、朝のうちの話だ。

誤答解説をサブエージェントに書かせる

自炊してDBに入れてある本文を確認させたら、31項目が1項目1チャンクで、各3,000字から3,700字入っていた。 1問につき対応する本文をまるごと渡せる分量である。 それなら、選択肢4つぶんの解説を本文だけから書かせられる。

サブエージェントに項目を割り振って、何度かに分けて並列で走らせた。 渡す条件は1つだけ決めた。 本文全文を読んでから書くこと。 要約や記憶で書かせると、もっともらしい一般論が混ざる。

上がってきた原稿は、自分で抜き取って読んだ。 そのあと、全31件が安全に置換できる場合だけ書き込むスクリプトでデータファイルに一括反映した。 1件でも当たらなければ何も書かない作りにしてある。 部分的に書き込まれた状態が一番始末に悪い。

仕上げにCodexで31問ぶんのレビューをかけ、返ってきた指摘を反映した。 選択肢別の解説が124個そろった。

分野を選んで出題する、直近3回を出す

通しで31問やるのは重い。 落とした2問の周辺だけもう一度やりたい、という気分のほうが多い。

分野を選んで出題する機能を足した。 選んだ分野の設問だけを抜き出す部分は純粋関数に切り出して、テストを書いてから画面につないだ。 あわせて、直近3回の回答履歴を出すようにした。 前回何を間違えたかが同じ画面に出ていないと、選び直す判断ができない。

テストは33件まで増えた。

画面が更新されない

分野選択を画面につないだところで、表示が合わなくなった。

古いブロックと新しいブロックが両方描画されて、あるはずのない12行が並んでいる。 HMRの残骸を疑ってハードリロードした。 まだ12行のままだった。

次に、ファイル自体に古いブロックが残っている可能性を見た。 残っていなかった。 touch でも表示は変わらない。 SSRの結果が更新されていない。

ポート3000を掴んでいるプロセスだけを落として、devサーバーを立て直した。 このリポジトリは記事が多く、起動に時間がかかる。 待って開き直したら、12行は消えていた。

自動スクロールのトグルでも似たことがあった。 カードは増えているのに、画面が下に動かない。 scrollY の値だけを見ていると、動いたのか動いていないのか判断がつかない。 手動で smooth スクロールだけを呼ばせて、環境の問題かコードの問題かを切り分けた。 最後は読み値を捨てて、スクリーンショットで実際の描画位置を見た。

表示の確認はQA検証のスキルに寄せた。 モバイル幅もエミュレーションで見て、終わったら解除している。

「これ、逆じゃないですか」

全31問に誤答解説が入った状態で、自分でもう一度解いた。

愚痴を聞く場面の問で手が止まった。 1つ前の問では、愚痴の対象になっている人をかばうといい、という趣旨が出ていたはずだ。 いま画面に出ている問は、それと逆のことを言っているように読める。

本当に本文からレビューさせているのか、と聞いた。

該当項目の本文と、「かばう」に触れる箇所を全部照合させた。 返ってきたのは引用付きの答えで、クイズのほうが本文どおりだった。 かばえば批判の目は自分のほうに向く。 それを引き受けるのが聞き手の役回りだ、という筋だった。 逆に見えたのは、自分の読み違いだった。

ただ、読み違いが起きた理由のほうは設問の作りにあった。 この問は「してはいけないのはどれか」を問う反転型で、肯定形の問と同じ見た目で並んでいる。 問題文を流し読みすると、向きが裏返っていることに気づかない。

否定語を赤字にした。 気づいたのは1問だけだった。 ただ、正解が「してはいけない側の行為」になる問は全部で8問ある。 数えさせてから、8問まとめて同じ扱いにした。 1問だけ直すと、次に同じところで転ぶ。

正解の解説が1段落で終わっている

赤字を入れたあと、次の不満が出た。

正解の選択肢の解説が短い。 本のほうには、その正解について解説がちゃんと書かれている。 それを1段落に圧縮してしまっていた。

3段落くらいに増やすことにした。 原則を述べ、本文にある会話の展開をなぞり、その本の言い回しで締める。 誤答側の解説はそのままにした。

31項目を5つに分け、執筆のサブエージェントを5体、並列で起動した。 ここでも本文全文の読み込みを必須にしている。 表示側は先に複数段落へ対応させておいた。

上がってきたものを抜き取って読んだら、原則から実例へ、そして本の言い回しへ、という順で入っていた。 全31件そろってから一括反映し、本文全文を添えてCodexレビューを31問ぶん回した。 31問すべてOKで返ってきた。

全部OKという結果は、それ自体が疑わしい。 すでに本文を読んである問を1つ選んで、突き合わせさせた。 そこは通っていたので、そこで止めた。

この日わかったこと

  • 自分で作った教材は、自分で解くと穴の場所が変わる。作っているときは「正解の理由」しか見ていない
  • 出題の中身を疑ったら、レビュー済みという事実は根拠にならない。本文の該当箇所を引用付きで出させる
  • レビューが全問OKで返ってきたときほど、1問だけ手で照合する
  • 1問で見つけた欠陥は、同じ構造の問を全部数えてからまとめて直す。今回は8問だった
  • スクロールしたかどうかは、値の読み取りではなく描画で確かめる

自分の回答履歴が残るようになったので、次は落とした2問の分野だけを選んで解き直すところから始める。