Claude Codeのログを解析して、トークン使用量やモデル別の使用状況を可視化するツールです。
Claude Codeに対する各種調整(モデル選択、プロンプト設定など)の効果を、ログ解析を通じて定量的に評価・可視化します。
最新リリースは GitHub Releases からダウンロードできます。
- Windows: amd64
- macOS: Intel (amd64), Apple Silicon (arm64)
- 最新リリースから環境に合ったファイルをダウンロード
- アーカイブを解凍
- 実行ファイルをパスの通ったディレクトリに配置(オプション)
# macOS / Linux
./ccloganalysis
# Windows
ccloganalysis.exeブラウザで http://localhost:8080 にアクセスすると、React UIが表示されます。
- 言語: Go 1.21+
- HTTPサーバー: Go標準ライブラリ
- データベース: SQLite(modernc.org/sqlite - Pure Go、cgo不要)
- データモード: SQLiteデータベース
- フレームワーク: React + TypeScript
- スタイリング: Tailwind CSS + shadcn/ui
- グラフ: Recharts
- ビルドツール: Vite
- 1バイナリ配布(Go embedでReactビルド成果物を埋め込み)
- 対応OS: Windows + Mac
{project-name}/
├── cmd/
│ └── server/
│ └── main.go # サーバーエントリポイント
├── internal/
│ ├── api/ # REST APIハンドラー
│ │ ├── router.go
│ │ ├── router_test.go
│ │ ├── service_db.go # データベース版Service
│ │ ├── service_db_test.go
│ │ └── types.go
│ ├── parser/ # JSONLログパーサー
│ │ ├── parser.go
│ │ ├── parser_test.go
│ │ ├── types.go
│ │ └── testdata/
│ ├── db/ # SQLiteデータベース層
│ │ ├── schema.sql # スキーマ定義
│ │ ├── db.go # DB接続管理
│ │ ├── projects.go # プロジェクトCRUD
│ │ ├── sessions.go # セッションCRUD
│ │ ├── sync.go # ファイルシステム同期
│ │ └── *_test.go # テストファイル
│ ├── static/ # 埋め込み静的ファイル
│ ├── analyzer/ # 集計ロジック(予定)
│ └── config/ # 設定管理(予定)
├── web/ # Reactプロジェクト
│ ├── src/
│ └── package.json
├── docs/ # ドキュメント
│ ├── 要件.md
│ ├── ログフォーマット調査.md
│ └── 技術スタック.md
├── go.mod
└── README.md
- Go 1.21+
- Node.js 20+
- npm または pnpm
- リポジトリをクローン
git clone https://github.com/{username}/{project-name}.git
cd {project-name}- Go依存関係のインストール
go mod download- React依存関係のインストール
cd web
npm installmake buildこれにより:
- Reactフロントエンドがビルドされ
web/dist/に出力 - ビルド成果物が
internal/static/dist/にコピー - Goバイナリにフロントエンドが埋め込まれる
bin/ccloganalysisが生成される
Claude Code から以下のコマンドでサーバーを管理できます:
# 開発モードで起動(バックグラウンド)
/server-management start dev
# 開発モードで起動(フォアグラウンド、別ターミナル推奨)
/server-management start dev --foreground
# 本番モードで起動
/server-management start prod
# サーバー状態確認
/server-management status
# サーバー停止
/server-management stop利点:
- 空きポート自動検出(8080-8089)
- PIDファイルによる確実なプロセス管理
- Graceful shutdown対応
- ビルド & 起動を自動実行
- フォアグラウンドモード対応(別ターミナルで起動可能)
- 状態確認コマンドで起動状態を簡単に確認
フォアグラウンドモード:
- ログが直接ターミナルに表示される
- Ctrl+C で安全に停止できる
- 別ターミナルでの実行を推奨
# 推奨: bin/ディレクトリのデータベースを使用
DB_PATH=./bin/ccloganalysis.db ./bin/ccloganalysis
# または、実行ファイルと同じディレクトリのDBを使用(デフォルト)
./bin/ccloganalysisアクセス:
- ブラウザで http://localhost:8080 にアクセスするとReact UIが表示されます
- server-managementで起動時は、ログに表示されるURLを使用してください
データベース:
- 推奨パス:
bin/ccloganalysis.db - デフォルト: 実行ファイルと同じディレクトリの
ccloganalysis.db - 初回起動時に自動的にClaudeプロジェクトのログを同期します
make clean
make build開発時はフロントエンドとバックエンドを別々に起動することを推奨:
# ターミナル1: バックエンド(CORS有効)
make dev
# または
ENABLE_CORS=true go run ./cmd/server/main.go
# ターミナル2: フロントエンド(HMR有効)
cd web && npm run devこの方式では:
- バックエンド: http://localhost:8080
- フロントエンド: http://localhost:5173(Vite開発サーバー)
フロントエンド開発時はViteの高速なHMR(Hot Module Replacement)が利用できます。
Claude Codeからサーバーの起動・停止・状態確認を簡単に行うためのスクリプトを提供しています。
起動:
# バックグラウンドモード(開発)
.claude/skills/server-management/scripts/start-server.sh dev
# フォアグラウンドモード(開発、別ターミナル推奨)
.claude/skills/server-management/scripts/start-server.sh dev --foreground
# 本番モード
.claude/skills/server-management/scripts/start-server.sh prod状態確認:
.claude/skills/server-management/scripts/status-server.sh停止:
.claude/skills/server-management/scripts/stop-server.shログ確認(バックグラウンドモード時):
tail -f .claude/skills/server-management/server.log開発モードのデフォルト環境変数:
PORT=8080ENABLE_CORS=trueENABLE_FILE_WATCH=trueFILE_WATCH_INTERVAL=15FILE_WATCH_DEBOUNCE=5
開発を効率化するための Claude Code スキルを提供しています。
前回のリリースからの差分を自動分析し、CHANGELOGを更新してGitHubリリースを作成します。
# 自動でバージョン番号を判定してリリース作成
/release
# バージョン番号を指定してリリース作成
/release 0.5.0
# セマンティックバージョニング指定
/release patch # パッチバージョンアップ(0.4.3 → 0.4.4)
/release minor # マイナーバージョンアップ(0.4.3 → 0.5.0)
/release major # メジャーバージョンアップ(0.4.3 → 1.0.0)処理内容:
- 前回リリースからのコミット差分を確認
- コミット内容を分析してセマンティックバージョニングに基づいてバージョン判定
- CHANGELOG.md を更新
- GitHubリリースノートを自動生成
- コミット・タグ作成・Push
- GitHubリリース作成
詳細は .claude/skills/release/SKILL.md を参照してください。
Issue番号やブランチ名を指定してワークツリーを作成し、Claude Codeを起動します。
# Issue番号指定 → /issueコマンドを自動実行
/cr-worktree 123
# ブランチ名指定
/cr-worktree feature/new-feature
# 説明文から自動生成
/cr-worktree "ログパーサーのバグ修正"Claude Codeからサーバーの起動・停止を実行します。
# 開発モードで起動
/server-management start dev
# 停止
/server-management stopサーバーを起動(フロントエンド埋め込み版):
make build
./bin/ccloganalysisテストを実行:
go test ./... -v
# または
make testcd web
npm run devmake help利用可能なコマンド:
make build- フロントエンド→バックエンドの順でビルドmake build-frontend- フロントエンドのみビルドmake build-backend- バックエンドのみビルドmake test- 全テスト実行make clean- ビルド成果物の削除make dev- 開発サーバー起動(CORS有効)make run- ビルド後に実行make help- ヘルプ表示
/cr-worktree スキルを使用して、効率的に新しい機能開発やバグ修正を開始できます。
基本的な使い方:
# Issue番号から自動的にブランチを作成(Issueステータスも自動更新)
/cr-worktree 123
# ブランチ名を直接指定
/cr-worktree feature/new-feature
# 説明文から自動的にブランチ名を生成
/cr-worktree "ログパーサーのバグ修正"
# 現在のブランチから分岐
/cr-worktree 123 --from-current何が起こるか:
- メインブランチの同期確認(最新のコードを取得)
- ワークツリーの作成(
CCLogAnalysis.worktrees/<branch-name>/) - 環境整備:
- Go依存関係のインストール(
go mod download) - Node.js依存関係のインストール(
npm ci) - テスト実行(
make test)
- Go依存関係のインストール(
- 新しいターミナルウィンドウでClaude Code起動
Issue番号指定の利点:
- GitHub Issueから自動的にブランチ名を決定
- Issueステータスを自動的に "In progress" に更新
- Claude Code起動時に
/issueコマンドを自動実行
ワークツリーの場所:
{home-directory}/Documents/GitHub/
├── {project-name}/ # メインリポジトリ
└── {project-name}.worktrees/ # ワークツリー用ディレクトリ
├── feature-xyz/
├── fix-abc/
└── 123-issue-title/
サーバーの動作を環境変数で制御できます。
| 変数名 | 説明 | デフォルト値 | 例 |
|---|---|---|---|
DB_PATH |
データベースファイルのパス | bin/ccloganalysis.db(実行ファイルと同じディレクトリ) |
/path/to/custom.db |
| 変数名 | 説明 | デフォルト値 | 例 |
|---|---|---|---|
PORT |
サーバーポート番号 | 8080 |
3000 |
CLAUDE_PROJECTS_DIR |
Claudeプロジェクトディレクトリ | ~/.claude/projects |
/custom/path/to/projects |
ENABLE_CORS |
CORS有効化(開発用) | false |
true |
LOG_LEVEL |
ログレベル(DEBUG, INFO, WARN, ERROR) | INFO |
DEBUG |
ログレベルについて:
DEBUG: 詳細なデバッグ情報を出力(開発時推奨)INFO: 通常の動作情報を出力(本番環境推奨)WARN: 警告以上を出力ERROR: エラーのみを出力
| 変数名 | 説明 | デフォルト値 | 範囲 | 例 |
|---|---|---|---|---|
ENABLE_FILE_WATCH |
ファイル監視機能の有効化 | false |
true/false |
true |
FILE_WATCH_INTERVAL |
スキャン間隔(秒) | 15 |
5~3600 | 30 |
FILE_WATCH_DEBOUNCE |
デバウンス時間(秒) | 5 |
1~60 | 10 |
ファイル監視機能について:
- 新しいログファイル(
.jsonl)が追加されると、自動的にデータベースに同期されます - スキャン間隔で定期的にファイルシステムをチェックします
- デバウンス時間により、短時間の連続同期を抑制して負荷を軽減します
- デフォルトは無効です(既存動作への影響を最小化)
# カスタムポートで起動
PORT=3000 ./bin/ccloganalysis
# 開発モード(CORS有効)
ENABLE_CORS=true go run ./cmd/server/main.go
# カスタムプロジェクトディレクトリとDB
CLAUDE_PROJECTS_DIR=/custom/path DB_PATH=/custom/db.sqlite ./bin/ccloganalysis
# ファイル監視を有効化(15秒ごとにスキャン)
ENABLE_FILE_WATCH=true ./bin/ccloganalysis
# ファイル監視を有効化(カスタム間隔: 30秒ごと、デバウンス: 10秒)
ENABLE_FILE_WATCH=true FILE_WATCH_INTERVAL=30 FILE_WATCH_DEBOUNCE=10 ./bin/ccloganalysis| エンドポイント | メソッド | 説明 |
|---|---|---|
/api/health |
GET | ヘルスチェック |
/api/projects |
GET | プロジェクト一覧を取得 |
/api/sessions |
GET | セッション一覧を取得(クエリパラメータ: project) |
/api/sessions/{project}/{id} |
GET | セッション詳細を取得 |
/api/analyze |
POST | ログ解析を実行(DB版:同期実行) |
# ヘルスチェック
curl http://localhost:8080/api/health
# プロジェクト一覧
curl http://localhost:8080/api/projects
# セッション一覧(全プロジェクト)
curl http://localhost:8080/api/sessions
# セッション一覧(特定プロジェクト)
curl "http://localhost:8080/api/sessions?project=my-project"
# セッション詳細
curl http://localhost:8080/api/sessions/my-project/session-id
# ログ解析・同期(DB版のみ)
# 全プロジェクトを同期
curl -X POST http://localhost:8080/api/analyze
# 特定プロジェクトを同期
curl -X POST http://localhost:8080/api/analyze \
-H "Content-Type: application/json" \
-d '{"projectNames":["my-project"]}'Claude Codeのログは以下の場所に保存されています:
- macOS/Linux:
~/.claude/projects/ - Windows:
C:\Users\{username}\.claude\projects\
各プロジェクトごとにフォルダが作成され、セッションIDの.jsonlファイルとして保存されます。
データベース版では、ファイルシステム上のJSONLログをSQLiteデータベースに同期して管理します。
利点:
- 高速なクエリ実行
- 複雑な集計・分析が可能
- 将来的な拡張機能(統計、エラーパターン検出など)の基盤
すべての操作はSQLiteデータベースを通じて実行されます。
Phase 1(実装済み):
projects: プロジェクト情報sessions: セッション基本情報とトークン集計model_usage: モデル別トークン使用量log_entries: ログエントリmessages: メッセージ本文(検索用)tool_calls: ツール呼び出し履歴
Phase 2(スキーマのみ、実装は将来):
project_groups,project_group_mappings: Gitワークツリー対応error_patterns,error_occurrences: エラーパターン検出period_statistics: 期間別統計キャッシュ
初回起動時、データベースが空の場合は自動的にログを同期します。
手動で再同期したい場合は /api/analyze エンドポイントを使用できます:
# サーバー起動
./bin/ccloganalysis
# ログを手動で再同期(全プロジェクト)
curl -X POST http://localhost:8080/api/analyze同期の挙動:
- 既存のセッションは自動的にスキップ(重複なし)
- 新しいセッションのみがDBに追加される
- エラーが発生しても処理は継続される
重要: 一度データベースに取り込まれたデータは、自動的に削除されることはありません。
具体的な挙動:
-
ワークツリーが削除された場合
- ディスクからワークツリーのディレクトリを削除しても、データベース内のデータは保持されます
- 削除されたワークツリーのセッション履歴も引き続き閲覧可能です
- グループ一覧では、名前に"worktree"を含むグループは自動的に非表示になります
- グループ詳細ページでは、削除済みワークツリーのプロジェクトも表示されます
-
ログファイルが削除された場合
- Claude Codeのログファイル(
.jsonl)が日数経過で削除されても、データベース内のデータは影響を受けません - すでに取り込まれたセッションは永続的に保持されます
- Claude Codeのログファイル(
-
データのクリーンアップ
- 現在、自動クリーンアップ機能はありません
- 不要なデータを削除したい場合は、手動でデータベースファイルを削除して再構築してください
メリット:
- 過去のすべてのセッション履歴を保持できる
- 削除されたワークツリーのデータも分析可能
- ログファイルのローテーション後もデータが残る
注意点:
- データベースサイズは時間とともに増加し続けます
- 定期的にデータベースファイルを確認し、必要に応じて再構築することを推奨します
デフォルトのデータベースパス:
- macOS/Linux:
~/.claude/ccloganalysis.db - Windows:
C:\Users\{username}\.claude\ccloganalysis.db
環境変数 DB_PATH でカスタマイズ可能です。
- プロジェクト初期化
- JSONLログパーサー実装
- REST API実装
- プロジェクト一覧
- セッション一覧
- セッション詳細
- 解析実行
- テストコード作成(50+件)
- React UI基本実装
- プロジェクト一覧ページ
- セッション一覧ページ
- セッション詳細ページ
- 会話履歴の閲覧
- トークン使用量の可視化(グラフ)
- Go embedでフロントエンド統合(1バイナリ配布)
- SQLiteデータベース層実装
- スキーマ定義(Phase 1 & 2)
- プロジェクト・セッションCRUD
- ファイルシステム→DB同期機能
- 環境変数による切り替え機能
- 包括的なテストカバレッジ
- エラーパターン検出(DB基盤は実装済み)
- 期間別統計(DB基盤は実装済み)
- プロジェクトグループ機能(DB基盤は実装済み)
- メッセージ全文検索(FTS)
- 要約機能(Claude API連携)
- エクスポート機能
(未定)
(未定)