M1macでのRubyonRails環境構築【初学者向け】

#概要
今までWindwsPCでRialsを勉強していましたが、今回M1チップのMacbookAirを購入しました。
環境構築に大変苦慮したため、成功までの手順を残しておきます。

Qiitaの記事を参考に色々頑張りましたが、`msgpack`や`nokogiri`などgem周りのエラーが頻出し、なかなかはうまくいきませんでした。
最終的に一度**mac自体を初期化**し、**OSをアップデート**後に以下URLの手順を参考にすることで、無事`Rials s`まで辿り着きました。
>参考にしたサイト：https://github.com/osmszk/m1-mac-rails-install

**マシンスペック**
・macOS：BigSur ver.11.4
・チップ：Apple M1

#目次

- 環境確認と事前準備
    - PATHの確認
    - ruby,rails,rbenvの確認
    - Command Line Toolsをインストール
- homebrewをインストール
- rbenvをインストール
- rubyをインストール
- railsをインストール
- railsコマンドの実行 
- まとめ

#環境確認と事前準備
各アプリケーションのインストール前に、**インストール予定のアプリケーションのインストール済み有無とPATH**の確認をします。
(これをしないと後々手詰まった時の状況整理が面倒です)


###【1】pathの確認

```
% echo $path
/usr/local/bin /usr/bin /bin /usr/sbin /sbin
```

>「PATH」とは、コマンドの実行時に参照するディレクトリのルーリングになります。
アプリケーション自体は複数ディレクトリにインストールすることも可能ですが、コマンド実行時はPATHで指定されたディレクトリ以下が参照されます。


###【2】ruby,railsのバージョン確認
`which`コマンドでインストール箇所、`-v`コマンドでバージョンを確認します。
>macにはデフォルトでrubyがインストールされていますが、rails開発で利用するrubyは後ほど別にインストールしたものになります。

後ほどpathを編集した際に変更がなされているか確認するため、**ここで`which`コマンドを実行した際の参照ディレクトリは覚えておきましょう。**
（path変更後は`which`コマンドの実行結果がpath指定のディレクトリになります）


```
% which ruby
/usr/bin/ruby

% ruby -v
ruby 2.6.3p62 (2019-04-16 revision 67580) [universal.arm64e-darwin20]
```

```
% which rails 
/usr/bin/rails

% rails -v
Rails is not currently installed on this system. To get the latest version, simply type:

    $ sudo gem install rails

You can then rerun your "rails" command.
```

既にrebnvがインストールされていないことも確認しておきます。

```
 % rbenv -v
zsh: command not found: rbenv
```
###【3】Command Line Toolsをインストール
####Command Line Toolsとは
>Command Line Toolsは、macOSのターミナルでコマンド使うために必要なツールになります。Xcodeというエディタアプリに含まれているため、Appstoreからまとめてインストールすることも可能ですが、Xcode自体はメインのエディタとしては使うことがなく容量も大きいため、ここではCommand Line Tools単体でインストールします。

####インストール方法

```
% xcode-select --install
xcode-select: note: install requested for command line developer tools
```

Xcodeをインストールしている人は Xcode自体に「Command Line Tools」が含まれているのでスキップしましょう。

