Claude Codeのコンテキスト継続を軽量セッション管理で実現

## TL;DR

![claunch-banner.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/6673/29b2fd5f-74df-4591-b987-e14192e803b5.png)



Claude Codeを使っていてターミナルを閉じるたびにコンテキストが消失する問題に悩まされていたので、プロジェクトごとのClaudeセッション管理ツール「claunch」を作りました。

- 大幅な時間節約を実現
- 2つのモード：軽量直接実行（デフォルト）とtmux永続化
- ワンコマンドでセッション管理
- オープンソース・MIT ライセンス

## 背景

AI支援開発が当たり前になった昨今、Claude Codeを使って日々コーディングしている方も多いのではないでしょうか。

私も複数のプロジェクトでClaude Codeを愛用していたのですが、一つの大きな問題に悩まされていました。

### Claude Codeの課題

Claude Codeには`--resume`機能が存在しますが、複数のプロジェクトを並行開発する際に大きな問題があります。

```bash
$ claude
Human: Reactアプリの認証機能について相談があります...
# 10分かけてプロジェクト構造を説明

# 1時間後、別のプロジェクトに移って再度Claude起動
$ cd ../api-project
$ claude  
Human: APIサーバーのデータベース設計について...
# 前のセッションが上書きされ、Reactの文脈が消失

# 元のプロジェクトに戻る
$ cd ../react-project  
$ claude --resume [session-id]
# セッションIDを覚えていない、または既に無効
Human: Reactアプリの認証機能について相談があります...
# また10分かけて同じ説明を繰り返し
```

**Resume機能の制限：**
- セッションIDの手動管理が必要
- 複数プロジェクト間でセッションが混在
- ターミナル終了でセッション情報が失われがち
- プロジェクトごとの文脈分離ができない

この問題、実は想像以上に深刻でした。

### 時間ロスの実態

コンテキストを再構築するたびに10〜15分かかり、1日に複数回プロジェクトを切り替えると、相当な時間を同じ説明の繰り返しで失っていることに気づきました。

## 解決策：claunch

この問題を解決するため、`claunch`（claude + launch）を開発しました。

### 基本コンセプト

1. **プロジェクトごとに独立したClaudeセッション**
2. **柔軟な実行モード**（直接実行またはtmuxベース）
3. **ワンコマンドインターフェース**

### 使用例

```bash
$ cd ~/projects/react-app
$ claunch
# 軽量な直接Claude実行（デフォルト）

$ claunch --tmux
# 永続化されたClaude セッション（ターミナルクラッシュに耐性）

$ cd ~/projects/api-server
$ claunch --tmux
# API用の独立した永続セッション

# システム再起動後
$ cd ~/projects/react-app
$ claunch --tmux
# Reactの会話が完全に復元される
```

### v0.0.4の主要機能

```bash
# 直接モード（デフォルト）- 軽量で高速
$ claunch
✓ Claude CLI session started for: nextjs-app

# tmuxモード - 永続セッション
$ claunch --tmux
🚀 Creating tmux session: nextjs-app
✓ Persistent Claude session started

# セッション管理
$ claunch list
📋 Active Claude sessions:
  - nextjs-app: sess-abc123def
  - api-server: sess-ghi456jkl

$ claunch clean
🧹 Cleaned up 2 orphaned session files
```

## 技術的実装

### アーキテクチャ

```bash
#!/bin/bash
# プロジェクト名の自動検出
PROJECT=$(basename "$PWD")

# tmuxセッションの作成/アタッチ
tmux new-session -As "claude-$PROJECT" \
  "claude --resume $(cat ~/.claude_session_$PROJECT)"
```

核心部分はたったこれだけです。

### 設計思想

1. **Unix哲学に従う** - 一つのことを確実に
2. **デフォルトで柔軟** - 速度重視の直接モード、永続化のtmuxモード
3. **最小限の依存関係** - bashのみ必須、tmuxはオプション
4. **ゼロ設定** - インストール後すぐ使用可能

### クロスプラットフォーム対応

```bash
# macOS
if [[ "$OSTYPE" == "darwin"* ]]; then
    brew install tmux

# Ubuntu/Debian
elif command -v apt-get &> /dev/null; then
    sudo apt-get install -y tmux
fi
```

## 効果測定

### 定量的効果

claunch使用後の結果：
- **管理プロジェクト数**: 12個
- **コンテキスト切り替え**: 10分 → 瞬時
- **大幅な時間節約を実現**

### 定性的効果

- 同じ説明を繰り返すストレスから解放
- プロジェクトごとに最適化されたAI対話
- 作業の連続性向上

## インストール・使用方法

### インストール

```bash
bash <(curl -s https://raw.githubusercontent.com/0xkaz/claunch/main/install.sh)
```

### 基本的な使い方

```bash
# プロジェクトディレクトリで実行
$ claunch

# セッション一覧表示
$ claunch list

# 不要なセッションファイル削除
$ claunch clean
```

## 効果とユーザー反応

実際に使ってみた結果、期待以上の効果を実感しています。シンプルな仕組みながら、開発体験が大きく向上しました。

## 代替手段の検討

claunch開発前に既存の解決策も調査しました：

### 公式の対応策
- **Git Worktrees**: 複数ブランチを別ディレクトリで管理するClaude推奨手法
- **Claude Squad**: 複数のClaude Codeインスタンス管理ツール
- **`--continue`フラグ**: 最新セッションの継続（単一プロジェクト用）

### 各手法の問題点
- Git Worktrees: 設定が複雑、ディスク容量を大量消費
- Claude Squad: シンプルさに欠ける、追加の依存関係、学習コスト
- `--continue`: 複数プロジェクトでは役に立たない

結果として、シンプルなtmux + シェルスクリプトが最適解でした。

## 今後の展望

### 機能拡張予定

- セッション共有機能
- バックアップ・リストア
- テンプレート機能

### コミュニティ貢献

オープンソースプロジェクトとして、皆様の貢献をお待ちしています：
- バグ報告
- 機能要望  
- プルリクエスト
- ドキュメント翻訳

## おわりに

claunchは「小さな不便を大きく改善する」典型例だと思います。

シンプルなツールですが、日々の開発体験を劇的に向上させました。Claude Codeユーザーの皆様にも、ぜひ試していただければと思います。

**リンク集**
- GitHub: https://github.com/0xkaz/claunch
- 公式サイト: https://claunch.0xkaz.com
- 質問・議論: GitHubのIssues/Discussions

開発効率化に関するご質問やフィードバックもお気軽にどうぞ！