FRL 自由研究ラボ

はじめての道具箱 — データを整理する

元データには触らず、直した分を別に持つ

— 作り直しても、手直しが消えない —

別の資料から機械で作られたデータを、手で直したくなることがあります。そのとき元のデータの中を直接書き換えず、直した分だけを別のファイルに書いておき、表示するときに重ねる方法があります。この記事では、その考え方と、なぜそうするのかを、はじめての人向けに説明します。

この記事を読むとできること

  • 元のデータを直接書き換えると、なぜ手直しが消えやすいのかが分かるようになります
  • 「元のデータ」と「直した分」を別に持ち、重ねて見せる仕組みが分かるようになります
  • 元が後から変わったときに、直した分が古くなったと気づく工夫が分かるようになります

想定している使い方

ブラウザで開くチャット型の AI(Gemini や ChatGPT など)にコードを書いてもらい、 それを自分の Mac に保存して動かす使い方です。この記事の操作や画面の説明は、すべて Mac を前提にしています。

  1. 別に持つとは
  2. 重ねて見せる
  3. 元が変わったときに気づく
  4. 直した分を守る
  5. よくあるつまずき
  6. AI への伝え方
  7. 確かめ方
  8. 関連する項目

読む目安:約12分 ・ 道具箱の項目 B4(データを整理する)・ 図4枚

元データと直した分を別に持つとは ―― なぜ分けるのか

元のデータは書き換えず、人が手で直した分だけを別のファイルに書き、画面に出すときに元の上へ重ねる考え方です。元のデータを何度作り直しても、直した分は残ります。

ここでいう「元のデータ」は、たとえば Word の文書から機械で作ったクイズの問題ファイルのように、別の資料をもとに作られているデータです。こうしたファイルは、元の資料を直したときや、作り直した(元の資料から、機械でもう一度ファイルを作った)ときに、中身が丸ごと新しく書き換わるのがふつうです。

このファイルの中で、誤字や解説を直接直すと、そのときは思い通りになります。ところが次に作り直したとき、直した所が元の内容で上書きされて消えてしまいます。

直した分だけを別のファイルに書き、表示するときに元の上へ重ねるようにしておけば、元のファイルが何度作り直されても、直した分は残ります。元のファイルには手を付けないので、「元はこうだった」といつでも見比べられます。

✕ 元のデータの中を直接直すと 元のデータ 直した所を書き込む 元のデータを 作り直す 直した所が消える どこを直したかも不明 ○ 元はさわらず、直した分を別に持つと 元のデータ さわらない・作り直してよい 直しのファイル 直した分だけ 画面が元の上に重ねる 作り直しても 直しは残る 元は元のまま、直した分は別のファイル。作り直しで手直しが消えません。

図の見方:上の段は、元のデータの中を直接書き換えた場合です。元を作り直すと直した所が元の内容に戻り、どこを直したかも分からなくなります。下の段は、元のデータはそのままにして、直した分だけを「直しのファイル」に書いた場合です。画面が元のデータの上に直しを重ねて出すので、元を作り直しても直しは残ります。

重ねて見せる ―― 透明なシートのたとえ

たとえるなら、元のデータは印刷された問題集、直しのファイルはその上に重ねた透明なシートです。シートには、直したい所だけを赤ペンで書き込みます。重ねると直した形で読め、シートをめくれば元の問題集がそのまま見えます。

画面は、表示するときに元のデータを読み、次に直しのファイルを読みます。直しの無い問題は元のまま出し、直しのある問題は、直した項目だけを直したほうに置き換えて出します。どの問題の直しなのかは、問題ごとに付けた印(名札のようなもの)で結びつけます。下の図では、問題文そのものを印に使っています。元の問題文が少し変わると印が合わなくなり、結びつきません。図では、元のデータで誤って「◯」になっていた2問目の正解だけを、直しのファイルで「✕」に直しています。

