開発macの空き容量を20GB以上増やした。

Xcodeは、アップデートの度に多くの空き容量を要求します。例えば11.4は、空き容量が20GB程度でも容量不足でアップデートを開始できませんでした。
私の場合、Mac上で最も多くのデータを占めているのはXcode自体なので、毎回XCode関係のゴミを削除する手順を踏んでいます。その手順を記録しておきます。

# 手順

## 1 - 使えなくなった過去のシミュレータを削除

ターミナルで以下のコマンドを実行すると空き容量が増える場合があります。
※ コメント欄で、勝手にシミュレータが追加されて空きが減ったというフィードバックを頂きました。シミュレータをあまり使っていないと、逆効果なのかもしれません。

```terminal
$ xcrun simctl delete unavailable
```

## 2 - `DerivedData` フォルダを削除

`~/Library/Developer/Xcode/DerivedData`フォルダを削除します。ここは、ビルドする際の様々な情報やデバッグログなどが溜まっていくところだそうです。過去のビルド情報やログを見る必要がなければ、消して問題ありません。毎日消すという人もいるようです。次回Xcodeが自動的に作成します。

ターミナルに自信がある方は以下のコマンドで消せます。

```terminal
$ rm -r ~/Library/Developer/Xcode/DerivedData/
```

私は、ターミナルで削除系のコマンドを打つと鼓動が早くなってしまう方なので、間違えないようにFinderからやります。以下のいずれかでフォルダを表示させます。

1. Finderのメニューから、[移動]->[フォルダへ移動]で、 `~/Library/Developer/Xcode/` を指定する。

2. command + shift + .(ピリオド) で隠しフォルダを表示させてからパスを辿る。
3. ターミナルで以下を入力する
```terminal
$ open ~/Library/Developer/Xcode/
```

DerivedDataフォルダを選択し、deleteキーで削除した後、ゴミ箱を空にします。
ちなみに、~は自分のフォルダと等価です。`/Users/{アカウント名}`ですね。

## 3 - `iOS DeviceSupport` フォルダを削除

