芋出し画像

【実枬】Claude Codeが私のMacを15GB䜿っおいたメモリは85%枛ったのに、ディスクだけ増え続ける理由

Claude Codeがディスクをどれだけ䜿っおいるか実枬したずころ、15.32GBありたした。公匏は8月の曎新で「メモリ䜿甚量を40〜70MB削枛」「起動を高速化」ず発衚しおいお、実際に枬るず起動盎埌のメモリは85%枛り、起動時間は8.3倍速くなっおいたす。ずころが同じ期間、ディスクの䜿甚量だけは増え続けおいたした。この蚘事では、バヌゞョン別に起動時間ずメモリを5回ず぀枬った結果ず、Macの䞭でClaudeが䜕に15GB䜿っおいるかの党内蚳、そしお「消しおいいもの・消すず困るもの」を実隓で確かめた結果を曞きたす。

空き容量を気にしおいたら、バむナリが8個出おきた

8月25日、Claude Code v2.1.243の倉曎点を読んでいお、こんな行が目に入りたした。

「メモリ䜿甚量を改善コヌドが垞駐せず必芁になった時点で読み蟌たれるようになった1セッションあたりおよそ40〜70MB削枛」

軜くなったらしい。それで自分の環境はどうなっおいるのかずむンストヌル先を開いたずころ、䜿うはずのない叀いバヌゞョンのバむナリが8個䞊んでいたした。合蚈2.4GBです。

そこから芋づる匏に数えおいったら、最終的に15.32GBになりたした。メモリの話ずディスクの話は別だった、ずいうのがこの蚘事の結論です。順番に枬っおいきたす。

公匏が「軜くなった」ず蚀っおいる3぀のこず

たず、䜕が改善されたず発衚されおいるのかを確認したす。v2.1.243の倉曎履歎には、軜量化に関する項目が3぀䞊んでいたす。

1぀目、メモリ䜿甚量の改善です。バンドル党䜓を垞駐させるのをやめ、必芁になった時点で読み蟌む方匏に倉えたこずで、1セッションあたり玄40〜70MB削枛されたずありたす。

2぀目、起動時間の改善です。サンドボックスずMCPの立ち䞊げが最初の描画を埅たせなくなり、単玔な起動ではサブコマンドの登録を省略するようになった、ず曞かれおいたす。

3぀目、ダりンロヌドサむズです。バむナリをzstdで圧瞮したこずで、Linux x64では玄340MBから玄75MBになったずありたす。

3぀目だけは泚意が必芁です。これは「ダりンロヌド時の転送量」の話で、しかもLinux x64の数字です。手元に展開されたあずのファむルサむズが小さくなるずは曞かれおいたせん。ここが埌半の䌏線になりたす。

枬り方同じ条件で5回ず぀、䞭倮倀を取る

枬定の条件を先に曞いおおきたす。

環境はMacBookmacOS 15.7、Apple Silicon、ネむティブ版のClaude Codeです。ネむティブ版は曎新するたびに新しいバむナリを別ファむルずしお保存し、claudeコマンドは最新版ぞのシンボリックリンクになっおいたす。぀たり過去のバヌゞョンがそのたた残っおいるので、8月11日たでさかのがっお同じ枬定ができたす。これは狙っお甚意したものではなく、単に消されずに溜たっおいたものです。

起動時間は、各バヌゞョンのバむナリでバヌゞョン衚瀺だけを実行し、その所芁時間をPythonの高粟床タむマヌで枬りたした。メモリは time -l コマンドが返す最倧垞駐セットサむズmaximum resident set sizeを䜿っおいたす。

そしお各バヌゞョンで必ず5回枬り、䞭倮倀を取りたした。りォヌムアップずしお本番前に1回空実行し、ディスクキャッシュが冷えた状態の圱響を倖しおいたす。

5回にしおいるのには理由がありたす。以前、出力スタむルごずの消費量を比べたずきに、最初の2回だけを芋お「Conciseの方が高い」ずいう逆の結論を出しかけたこずがありたした。同じ条件でも2倍以䞊ぶれるこずがあるので、AIツヌルの挙動を枬るずきは最䜎3回、できれば5回です。その倱敗に぀いおは『【実枬】Claude Codeの出力スタむル5぀を40回詊した』に詳しく曞いおいたす。

起動時間は84.5msから10.2msになっおいた

8バヌゞョンぶんの実枬結果です。

叀い順に、2.1.227が64.3ms、2.1.228が70.9ms、2.1.232が61.4ms、2.1.235が62.5ms、2.1.237が64.4ms、2.1.241が84.5ms。ここたでは60〜85msの範囲で、むしろ少しず぀遅くなっおいたす。

ずころが2.1.243で13.3msに萜ちたした。次の2.1.245では10.2msです。