元のデータ(さわらない) 問題正解 富士山は日本一高い山◯ クジラは魚である◯ 地球は太陽のまわりを回る◯ クジラの正解が誤って◯になっている + 直しのファイル(直した分だけ) 問題の印(問題文)直した内容 クジラは魚である正解は ✕ 直した問題だけを書く 重ねる 画面に出る形 問題正解 富士山は日本一高い山◯ クジラは魚である✕ 地球は太陽のまわりを回る◯ 直した問題だけ直したほうが出る 元のデータは書き換えず、直した問題だけを上に重ねて表示します。

※ 直しのファイルも、元のデータと同じ JSON(文字だけで書かれた、項目名つきのデータの形式)などで持てます。くわしくは A2 を見てください。データと画面を別のファイルにする考え方は B3 で説明しています。

筆者の体験メモ

のちに(エージェント型コーディング、つまり AI が Mac の中で作業するやり方に移ってから)作った筆者の記述式クイズでは、問題のファイル(questions.json)が、Word 形式(.docx)の資料から作り直すたびに丸ごと書き換わります。手で直した問題文や解答は、そのファイルには書かず、別の overrides.json に入れています。画面に出すときに直しを重ねるので、作り直しても直しは消えません。

元が変わったときに気づく

この方法には、1つ弱点があります。直した項目は直しのほうが優先されるので、あとで元の資料が直されても、その項目には更新が出てきません。

そこで、直したときに「そのときの元の中身」も一緒に控えておきます。作り直すときなどに今の元と控えを比べ、違っていれば注意の印(⚠)を出します。違いに気づいたら、直しを残すか、元に合わせて直しを見直すかを、自分で決めます。

① 直したとき 直した内容と そのときの元の中身を 一緒に控える ② あとで 元のデータが 作り直されて 中身が変わる ③ 比べるとき 今の元と控えを比べ 違っていれば ⚠ で知らせる 変わったことに気づければ、直しを残すか見直すかを自分で決められます。

筆者の体験メモ

筆者の記述式クイズでは、直した時点の元の解答も overrides.json に一緒に控えてあります。元の Word の資料のほうが変わったのに直しが古いままのときは、問題ファイルを作り直すときに ⚠ で知らせます。

直した分を守る約束

次の3つを約束にすると、直した分を失いにくくなります。

1つめは、直した分だけを書くことです。全部の問題を写してしまうと、元が更新されても、その更新が画面に出なくなります。直した内容が元と同じになったときは、その直しも消しておきます。

2つめは、元のデータを作り直す仕組みに、直しのファイルを書き換えさせないことです。読むだけにしておけば、作り直しで直しが消えることはありません。

3つめは、直しのファイルが壊れていたら、保存を断ることです。画面で問題を直せる作りにしている場合、直した内容は直しのファイルに書き込まれます。このとき、壊れたファイルを「直しは1つも無い」と見なして書き込むと、残っていた直しが全部消えます。壊れていたら、先に直しのファイルを直します。

① 直した分だけを書く 全部の問題は写さない。 元と同じ内容に戻したら、 その直しは消す。 ② 作り直す側は読むだけ 元のデータを作り直す 仕組みは、直しのファイルを 読むだけ。消さない。 ③ 壊れていたら断る 直しのファイルが壊れているとき、 空と見なして書き込まず、 保存を断る。 どれも、直した分を失わないための約束です。

迷ったら「この直しは、元のデータを作り直しても残したいか」と考えます。残したい直しは、元のファイルの外に出して持ちます。

筆者の体験メモ

のちに作った筆者の法律クイズは、問題の出どころが Obsidian(メモアプリ)のノートです。こちらもノートは書き換えず、画面で直した分を overrides.json に入れています。直した内容がノートと同じになったときは、その直しを消します。overrides.json が壊れているときは、直した分が全部消えるのを防ぐため、保存を断る作りにしてあります。

よくあるつまずき

起きていることから探してください。

