5
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

新人のClaude Codeくんに日報を書かせようとしたら、プラガブルで汎用的なJSONLストリーム処理サーバーができた話

Last updated at Posted at 2025-07-10

先日の記事 の更新版です。npmモジュールにしたので書き直しました。

👋 はじめに:我が家の新人Claude Codeくん

みなさん、Claude Code使ってますか?

我が家(開発環境)に新しく配属された新人エンジニアのClaude Codeくん。とても優秀で作業も早いんですが、1つだけ困ったことが...

「日報を書いてくれないんです」

毎日夕方になると:

  • 「今日何やったっけ...」と記憶を辿る羽目に
  • GitHubのコミット履歴を見返す
  • Slackの履歴を漁る
  • 手動でMarkdownに整形...

気づけば30分経過。新人の面倒を見るのも大変です。

でも、ある日~/.claude/projects/を覗いてみると...

「お、新人、ちゃんとログ残してるじゃん!」

JSONL形式で作業ログが自動保存されていました。この宝の山を活用しない手はない!

そして作ったのが 「cctailpipe」 です。

🎯 当初の目的:新人Claude Codeくんの日報作成

Claude CodeのJSONLログを監視して、リアルタイムで日報や開発記録を自動生成するストリーム処理システム

つまり、新人のClaude Codeくんが作業している限り、勝手に日報ができあがるんです。

...これで終わると思ってたんです、最初は。

📈 「もっと高度な管理をしたい」- マネージャーの次々と出てくる要求

ステップ1: 「リアルタイムで作業内容を知りたい」

マネージャー:「Claude Codeくんが今何してるか、リアルタイムで分かるようにして」

:「え、新人の監視ですか...?」

マネージャー:「監視じゃなくて見守りだよ。先輩として心配なんだ」

chokidarでファイル監視機能を追加(優しい先輩の見守り機能)

ステップ2: 「エラーの対応履歴も別管理して」

マネージャー:「Claude Codeくんのエラー対応力を評価したいから、エラー系だけ別ファイルに出力して」

:「新人の成長記録ですね、分かりました」

フィルタリング機能を追加(新人の成長を記録する機能)

ステップ3: 「重大エラーは即座に報告させて」

マネージャー:「Claude Codeくんが大きなミスしたらSlackで即座に知らせて。フォローしてあげたいから」

:「それ、パワハラじゃ...まあ、新人のためですよね」

Slack通知機能を追加(新人のSOSを拾う機能)

ステップ4: 「他の新人AIにも使えるようにして」

マネージャー:「GitHub Copilotくんも来月入社予定だから、このシステムを汎用化しておいて」

:「もはや新人教育システムじゃん...」

プラグインシステムの誕生!(どんな新人AIでも対応可能に)

ステップ5: 「分析レポートも自動生成してほしい」

マネージャー:「週次でClaude Codeくんの成長レポートを役員に報告したいから、グラフとか作って」

:「えっ、それもですか...」

複数出力プラグイン対応(レポート生成機能)

ステップ6: 「設定をもっと簡単にしたい」

マネージャー:「毎回設定ファイル書くの面倒だから、もっと簡単に設定できるようにして」

:「もう何のシステムか分からない...」

設定管理システムの拡張(もはや何でもできるように)

結果: 気づいたら「新人Claude Codeくんの日報作成」→「汎用JSONLストリーム処理サーバー」に進化!

つまり、新人のClaude Codeくんが作業している限り、勝手に日報ができあがるんです。

📊 使ってみた結果:新人管理が激変

😓 Before(手動日報作成時代)

17:30 「Claude Codeくん、今日何やった?」
17:35 「え、覚えてない?GitHubのPR確認するから待って」
17:40 「Slackの履歴も見てみよう」
17:45 「あー、そういえばこのタスクもやってたね」
17:50 「手動でMarkdownに整形...」
18:00 「やっと日報完成...疲れた」

😄 After(cctailpipe導入後)

17:30 「Claude Codeくん、今日の日報どう?」
17:30 ./output/markdown/ を確認
17:31 「お、要約が溜まってる!さすが新人」
17:32 「最終調整もClaude君にお願い」
17:33 「完璧な日報完成!」

新人管理時間:30分 → 3分

💼 実際の新人Claude Codeくんとの作業フロー

1. 💻 Claude Codeくんの日常業務

# 新人Claude Codeくんの普通の1日
claude-code
> APIエンドポイントを実装してください
> テストを追加してください
> デプロイ設定を確認してください

「今日もClaude君、よく頑張ってるなぁ」

2. 📝 /compact で新人の作業要約

# 長時間作業後、コンテキスト制限に達すると
/compact

「お、Claude君がセッション要約してる。几帳面だね」

3. 📋 Claude君の詳細な作業報告が蓄積される

