ストレージ容量の少ないMacBookProで、Xcode開発環境を構築してみた

SwiftでiPhone用のアプリを作りたいと思い、
所有しているMacBookProへxcodeをインストールしようとしたのですが、
ストレージの容量が足りなくて、インストールできませんでした。😭

なるべくコストをかけずに、開発環境を作りたくて
「外付けのストレージへ、単純にxcodeをインストールすれば良いのかな？」
と、安易に考えてしまったので、若干無駄な作業をしてしまいました。

:::note
試行錯誤の結果、ストレージ容量が少ないMacBookProでも、xcodeの開発環境を構築することができました
:::

結論として、容量の少ない内蔵ストレージではなく、外付けストレージにMacOSとxcodeの両方をインストールして環境を作りました。

その際の備忘録です。



###使用PC
・MacBook Pro (13-inch, 2017, Two Thunderbolt 3 ports)
　　ストレージサイズ：128GB
　　OS MacOS Monterey（v12.0.1)

###インストールしたxcode
・Version 13.1

###購入した外付けストレージ（SSD）
・Transcend 外付けSSD ストレージサイズ：240GB 

https://www.amazon.co.jp/Transcend-外付けSSD-ポータブルSSD-TS240GESD240C-高速・小型・軽量アルミケース仕様/dp/B07P9VB7ZZ?th=1

#AppStoreからのインストール（結果NG）

まず最初に、開発環境を作ろうと思って、
試したのは通常のAppStoreからのインストールです。
　
![スクリーンショット 2021-11-17 14.02.05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2294729/233a40a4-70e6-d530-178d-a70f3dd32a5b.png)


AppStoreでXcodeを検索して、インストールしようとしたところ

*「容量不足でインストールできません」*

のエラーがでました。
そこで、
MacBookProの内蔵ストレージの残りストレージサイズを確認したところ、
　
　*空き容量が　25GB　程度*
　
で、かなり少ない状態でした......
　
そこで、使っていない容量の大きなアプリ（GarageBandとかiMovie）、HDD内のキャッシュファイルの削除等をして、なんとか46.1GBまで空き容量を増やしました！

　![スクリーンショット 2021-11-17 14.05.25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2294729/3e1344c3-caa2-f039-cfc1-82b30cdcd36a.png)

これでいけるかな？
と、再度インストールを試みたのですが、
結果はNG。

:::note warn
ストレージ容量がまだ足りませんでした。
:::

　ご存知のようにxcodeは、バージョンが上がるたびに、アプリ自体のサイズが増えていますし、仮にインストールできたとしても、プロジェクトファイルや追加するシミュレータでかなりの容量を使うので、これ以上容量をなんとか増やしても、内蔵ストレージへのインストールは無理だと判断しました。


#外付けストレージ（SSD)の購入

　内蔵ストレージがダメなら、外付けストレージに入れればOKでしょうと（安易に）考えて、早速AmazonでTranscendの外付けSSDを購入しました。
　ストレージサイズは、240GBか480GBのどちらにするか悩みましたが、240GBあれば十分かなと思い、価格の安い240GBにしました。



:::note info
今思えば、240GBでも少し足りない気がするので、予算に余裕があれば500GB程度の容量があった方が良いと思います。
SSDの耐久性などを考慮しても、ケチらずにサイズ大きな方にしておけば良かった…（反省）
:::

https://www.amazon.co.jp/dp/B07P6KJ7W5/ref=cm_sw_em_r_mt_dp_ATYBQK4B7S0S79KSM1SV?_encoding=UTF8&psc=1

アマゾンの在庫ありだったので注文翌日に届きました。
すでにAPFSでフォーマットされているので、MacBookProにUSB接続するだけで、正常に認識されたので、すぐに使える状態でした。

#外付けSSDにxcodeを入れる（結果NG）

AppStoreからのインストールでは、外付けストレージをインストール先に選択できません。

そこで、色々とググって調べてみた結果、AppleのDeveloperサイトから、xcodeのインストーラをダウンロードする方法であれば、外付けストレージへのインストールが可能という情報があったので、試してみました。

↓からxcodeインストーラをダウンロードしました。（AppleIDでのログインが必要です）

https://developer.apple.com/download/all/?q=xcode

バージョンは最新リリースバージョンの13.1を選びました。

![スクリーンショット 2021-11-17 14.32.15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2294729/339e9e3b-9b87-3782-257b-7cb05997d5da.png)

.xipファイルを外付けストレージにダウンロードして、
その後.xipファイルをダブルクリックすると、同じディレクトリ階層にアプリケーションが展開されるとの事なので、いざインストール！

:::note warn
この展開に、ものすごい時間（約２時間）がかかりました。
展開後のアプリケーションのサイズも、なぜか100GB位の容量を消費していました。
:::

「さすがに、これはちょっとおかしい…」
と思いましたが、一応展開は終わりました。

