はじめての道具箱 — データを整理する
— 番号ではなく、中身から作った目印で成績を結ぶ —
問題や記録を1件ずつ区別したいとき、「何番目か」ではなく、中身から作った短い目印(名札)を使う方法があります。この記事では、名札の作り方と、名札が変わる場面・変わらない場面を、はじめての人向けに説明します。
この記事を読むとできること
想定している使い方
ブラウザで開くチャット型の AI(Gemini や ChatGPT など)にコードを書いてもらい、 それを自分の Mac に保存して動かす使い方です。この記事の操作や画面の説明は、すべて Mac を前提にしています。
読む目安:約12分 ・ 道具箱の項目 B6(データを整理する)・ 図4枚
名札とは、問題の文章から計算で作る、短い文字と数字の並びです(専門用語ではハッシュといいます)。同じ文章からは必ず同じ名札ができ、文章が違えばほぼ必ず違う名札になります。この名札を、問題と成績を結びつける目印にします。
クイズのアプリは、「この問題を何回解いて、何回正解したか」という成績を覚えておきます。成績は、どの問題のものか分かるよう、問題と結びつけて保存します。いちばん手軽なのは、「2番の問題」のように番号で結ぶ方法です。
ところが番号は、並んでいる順番で決まります。問題を1つ足したり、並べ替えたりすると、同じ「2番」が別の問題を指すようになります。すると、ある問題の成績が別の問題のものとして表示されます。エラーは出ず画面も普通に動くので、気づきにくいのが厄介です。
そこで、問題の文章そのものから名札を作り、番号の代わりに使います。文章が同じ限り名札も同じなので、並べ替えても、問題を足しても、成績は正しい問題に付いてきます。
図の見方:上の段は、成績を番号で結んだ場合です。問題を並べ替えたり足したりすると、2番が別の問題を指し、成績がずれます。下の段は、問題の文章から名札を作って結んだ場合です。名札は文章から決まるので、順番が変わっても同じ問題には同じ名札が付き、成績もそのまま付いてきます(「k7x2q」は説明のための架空の例です)。
作り方は3段です。まず、問題の文章から空白や改行を取り除きます。見た目では分からない空白の違いで、別の名札にならないようにするためです。次に、決まった計算をかけます。最後に、短い文字と数字の並びが出てきます。これが名札です。計算そのものは AI に書いてもらえるので、覚える必要はありません。
知っておくのは名札の性質だけです。同じ文章からは、いつ・どこで計算しても同じ名札になり、1文字でも違えばまったく違う名札になります。名札から元の文章は戻せませんが、目印には困りません。
※ 同じ計算なら別の Mac でも同じ名札になります。計算するプログラムが複数あるときは、完全にそろえる必要があります(次の節で説明します)。
成績の記録は、名札を見出しにした表のような形で保存します。1つの名札につき、解いた回数、正解した回数、「あとで見直したい」の印(要復習の印)などを持たせます。アプリは問題を表示するとき、その名札を計算し、同じ名札の成績を記録から取り出します。
成績と問題を突き合わせる作業はほかにもあります。たとえば苦手な問題の分析も、名札を使えば正しく結びつけられます。ただし、画面(ブラウザの中で動くプログラム)は表示のため、Mac の中で保存や分析をするプログラムは集計のために名札を計算するので、計算が2か所になることがあります(1か所なら心配は要りません)。その場合は、2つを同じにします。少しでも違うと、同じ問題が別の名札になり、成績が見つからなくなります。
筆者の体験メモ
筆者の法律クイズでは、問題の文章から空白を取り除いて名札を作り、成績をその名札ごとに持たせています。のちに(エージェント型コーディング、つまり AI が Mac の中で作業するやり方に移ってから)、「あとで見直したい」の印や弱点の分析も同じ名札ごとに持たせました。名札は画面の側と、Mac の中で分析する側の両方で計算するので、同じ問題文を両方に通して名札が一致するかを、自動テストで確かめています。
名札は文章から決まるので、「文章が変わったか」だけで名札が変わるかどうかが決まります。問題を並べ替える、問題を足す、空白や改行の入れ方だけを変える、といったことでは文章は変わらないので、名札も変わりません。
一方、文字を書き換えると名札は変わります。誤字を1文字直しただけでも、別の問題として扱われ、それまでの成績は引き継がれません。これが「問題文を直したら成績が消えた」の正体です。成績が壊れたのではなく、新しい名札には、まだ成績が1つも付いていないのです。
逆に、まったく同じ文章の問題が2つあると、同じ名札になり、2つの成績が混ざります。このときは、名札の計算に入れる文章や情報(これを材料と呼びます)に、その問題だけの情報(例:科目名の「民法」)を足し、同じ文章の問題だけを別の名札にします。
迷ったら「名札の材料は何か」を考えます。材料が変われば名札が変わり、材料が同じなら名札も同じです。問題文を画面で直せるようにしたいときは、名札の材料を「直したあとの文章」ではなく「直す前の元の文章」にしておくと、直しても成績が消えません(直した分を別に持つ考え方は、関連する項目の B4 にあります)。
筆者の体験メモ
のちに(エージェント型コーディング、つまり AI が Mac の中で作業するやり方に移ってから)作った筆者の法律クイズの改良版では、問題文を画面で直せるようにしました。このとき名札を元の問題文から作るようにして、画面で直しても成績が消えないようにしています。一方、元の資料のほうで問題文を書き換えると、その問題は別の名札になり、成績は引き継がれません。
起きていることから探してください。
| 起きていること | 原因 | どうするか |
|---|---|---|
| 問題文の誤字を直したら、その問題の成績だけ消えた | 名札が文章から作られているので、直すと別の名札になった | 名札の材料を「直す前の元の文章」にする作りに変えてもらいます。直した分は別のファイルに持ちます |
| 2つの問題の成績が同じ数字になる、または混ざる | 同じ文章の問題が2つあり、名札が同じになっている | ③の頼み方で、同じ名札の問題を一覧にしてもらいます。見つかったら、その問題にだけ区別できる情報(科目名など)を足して別の名札にします(全問に足すと全部の名札が変わり、成績が引き継がれません) |
| 問題を並べ替えたら、成績がずれた | 成績を番号で結んでいた | ①の頼み方で、番号で結ぶのをやめ、名札で結ぶ形に変えてもらいます |
| 画面で見える成績と、集計した成績が合わない | 名札を計算する場所が2つあり、計算が少し違っている | ②の頼み方で、同じ問題文を両方に通して名札が一致するか比べてもらいます |
| 空白や改行を直しただけで成績が消えた | 計算の前に、空白と改行を取り除く手順が入っていない | 計算の前に空白と改行を取り除くよう、AI に伝えて直してもらいます |
※ この道具箱は対話型コーディング(ブラウザの画面でチャットの AI と文章をやりとりして、コードを書いてもらうやり方)の前提です。 チャットの AI はあなたの Mac を見られないので、頼むのは「コードを書いて」、困ったら出た文字を貼って伝えます。 コツは、「番号ではなく、問題の文章から作った名札で結んで」と先に伝えることと、空白と改行を取り除いてから計算するよう添えることです。 下の文は、そのまま写すためのものではなく、言い方の見本です。
① 番号で結んでいるのを、名札に変えたいとき
「問題の成績を『問題の番号』で保存している。並べ替えや追加でずれてしまうので、問題の文章から作った短い名札で保存する形に変えたい。名札は、空白と改行を取り除いた文章から計算して作って。これまでの成績を、名札に付け替えて引き継ぐ変換をするコードを書いて」
② 名札を計算する場所が複数あるとき
「名札を作る計算が、画面側と保存側の2か所に要る。2つが必ず同じ結果になるように書いて。確かめるために、同じ問題文を3つ入れて、両方の名札が一致するか比べる処理も付けたコードを書いて」
③ 名札が重なっていないか確かめるとき
「全部の問題の名札を作って、問題の数と、名札の種類の数を表示して。数が違うなら、同じ名札になった問題の番号を一覧にして。そのためのコードを書いて」
うまくいかないとき
「問題を1つ直したら、その問題の成績だけ消えた。名札は、直す前の文章から作る形に変えたい。今の保存の形は:(ここに貼る)」
※ ①で「空白と改行を取り除いてから」と伝えないと、見た目が同じ文章が別の名札になることがあります。また、番号から名札に切り替えると、これまでの成績は新しい名札に付いていない状態になります。切り替える前に、Finder(Mac でファイルを見るアプリ)で成績のファイルを右クリックして「複製」を選び、自分でコピーを取っておきます。
名札で結べているかは、成績が残るかと数が合うかで分かります。
開き直しても残るか見る。1問だけ解いて成績を付け、アプリを閉じて開き直します。同じ問題に同じ成績が残っていれば、保存と読み込みはできています(番号でも起きることなので、名札で結べているかは次の2で確かめます)。
並べ替えても付いてくるか見る。問題を入れているファイル(AI に書いてもらったときに作ったもの)を開き、2つの問題の行を入れ替えるか、問題を1つ書き足して保存し、アプリを開き直します。分からなければ AI に聞けます。元の問題の成績が、同じ数字のまま残っていれば、名札で結べています。別の問題の成績が出てきたら、まだ番号で結んでいる所が残っています。
数を数える。③の頼み方で、問題の数と、名札の種類の数を表示するコードを書いてもらい、動かして出た数字を見ます。同じ数なら、どの問題も別々の名札になっています。名札の種類のほうが少ないときは、表示された番号の問題を見て、同じ文章になっていないかを確かめます。