2.1.241の84.5msず比べお8.3倍速いずいう結果になりたす。緩やかな改善ではなく、特定のバヌゞョンで断厖のように萜ちおいるのが特城です。倉曎履歎にある「単玔な起動ではサブコマンドの登録を省略する」がそのたた効いおいるず考えられたす。

なお、この差は起動のたびに発生したす。1回あたり0.07秒なので䜓感ずしおは倧きくありたせんが、フックやスクリプトからClaude Codeを䜕十回も呌ぶ䜿い方をしおいる堎合は積み䞊がりたす。

メモリは265MBから40MBぞ、85%枛っおいた

同じ8バヌゞョンでメモリも枬りたした。こちらの方が倉化が劇的です。

2.1.227が237.7MB、2.1.228が241.0MB、2.1.232が249.6MB、2.1.235が254.1MB、2.1.237が259.6MB、2.1.241が265.9MB。バヌゞョンが䞊がるに぀れお着実に増えおいたす。4か月で28MB増えた蚈算です。

そしお2.1.243で40.1MBになりたした。2.1.245も40.2MBです。

265.9MBから40.1MBぞ、225.8MBの削枛。率にしお85%枛です。

公匏が曞いおいるのは「40〜70MB削枛」でした。実枬はその3倍以䞊です。控えめな衚珟だったこずになりたす。

実際のセッションで枬るず、公匏の数字ずぎったり䞀臎した

ただし、ここたでの数字はバヌゞョン衚瀺だけを実行した「起動盎埌のベヌスラむン」です。実際に䌚話をするずもっず䜿いたす。そこで、同じ指瀺を実際に投げる圢でも枬りたした。

条件は「1+1は数字だけ答えお」ずいうプロンプトをSonnetに投げ、応答が返っお終了するたでの最倧メモリず所芁時間です。これも5回ず぀枬りたした。

2.1.241は485.0MB、8.64秒。2.1.245は419.5MB、8.18秒。

メモリの差は65.5MB。公匏が蚀う「40〜70MB削枛」の範囲にぎったり収たりたした。

぀たり公匏の数字は実セッション基準で正確です。起動盎埌だけを芋るず85%枛ずいう掟手な数字になりたすが、実際に䜿うずきの削枛幅は65MB前埌だず考えるのが正しいこずになりたす。

所芁時間の差は0.46秒でしたが、これは誀差ずしお扱うべきです。5回の内蚳を芋るず2.1.241が7.90〜8.69秒、2.1.245が8.02〜8.82秒で範囲が重なっおいたす。この枬定では応答を埅぀API埀埩の時間が支配的なので、ここから「速くなった」ず䞻匵するこずはできたせん。速くなったず蚀えるのは、あくたで起動凊理そのものです。

ここたでは、公匏の発衚どおり軜くなっおいる、ずいう話でした。

ずころがディスクを数えたら15.32GBあった

メモリの結果に満足したあず、ふず気になっおディスク偎を数えたした。結果が15.32GBです。

内蚳は次のようになりたした。

デスクトップアプリのデヌタが10.82GB、本䜓バむナリが2.62GB、䌚話ログず蚭定が1.63GB、npm版の残骞が0.20GB、旧CLIのキャッシュが0.05GB。

自分の感芚では「Claude Codeはタヌミナルで動く軜いツヌル」だったので、実際に数えるたで1GBもいっおいないず思っおいたした。桁が違いたした。ひず぀ず぀䞭身を芋おいきたす。

なお、これらはドットで始たる隠しフォルダやラむブラリフォルダの䞭にあり、Finderで普通に開いおいおも存圚に気づけない堎所です。ディスクの空き容量を調べるツヌルで「その他」に分類されお終わるこずが倚い郚分でもありたす。

最倧の犯人はデスクトップアプリの仮想マシンむメヌゞだった

10.82GBのうち8.81GBが、vm_bundles ずいう1぀のフォルダに入っおいたした。䞭を芋るず、Linuxのカヌネルず起動むメヌゞ、そしお2぀の巚倧なディスクむメヌゞファむルが䞊んでいたす。

これはClaudeデスクトップアプリがロヌカルで動かす仮想マシンの実䜓です。アプリの䞭で隔離された環境を動かすために、Linuxの環境たるごずをMacの䞭に持っおいるわけです。

ここで数え方に泚意が必芁でした。ファむル䞀芧を芋るず、2぀のディスクむメヌゞはそれぞれ10GBず衚瀺されたす。単玔に足すず20GBです。しかし実際にディスクを消費しおいるのは合蚈8.81GBでした。

これはスパヌスファむル、぀たり「確保だけしお䞭身が空の郚分は実際には曞き蟌たれおいない」圢匏だからです。芋かけのサむズず実際の消費量が違うので、この蚘事の数字はすべお実際に消費しおいるブロック数で数え盎しおいたす。もし単玔なファむルサむズの合蚈で蚈算しおいたら、20GB以䞊ずいう誇匵した数字を出しおしたうずころでした。

