Claude Codeでニュース配信ツール開発:Serena連携でトークン消費量が1.7倍になった話
⚠️ 追記(2025年8月6日)
本記事の検証について、再分析を行いました。その結果、トークン消費量の差の原因はSerena連携そのものではなく、選択された技術スタックの違いにあったことに気づきました。
修正版の詳細記事はこちら:
👉 【検証修正】Serena連携でトークン消費量1.7倍の真因:技術スタック選択の違い
修正版で判明したポイント
- 同じ要件なのに、Serena連携版はNext.js + React、非連携版はNode.js + TypeScriptで実装されていた
- 過去のフロントエンドプロジェクトの文脈をSerenaが参照したことが原因
Claude Code + Serena利用時の対策も提案しています。ぜひ修正版もご一読ください。
はじめに
Claude Codeを使って同じニュース配信ツールを2つの方法で開発してみました。一つは話題のMCP Serena連携あり、もう一つは従来の方法。同じ要件定義書を読み込ませて開発したにも関わらず、トークン消費量に約1.7倍の差が出たので、その詳細をレポートします。
開発者の皆さんにとって、AI支援ツールのコスト感覚は重要な判断材料になると思うので、実際の数値と体験を共有します。
開発したもの
今回開発したのは「テックニュース自動配信ツール」です。英語圏のテック系ニュースを自動収集し、AI翻訳・要約してSlackに配信するシステムで、以下の機能を持ちます:
主要機能
- 複数メディア(TechCrunch、The Verge、Ars Technica等)からRSS取得
- 重要度判定による記事選別(1日5-10記事)
- Google Translate APIによる日本語翻訳・要約
- Slack自動配信(毎朝8時)
- エラーハンドリング・リトライ機能
要件定義書は約1,500文字程度で、機能要件から非機能要件まで詳細に記載したものを用意しました。
2つのアプローチ
開発プロセス
どちらのアプローチでも、指示したプロンプトはシンプルに以下の2回のみでした:
1回目: 「tech_news_requirements(要件定義)を読んでみて」
2回目: 「この要件定義をもとに開発を進めて」
※要件定義書自体は事前にClaude(通常のチャット)で作成したものを使用
Serena連携あり
MCPのSerenaとは?
SerenaはAI(特にLLM)と連携してコードの文脈を効果的に理解させるオープンソースのMCP(Model Context Protocol)サーバー兼ツールキットです。Claude CodeのようなAIコード支援ツールの性能向上を目的としています。
開発プロセス
- Serenaがプロジェクト全体の文脈を常に把握
- ファイル間の関係性や依存関係を理解した提案
- より詳細なコード説明やコメントが生成される傾向
Serena連携なし
従来のClaude Code使用
- 要件定義書のみを参照した開発
- ファイル単位での逐次的な実装
- より直接的なコード生成
開発プロセスの体感的違い
正直なところ、開発時の体感的な違いはそれほど感じませんでした。どちらも要件を満たすコードが効率的に生成され、開発速度に大きな差は感じられませんでした。
結果:トークン消費量の違い
実際の測定結果がこちらです:
| 項目 | Serena連携あり | Serena連携なし | 差分 |
|---|---|---|---|
| Input Tokens | 46 | 80 | -34 (-43%) |
| Output Tokens | 27,731 | 15,156 | +12,575 (+83%) |
| Cache Create | 61,089 | 37,467 | +23,622 (+63%) |
| Cache Read | 1,330,900+ | 766,915 | +563,985+ (+74%) |
| Total Tokens | 1,419,778 | 819,618 | +600,160 (+73%) |
| コスト | $1.04 | $0.60 | +$0.44 (+73%) |
興味深いポイント
- Total Tokens: Serena連携で約1.73倍に増加(1,419,778 vs 819,618)
- Cache Create: Serena連携でキャッシュ作成量が大幅増加(61,089 vs 37,467)
- Cache Read: Serena連携でキャッシュ読み込みが大幅増加(130万+ vs 77万トークン)
-
Input Tokens: Serena連携でトークン消費量が少ない(46 vs 80)
コード品質の比較
生成されたコードを比較すると、以下の違いが見られました:
Serena連携あり
- 言語: JavaScript (Node.js)
- ファイル構成: より詳細なディレクトリ構造
- 設定管理: config.jsで集中管理
- エラーハンドリング: 包括的なログ記録システム
- ドキュメント: 非常に詳細なREADME
Serena連携なし
- 言語: TypeScript
- ファイル構成: モダンなクラスベース設計
- 型安全性: TypeScriptによる型定義
- 設定管理: よりシンプルな構成
- ドキュメント: 簡潔で実用的なREADME
どちらも動作する品質のコードでしたが、Serena連携版はより「説明的」で、非連携版はより「モダン」な実装になっていました。
なぜこの差が生まれるのか?
たった2回のシンプルなプロンプトで、なぜこれほどの差が生まれるのでしょうか?
1. 文脈情報の豊富さ
- Serenaがプロジェクト全体の文脈を提供するため、より詳細な説明が必要
- ファイル間の関係性や設計意図の説明が増加
2. コード生成の詳細度
- Serena連携時はより詳細なコメントや説明が生成される
- エラーハンドリングやログ機能がより包括的に実装される
結論:どちらを選ぶべきか?
Serena連携がおすすめな場合
- 大規模プロジェクトで文脈理解が重要
- 詳細なドキュメントや説明が必要
- コスト増(約1.8倍)を許容できる
- 包括的なエラーハンドリングを重視
従来方法がおすすめな場合
- コストを抑えたい(特に頻繁に使用する場合)
- シンプルで軽量な実装で十分
- TypeScriptなどモダンな技術スタックを優先
- プロトタイプや小規模プロジェクト
まとめ
たった2回のシンプルなプロンプト(「要件定義を読んでみて」「開発を進めて」)だけで、Serena連携の有無でトークン消費量が約1.73倍になることが分かりました。しかし、どちらも実用的なコードが生成され、開発効率に大きな差は感じられませんでした。
選択の基準
- コスト重視 → 従来のClaude Code
- 文脈理解・詳細性重視 → Serena連携
参考記事
リポジトリ
皆さんのAI支援開発ツール選択の参考になれば幸いです!
Discussion