#homebrewをインストール
###【1】homebrewとは
>Homebrewはパッケージマネージャー（パッケージ管理システム）といい、macOS上でCUIを用いて必要なアプリケーションがインストールできるようになります。この後使うrbenvもhomebrewを使ってインストールすることになります。
詳細については[こちらの記事](https://qiita.com/omega999/items/6f65217b81ad3fffe7e6)が参考になります。


###【2】インストール方法
https://brew.sh/ にアクセスする
アクセス後は「Install Homebrew」と記載された直下のコマンドをコピーして実行します。

>他記事ではコマンドが記載されているケースが多いですが、公式HPのインストール用コマンドを利用するのが確実です。

**インストール後は`brew`コマンドが有効かどうか確認するため、`-v`でバージョン、`which`で参照先を確認しておきましょう。**
※brewのバージョンが古い場合はアップデートも同時に行います。

```
% brew -v
Homebrew 3.1.9

(% brew update)

% which brew
/opt/homebrew/bin/brew
```

#rbenvをインストール
###【1】rbenvとは
>railsにて開発を続けていくと、「このアプリはこのrubyバージョンで、このアプリはこのrubyバージョンで...」とプロジェクト毎にrubyのバージョンを変えたいケースも出てくるようです。
rbenvは、複数のRubyのバージョンを管理し、プロジェクトごとにrubyのバージョンを指定して使うことを可能としてくれるツールです。


###【2】インストール方法
先ほどインストールしたhomebrewを使ってインストールします。

```
% brew install ruby-build rbenv 
```

**インストール後は`brew`コマンドが有効かどうか確認するため、`-v`でバージョンを確認しておきましょう。**

 ```
% rbenv -v
rbenv 1.1.2
```

###【3】パスを通す
無事インストールが確認できたらpathを通します。
>pathの設定時は.zshrcファイルを編集します。この「.zshrc」というファイルは”コマンド入力について設定している”ファイルになります。
zshrcファイルについては[こちらの記事](https://suwaru.tokyo/%e3%80%90-zshrc%e8%a7%a3%e8%aa%ac%e3%80%91%e3%82%b3%e3%83%94%e3%83%9a%e3%81%a7%e7%b0%a1%e5%8d%98zsh%e3%82%ab%e3%82%b9%e3%82%bf%e3%83%9e%e3%82%a4%e3%82%ba%e3%80%90%e8%a8%ad%e5%ae%9a%e6%96%b9%e6%b3%95/)が分かりやすいので参考にしてみてください。

コマンドで追加する方法もありますが、現在記述されている内容を見ながら編集するためにvimから直接編集します。
vimの編集方法について[こちらの記事](https://qiita.com/hide/items/5bfe5b322872c61a6896)を参考にしました。
>vimを開いた直後はenterでの改行や自由なコピペができないため、手こずる場合は`esc`を押してから`i`を押し、インサートモードにした上での編集をオススメします。
また編集終了後は`% source ~/.zshrc`で更新することを忘れないでおきましょう。


```
% vi ~/.zshrc
export PATH="$HOME/.rbenv/bin:$PATH"
eval "$(rbenv init -)"
% source ~/.zshrc

% cat .zshrc
export PATH="$HOME/.rbenv/bin:$PATH"
eval "$(rbenv init -)"
```

#rubyをインストール

###【1】インストール方法
rbenvでインストールできるrubyのバージョンを確認しましょう。

```
% rbenv install -l
```

**インストールできるrubyのバージョンを確認したら、その際の安定版バージョンをインストールしましょう。**
安定板については[ruby公式ページ](https://www.ruby-lang.org/ja/downloads/)を確認してください。
記事作成時の安定バージョンは2.7.3か3.0.1になるので、ここでは最新版である3.0.1をインストールしてみます。

```
% rbenv install 3.0.1
```

###【2】インストールしたrubyバージョンの適応

インストールしたバージョンが追加されているか確認します。`3.0.1`が追加されていることを確認してください。
`*がついている箇所が現在使用設定にあるrubyになります`


```
% rbenv versions
* system (set by /Users/hanawakazuki/.rbenv/version)
  3.0.1
```


`3.0.1`をglobalで利用できるようにします。

```
$ rbenv global 3.0.1
```

上記コマンドを実行後、rbenvで管理されたrubyに変更されます。`(3.0.1に＊が移動したことを確認してください）`

```
$ rbenv versions 
  system
* 3.0.1 (set by /Users/hanawakazuki/.rbenv/version)
```

**インストール後は`ruby`コマンドが有効かどうか確認するため、`-v`でバージョンを確認しておきましょう。
また`which`コマンドでrubyコマンドの先が.rbenv/下に変更されているか確認します。**


```
% which ruby
/Users/kazukihanawa/.rbenv/shims/ruby
 % which gem
/Users/kazukihanawa/.rbenv/shims/gem
```

#railsをインストール
###【1】インストール方法

```
% gem install rails

% rbenv rehash
```

**インストール後は`rails`コマンドが有効か確認するために、`-v`でバージョン、`which`で参照先を確認しておきましょう。**

```
% which rails 
/Users/kazukihanawa/.rbenv/shims/rails

% rails -v
Rails 6.1.3.2
```

###【2】yarnのインストール
Rails 6から webpackerが必須になったのでまずはyarnをインストールします。

```
% brew install yarn
```

**しつこいですが`-v`でバージョン、`which`で参照先を確認しておきましょう。**

```
% which yarn
/opt/homebrew/bin/yarn

% yarn -v
1.22.10
```

###【3】rails コマンドの実行
rails newでプロジェクトを作成します。

```
rails new プロジェクト名
```

rails sでサーバーが立ち上げるか確認しましょう。

```
rails s 
```

表示されたIPにアクセスし、ローカルサーバーで起動ができているか確認します。
その後はVScodeなどから編集可能です。

#まとめ
macでの環境開発は初めてだったためかなり手こずりました。
vimやzshrcの知識はおろか、ディレクトリ構造やruby自体の知識も足りていなかったため、エラーに悩まされ勉強し直す事になったのはいい機会だと思います。
躓いたときは`which`や`-v`を確認し、`zshrc`からpathの整合性を把握しながら進むことが重要だと学びました。
記事自体に不足、解釈の間違い等あれば是非ご指摘ください。宜しくお願いします。