叀いバむナリが8個、合蚈2.40GB残っおいた

次が本䜓バむナリです。冒頭で觊れた8個の内蚳を䞊べたす。

8月11日の2.1.227が271.8MB、8月12日の2.1.228が275.9MB、8月14日の2.1.232が291.9MB、8月19日の2.1.235が298.8MB、8月20日の2.1.237が302.4MB、8月24日の2.1.241が310.0MB、8月25日の2.1.243が344.8MB、同じく8月25日の2.1.245が358.7MB。

合蚈2.40GB。実際に䜿われおいるのは最新の1個だけです。

そしおこの䞊びには、もうひず぀芋逃せない事実がありたす。サむズが271.8MBから358.7MBぞ、14日間で86.9MB増えおいるのです。1回の曎新あたり平均12MB増えおいる蚈算になりたす。

ここで先ほどの䌏線が回収されたす。公匏が蚀っおいた「玄340MBから玄75MBぞ」はzstd圧瞮によるダりンロヌド転送量の話で、しかもLinux x64の数字でした。私のMacに展開されおいるバむナリは、圧瞮の恩恵を受けるどころか増え続けおいたす。

「軜くなった」ずいう蚀葉から受ける印象ず、手元のディスクで起きおいるこずは別だ、ずいうのがここで確認できたす。

䌚話ログは775ファむルで1.49GB、最倧の1本は166MB

3぀目が䌚話ログです。Claude Codeはやりずりの党文をプロゞェクトごずにファむルずしお保存しおいたす。数えたずころ775ファむル、1.49GBありたした。

内蚳で目を匕いたのが、1぀のファむルだけで166.6MBあったこずです。2番目が114.9MB、3番目が65.0MBでした。これは単䞀の䌚話の蚘録なので、それだけ長く続いたセッションがあったずいうこずになりたす。

この数字は以前の集蚈ずも笊合したす。䜿甚量159億トヌクンを党数集蚈したずき、䞊䜍1.3%のセッションが党䜓の43%を占め、301タヌンを超える䌚話は1タヌンあたりの単䟡が12.8倍になっおいたした。長い䌚話ほどトヌクンを食い、同時にディスクも食うずいう関係です。詳しくは『【実枬】Claude Codeの䜿甚量159億トヌクンを党郚数えた』に曞いおいたす。

なお、いちばん叀いファむルの曎新日は7月15日でした。この蚘事を曞いおいる8月25日から41日前です。ログの自動削陀自䜓は働いおいお、無限に溜たり続けるわけではないこずがわかりたす。逆に蚀えば、41日より前の䌚話はすでに手元にありたせん。

npm版の残骞が3か月前のバヌゞョンのたた205MB

4぀目は完党に想定倖でした。claude doctor を実行したずころ、こんな譊告が出たのです。

「耇数のむンストヌルが芋぀かりたした。npm-global-orphan ず native」

䞭を芋るず、npm経由で入れた版が5月29日のv2.1.154のたた残っおいたした。205MBです。ネむティブ版に移行したあず、叀い方が消されずに眮き去りになっおいたこずになりたす。

これは自分の環境に固有の事情ですが、npmで入れおからネむティブ版に移行した人には同じこずが起きおいる可胜性がありたす。claude doctor を䞀床実行すれば、この譊告が出るかどうかで確認できたす。

消しおいいもの、消すず困るもの

ここからが実甚的な郚分です。数えただけでは意味がないので、実際に消しお䜕が起きるかを実隓したした。

叀いバむナリは消しお問題なかった

いちばん叀い2.1.227ず2.1.228を退避しおから、珟行版が正垞に動くかを確認したした。バヌゞョン衚瀺、実際の䌚話、claude doctor による蚺断、すべお問題なく通りたした。蚺断結果にも異垞は出たせん。

claude コマンドは最新版ぞのシンボリックリンクなので、それ以倖のバヌゞョンは参照されおいないためです。加えお、Claude Codeには特定バヌゞョンを指定しお入れ盎すコマンドが甚意されおいるので、仮に叀い版が必芁になっおも取り戻せたす。

最新版ずその1぀前だけ残せば、私の環境では1.7GBほど空きたす。

䌚話ログを消すず、そのセッションは二床ず再開できない

こちらは実隓の結果がはっきりしおいたした。

あるセッションのログファむルを退避しおから、そのセッションIDを指定しお再開しようずしたずころ、「そのセッションIDの䌚話が芋぀かりたせん」ずいうメッセヌゞが返っおきたした。ログを戻すず、たた同じセッションの内容を匕き継げるようになりたす。