`~/Library/Developer/Xcode/iOS DeviceSupport` フォルダを削除します。手順は上と同じです。
ここは、実機デバッグをするとシンボル情報などが実機からダウンロードされて保存されるようです。実機のOSバージョン毎に追加され、一つが大きいので、肥大化しやすいようです。消しても次回接続したときにまた作成されます。
（驚く事に、[github](https://github.com/iGhibli/iOS-DeviceSupport)にも置いてあったりします...）

ソース：
https://stackoverflow.com/questions/29930198/can-i-delete-data-from-ios-devicesupport?noredirect=1&lq=1

# 4 - Xcodeを削除

それでも不足していたら、アプリケーションフォルダのXcodeを削除して、ゴミ箱を空にします。
なんとなく不安なので最後の手段にしていますが、多分、設定が消えたりして困る事はなさそうです。何度かやってみたけど、今のところ大丈夫な様子。macの思想的にも大丈夫な筈ですが、実績が少ないので、何かあったらごめんなさい。
というわけで、最後に紹介していますが、実はこれだけでOKだったりするのかも？

# 結果
私の環境で作業したときに、どれくらい空き容量が増えたかを、参考にご紹介します。

|前バージョン|新バージョン|シミュレータ削除|DerivedData削除|iOS DeviceSupport削除|Xcode削除|
|:-:|:-:|:-:|:-:|:-:|:-:|
|15.0|15.1|2.9GB|4.3GB|10.8GB|n/a|
|12.2|12.3|n/a|2.6GB|1.4GB|16.5GB|
|12.1|12.2|0.7GB|7.7GB|8.8GB|16.3GB|
|11.5|11.6|0|1.6GB|3.4GB|n/a|
|11.3.1|11.4|1.6GB|3.5GB|28.1GB|n/a|
|10.2.1|11.1|5.6GB|n/a|n/a|n/a|n/a|
|10.2|10.2.1|26GB|n/a|n/a|n/a|n/a|


<details>
<summary>以下は過去記事です。</summary>
<div>
## 空き容量が足りなくなりました。

2年ほど使ったMacBook Pro。
Xcode10.2を10.2.1にしようとしたところ、空き容量が足りないとエラーになりました。MacintoshHDの空きが10GBくらいありません。10.2.1は6.1GBだそうですが、10GBでは不足だそうです。

## iOSシミュレータを消す

iOSシミュレータは以下のフォルダにあります。

```
~/Library/Developer/CoreSimulator/Devices/
```

名前が意味不明(UDIDらしいけど)なフォルダが**279個**もありました。明らかに、もう使っていない古いシミュレーターが残っているようだと、前から気になっていました。フォルダのサイズは10GBくらい。消しても数GB程度しか空かないでしょうけど、それでも欲しい状況なので消してみることにしました。

## xcrun simctl コマンドを使う
Stack Overflowの記事がありました。
[Xcode - free to clear devices folder?](https://stackoverflow.com/questions/34910383/xcode-free-to-clear-devices-folder?rq=1)

Xcodeに、そのためのヘルプツールがあるみたいです。
早速実行してみます。

## シミュレータの一覧をみる　`xcrun simctl list devices`

```
$ xcrun simctl list devices
== Devices ==
-- iOS 9.3 --
    iPhone 4s 9.3 (C76EF6DC-XXXX-XXXX-XXXX-FECB9B916E82) (Shutdown) 
    iPhone 5 (246F5DAE-XXXX-XXXX-XXXX-59DFE39147A3) (Shutdown) 
    iPhone 5s 9.3 (93576E9E-XXXX-XXXX-XXXX-E1967C2791F2) (Shutdown) 
    iPhone 6 9.3 (FD725141-XXXX-XXXX-XXXX-FA5664077DE0) (Shutdown) 
    iPhone 6 Plus (7B00F65C-XXXX-XXXX-XXXX-6796312CE064) (Shutdown) 
    iPhone 6s (1D562754-XXXX-XXXX-XXXX-6906B0D471D9) (Shutdown) 
    iPhone 6s Plus 9.3 (3D522BD6-XXXX-XXXX-XXXX-6BE395506C90) (Shutdown) 
    iPad 2 (97966EDE-XXXX-XXXX-XXXX-2A84ED9D033F) (Shutdown) 
    iPad Retina (87455003-XXXX-XXXX-XXXX-4C0EE311CD7D) (Shutdown) 
    iPad Air (8DE94CE1-XXXX-XXXX-XXXX-9C1FE99CC20A) (Shutdown) 
    iPad Air 2 (359EF734-XXXX-XXXX-XXXX-71E54DE0773B) (Shutdown) 
    iPad Pro (599ED8D3-XXXX-XXXX-XXXX-8F6658F00162) (Shutdown) 
-- iOS 10.3 --
(中略) 
-- iOS 12.2 --
(中略) 
-- tvOS 12.2 --
(中略) 
-- watchOS 5.2 --
(中略) 
-- Unavailable: com.apple.CoreSimulator.SimRuntime.iOS-10-2 --
(中略) 
-- Unavailable: com.apple.CoreSimulator.SimRuntime.iOS-11-0 --
(中略) 
-- Unavailable: com.apple.CoreSimulator.SimRuntime.iOS-11-1 --
以下略
```

`xcrun simctl list devices`コマンドでリストをとってみると、ずらずらと出てきます。意味不明なフォルダ名も、このコマンドでどのシミュレータなのかわかります。
やはり、iOS11.0など、古い不要なものがたくさんありそうです。
あれ？よくみるとiOS11の使えるシミュレータが一つもないや・・・

### 使えないものを削除する `xcrun simctl delete unavailable`
unavailableなものは実行できない以上無駄なので、消します。テスト用の画像セットなど、過去のテストで整えた環境が残っている可能性がありますが、無くなって困るものは思い当たらないので思い切って実行しました。

```
$ xcrun simctl delete unavailable
An error was encountered processing the command (domain=NSCocoaErrorDomain, code=513):
Errors encountered while deleting multiple devices.
You don’t have permission.
To view or change permissions, select the item in the Finder and choose File > Get Info.
```

少しして、パーミッションエラーがでました。
でも、フォルダ数は64個に減り、空き容量が**26GB**も増えて、36GBになりました。
フォルダの容量を調べたときは10GBくらいしかなかったのに、それ以上の空き容量ができて嬉しい誤算でした。
きっと不要なランタイムとか、残っていたゴミを消してくれたんでしょうね。`simctl`コマンドえらい。

## その他

調べてみたら、同じ内容の紹介は既にQiitaにありました。先達に敬意。
[macOSのディスク空き容量に関するメモ](https://qiita.com/miminashi/items/9463d82a00dd597ba2cb)

simctlコマンドについては、詳しく調べてくださっている方がいました。感謝。
[simctlコマンドを使ってみる](https://qiita.com/tamaki/items/02eb43253193b950b08f)


なお、パーミッションエラーはiOS11のiPhoneX削除で出たようでした。2つしかないので放置。それよりまずは、iOS11のシミュレーターのインストールを先にやらねば。

## 後日
Xcode11.1にアップデートしたので、またやってみました。

| | 実行前 | 実行後 |
|--:|:-:|:-:|
|HDD空き容量|17.33GB|22.98GB|
|Devicesフォルダ容量|4GB|5.61GB|
|Devicesフォルダ内のフォルダ数|124|34|

今回はエラーはでず、空き容量が増えました。またDevicesのフォルダサイズ以上に空きが増えました。というか、Devices自体のサイズは増えました・・・。シュミレータの実体は違うところにありそうです。
</div></details>