経緯
以下の理由により Chat GPT のチャット履歴をローカルに保存することにした。
理由1: ローカルに保存したい
OpenAI のサービス変更や終了によって、ChatGPT のエクスポート機能が削除されたり、チャット履歴の閲覧自体ができなくなる可能性がある。また、エクスポート機能がなくなると、過去の履歴を簡単に取得する方法が制限されるため、必要な履歴をローカルに保存しておきたい。
理由2: 追記したい
入力内容や GPT の回答に誤りや不足がないかを検証し、必要に応じて出典や補足情報を加筆したい。
ローカルに記録する方法を考える
方法1: エクスポート機能を使う
ChatGPT にはチャット履歴をすべてエクスポートする機能がある。ただし、エクスポートされた履歴は Markdown に近い書式だが、1つの HTML ファイルにまとめられるため、過去の履歴を整理・編集しづらい。
方法2: 記録と装飾を手動で行う
ChatGPT のエクスポート機能の代わりに手動で HTML と CSS を編集することで装飾、整理、記録する方法もある。こちらは前者に比べ手間はかかるが、読みやすさと拡張性(追記のしやすさ)は高い。
手動で記録する
最終的に読みやすさと拡張性から手動で記録する方法を選んだ。
実装方法の検討
HTML と CSS を使う
今回は HTML と CSS のみで構成し、JavaScript は埋め込まない。理由は二つあり、一つは JavaScript を実行できない環境(テキストブラウザや一部の電子書籍リーダー、HTML ビューアなど)でも閲覧可能にするため、もう一つは PDF などの静的なフォーマットに変換しやすくするためだ。
チャットごとにファイルを分ける
すべての履歴を1つのファイルにまとめるのではなく、チャットごとに個別の HTMLファイルを作成する。こうすることで、それぞれのチャットを管理しやすくなる。
SSG(静的サイトジェネレーター)
チャットの記録は「ユーザの入力」と「GPT の回答」という決まったフォーマットで構成されており、共通するパーツが多い。これらをコンポーネント化して再利用することで作業の効率が向上する。 また、SSG を用いることで、フォーマットやスタイルの変更を一括で適用できるため、大量の HTML ファイルを扱う場合に特に有用だ。
Astro を採用
今回の構成では JavaScript を使用しないため、デフォルトで JavaScript を埋め込まない [R1] Astro を使用することにした。
実装へ
次回から Astro を使って実装を進めていく。