Macの開発環境（zsh x anyenv）を初期構築する手順

# 概要
開発用に新しいMacをセットアップするためのメモ
転職などするとメモがなくて困るので

# 環境
Mac：MacBook Pro (Retina, 15-inch, Mid 2015)
OS：MacOS Mojave

# セットアップするもの
- キーボード設定
    - REALFORCE（日本語レイアウト）
- パッケージ管理
    - HomeBrew
- シェル
    - Zsh
        - プラグインマネージャにzgen
- ターミナル
    - iTerm2
- 言語
    - anyenvで統合的に管理
    - rbenv
    - phpenv

# keymapのインストール
[公式](https://pqrs.org/osx/karabiner/)
Simple Modificationの項目で英数・かなの変換は設定できる
![スクリーンショット 2019-09-04 10.20.18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41506/c0a512b7-2b98-a03c-727d-663d6177ea48.png)


# パッケージ管理
## Homebrewのインストール
ターミナルで下記のコマンドを実行する

```
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
```

# Zshのインストール
ターミナルで下記のコマンドを実行する

```
brew install zsh
echo `which zsh` | sudo tee -a /etc/shells
chsh -s `which zsh`
```

## zshのパッケージマネージャをインストール
[zgen GitHub](https://github.com/tarjoilija/zgen)
[Zshプラグインをzgenでシンプルに管理する](https://blog.longkey1.net/2018/03/24/zgen/)
[Macで快適な作業環境を構築する(zsh編)](https://qiita.com/ucan-lab/items/1794940a64882021dcb1)

アンインストールしたければ、「~/.zgen」を削除するだけでOK
再構築は「zgen reset」

```zsh:.zshrc（.zsh.zgenをインクルードする）
# include .zshrc.zgen
[[ -f $HOME/.zshrc.zgen ]] && source $HOME/.zshrc.zgen
```

```zsh:.zshrc.zgen（zgenの設定）
if [[ -f "$HOME/.zgen/zgen.zsh" ]]; then
  # load zgen
  source "$HOME/.zgen/zgen.zsh"

  # if the init scipt doesn't exist
  if ! zgen saved; then

    # prezto options
    zgen prezto prompt theme 'pure'

    # prezto and module
    zgen prezto
    zgen prezto syntax-highlighting

    # plugins
    zgen load zsh-users/zsh-completions
    zgen load zsh-users/zsh-history-substring-search

    # generate the init script from plugins above
    zgen save
  fi
fi
```

プロンプトの色が見ずらかったら
[zsh+Preztoのテーマ等をいじった話](https://qiita.com/sakurasou/items/10156a46fb7e2d1c300f)

# ターミナル
## iTerm2をインストール
iTerm2を利用
[iTerm2のおすすめ設定〜ターミナル作業を効率化する〜](https://qiita.com/ruwatana/items/8d9c174250061721ad11)

## Terminalのテーマ変更
[ターミナルが見やすくなる！シンプルなテーマ「Iceberg」の設定方法](https://okahiroto.com/iceberg/)

# 言語
## anyenvのインストール

```
brew install anyenv
echo 'eval "$(anyenv init -)"' >> ~/.zshrc
Terminalを再起動するとメッセージが出るので下記を実行
anyenv install --init
```

## phpenvのインストール

```
anyenv install phpenv
exec $SHELL -l
phpenv -l
phpenv install -l（インストールできるバージョン一覧が表示される）
phpenv install 7.3.5
phpenv global 7.3.5（PC全体で使うバージョンを指定）
```

## rbenvのインストール

```
anyenv install rbenv
exec $SHELL -l
rbenv install -l（インストールできるバージョン一覧が表示される）
rbenv install 2.6.1
rbenv global 2.6.1（PC全体で使うバージョンを指定）
```

## bundle install時のデフォルト設定をする
[Ruby: bundler のグローバル設定にデフォルト値を保存する](https://blog.amedama.jp/entry/2016/12/15/220502)
下記を実行することでカレントディレクトリ下にインストールするようになる

```
bundler config --global path vendor/bundle
```

## railsのインストール

```
gem install rails -v 5.2.2.1
```

# SSH
## SSH Keyを作成

```
ssh-keygen -t rsa -C "コメント" -b 4096
```
- 作成したファイルは管理しやすいように名前を変更して保存（実行時にきかれる）
- 利用する環境により暗号化方式はかわるので注意

## SSH の設定ファイルを作成
sshコマンドを実行する際に指定したホスト名にそって自動でオプションが入るように
[~/.ssh/configについて](https://qiita.com/passol78/items/2ad123e39efeb1a5286b)

```text:~/.ssh/config
Host 任意の接続名
HostName 接続先ホスト（ex:GitHubならgithub.com）
User ユーザ名（ex:GitHubなら登録したメールアドレス）
IdentityFile ssh-keygenで作成された秘密鍵のファイル名(ex: ~/.ssh/id_rsa)
```

# Javaのインストール
下記のサイトにあるように
`新元号対応のJava SE Development Kit 8u211から、ライセンスが変わり、無償利用は「開発・個人のみ」に変わっています！`
[2019年にJavaを利用している人は全員理解すべきことを説明してみる](https://www.orangeitems.com/entry/2018/02/08/152022)

MacにJava入れるには〜と調べて分かったことは

- 無料で商用利用ができるものがすでにインストールされている（adoptopenjdk）
- adoptopenjdkはIBMやMicrosoft Azureがスポンサーについてる提供ベンダーのもの

[JDKの長期商用サポート(LTS)の提供ベンダー比較（無償利用についても言及あり）](https://qiita.com/u-tanick/items/bb166929a58a4c20bb88)

```text:もし違うバージョンのものがインストールしたくなったら
brew cask install adoptopenjdk（何も指定しないと最新）
brew cask install adoptopenjdk8（バージョンの指定も可能）
```

# 番外編
# bundle install時にmysql2でこけたら
[bundle install 時、mysql2でエラー](https://qiita.com/tktcorporation/items/0ef8c930fc18ce72c301)

```
bundle config --local build.mysql2 "--with-cppflags=-I/usr/local/opt/openssl/include"
```

または

```
bundle config --local build.mysql2 "--with-ldflags=-L/usr/local/opt/openssl/lib"
```

を実行してからbundle install

ただし、私の環境では下記でのみ成功した

```
bundle config --local build.mysql2 "--with-ldflags=-L/usr/local/opt/openssl/lib"
```