起きていること 原因 どうするか
直したのに、しばらくすると元の内容に戻っている 元のデータのファイルの中を直接直していて、作り直したときに元の内容で上書きされた 直した分を別のファイルに移し、元のファイルには書かない形にしてもらいます。作り直す前に、直したファイルのコピーを残しておきます
直しのファイルに書いたのに、画面に出てこない 直しの問題の印が、元の問題の印と合っていない(問題文が少し変わった・書き間違い) 直しの印と、元の同じ問題の印を見比べます。分からないときは、両方を AI に貼って、食い違いを聞きます
元のデータを更新したのに、直した所だけ更新が出ない 直した項目は、直しのほうが優先して出ている 直したときの元の中身を控えておき、違いがあれば ⚠ を出す作りにしてもらいます。⚠ が出たら、直しを残すか消すかを決めます
直しのファイルを手で直したら、画面が真っ白になった・読み込み中のまま止まる 直しのファイルの書き方が壊れた(かっこや引用符「"」が欠けた)。元のデータは無事 手で直す前にコピーを残し、壊れたらコピーに戻します。画面に出ている文字を AI に貼って、どこが欠けたかを聞きます

AI への伝え方

※ この道具箱は対話型コーディング(ブラウザの画面でチャットの AI と文章をやりとりして、コードを書いてもらうやり方)の前提です。 チャットの AI はあなたの Mac を見られないので、頼むのは「コードを書いて」、困ったら出た文字を貼って伝えます。 コツは、「元のデータは書き換えない」と先に伝えることと、分けることと重ねることを1つずつ頼むことです。 下の文は、そのまま写すためのものではなく、言い方の見本です。

① 直した分を別のファイルに持たせるとき

「いまはクイズの問題ファイル(questions.json)の中を直接直している。このファイルは別の資料から作り直すたびに上書きされるので、手で直した分は overrides.json という別のファイルに入れる形にして。questions.json は書き換えないで」

② 重ねて表示してもらうとき

「画面に問題を出すとき、questions.json を読んでから、overrides.json の直しを重ねて。直しのある項目は直したほうを使い、無ければ元のまま出して。画面の見た目と動きは変えないで」

③ 元が変わったときに気づけるようにするとき

「直したときの元の中身も、overrides.json に一緒に控えて。あとで元が変わって控えと違っていたら、その問題に注意を出して」

うまく動かないとき

「overrides.json に直しを書いたのに、画面の問題が変わらない。直しの問題の印は:(ここに貼る)。questions.json の同じ問題の印は:(ここに貼る)。食い違いが無いか見て」

確かめ方 ―― 作り直しても直しが残るか

ちゃんと分かれているかは、直しを1つ入れて、元のデータを作り直してみると分かります。試す前に、元のファイルと直しのファイルのコピーを、別の名前で残しておくと安心です。コピーは、Finder(Mac でファイルを見るアプリ)でファイルを選び、⌘ を押しながら D を押すと作れます。

  1. 1

    直しを1つ入れる。直しのファイルの中身を AI に貼り、「この問題の正解を直す1件分を足して」と頼みます。返ってきた1件分を直しのファイルに足して保存します(置き換えると、今ある直しが消えます)。そのあと画面を再読み込みします(⌘ を押しながら R)。画面にその問題の直した内容が出ていれば、直しは重なって表示されています。

  2. 2

    元のファイルが変わっていないことを見る。Finder で元のファイルを選び、⌘ を押しながら I を押すと情報が出ます。その「変更日」が、さっき直した時刻より前のままなら、元にはさわっていません。

  3. 3

    元を作り直して、直しが残るかを見る。元のデータを作る手順(AI に教わった変換の操作など)をもう一度行い、画面を再読み込みします。さっき直した問題が、まだ直した内容のまま出ていれば成功です。元の内容に戻っていたら、直しが元のファイルの中に書かれています。コピーに戻してから、AI に相談します。