This session is being continued from a previous conversation that ran out of context. The conversation is summarized below:
Analysis:
Looking through the conversation chronologically:

....

Summary:
1. Primary Request and Intent:
   ....

2. Key Technical Concepts:
   ....

3. Files and Code Sections:
   ....

4. Errors and fixes:
   ....

5. Problem Solving:
   ....

6. All user messages: 
   ....

7. Pending Tasks:
   ....

8. Current Work:
   ....

9. Optional Next Step:
   ....

「Claude君、こんなに詳しく記録してたのか!」

4. 📄 Claude君に最終的な日報作成をお願い

> output/markdown内の今日のファイルを全て読み込み、本日の私の作業日報を作成してください。
特に `All user messages` や `Problem Solving` の項目等を意識して、作業中に発生した課題をわかるようにしてください。

すると、Claude君が立派な日報を作成:

# 開発記録 - 2024-07-09

## 今日の作業内容

### APIエンドポイントの実装
- ユーザー認証エンドポイント `/api/auth` を実装
- JWTトークンの生成・検証ロジックを追加
- バリデーション処理の強化

### テスト追加
- 認証フローのユニットテスト実装
- 統合テストの追加
- テストカバレッジ95%を達成

### デプロイ設定
- Docker設定の最適化
- 環境変数の整理
- CI/CDパイプラインの改善

## 解決した課題
- TypeScript型エラー3件を修正
- パフォーマンス問題を解決(レスポンス時間50%改善)

---
*この記録はClaude Codeの作業ログから自動生成されました*

「Claude君、キミ最高だよ!」

🚀 新人教育ツール導入3ステップ

ステップ1:📦 ツールのインストール

パターンA: グローバルインストール

npm install -g cctailpipe

パターンB: npxで直接実行(推奨)

# インストール不要で即座に試せる
npx cctailpipe@latest

ステップ2:⚙️ 新人管理設定ファイル作成

{
  "watchDirectory": "~/.claude/projects",
  "pipelines": [
    {
      "name": "claudeDailyReport",
      "filter": "compactSummaryFilter",
      "outputs": ["markdownOutput"]
    }
  ],
  "plugins": {
    "filters": [
      {
        "name": "compactSummaryFilter",
        "module": "cctailpipe/dist/plugins/filters/FieldMatchFilterPlugin.js",
        "options": {
          "field": "isCompactSummary",
          "value": true,
          "operator": "equals"
        }
      }
    ],
    "outputs": [
      {
        "name": "markdownOutput",
        "module": "cctailpipe/dist/plugins/outputs/MarkdownOutputPlugin.js",
        "options": {
          "outputDir": "./claude-reports",
          "markdownField": "message.content",
          "mode": "multiple"
        }
      }
    ]
  }
}

ステップ3:🚀 新人監視システム起動

グローバルインストールした場合:

cctailpipe config.json

npxで実行する場合:

npx cctailpipe@latest config.json

これだけ!

あとはClaude Codeくんが普通に開発するだけ。セッションが長くなって/compactが実行されるたびに、自動で日報が蓄積されます。

🌟 npx使用のメリット

  • インストール不要: システムを汚さず即座に試せる
  • 常に最新版: @latestで最新機能を利用
  • お試し利用: 気に入ったらグローバルインストール
  • CI/CD対応: スクリプトに組み込みやすい

💭 新人Claude Codeくんの上司としての感想

😊 良かった点

  • 完全自動化: 日報作成の手間が95%削減
  • リアルタイム: 作業と同時に記録が蓄積
  • 正確性: 手動での記録漏れがない
  • 継続性: 毎日確実に記録が残る

🤔 新人管理で気をつけたい点

  • Claude Codeくんでの作業が中心の場合に最も効果的
  • /compactは本来セッション継続用の機能(副次的に活用)
  • /compactを忘れてclearすると全てを忘れてしまいます
  • 初回セットアップは多少の設定が必要

👨‍💼 こんな上司におすすめ

  • 毎日の部下の日報管理に時間を取られている
  • Claude Codeを日常的に使っている
  • 開発ログを自動化したい
  • チーム内での進捗共有を改善したい

🤔 「先輩、このシステム他でも使えませんか?」

マネージャー:「このシステム、他部署でも使いたいって言ってるよ」

:「え、Claude Codeくん専用じゃなかったでしたっけ?」

マネージャー:「営業部もサポート部もみんなAI使い始めたから、汎用的にできない?」

:「...わかりました(諦め)」

Claude Codeくんのお世話から始まったこのシステム、気づけばプラグインシステムで無限の可能性を持つように。

わずかなコードで独自の処理を追加できるんです。

🔌 簡単!独自フィルタープラグインの作成

