0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

有料化に怒って自作したVSCode拡張が、圧縮率74%のトークン削減ツールになった話

0
Last updated at Posted at 2026-06-02

愛用ツールが有料化した日

「なんでサブスク払わないといけないんだ」という怒りが原動力です。

愛用ツールが有料化した日

ある朝、いつものようにVSCodeを開くと、課金を促すダイアログが現れた。

毎日使っていたコード圧縮系の拡張機能が、いつの間にか有料プランに移行していた。

怒りと言うほどじゃない。でも、払いたくない。 それ以上に、「これ、仕組みを理解すれば自分でも作れるんじゃないか?」 という気持ちが勝った。

これは、その顛末の記録だ。

まず「どうやって圧縮しているのか」を調べた

コードをAIに渡すとき、何が問題なのか整理すると:

  • ファイルをそのままコンテキストに突っ込む = トークンが爆発する
  • 特にRustやTSの大きいファイルは目も当てられない

主流の圧縮手法は2つあった。

① ASTベース圧縮

コードを構文木として解析し、推論に不要な部分(コメント・空白・冗長な構造)を構造的に除去する。文字列置換とは次元が違う精度。

② シンボルグラフ + BM25検索

コード内の関数・クラス・変数をグラフとして管理し、AIへの質問に関係するシンボルだけをスコアリングして引っ張る。「全部渡す」から「必要な部分だけ渡す」への転換。

「……これ、実装できるな。」

TypeScript + Rustで作ることにした

構成はシンプルに:

レイヤー 技術 役割
フロント TypeScript VSCode拡張のUI・ロジック
コア Rust ASTパース・圧縮エンジン
通信 JSON-RPC 2.0 両者のブリッジ

なぜRustか?「速い」「メモリ安全」は本当だが、正直に言うと 「Rustで何かを完成させたかった」 という動機が半分ある。

実装の大部分はAI(Claude Code)と一緒に書いた。ここで面白い事実がある。

Claude Codeに、Claude Codeのトークン代を節約するツールを書かせた。

VSCode拡張開発で2日溶かした話

vscode モジュールはNode.js環境でそのままimportできない。テストを書こうとすると即死する。

// jest.config.ts に追加するまで2日かかったおまじない
moduleNameMapper: {
  '^vscode$': '<rootDir>/__mocks__/vscode.ts'
}

調べても調べてもStackOverflowに答えがなく、結局VSCode公式リポジトリのissueを掘り続けた。AIに聞いても最初は的外れな回答しか返ってこなかった。

こういう「公式issueを掘る」スキルが、AI時代でも消えないと思っている。

W-8BENフォームという完全に想定外の障壁

「コーヒー一杯分だけ寄付ボタンをつけよう」と思った。Stripeで10分で終わる作業のはずだった。

甘かった。

Stripeの本人確認 → W-8BENフォームの提出を求められる → W-8BENとは米国の非居住外国人向け税務申告書 → IRSの公式PDFを読む羽目になる

VSCode拡張を公開するために米国の税務フォームを読む展開、誰も教えてくれなかった。

加えてMarketplace登録はAzure DevOps経由で、「なぜここでAzureが…」と何度も思った。

結果:圧縮率74%

実際に自分のリポジトリ(TypeScript + Rust混在)で計測した。

COMPRESSION RATIO: 74%

クエリあたり最大33.8Kトークンの削減。

体感ではなく、ツール上に表示される実測値だ。

有料ツールに払うはずだったお金を、道具を理解することに使った。それで74%削れたなら、悪くない結果だと思っている。

今後やること
Python・Goのサポート追加
シンボルグラフの精度向上
寄付ボタンの設置(W-8BEN、まだ格闘中)
GitHub: tsucky/comP

使ってみた感想・フィードバック・スターどれも励みになります。

0
1
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
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?