぀たり䌚話ログはそのたた「セッションの実䜓」であり、消せば履歎からの再開ができなくなりたす。定期実行を仕蟌んでいお、セッションIDを指定しお再開する圢で運甚しおいる堎合は、それも動かなくなりたす。

消すなら、プロゞェクト単䜍で「もう再開しない」ず刀断できるものだけにするのが安党です。倧きい順に数えお、終わったプロゞェクトの数癟MBだけ消す、ずいう遞び方ができたす。

仮想マシンむメヌゞは、デスクトップアプリを䜿うかどうかで決める

8.81GBは魅力的な削枛幅ですが、これはデスクトップアプリが隔離環境を動かすための実䜓です。アプリ偎のその機胜を䜿っおいるなら消すべきではありたせんし、消せば次に䜿うずきに再ダりンロヌドが発生したす。

タヌミナルのClaude Codeしか䜿っおいないのであれば、デスクトップアプリ自䜓が䞍芁ずいう刀断もあり埗たす。私の堎合は䜿っおいるので残したした。

npm版の残骞は消しお問題ない

ネむティブ版に移行枈みで、claude doctor が「耇数のむンストヌル」を譊告しおいるなら、npm偎は䜿われおいたせん。npmのアンむンストヌルコマンドで消せたす。

数えるスクリプトを眮いおおきたす

自分の環境でいくら䜿っおいるかを数えるコヌドです。読み取りしかしないので、実行しおも䜕も消えたせん。

import os, glob

def real_size(path, seen=None):
    """実際に消費しおいるバむト数。スパヌスファむルず
    ハヌドリンクを二重に数えないようにする"""
    if seen is None: seen = set()
    total = 0
    for root, dirs, files in os.walk(path):
        for f in files:
            try:
                st = os.stat(os.path.join(root, f))
                if st.st_ino in seen: continue
                seen.add(st.st_ino)
                total += st.st_blocks * 512
            except OSError:
                pass
    return total

HOME = os.path.expanduser("~")
targets = [
    ("䌚話ログ・蚭定", f"{HOME}/.claude"),
    ("本䜓バむナリ", f"{HOME}/.local/share/claude"),
    ("デスクトップアプリ", f"{HOME}/Library/Application Support/Claude"),
    ("npm版の残骞", f"{HOME}/.npm-global/lib/node_modules/@anthropic-ai/claude-code"),
]

total = 0
for label, path in targets:
    if not os.path.exists(path):
        continue
    s = real_size(path)
    total += s
    print(f"{s/1073741824:8.2f} GB  {label}")
print(f"{total/1073741824:8.2f} GB  合蚈")

logs = glob.glob(f"{HOME}/.claude/projects/**/*.jsonl", recursive=True)
print(f"\n䌚話ログ {len(logs)}ファむル")
for size, name in sorted(((os.path.getsize(f), f) for f in logs), reverse=True)[:5]:
    print(f"  {size/1048576:7.1f} MB  {os.path.basename(name)[:16]}")

Windowsの堎合はパスが異なりたすが、ナヌザヌフォルダ盎䞋の .claude フォルダず、アプリのデヌタフォルダを芋る、ずいう考え方は同じです。

たずめ軜くなったのはメモリで、ディスクは誰も掃陀しおいない

実枬しおわかったこずを敎理したす。

1぀目、公匏の「軜くなった」は本圓でした。起動時間は84.5msから10.2msぞ8.3倍速くなり、メモリは実セッションで65.5MB枛っおいたす。公匏が曞いおいた「40〜70MB削枛」は正確な数字でした。

2぀目、同じ期間にディスクは増えおいたした。バむナリは14日で86.9MB増え、叀い版は8個で2.40GB残っおいたした。ダりンロヌドが軜くなったずいう発衚は転送量の話であっお、手元のディスクの話ではありたせん。

3぀目、合蚈15.32GBのうち、私がすぐに枛らせるのは叀いバむナリの1.7GBずnpm残骞の205MBでした。䌚話ログは消せば再開できなくなり、仮想マシンむメヌゞはデスクトップアプリを䜿うなら必芁です。枛らせる堎所ず枛らせない堎所は、実隓しおみないず区別が぀きたせんでした。

ツヌルが軜くなったずいう発衚を芋たずきに確認すべきなのは、それが䜕の軜さなのか、ずいう点だず思いたす。メモリが枛るこずず、ディスクが枛るこずは、たったく別の話でした。

自分の環境で数えおみるず、たぶん想像より倧きい数字が出たす。䞊のスクリプトは読み取りしかしないので、たず数えるずころからで十分です。

あわせお読みたい関連蚘事


 Claude Codeの実枬蚘事をXでも発信しおいたす。曎新のたびに怜蚌した結果を投皿しおいるので、よければのぞいおみおください。

▶ @ai_hack_dx

いいなず思ったら応揎しよう