// custom-filter.ts
import { BaseFilterPlugin } from 'cctailpipe/dist/plugins/filters/BaseFilterPlugin.js';

export default class MyCustomFilter extends BaseFilterPlugin {
  readonly name = 'MyCustomFilter';
  
  filter(record: any): boolean {
    // あなたのビジネスロジック
    return record.importance > 7 && record.status === 'completed';
  }
}

設定ファイルに追加するだけ

{
  "name": "myFilter",
  "module": "./custom-filter.js",
  "options": {}
}

🚀 実際の拡張活用例

1. 📢 Slack自動通知(チーム連携)

{
  "name": "slackOutput",
  "module": "cctailpipe/dist/plugins/outputs/HttpOutputPlugin.js",
  "options": {
    "url": "https://hooks.slack.com/services/...",
    "method": "POST",
    "headers": {
      "Content-Type": "application/json"
    }
  }
}

2. 📈 週次レポート自動生成(マネジメント向け)

{
  "name": "weeklyReport",
  "module": "cctailpipe/dist/plugins/outputs/FileOutputPlugin.js",
  "options": {
    "outputPath": "./weekly-reports/week-{{date}}.md",
    "mode": "append"
  }
}

3. 🚨 エラー専用監視(品質管理)

{
  "name": "errorFilter",
  "module": "cctailpipe/dist/plugins/filters/KeywordFilterPlugin.js",
  "options": {
    "keywords": ["error", "exception", "failed", "bug"],
    "mode": "include"
  }
}

🔌 プラグイン開発のメリット

1. 🎯 簡単な実装

  • 基底クラスを継承するだけ
  • TypeScriptの型サポート
  • 最小限のコードで高機能

2. ⚙️ 設定ベースの切り替え

  • コードを変更せずに機能ON/OFF
  • 複数の設定ファイルで環境別運用
  • チーム内でのプラグイン共有が簡単

3. 🔄 組み合わせの柔軟性

{
  "pipelines": [
    {
      "name": "criticalErrorPipeline",
      "filters": ["errorFilter", "severityFilter"],
      "outputs": ["slackAlert", "databaseOutput", "emailNotification"]
    }
  ]
}

🎯 こんなプラグインも作れそうです

  • Jira連携: 課題を自動作成
  • GitHub連携: プルリクエスト情報を統合
  • Notion連携: 開発ノートを自動更新
  • Discord通知: ゲーマー向けチーム通知
  • メール送信: 管理者向けレポート
  • CSV出力: データ分析用エクスポート
  • 画像生成: グラフ化された進捗レポート

プラグインシステムにより、あなたのチーム管理に完全にカスタマイズできます。

⚙️ 技術的な仕組み(興味がある人向け)

🏗️ アーキテクチャ概要

Claude Code → JSONLログ → cctailpipe → 日報・レポート

🛠️ 主要技術

  • Node.js + TypeScript: 型安全で高速な処理
  • chokidar: ファイル監視によるリアルタイム処理
  • プラグインシステム: 柔軟なカスタマイズ
  • ストリーム処理: メモリ効率の最適化

⚡ パフォーマンス

  • 処理速度: 10MB/秒のログ処理
  • メモリ使用量: 最小限(ストリーム処理)
  • レスポンス時間: 平均5ms以下

🎓 最後に:新人教育から得られた学び

マネージャー:「君のおかげで全社的にAI活用が進んだね。素晴らしい!」

:「最初は新人Claude Codeくんの日報作成だけだったんですけど...」

マネージャー:「それが今では部署の垣根を超えて使われてる。まさに技術の力だね」

:「でも、あれもこれもって要求が...」

マネージャー:「それは成長の証拠だよ。Claude Codeくんも君も、みんな成長した」

cctailpipeを使い始めてから、新人Claude Codeくんとの関係が変わりました。

以前: 「Claude君、また日報書き忘れてる...」(イライラ)
: 「Claude君、今日もよく頑張ったね!」(感謝)

日報は負担から新人の成長を見守る楽しみに変わったんです。

Claude君の成長や課題解決の過程が可視化されることで、教育する側のモチベーションも向上しました。

そして何より、マネージャーの無茶振りにも対応できる汎用システムができました(これが一番の成果?)

🤖 新人AI育成に興味ありませんか?

# インストール不要で今すぐ試せる!
npx cctailpipe@latest --help

あなたのAI新人も、きっと立派に成長します。


🔗 リンク


質問やフィードバックは気軽にコメントください!

一緒にAI新人教育を改善していきましょう 🚀


追伸: Claude Codeくんは今日も元気にコーディングしています。おかげで素晴らしい日報ができました。ありがとう、Claude君!

追々伸: マネージャーから「次はAI新人の勤怠管理機能も追加して」と言われました。AIの勤怠管理とは...

5
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?