📝

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連携

参考記事
https://zenn.dev/sc30gsw/articles/ff81891959aaef
https://zenn.dev/rescuenow/articles/0e0b501374eacb

リポジトリ

皆さんのAI支援開発ツール選択の参考になれば幸いです!

Discussion