M1 macでのcocoapods導入方法

# 背景
初めてswiftを触ることになったが、cocoapodsがインストールできない。。
キィ~~~私は早くコードが見たいのに

そういえば以前、社内でM1macだとインストールが面倒だと聞いたことがあるな:thinking:
ふむふむ、Rosettaからターミナルを開いてインストールで解決か！！
なんだRosettaって！まぁ同期は皆これで解決してるし、ヨシ！:point_right:

先輩(菩薩)「待ってください、どうやらバージョンが変わってその必要は無くなったようですよ」

→どうやらrubyのバージョンがM1macに対応したようでRosettaから開く必要は無くなったようだ。
(おそらくM2でも同様かと思います)

PATHの通し方すら知らなかった私めに、菩薩先輩がご教授くださいました内容を、備忘録として詳しく記載します。

環境っていじるのこわいし、しっかり知りたい、そもそもパスってナンジャラホイとな方は下記リンクがすごくわかりやすいです
* [Pathを通すとは、環境変数とは](https://qiita.com/fuwamaki/items/3d8af42cf7abee760a81)

# 環境
* M1 mac Monterey
* Xcode 14.2

# 対応方法
そもそもまずは今の環境でcocoapodsが導入できるかお試しください。
```
# cocoapodsのインストールコマンド
sudo gem install cocoapods

# cocoapodsが導入できているか、バージョン確認方法はこちら
pod --v
```
こちらでエラーが吐かれた方は次にお進みください。

## Homebrewのインストール・アップデート

### インストールの場合
cocoapodsを導入するためには、まずはHomebrewをインストールする必要があります。
Homebrewとは、パッケージを簡単にインストールしてくれるものです。
[Homebrew](https://brew.sh/index_ja) :このページ一番上？に書いてあるコマンドをターミナルで実行します。
```
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
```
インストールの際にPasswordを聞かれますが、ご自身で今使われているPCのPasswordを入力してください。

### アップデートの場合
以前、Homebrewをインストールしていて、この問題に当たった方は諸々最新にする必要があるので、
下記を実行し、homebrewをアップデートしてください。

まずは、バージョン確認をしてみてください。
```
brew -v
```
上記の結果が、2.xだと、バージョン2系はM1に対応していません。
3.0でM1対応しているため、アップデートが必要です。
```
brew apdate
```

## rbenvのインストール
rbenvはいろんなバージョンのRubyを管理してくれるものです。
ついでにruby-buildも弄る必要がありますが、
これは、rbenvが、`rbenv install`コマンドを提供するrbenvのプラグインなためです。
詳細は省くのでお調べください:frowning2:

### インストールの場合
以下を実行し、rbenvとruby-buildをインストールします。
```
brew install ruby-build rbenv
```
インストール後に以下を実行します。
下記はrbenvの初期設定をするためのコマンドです。
```
rbenv init
```
実行結果は下記のようになるはずです。
ここでは、ファイルを実行するために、指定のファイルの中に、
実行するためのパスのありかを書いてほしいといった内容が書かれています。
要はパスを通すことです。多分。。

```
# Load rbenv automatically by appending
# the following to ~/.bash_profile:

eval "$(rbenv init -)"
```
ということで、followin to 以下のファイル内に ` eval "$(rbenv init -)"`を書きます。
Finderで、ユーザーまで開き、`Command+Shift+ピリオド(.)`を打つと隠しファイルが表示されるので、
見つかるはずです。

この時、`.bash_profile`なんて無いんですけど…？という方や、
`the following~~`が、`.zshrc`の方は`.zshrc`をお探しください。

テキストエディタなどで、該当のファイルを開き、`eval "$(rbenv init -)"`を記載・保存してください。
この記述で、お使いのPC・シェルにrbenvからRuby使います！といった宣言をすることができます。
なぜこんなことをするのかというと、実はMacには元々Rubyが入っていて、
そのRubyを使わずrbenvのRubyを開くようにしないといけないわけです。はぇ〜、~~めんどくs…~~

設定を反映するために以下のコマンドを実行してください。
もしくはターミナルを再起動でもいけるはずです。
```
# 反映させたいファイル(zshかbashか)は適宜読み替えてください

souce ~/.bash_profile
```

設定後にパスが通っているかどうか確認するためのコマンドはこちら。
どこのrubyが呼ばれているのか調べることができます。
下記のようなパスになっているとrbenvからrubyを使用することができる準備ができています。

```
which ruby
/Users/ユーザー名/.rbenv/shims/ruby
```

もし、`usr/bin/ruby`とかになっていると、設定されていません。
正しくパスを記載して保存できているか？もしくはそもそもrbenvのインストールができているのか？
などをご確認ください。

通っているパスの一覧確認は下記コマンド
```
$ echo $PATH
```
コロン(:)区切りで通っているパスが表示されます。

ちゃんとセットアップが完了できているかは下記コマンドで確認できます。
```
# rbenvのバージョン確認
rbenv version

# Rubyのバージョン確認
ruby -v
```
二つとも実行してみて、同じようなバージョンが表示されたら多分ヨシ！:point_right:
上記セットアップが完了したら、`sudo gem install cocoapods`を実行してみてください。
それでもエラーを吐かれるようでしたら、求められているバージョンが異なるかもしれませんので、
以降をご参考いただけるといいかもしれません。

## rbenv、Rubyアップデートの場合

まずは以下コマンドを実行し、バージョン確認をします。
```
rbenv version

x.x.x (set by /Users/ユーザー名/.rbenv/version)
```

ここで、Rubyの指定したバージョンより低い場合、ruby-buildのアップデートと、
バージョンに合わせたrebenvをインストールする必要があります。

---
**※補足**
指定したバージョンなのにエラーが生じる場合、Rubyのバージョンがうまく切り替わっていない場合があります。
下記コマンドでRubyのバージョンを確認できます。
```
ruby -v

ruby x.x.x
```

このコマンドでrbenvとRubyのバージョンが伴っていない場合、rbenvからrubyを呼べていない可能性がありますので、
`which ruby`で`/Users/ユーザ名/.rbenv/shims/ruby`に設定されているか確認してください。

---

アップグレードが必要な場合、ruby-buildを下記コマンドでアップグレードできます。
```
brew upgrade ruby-build
```

次に、rbenvの新たなバージョンをインストールします。
下記コマンドで、インストール可能なrbenvのバージョン一覧が確認できます。
なるべく近しいバージョンかつ、求められているバージョンよりも上を選ぶといいです。

```
rbenv install --list

2.7.7
3.0.5
3.1.3
3.2.1
jruby-9.4.1.0
mruby-3.1.0
picoruby-3.0.0
truffleruby-22.3.1
truffleruby+graalvm-22.3.1
```

そもそも求められているバージョンってどれやねん、という方はcocoapodsインストールコマンドを打った際のエラーコマンドをご確認ください。
私は下記のように怒られたので、菩薩先輩のお導きにより、上記リストの中より、3.0.5を選択しました。
```
Try installing it with `gem install activesupport -v 6.1.7.2` and then running the current command again activesupport requires Ruby version >= 2.7.0. The current ruby version is 2.6.10.210.
```
ここで、`3.2.1`などを選択すると、buildが失敗するようで(下記参照)、
その場合は先に`libyaml`をインストールする必要があるそうです。
私の方では検証を行っておりませんので対応方法は載せかねます。
* [Unable to install Ruby 3.2.0 · rbenv/ruby-build · Discussion #2118](https://github.com/rbenv/ruby-build/discussions/2118#discussioncomment-4505182)

バージョンごとに色々対応が必要そうです。~~めんどくせー~~

特に他のシステムで指定されているバージョンが問題なさそうならば、下記コマンドで、新しくインストールしたバージョンを、
通常使うバージョンとして設定します。
```
# バージョンは適宜読み替えてください

rbenv global 3.0.5
```
`rbenv version`コマンドで、切り替えることができたか確認できます。
以上のセットアップが完了できれば、`sudo gem install cocoapods`でインストールが可能なはずです。

# 最後に
Apple silicon便利だけど環境構築が少々手間。
これで問題解決のお手伝いができていると幸いです。