ENECHANGE Developer Blog

ENECHANGE開発者ブログ

Claude Codeの会話を体系的に管理する仕組みを作ってみた

初めまして。10月より ENECHANGE にジョインした藤巻です!

Claude Codeには標準でセッション管理機能が搭載されており、過去の会話を再開できます。しかし、日常的に使う中で「わかりやすい名前でトピックを管理したい」「Markdownで読みやすく整理したい」と感じることがあり、独自のトピック管理の仕組みを作りました。

本記事では、標準機能を紹介した上で、私が不便に感じた点と、それを解決するために作った仕組みを紹介します。

こんなもの作りました

/select-topic コマンドで既存トピック一覧が表示される

トピックを選択すると、前回の続きから再開できる

話した内容は後から見返しやすいようmarkdown形式でまとめられる

# CodePipelineによるデプロイの仕組み

**セッション日付:** 2025-10-22
**状態:** 🔒 完全完了

---

## 📚 学習した内容

このセッションでは、プロジェクトにおけるAWS CodePipelineによるデプロイの仕組みを、以下の順序で段階的に学習しました。

---

## ステップ1: CodePipeline設定ファイルの場所

~~ 中略 ~~

---

## ステップ2: CodePipelineの3つのステージ

~~ 中略 ~~

この仕組みを作った背景

Claude Codeには標準で強力なセッション管理機能があります。claude -c で最近の会話を再開したり、claude -r で過去のセッション一覧から選択して復元できます。作業ディレクトリごとに履歴が保存されるため、プロジェクトごとの管理も可能です。

しかし、日常的に使っていく中で以下の点で不便を感じました。

1. claude -r では過去のセッション一覧が表示されるが、自動生成されたトピック名が分かりづらい

claude -r では過去のセッション一覧が表示されますが、セッション名は自動生成されます。セッション要約は表示されるものの、パッと見て「何のトピックか」を判断するのが難しいと感じました。
調べてみたところ、GitHubでセッション名のカスタマイズ機能を求めるissueが出ていることを見つけましたが、まだ実装されていなさそうでした・・・

2. 過去に何を話したか見返すのが難しい

標準機能ではセッションをデータベース的な形式で保存し、会話の復元を主目的としており、直接見返す用途には向いてません。
自身としては、Markdownファイルとして記録し、後から読み返しやすくし、必要に応じてドキュメント作成の元ネタ等に使えれば良いなと考えました。

作った仕組み

こうした不便さを解決するため、以下のような仕組みを作りました。

構成

~/Desktop/claude/
├── README.md                    # 共通ルールとトピック一覧
└── sessions/                    # 各トピックの記録
    ├── 2025-10-22_codepipeline.md
    ├── 2025-10-23_terraform.md
    └── ...

~/.claude/commands/
└── select-topic.md              # スラッシュコマンド定義

