【170GB削減】Flutter開発でストレージ空き容量がパンパンになったときの対処法
「私の場合はこうすると空き容量を増やせました」を書きます。
▲こんな感じで容量がいっぱいになってしまった時の対処法
先に結論
結論から書くと、以下をすると合計170GBほど減らせました。
- miseを使ってる場合:
-
mise pruneする(110GB→10GB)
-
- iOSシミュレーターを使ってる場合
- XCodeの「Window → Devices and Simulators」から不要なシミュレーターを手動でポチポチ消す(たぶん100GB→50GBくらい)
- dockerを使ってる場合:
- 以下を実行する(40GB→30GB)
-
docker image prune -a(未使用のImageの削除) -
docker volume prune(未使用のVolumeの削除) -
docker builder prune(未使用のBuild Cacheの削除)
-
- 以下を実行する(40GB→30GB)
- pnpmを使ってる場合:
-
pnpm store pruneする(30GB→20GB)
-
上から順に効果が大きかったやつです。
1つずつ詳しく書いていきます。
mise
今のチームでは、miseというツールでFlutterを管理しています。
GitHub上でRenovateというツールを導入しているお陰で、最新版のFlutterが出るとRenovateが自動でバージョンを上げてくれます👇️
▲メジャーバージョン以外は自動でマージされるようにしてる
なので、更新のたびにローカルでもmise iを実行してFlutterのバージョンを上げていました。
しかしその結果、古いバージョンのFlutterがローカルに大量に残り続けて、100GB近くになっていました👇️
▲/Users/ユーザー名/.local/share/mise/installsにありました
古いバージョンのFlutterは不要なので、以下でまとめて削除:
mise prune
これで100GB減らせました。
iOSのシミュレータ
iOSアプリ開発をしていると、Xcodeのシミュレーターもかなり容量を食います。
特に複数のiOSバージョン・デバイスをインストールしていると数十GB単位で肥大化します。
削除は以下の手順でできます:
- Xcodeを開く
- メニューから Window → Devices and Simulators を選択
- Simulators タブを開く
- 不要なシミュレーターを右クリック → 「Delete」
▲今はもう1個しかありませんが、ここにめちゃくちゃ並んでたので使わないシミュレーターを1個ずつ削除しました
これで50GBくらいまで減らせた気がします(正確に覚えてない⋯)。
pnpm
pnpmはモバイル開発と関係がないのですが、弊社のアプリのバックエンドは基本的にNode.jsです。
そしてNode.jsのパッケージ管理をpnpmを使っています。
なので、様々なプロジェクトで積み上がったpnpmのパッケージストアが、気づけば40GBになっていました。
全てのライブラリが現役で使われているわけではないので、以下で不要なライブラリを削除:
pnpm store prune
これで10GB減らせました。
Docker
Dockerは開発中にイメージやボリューム、ビルドキャッシュをどんどん作ります。
なので放置すると容量を圧迫してしまいます。
というわけで、まず現状を確認します👇️
$ docker system df
TYPE TOTAL ACTIVE SIZE RECLAIMABLE
Images 28 22 18.03GB 9.722GB (53%)
Containers 29 3 2.086MB 2.085MB (99%)
Local Volumes 28 19 10.44GB 1.654GB (15%)
Build Cache 254 0 3.76GB 3.76GB
これは要するに「合計40GBくらい使っていて、そのうち15GBくらいは削除してもいいですよ〜」という状態のようです。
(「RECLAIMABLE」と書かれている部分は、「現状は未使用ですよ」的な意味らしい)
ただ、Containersは、Stopしているだけのコンテナも含まれるらしいのでContainersはpruneしたくないです。
そういうときは、以下のコマンドを実行してContainers以外をpruneします👇️
# 未使用のImagesを削除する
docker image prune -a
# 未使用のLocal Volumesを削除する
docker volume prune
# 未使用のBuild Cacheを削除する
docker builder prune
これを実行した結果、こうなりました👇️
$ docker system df
TYPE TOTAL ACTIVE SIZE RECLAIMABLE
Images 22 22 14.38GB 5.487GB (38%)
Containers 29 3 2.086MB 2.085MB (99%)
Local Volumes 21 19 9.034GB 246.8MB (2%)
Build Cache 129 0 0B 0B
これで約10GB空きました。
(Imagesだけ5GBも残ってしまって「何で?」という感じなのですが、正直miseとiOSのシミュレータでほとんど目的を達成できてしまったため、深く調べる気が起きませんでした⋯)
ちなみにContainersを含めて4つまとめてpruneしたい場合は、以下を実行します👇️
docker system prune
まとめ
-
mise, pnpm, Docker, iOSシミュレーターは放置するとどんどんキャッシュが溜まる
-
pruneコマンドなどで削除できる
-
ただし、消すと後で再ダウンロードや再ビルドが必要になることもあるので注意
おわり
Discussion