ChatGPTはすぐ忘れる。その記憶を、私はコードに託した。
はじめに
https://qiita.com/Hiroki_Azuma/items/db97bf02979dd180a9f0
↑この記事の続きを書いています。
ChatGPTを使って複雑な設計や仕様策定を進めていると、「前回のやり取りが引き継がれていない」「少し構成を変えただけで、一から説明し直さないといけない」といった場面によく出会います。
そのたびに、「あのとき苦労して作ったロジックや前提、もう一度言うのか…」とため息をついた経験は、私だけではないはずです。
そんな課題を感じた私は、ChatGPTとの会話の中で得た仕様や構造、未完の構想までも含めて、すべてをPythonコードという形式で残すという方法を取るようになりました。
これは、単にコードとしてロジックを完成させることが目的ではなく、ChatGPTとの会話そのものを体系的に、再現可能な形で記録する手段としてコードを位置づける試みです。
コードは「実行可能な会話ログ」になる
ChatGPTとの対話では、その場で得られた回答を保存することはできますが、スレッドをまたいだり、新しいやり取りに移ったりすると、前回の前提や流れがきれいに忘れ去られてしまいます。
そこで私は、会話の一時的なやり取りを「設計書」「進行状況」「未完成の構想」などを含む構造化されたPythonスクリプトとして保存することにしました。
このとき、コードの実行可能性や完成度は重要ではありません。重要なのは、ChatGPTに渡したときに前回の意図や背景が即座に再現されることです。いわば、「会話の記憶をコードに託す」という発想です。
実際に使用したコード構成
今回のプロジェクトは、NISAやiDeCoの積立、長期的な支出・収入をもとにした「ライフプラン資産運用シミュレータ」の設計を目的としたものでした。プロジェクト進行は段階的で、各要素が複雑に絡むものであったため、単なるプロンプト指示だけでは限界がありました。
そのため、次のようなコード構成で、会話の意図・進捗・仕様をすべて残すようにしました。
# プロジェクト進行を記録するマイルストーンの定義
@dataclass
class Milestone:
id: str
name: str
status: Literal['未着手', '進行中', '完了']
description: str
# データ構造や設計対象のモデル定義(積立設定、年齢記録など)
@dataclass
class SavingSetting:
person: str
product: str
saving_type: Literal['月額', 'スポット']
start_year: int
monthly_amount: float
spot_limit: float
stop_age: Optional[int] = None
cap_amount: Optional[float] = None
initial_principal: float = 0.0
# 実装が完了したロジックには具体的な関数、
# 未実装のものには構想とともにpassを記述
def simulate_asset_growth():
"""
実装予定:
- 前年残高 + 積立 + 利回り反映
- 年金/収入反映 → 支出引き → 取り崩し
- 優先順: 年金 > 現金 > NISA > iDeCo
- シナリオ選択による利回り分岐
"""
pass
このようにしておくことで、次回ChatGPTとやり取りを始める際にこのコードを丸ごと読み込ませれば、「前回のテーマ」「進行状況」「未実装の構想」がそのまま再現されます。
ChatGPTはこちらの文脈を即座に理解し、「未完成の関数をどう埋めるか」「設計に何を追加すればよいか」といったアシストを、前回と同じ前提で提供してくれるようになります。
実行可能性よりも「文脈の記述」が大切
プロンプトという人間主導の話法より、GPTが得意とするPythonコードのほうが**読み手(AI)にとっての会話として成立しやすいと考え、たとえば、次のような観点を意識しています。
- クラスや関数に“何を意図しているか”を明示的に記述する
- コメントやdocstringに「まだ何を考えているか」「次に何をしたいか」を書き残す
- 実装済みかどうかは関係なく、構造が“そのまま意図を持つ”ように整理する
こうすることで、コードが単なる処理記述ではなく、ChatGPTとの会話構造そのものとして機能してくれます。
会話は消えるが、構造は残る
私たちは、ChatGPTとの会話を通じてさまざまな知見や工夫を得ています。しかし、そのやり取りは保存しなければ失われ、保存しても“文脈を持った形”ではありません。
だからこそ、私は「コードに託す」という方法を選びました。コードは会話を保存するだけでなく、再び読み込むことで記憶を呼び戻す媒体になります。しかも、それは“機械に理解されやすい形”でもあります。
おわりに
AIと継続的なプロジェクトを進めたいと考えている方にとって、コードを会話のログとして使うという発想は、大きな助けになるかもしれません。実行可能性を重視するのではなく、会話を再現するための構造化された記述としてコードを活用する。これは、ChatGPTのような言語モデルとの協働を“その場限り”ではなく、“育てていくもの”へと変えるひとつの方法だと思っています。
もし、ChatGPTとのやり取りにおいて「また一から説明し直すのが面倒だな」と感じたときは、ぜひ一度コードという記憶媒体を試してみてください。意外なほど、会話の精度と再現性が変わってくるはずです。