2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

勉強したはずなのに解けない。ChatGPT×Google Sheetsで「知識の現在地」を管理してみた

2
Posted at

はじめに:「勉強したはずなのに、解けない」

勉強を続けていると、こんなことが起きます。

  • 前に解いた問題を、また解いている
  • 「TLSが苦手」とは分かるけれど、何が曖昧なのか説明できない
  • 支援士の勉強で覚えたことを、CySA+や実務に活かしきれない
  • ChatGPTに前回の進み具合を毎回説明する
  • 学習ログは増えているのに、次に何をするかは結局その日の気分で決めている

学習時間を記録するだけでは、「何を理解できて、何がまだ怪しいのか」が見えにくい。そこで、Google Sheetsを学習状態の正本にして、ChatGPTを問題作成や振り返りに使う仕組みを作りました。

現在は、情報処理安全確保支援士、CompTIA CySA+、CCNA、Linux、セキュリティ実務の学習を、共通の知識テーマでつなげています。

この記事では、実際に使いながら育てている個人用の学習DBについて、設計の考え方と運用例を紹介します。

1. 学習日記から「状態を見られるDB」へ

最初は、日付・勉強内容・勉強時間・感想を残すだけでした。

2026/09/20
TLSを勉強
2時間
CertificateVerifyが難しかった

記録としては便利です。でも、後から「TLSのどこが難しかった?」と聞かれると、過去ログを探して読み直す必要がありました。記録はあるのに、次の勉強に使いにくい状態です。

そこで、学習テーマを小さく分け、それぞれに固定のIDを付けました。

TLS-001  TLSハンドシェイク
TLS-002  CertificateVerify
TLS-003  Finished

WIN-001  Windows Event ID 4624
WIN-002  Windows Event ID 4625

DNS-001  DNSログ解析
WEB-001  XSS
WEB-002  CSRF
WEB-003  SSRF

IDを固定しておけば、テーマ名を後から調整しても、学習状況や演習履歴とのつながりを保てます。Topic_IDは知識テーマを結び付けるキーです。

2. 資格別ではなく、知識テーマでつなぐ

TLSは、支援士にもCySA+にも、ネットワークやSOCの学習にも登場します。資格ごとに別々のTLS管理表を作ると、同じ知識が重複してしまいます。

このDBでは、資格や演習の側から共通のTopic_IDを参照します。

情報処理安全確保支援士 ─┐
CySA+ ──────────────────┼── TLS-002 CertificateVerify
SOCトレーニング ────────┘

知識を資格ごとの箱に閉じ込めず、「どの試験・演習から出会ったか」と「何の知識か」を分ける考え方です。あるテーマを学んだ成果を、別の資格や実務学習にも活かしやすくなります。

3. CoverageとStableを分ける

学習状態を管理するとき、「勉強した/していない」だけでは足りません。勉強したけれど、まだ自分の言葉で説明できないテーマがあるからです。

そこで、学習範囲に触れたかを示すCoverageと、理解が安定しているかを示すStableを分けています。

項目 見ていること
Coverage そのテーマを学習対象として扱ったか
Stable 問題や説明で、理解を安定して示せるか
Priority 今取り組む優先度
Weakness どこでつまずいたか
LastStudy / NextReview 学習日や次の確認タイミング

例えば、Kerberosを一度学習していても、TGTとTGSの役割が混ざっているなら、次のように状態を残せます。

Topic_ID: KRB-001
Coverage: TRUE
Stable: FALSE
Weakness: TGTとTGSの役割の整理

「学習済み」と「理解できた」を同じ扱いにしないことで、勉強した回数ではなく、知識の現在地を見やすくします。Stableの判定や復習の仕組みは、今も運用しながら調整しています。

4. Topicの現在状態と、学習した証拠を分ける

学習DBの中心にはTopic_Indexを置いています。ここには、各テーマの現在の状態をまとめます。

Topic_ID Topic_Name Coverage Stable Priority Weakness
TLS-002 CertificateVerify TRUE FALSE 高 秘密鍵所有の証明との関係
TLS-003 Finished TRUE FALSE 高 Transcript Hashとの関係
KRB-001 Kerberos TRUE FALSE 高 TGT/TGSの整理

一方で、問題を解いた記録は演習履歴に残します。Topic_Indexが「今の状態」なら、演習履歴は「そう判断した根拠」です。日次ログには、その日に何を学んだかや次に続けたいことを残します。

過去問もTopic_IDと関連付け、問題ID、出題状況、結果などを管理します。ただし、問題本文の正本と学習状態の正本は別です。問題文は公式資料などの元ファイルで確認し、Engineer Learning DBには対応関係や進捗を記録します。問題文そのものを、DBに無条件で複製する設計にはしていません。

5. ChatGPTは「記録帳」ではなく、学習支援役

この仕組みでは、ChatGPTの会話や記憶を正式な学習記録とは扱いません。学習状態の正本はEngineer Learning DBです。

ChatGPTには、DBで確認できる情報をもとに、次のような作業を手伝ってもらいます。

  • Priorityが高く、Stableでないテーマから問題を作る
  • 解答を採点し、弱点を具体的な言葉にする
  • 同じテーマを別のシナリオで復習する
  • 複数のログをもとに、FACTとHYPOTHESISを分けて考える練習をする

