はじめに
みなさん、こんな経験はありませんか?
- 生成AIを活用しようとしたけどトークン上限がすぐ来てしまう
- Claude4.5 Sonnetなどを利用したいけど上限が来てるからautoしか選べない
私も以前このような悩みを抱えていました。
このような悩みを解決するべく調査してみました。
トークンの節約をしつつ、生産性を確保したい方に役に立てますと幸いです。
そもそもトークンって何?
費用やトークンを最適化するにあたり、まずはトークンに対する理解が欠かせません。
トークンとは、AIが処理する最小単位のことです。
人間にとっての「文字数」や「単語数」に近い概念ですが、Cursor(AI)は裏側で以下のようにカウントしています。
公式ドキュメントがかなりわかりやすく解説していますので引用して下記に示します。
コンピュータが文字「A」を理解しているのではなく、実際には2進数(1と0)で処理しているのと同様に、AIモデルも「hello」や「world」のような単語を直接扱うのではなく、すべてをトークンと呼ばれる小さな単位に分解します。
例えば「hello」は1トークンかもしれませんが、「understanding」は「under」「stand」「ing」のように複数のトークンに分割される場合があります。単語の一部や句読点、スペースが、それ自体でトークンになることもあります。
なぜトークンを意識すべきか?
Proプランでは「$20分のクレジット」という枠が与えられ、使ったモデルの単価(レート)に応じてこの残高が減っていく仕組みだからです。
トークンは何に消費する?
トークンは主に以下のもので使用されます。
- Input: ユーザーのプロンプト、添付ルール、ファイル
- Output: AIの回答、生成コード、ツール実行結果
- Cache Write: 新しくキャッシュに保存される情報
- Cache Read: 過去の履歴やコンテキストの再利用(過去の履歴を再利用する際、通常の約1/10のコストで処理)
私が行っているトークン節約術
.cursorignoreを作成する
Cursorはプロジェクト全体をインデックス(地図作成)しようとしますが、巨大なバイナリやビルドファイルが含まれると無駄なトークン消費やインデックスの肥大化を招きます。
.cursorignoreを利用すると、cursorが読み込まないファイルを指定することができます。
このファイルにAIに読み込ませる必要がないフォルダやファイルを指定することで、cursor上で生成AIを利用する際に指定したファイルを確実に読み込まなくすることができます。
# インデックスの肥大化防止
node_modules/
.git/
# 生成物の除外
dist/
build/
out/
# 巨大なデータの除外(トークン節約に効果大)
*.log
package-lock.json
ルールを作成する
生成AIは何かソースコードを出力する際、関連するファイルを参照しようとしたり、出力したソースコードに解説を入れてくれたりしてくれます。これは便利な時も多いですが、トークンの節約という観点ではあまり良くありません。
Project Rules に「解説は不要。コードのみ出力して」「修正箇所のみ提示して」と記述することで、無駄な出力をカットできます。
プロンプトで節約する
プロンプトでソースコードを生成したり、解説を求める際、影響範囲が小さくなるようにプロンプトを投げると節約になります。すべてのタスクを @Codebase で聞くと、Cursorは関連しそうなファイルを大量にAIへ送りつけ、Inputトークンを激しく消費します。
修正箇所がわかっている場合や追記したいファイルが決まっている場合、 @filename でピンポイント指定することで「AIが勝手に読む量」をコントロールできます。
チャットをタスクごとにリセットする
先ほど、キャッシュの書き込み・読み取りでトークンを使用することを説明しました。
つまり、これは一つのチャットを長く利用していると、トークンの使用量が増加することを意味しています。
何かタスクを依頼するときは必ず新しいチャットで依頼するとトークンの節約になります。
以下は私が切り替えるかどうかの基準を明文化したものです。
継続するケース
- 「さっき書いた関数のバグを取って」
- 「今のコードをリファクタリングして」
- 「関連するテストコードを書いて」
→ これらはキャッシュが効き、かつAIの文脈も一致するので「継続」
新しく作るケース
- 「別の機能(ブランチ)の修正を始めたい」
- 「さっきまでフロントエンドだったけど、次はバックエンドの設定をしたい」
→ 文脈が変わり、参照ファイルも変わるため「新規チャット」
モデルを指定せずにautoを活用する
新規機能の実装など、品質や精度が求められる作業はSonnet4.5などの高級モデルを利用したいですよね?
ですが、なんでもこのようなモデルを利用しているとすぐにリクエスト上限が来てしまうため、本来使いたいタイミングで使用できないということがありえます。
それを防ぐため、コードの解説やボイラープレートの作成など、クリエイティブな作業ではない単純作業はモデルを指定せず、autoを活用することをおすすめします。
Proプランは意外とすぐにトークンを使い切ってしまうため、細かく切り替えて利用することでトークン消費量を抑えることができます。
まとめ
私も最近本格的にCursorを利用し始めましたが、Sonnet 4.5のような高単価モデルを無計画に使うと、あっという間に「高速リクエスト枠」を使い切ってしまいます。
調査と実体験から学んだ、Proプランを賢く運用するポイントは以下の通りです。
-
勝負所は高級モデル、普段はAuto:Autoなら「高速枠」を温存しつつ、低コストなルートで作業を継続できます
-
キャッシュを味方につける:同じ文脈(ブランチやタスク単位)で会話を続けることで、コストを1/10以下に抑えられます
-
.cursorignoreで物理的に遮断:AIに無駄なファイルを読ませないことが、最速かつ確実な節約術です
今後、実務で本格的にAI開発を導入していく上で、これらの「運用視点でのトークン管理」は必須のスキルになると考えているため、トークンの過剰利用を防ぐようなルール設定をすることを課題に今後取り組んでいきたいと思います!