早速、インストールされたディレクトリ階層にある、xcodeのアイコンをクリックして、アプリ起動したところ、

![スクリーンショット 2021-11-17 14.38.25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2294729/8ce200a1-8f25-0114-d490-8af646dca205.png)

Xcodeは一応起動しました。

…が、試しにプロジェクト作成して、”HelloWorld”を画面表示するサンプルコードをビルドしてみると…


以下のエラーが出て、シミュレータへの接続ができませんでした。(ビルドは成功)


>>*”Failed to create IXPlaceholder for app bundle ID・・・”*


ググってみると、”外付けストレージにxcodeだけインストールしたらシミュレータが動かない”という同じ現象をApple Developサイトへ質問している人がいました。

https://developer.apple.com/forums/thread/101809

こちらのサイトによると、

:::note info
通常xcodeは、ブートドライブのApplicationフォルダに配置する
必要があるそうです。
:::

xcodeを外付けストレージに入れて上手く動作させる方法はあるようなのですが、構築する環境に合わせてパス指定等の設定を正しく行う必要があり、なかなか簡単ではなさそうです。

:::note alert
ということで、外付けSSDにxcodeだけを入れてもNGでした。
:::


（あくまで推測ですが、やたらと.xip展開後のサイズが大きくなっていたのは、動作に必要なシステムファイル等をコピーしてたからなのかも・・・）

　
#外付けSSDにMacOS＆Xcodeを入れる（結果OK）
　
一瞬、作業を諦めかけましたが、
「ブートドライブへのxcodeインストールが必須なら、外付けストレージにシステム（MacOS）を入れてしまえば良いのでは？」
と思い直しました。
　
今度は外付けストレージにMacOSを入れて、そこにxcodeを入れます。

↓のAppleのサイトから、Montereyのインストーラを内蔵ストレージ側へDLしました。
　インストーラのサイズは12GB程度

https://apps.apple.com/jp/app/macos-monterey/id1576738294?mt=12


↓のインストール方法を参照

https://support.apple.com/ja-jp/HT212735

:::note info
インストール手順で、インストール先のドライブを聞いてくるので、その時に外付けストレージを選択しました。
:::


その後、インストールは問題なく終わりました。システムのインストール完了までの所要時間はだいたい30〜45分くらいでした。


システムのインストールが完了したら、いよいよxcodeのインストールです。

今、インストールをした外付けストレージ側のシステムでMacBookProを起動します。
↓のブートドライブの変更方法を参照

https://support.apple.com/ja-jp/guide/mac-help/mchlp1034/mac


インストール方法は、前記したAppStoreでのインストールです。

>　まず最初に、開発環境を作ろうと思って、
>　試したのは通常のAppStoreからのインストールです。
>
>　AppStoreでXcodeを検索して、インストールしようとしたところ...

その結果、

:::note info
 今度はインストールが正常に完了しました。
:::
消費したストレージサイズは、MacOS含めてだいたい40~50GBに収まりました。


![スクリーンショット 2021-11-17 15.26.07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2294729/85af6dc6-d292-05b6-d6e6-833f207ff300.png)

この環境で、前記と同じサンプルコードをビルドしてシミュレータを起動させたところ…

> 試しにプロジェクト作成して、”HelloWorld”を画面表示するサンプルコードをビルドしてみました。

:::note info
今回はエラーなしで、正常にシミュレータが立ち上がり、正しく動作しました！
:::

![スクリーンショット 2021-11-17 16.10.13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2294729/0a611419-e4c5-aa0e-bfbf-dc13c79d6f2d.png)

これで、開発環境の構築は完了です。

##補足：外付けSSDのフォーマットについて
外付けストレージが暗号化フォーマット（APFS暗号化等）されていると、MacOSのインストール先のドライブとして選択できませんでした。

外付けストレージのFileVault設定をONにしましたが、MacBookProを外に持ち出した時に、外付けストレージを絶対に置き忘れたり、紛失しないようにしっかりと管理をしようと思います。

::: note info 
初期状態ではFileVaultがOFFでした。FileVaultの設定変更は以下を参照
:::

https://support.apple.com/ja-jp/HT204837


#まとめ

色々と試行錯誤して、時間がかなりかかりました（インストーラのDLとインストールの待ち時間が長い…）が、無事にxcode開発環境を作ることができました。

結局、MacOSのシステムを２つ入れる事になりましたが、

*「外付けストレージの方は、xcode開発オンリーの独立した環境」*

と、考えれば結果的にこれはアリかなと思っています。

MacBookProの買い替えも考えていたのですが、数千円のコストで開発環境が作れたので、とりあえずOKです！
処理の速度は期待できませんが、とりあえずの環境としてはこれで十分。

もう少し、しっかりとSwiftプログラミング、アプリ作成ができるようになったら、新しいMacBookPro等のハード購入を検討しようと思います。