各ファイルの役割:

  • README.md: 共通ルール(ファイルパスの書き方、コード説明方法など)とトピック一覧を管理
  • sessions/*.md: 各トピックの内容を記録(命名規則: YYYY-MM-DD_トピック名.md
  • select-topic.md: /select-topic コマンドでトピック選択画面を起動

README.mdの内容(クリックして展開)

# Claude Code セッション管理

このディレクトリは、Claude Codeとの会話セッションを記録・管理するためのものです。

## 📁 ディレクトリ構成

```
~/Desktop/claude/
├── README.md           # このファイル(共通ルールと使い方)
└── sessions/           # 各セッションの記録
    ├── 2025-10-22_codepipeline.md
    └── ...
```

## 📋 共通ルール

### ファイルパスの記載

- **常に相対パス(カレントディレクトリから)で記載**
- 絶対パスは使用しない

### コード・技術内容の説明方法

- **ファイルの内容を説明する際は、行番号を明示しながら1つずつ丁寧に説明**
- コードを示す場合は、元のコードを概ね維持しつつ `#` によるコメントを追加

### 進め方

- **理解度・進捗を確認しながら段階的に進める**
- 一度に全てを説明せず、1つ完了したら次のステップへ
- 適宜メモを更新して進捗を記録

## 📝 セッション一覧

| 日付 | トピック | ファイル | 状態 |
|------|---------|---------|------|
| 2025-10-22 | CodePipelineによるデプロイの仕組み | [sessions/2025-10-22_codepipeline.md](sessions/2025-10-22_codepipeline.md) | 🔒 完全完了 |
| 2025-10-22 | セッション開始方法の改善(スラッシュコマンド化) | [sessions/2025-10-22_select-topic-command.md](sessions/2025-10-22_select-topic-command.md) | ✅ 完了 |

### 状態の説明

- 🔄 **進行中** - まだ作業中
- ✅ **完了** - 一旦完成、後で見直す可能性あり
- 🔒 **完全完了** - 当面手を加える予定なし(必要に応じて再開可能)
- ⏸️ **保留中** - 一時中断

## 🚀 使い方

### ⭐ 推奨:トピック選択(簡単な方法)

Claude Codeで以下のコマンドを実行:

```
/select-topic
```

自動的に:

1. 既存トピックの一覧を表示
2. 選択肢を提示(既存トピックの再開 or 新規作成)
3. あなたの選択に応じて適切に処理

### 手動での操作(オプション)

#### 新しいトピックを開始する場合

1. Claude Codeに「新しいトピックを開始したい」と伝える
2. トピックを説明する
3. Claude Codeが適切なトピック名を提案する
4. 確認・調整を経て、新しいセッションファイルを作成

#### 過去のトピックを再開する場合

1. `~/Desktop/claude/sessions/` から該当ファイルを確認
2. Claude Codeに「[ファイル名]の内容を読んで続きをお願いします」と伝える
3. Claude Codeがファイルを読み込んで、前回の続きから開始

### セッションファイルの命名規則

- `YYYY-MM-DD_トピック.md`
- 例: `2025-10-22_codepipeline.md`

## 💡 ヒント

- 各セッションは独立しているので、複数のトピックを並行して進められます
- README.mdのセッション一覧を見れば、過去に何を扱ったか一目でわかります
- セッションファイル内に「次回やること」を記録しておくと、再開時にスムーズです

## 📂 セッションの用途例

このシステムは様々な用途で活用できます:

### 技術学習・調査

- 新規参画プロジェクトの技術スタックの理解
- 既存システムの仕組みの学習
- 新しいツール・フレームワークの調査

### 開発・実装作業

- 新機能の設計・実装の相談
- バグ調査・修正の記録
- リファクタリングの計画と実施

### 問題解決・トラブルシューティング

- 本番障害の原因調査
- パフォーマンス問題の分析
- エラー解決の試行錯誤の記録

### ドキュメント作成

- 技術記事の執筆支援
- 設計書・仕様書の作成
- 社内Wiki・手順書の整備

### その他

- アーキテクチャ設計の相談
- コードレビューの実施
- キャリア・学習計画の相談

select-topic.mdの内容(クリックして展開)

---
description: トピックを選択して記録を再開
---

以下の手順を実行してください:

## 1. README.mdを読む
`~/Desktop/claude/README.md` を読んで、共通ルールを確認してください。

## 2. sessions/ディレクトリを確認
`ls -la ~/Desktop/claude/sessions/` で配下の全ファイルをリストアップし、既存トピックの一覧を取得してください。

## 3. ユーザーに選択肢を提示
以下の形式でユーザーに質問してください:

```
記録されているトピックです。どれについて話しますか?

【既存トピック】
1. [日付] - [トピック名] (状態: ✅完了 / 🔄進行中)
2. ...

【新規トピック】
N. 新しいトピックを開始

番号を選択するか、トピック名を教えてください。
```

## 4. ユーザーの選択に応じて処理

### 既存トピックを選択した場合

- 該当ファイルを読み込む
- 「[トピック名]を再開します。前回は[最後の内容]まで進んでいます。続きから始めますか?」と尋ねる

### 新規トピックを選択した場合

- 「新しいトピックを開始します。どのような内容ですか?」と質問
- 内容を聞いた上で、適切なトピック名を提案する
- ユーザーの確認・調整を経て、`sessions/YYYY-MM-DD_[トピック名].md` を作成
- README.mdのトピック一覧に追加

どうやって作ったか(クリックして展開)

この仕組みは、0から少しずつ改善を重ねて作りました。

フェーズ1: 単一ファイルでの記録

  • Markdownファイル1つに会話内容を記録
  • 課題: トピックが増えると管理が困難

フェーズ2: トピック別管理

  • sessions/ ディレクトリでトピックを分離
  • README.mdで共通ルールとトピック一覧を管理
  • 課題: 毎回長いパスを入力する必要

フェーズ3: 起動の自動化

  • START_SESSION.mdとシェルエイリアスで1コマンド起動
  • 課題: より直感的なコマンドにしたい

フェーズ4: スラッシュコマンド化

  • ~/.claude/commands/select-topic.md を作成
  • /select-topic で起動可能に

使い方

初回セットアップ

# ディレクトリを作成
mkdir -p ~/Desktop/claude/sessions
mkdir -p ~/.claude/commands

# README.md と select-topic.md を作成
# (内容は前述の構成を参照)

トピックの選択・再開

Claude Codeで /select-topic を実行すると、トピック選択画面が表示されます。

番号を選択すると、トピックファイルが読み込まれて前回の続きから再開できます。

新規トピックの作成

「新しいトピックを開始」を選択すると、以下の流れでトピックを作成します:

  1. 「どのような内容ですか?」と質問される
  2. トピックの内容を説明する(例:「CodePipelineのデプロイの仕組みを学びたい」)
  3. Claude Codeが適切なトピック名を提案(例:codepipeline-deploy
  4. 確認・調整して、sessions/2025-10-24_codepipeline-deploy.md が作成される

このように、対話しながら適切なトピック名を決められます。

良かったこと

  • わかりやすい名前で管理: セッションのやりとりが2025-10-22_codepipeline のような、対話しながら決められる名前で保存される
  • Markdownで整理: 後から見返しやすい
  • すぐ再開できる: /select-topic 1コマンドでトピック選択〜再開まで完結
  • 複数トピックの並行管理: トピック一覧で進捗を一目で把握
  • パフォーマンスが安定: 標準の会話履歴(claude -r)では全てのやりとり(「ありがとうございます」などの挨拶も含む)がそのまま保存されますが、この仕組みでは会話を整理・構造化してMarkdownにまとめるため、Claude Codeの負荷が減り、パフォーマンス低下や回答のブレが比較的少ない印象です。

今後改良したい点

1. 記録タイミングの自動提案

ある程度はclaude自ら提案してくれますが、ちょうど良いタイミングで提案してくれないことの方が多いです・・・ 重要な内容を記録したい場合に「ここまでの内容をファイルに記録してください」と自分から伝える必要があります。

改善するとしたら・・・

Claude Codeが自動的に「ここまでの内容を記録しますか?」と提案してくれる仕組みがあると便利だと思っています。
ただ、あまり聞かれすぎるとうざったいですし、その塩梅をどうclaudeに伝えるかは考え所です。

2. 長いトピックの分割管理

1つのトピックで会話が長くなりすぎると、ファイルを読み込んだ際にClaude Codeが適切な回答を返しづらくなることがあります。

改善するとしたら・・・

適切なタイミングでトピックを自動分割する、またはトピック内でセクション管理できる仕組みがあると良いと思っています。
claudeに自動で見切りをつけてもらえれば一番楽ですが、その区切りを考えるのはちょっと難しいかもですね・・・

終わりに

以上、「Claude Codeの会話を体系的に管理する仕組みを作ってみた」 でした。
もし、Claudeとの会話管理に悩んでいる方の参考になれば幸いです。