2019年9月に購入したMacの環境構築を行う(anyenv+rbenv+Ruby+VScode)

Macをイチから環境構築する。
#### 目標
Rubyの環境をVScodeで書けるようにする。

# 全体の流れ
![IMG_1672.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/176461/0d6ae8a2-0bf2-1a9d-8e8d-aa2da9fcc388.jpeg)

とにかく __Homebrew__ で色んなモノを入れられる
後々のために __anyenv__ で各言語のVer.を切り替えられるようにしておく

# Homebrewのインストール
色んな言語やアプリをコマンド一発で入れられて便利
まずはHomebrewから導入を行う

##### ターミナルを立ち上げる

Dock上の「Launchpad」(ロケットアイコン)→「その他」→「ターミナル」

##### Homebrewのスクリプトをコピー

[Homebrew](https://brew.sh/index_ja)にアクセスし、__インストール__のところに書いてあるスクリプトをコピーする

- Macでのコピペの仕方
 - 人差し指で先頭をクリックして、中指で終端までドラッグ
 - 二本指でタップすると右クリックメニューが出るので「コピー」（もしくは⌘＋c）

##### ターミナルに貼り付ける

ターミナル貼り付けてエンター（ペースト：二本指でタップもしくは、⌘＋ｖ）

##### Xcode Command Line Toolsのインストール

上記スクリプトの実行中に、下記表示が出るのでエンター

```
==> The Xcode Command Line Tools will be installed.
Press RETURN to continue or any other key to abort
```

##### パスワードの入力
スクリプト実行中に、passwordを求められるので、Macのログインパスワードを入力してエンター

### 確認
スクリプトの実行が終わったら、`brew doctor`と入力
`Your system is ready to brew.`と表示されればOK



以上でHomebrewが導入できました。
ChromeやVScodeもこれでインストールできますが、次章ではRuby導入を目指してanyenvを導入します。


# anyenvの導入
Homebrewを利用して、__anyenv__を導入します。

　__rbenv__でRubyのVer管理を行います。
　__nodenv__でNode.jsのVer.管理を行います。
　__anyenvで上記のXXenvの管理を行います。__


##### brewコマンドでanyenvをインストールする
```brew install anyenv```をターミナルに入力

##### pathを通す
上記の手順を実施すると、以下のようにターミナルに表示されます。


```
# Load anyenv automatically by adding
# the following to ~/.bash_profile:
eval "$(anyenv init -)"
```

言われた通りに、.bash_profileに追加しようと思います。
以下の通りに、ターミナルに入力

```echo 'eval "$(anyenv init -)"' >> ~/.bash_profile```

##### ターミナル再起動
変更を有効にするためターミナルを再起動します
（画面を閉じて、ターミナルを再度立ち上げる）

##### 初期化
ターミナルを立ち上げ直すと、下記の表示が出ました

```
ANYENV_DEFINITION_ROOT(/Users/XXXX/.config/anyenv/anyenv-install) doesn't exist. You can initialize it by:
\ > anyenv install —init

# XXXXの部分にはユーザー名が入っています
```


言われた通りに、`anyenv install --init`をターミナルに入力

```
MacBook-chan: XXXX$ anyenv install --init
Manifest directory doesn't exist: /Users/XXXX/.config/anyenv/anyenv-install
Do you want to checkout ? [y/N]: y
```
チェックアウトしますか？と言われていたので、`y`と入力
`Completed!`
これでanyenvの導入が完了です。

### 確認
正常に導入されたか確認してみましょう。`anyenv --version`と入力
anyenvのバージョンが表示されればOKです。

```
MacBook-chan: XXXX$ anyenv --version
anyenv 1.1.1
```
### 参考記事
[anyenv + macOS環境構築](https://qiita.com/rinpa/items/81766cd6a7b23dea9f3c)

anyenv GitHub
https://github.com/anyenv/anyenv

# rbenvの導入
anyenvを利用して、rbenvを導入します。
ターミナルに`anyenv install rbenv`と入力

```
MacBook-chan:~ XXXX$ anyenv install rbenv

# 中略

Install rbenv succeeded!
Please reload your profile (exec $SHELL -l) or open a new session.
```

###### ターミナル再起動
やはり、ターミナルの再起動しなさいと言われました。
ここでは、`exec $SHELL -l`と入力して再起動と同等のことをします（親切に書いてくれている・・・！）

### 確認
`rbenv --version`と入力し、正常に導入されたか確認します。

```
MacBook-chan:~ XXXX$ rbenv --version
rbenv 1.1.2-2-g4e92322
```

# Rubyの導入
やっとRubyを導入できます！
Rubyのダウンロードサイトによりますと、2.6.4が安定版らしいので2.6.4を入れます。(2019年9月現在)

##### Ruby 2.6.4の導入

`rbenv install 2.6.4`と入力します。
下記のように表示されれば完了です。

```
Installed ruby-2.6.4 to /Users/XXXX/.anyenv/envs/rbenv/versions/2.6.4
```

##### Ruby 2.6.4をセットする
`anyenv versions`と入力します。

```
MacBook-chan:~ XXXX$ anyenv versions
rbenv:
* system (set by /Users/XXXX/.anyenv/envs/rbenv/version)
  2.6.4
```

systemのRubyが有効になっています。
`rbenv global 2.6.4`と入力してから再び`anyenv versions`と入力します。

```
$ rbenv global 2.6.4
$ anyenv versions
rbenv:
  system
* 2.6.4 (set by /Users/XXXX/.anyenv/envs/rbenv/version)
```

先程導入した2.6.4が有効になりました

### 確認
`ruby --version`と入力し、正常に導入されたか確認します。

```
$ ruby --version
ruby 2.6.4p104 (2019-08-28 revision 67798) [x86_64-darwin18]
```


### 参考記事
[anyenv + macOS環境構築](https://qiita.com/rinpa/items/81766cd6a7b23dea9f3c)

# Bundlerの導入
Bundlerを使ってgemファイル(例:Rails, Rubocop, Solargraph)を管理するので、先にBundlerを導入します。

~~ターミナルに`gem install bundler`と入力~~

__Ruby 2.6.4には最初からBundlerが入っているようです(2019.9.24追記)__
[Ruby 2.6で発生する「プロを目指す人のためのRuby入門」との差異について](https://qiita.com/jnchito/items/a2a833e3bd80a452fd61)

> 12.8.2項ではBundlerを使うために、gem install bundler のようなコマンドでBundlerをインストールする必要があると書きました。ですが、Ruby 2.6ではBundlerが標準ライブラリとして取り込まれているため、別途インストールする必要がありません。


### 確認
`bundle --version`と入力し、正常に導入され~~た~~ているかを確認します。

```
$ bundle --version
Bundler version 2.0.2
```

各種gemの導入は後ほど

### 参考記事
[Bundlerの使い方](https://qiita.com/oshou/items/6283c2315dc7dd244aef)


# Hombrewで必要なものを導入

git
`$ brew install git`

VScode
`brew cask install visual-studio-code`

Evernote
`brew cask install evernote`

Chrome
`brew cask install google-chrome`


Google IME
`brew cask install google-japanese-ime`

# VScodeの拡張機能
下記の拡張機能を入れていますが、ハマったところだけ記述します。

- 日本語化
- Ruby
- Ruby Language Colorization
- endwise
- ruby-rubocop
- vscode-icons
- Ruby Solargraph
- GitHistory


下記２つがうまく行かずVScodeの設定だけでは使えませんでした。
おそらくanyenvやrbenvとの兼ね合いかと思われます。
> ruby-rubocop
> Ruby Solargraph

### VScode上でRubocopとSolargraphを使用する

VScode上で.rbファイルを保存するたびに、VScode上でRubocopに関するエラーが出る

```
rubocop is not excutable
execute path is empty! please check ruby.rubocop.executePath
```
Solargraphが見つかりませんのようなエラーも出ていたが、詳細失念。


##### Bundlerで導入する

RubocopもSolargraphもgemファイルなので、Bundlerで導入する
ターミナルで、作業フォルダ(VScodeの「フォルダを開く」で開いたフォルダ)に`cd`で移動する

`bundle init`と入力すると、gemfileが作成される。
`code gemfile`と入力すると、VScodeでgemfileを編集できる。

gemfileには以下の通り記載されていたので

```gemfile
source "https://rubygems.org"
git_source(:github) {|repo_name| "https://github.com/#{repo_name}" }
# gem "rails"
```
下記を追記し、上書き保存。

```
gem 'rubocop', require: false, group: :development
gem 'solargraph', group: :development
```

ターミナルに`bundle install`と入力

### 参考記事
[Bundlerの使い方](https://qiita.com/oshou/items/6283c2315dc7dd244aef)

[Bundler まとめ](https://qiita.com/lmatsul/items/3543ef5d74c8525841dc)

[[Mac]VScode で ruby-rubocop が動かなくなったら executePath を設定してみよう](https://qiita.com/tommy_aka_jps/items/ca7ae36717b69a7e390b)

[VSCodeでRuby Solargraph拡張機能を使ってみた話](https://qiita.com/hideki0145/items/d6a18095f95d57eebe96)

# 余談
VScode等のエディタで作成した"hoge.rb"を実行するために、
ターミナルで`hoge.rb`と入力したところ、`Command not found`と怒られました。
Windowsでは、(.rbの拡張子がRuby CUIに紐付けされていれば)`hoge.rb`と入力するだけでRubyファイルを実行できます。

MacOSでは、きちんと`ruby hoge.rb`と入力しましょう。