【iOS】 Cocoapods 環境構築 M3Mac

# はじめに
XCodeを利用してiOS開発を行うとき、プロジェクトでは外部ライブラリ管理ツールとして[CocoaPods](https://cocoapods.org/)を利用しています。
そのため、CocoaPodsを利用できるように環境構築する必要がありました。
何時間もかかったてしまっため、備忘録を残します。
# 対象読者
- Macで CocoaPodsを利用した開発を行いたい人
- Cocoapodsのインストール時に、エラーに遭遇している人
    - rubyのバージョンを上げる
    - rosseta2を使用しているか設定を確認
# 環境
- M3 Mac
- macOS 14.4.1

# 手順の概要
最初に、CocoaPodsをインストールするめに、Rubyの``gemコマンド``を使用して、インストールを試みます。
この時、Rubyのバージョンが適切なものでなければエラーとなります。
なので今回はそのエラーに対応するために、**Hombrew** と **rbenv**をインストールして、適切なRubyのバージョンを管理できるようにします。

今回の具体的手順は以下の通りです。

1. CocoaPodsをインストール
    ・ rubyのバージョンエラーに関わるログが表示されるか確認
    (特にエラーにならなければ、これ以降の作業は必要なし)
　　　
2. Homebrewをインストール
    ・ rbenvをインストールするため
　　　
3. rbenvをインストール
    ・ 適切な ruby バージョンを、インストールする必要があるため
　　　　　  
4. Rubyの適切なバージョンをインストール
    ・ gemコマンドを使用して、Cocoapodsをインストールするため
　　　　
5. 再度Cocoapodsのインストールを試みる
    ・ 再度、Cocoapodsインストールコマンドを実行

## 1. CocoaPodsをインストール

インストールコマンドを実行します。
```
$ sudo gem install cocoapods
```


**Rubyのバージョンに関わるエラーが出力された場合の例**
>ERROR:  Error installing cocoapods:
	The last version of drb (>= 0) to support your Ruby & RubyGems was 2.0.6. Try installing it with `gem install drb -v 2.0.6` and then running the current command again
	drb requires Ruby version >= 2.7.0. The current ruby version is 2.6.10.210.

上記のようなError結果の場合、``requires Ruby version >= 2.7.0``とあるので、Ruby のバージョンを2.7.0以上にする必要があります。そのためプロジェクト毎に使用するrubyのバージョンを管理できる**rbenv**をインストールして、**Rubyのバージョンを適切なもの**設定できるようにします。

(上記以外のErrorの場合は、そのログを確認して対応する必要があります)

## 2. Homebrewインストール
brewコマンドを実行できるように、HomeBrewのインストールから始めます。
- **HomeBrew インストール**
[Homebrewサイト](https://brew.sh/ja/)を参考にHomeViewコマンド を実行します。
~~~: インスールコマンド
$ /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
~~~

- **パスを通す**
インスール後、brewコマンドを実行した時「not found」となってしまう場合があるのでパスを通します。
~~~
$ export PATH="$PATH:/opt/homebrew/bin"
~~~
---
### トラブルシューティング: Rosseta2を使用しているかconfigを確認
intel mac のデータを M1 mac 以降の mac に移行アシスタントを利用してデータ移行した時や、何かアプリをインスールした場合などで Rosseta2 を有効化してしまった恐れがあります。有効化されている場合は、ARM版の Homebrew をインストールが上記の手順ではうまくいっていない可能性があります。その結果、Cocoapodsのインストールが上手くいかないので、思い当たるかたは一度確認することをお勧めします。
<details><summary>確認手順</summary>

- ネイティブ環境における動作確認

~~~
$ uname -m
~~~
**結果**
``arm64`` であるか確認します。

- homebrew の動作環境を確認
~~~
$ brew config
~~~
**結果**
``macOS: 14.4.1-arm64``
``Rosetta 2: false``
上記の結果の場合は、問題ありません。
**結果**
``macOS: 14.4.1-x86_64``
``Rosetta 2: true``
など表記されている場合は、ARM版の Homebrew をインストールする必要があるので別途手順が必要になります。
主にやることは、Rosetta 2を無効化・アンインストールしてください。
望ましいログ結果が得ることが出来たら、Cocoa podsのインストール手順に戻ってください。


</details>

---

## 3. rbenvをインストール

### インストールと設定
インストールコマンドを実行します。
```: インストールコマンド
$　brew install rbenv ruby-build
```
インストールが完了したら、初期化します。
~~~: 初期化コマンド
$ rbenv init
~~~
隠しファイル ``.zshrc`` ファイルを編集するため開きます。
~~~
$ open ~/.zshrc
~~~
ない場合は作成します。
~~~
$ touch .zshrc
~~~

.zshrcファイルに　以下を追加します。
```.zshrc
[[ -d ~/.rbenv  ]] && \
  export PATH=${HOME}/.rbenv/bin:${PATH} && \
  eval "$(rbenv init -)"
```
変更した設定を反映させます。
~~~
$ source ~/.zshrc
~~~

## 4. Rubyの適切なバージョンをインストール

rbenv で現在のバージョンを確認します。
```
$ rbenv versions
```
rbenv でインストールできるバージョンを確認します。
```
$ rbenv install -l
```
**結果の例**
>3.0.7
3.1.5
3.2.4
3.3.1

安定しているバージョンかつ、要求バージョン以上のものをインストールします。
``requires Ruby version >= 2.7.0``と先ほどのエラーでは2.7.0以上を要求されていました。
なので、3.3.1 のバージョンをインストールします。
```
$ rbenv install 3.3.1
```
インストール完了したら、忘れずにグローバル設定を更新します。
```
$ rbenv global 3.3.1
```
最後に、設定が反映されているか確認したら、 cocoapodsをインストールする準備完了です。
```
$ rbenv versions
```

## 5. 再度Cocoapodsのインストールを試みる
```
$ sudo gem install cocoapods
```
インストールされていることを確認します。
~~~
$ pod --version
~~~
無事インスールされていれば、これにて、Cocoapodsの環境構築完了です！！

# まとめ
cocoapods などの環境構築は大変ですよね.....。
自分が遭遇したエラーの解決方法が、手助けになれば嬉しいです！

--- 
### 参考サイト
[ちゃんと理解するrbenv : (2) 基本的な使い方](https://mogulla3.tech/articles/2021-07-10-understanding-rbenv-2/)

[gem installでpermissionエラーになった時の対応方法 #Ruby - Qiita](https://qiita.com/nishina555/items/63ebd4a508a09c481150)