大事なのは、DBを見ずに現在地を推測しないことです。出題済みか確認できない問題を「未出題」と決めつけたり、会話の印象だけで学習済みにしたりすると、データが少しずつずれていきます。

例:誤答を「次の学習」に変える

例えば、Windowsのプロセスログを読む問題で、メールソフトからコマンド実行、ファイル作成、外部通信へ続く流れを確認したとします。

まず、ログで直接確認できるFACTと、そこから考えたHYPOTHESISを分けます。

FACT:
・メールソフトを親プロセスとしてコマンド実行が始まった
・一時フォルダーにファイルが作られた
・その後、外部IPへの通信が記録された

HYPOTHESIS:
・メールを起点とする侵害の可能性
・正規ツールを悪用した実行の可能性
・外部通信がC2である可能性

次にEDR、DNS、Proxy、Windowsイベントログなどを確認し、仮説を検証します。解答で「FACTと推測が混ざった」ことが分かれば、単に不正解と記録するだけでなく、関連するTopicのWeaknessに反映できます。

6. DB更新は、対象を確かめてから行う

AIに学習記録の更新まで任せると便利ですが、誤ったTopicを更新したり、実際には扱っていないテーマまで学習済みにしたりするおそれがあります。

そのため、更新は次の順で扱うルールにしています。

今回の操作を判定
  ↓
適用する運用ルールを確認
  ↓
正本と対象Topicを確認
  ↓
更新前の整合性を確認
  ↓
対象データを更新
  ↓
更新後の状態を確認し、記録

更新対象は、今回実際に学習したTopicや、演習結果から確認できた弱点などに限定します。DBの場所やTopicとの対応を確認できない場合は、想像で書き込まず、まず確認が必要な状態として扱います。

これは完了した製品機能というより、学習履歴を汚さないために定めている運用ルールです。どこまでを自動化し、どこで人が確認するかは引き続き改善しています。

7. 実務の「分からなかった」も学習テーマにする

このDBには、資格の勉強だけでなく、仕事で出会った課題も学習テーマとして取り込みます。

例えば、uplink trunkに必要なVLANが含まれておらず通信できなかったなら、業務上の記録に加えて、TrunkやAllowed VLAN、VLAN forwardingに関する知識として整理できます。SFPの互換性判断に時間がかかったなら、光規格やトランシーバーの対応条件を次の学習テーマにできます。

仕事で分からなかったこと
  ↓
関連するTopicを特定する
  ↓
弱点や確認事項を記録する
  ↓
別シナリオ・問題で練習する
  ↓
次の業務で使う

仕事の出来事をそのまま資格問題に置き換えるのではなく、仕事で見えた知識の穴を、学習可能な単位にするのが狙いです。

8. 作ってみて分かったこと

この仕組みを作って一番変わったのは、学習時間の見方です。

「今日は2時間勉強した」は記録できます。でも、それだけでは何ができるようになったかは分かりません。Topic単位で状態と弱点を残すと、「今はTLS全体をやり直すより、FinishedとTranscript Hashの関係を確認しよう」のように、次の一手を具体化しやすくなりました。

一方で、Topicを細かく分けすぎると管理が重くなります。Stableの基準も、最初から完璧には決まりません。復習タイミングの自動化や可視化も、まだ改善したいところです。システムを作ること自体が目的にならないように、実際の学習で使いながら必要な部分を直しています。

9. まず試すなら、この列から

同じ考え方を試すだけなら、最初から大きなDBを作らなくてもよいと思います。Google Sheetsに、次の列を用意するところから始められます。

Topic_ID
Topic_Name
Coverage
Stable
Priority
LastStudy
Weakness

ChatGPTには、例えば次のように頼めます。

学習DBでStable=FALSEのテーマを確認し、
Priorityの高いものから1問ずつ出してください。

回答を採点したら、
・正誤
・回答から確認できた理解
・残っている弱点
を分けて説明してください。

DB上のテーマや現在状態を確認できない場合は、
推測で学習済み・未出題と判断しないでください。

まずはテーマを10個ほど登録して、問題を解くたびにWeaknessを具体化するだけでも、学習日記とは違う見え方が出てきます。

おわりに

作ったのは、Google Sheets、Topic_ID、ChatGPTを組み合わせた個人用の学習管理システムです。

  • Google Sheets(Engineer Learning DB)で学習状態を管理する
  • Topic_IDで資格や演習をまたいで知識をつなぐ
  • ChatGPTで問題作成、解答評価、弱点整理を手伝う
  • 実際に確認できた内容だけをDBに反映する

まだ育てている途中ですが、「勉強した時間」だけでなく、「何が分かっていて、どこが曖昧か」を次の勉強につなげられるようになりました。

資格勉強やChatGPTを使った学習で、同じ問題を繰り返したり、自分の弱点が曖昧になったりしている方にとって、知識をTopic単位で管理する方法が参考になればうれしいです。

みなさんは、勉強の進捗を「時間」以外にどんな単位で管理していますか?

2
2
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
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?