［備忘録］ MacBookの開発環境

# Macバージョン等
- macOS Mojave 10.14.4
- 2019.5.7実施

# VSCode
- [公式ページ](https://code.visualstudio.com/download)からダウンロードして、インストール

## VSCodeでHTTPS対応のWebサーバーを起動できるようにする
- [Live Server for Visual Studio Code で HTTPS を有効にする](https://qiita.com/ma2shita/items/297c812a6cd09b5e82c8)


# Homebrew
- [公式ページ](https://brew.sh/index_ja)にあるコマンドでインストール 

```
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
```
- `brew doctor` でインストール完了確認

# treeコマンド
- brewでインストール

```
brew install tree
```

# iTerm
- Mac標準のTerminalではなくて、iTermを使う
- [https://www.iterm2.com/](https://www.iterm2.com/)からダウンロードしてインストール

# Iceberg
- 今回はカラーテーマをIcebergに変えた。iTerm用に公開されているもの（[https://github.com/Arc0re/Iceberg-iTerm2](https://github.com/Arc0re/Iceberg-iTerm2)）を利用
- その他の参考情報
    - https://www.ambitious-i.net/blog/vim_use_iceberg
    - https://cocopon.github.io/iceberg.vim/
- `~/.vimrc` への追加内容は次の通り（なければ作成する）

```text:~/.vimrc
syntax on
set background=dark
set t_Co=256
colorscheme iceberg
```

# Zsh
- brewでインストール

```
brew install zsh
```

- パスの確認

```
which zsh # /usr/local/bin/zsh
```

- `sudo vi /etc/shells` してログインシェルへの追加

```text:/etc/shells
# List of acceptable shells for chpass(1).
# Ftpd will not allow users to connect who are not using
# one of these shells.

/bin/bash
/bin/csh
/bin/ksh
/bin/sh
/bin/tcsh
/bin/zsh
/usr/local/bin/zsh # <- added this time
```

- デフォルトログインシェルに変更

```
chsh -s /usr/local/bin/zsh
```

- VSCodeのシェルを変更（```/bin/bash -> /usr/local/bin/zsh```）

```
"terminal.integrated.shell.linux": "/usr/local/bin/zsh"
"terminal.integrated.shell.osx": "/usr/local/bin/zsh"
```

# Git
- gitコマンドを打って、Xcode経由でインストール
- 最低限の設定を行う

```
git config --global user.name "Ryu Yamashita"
git config --global user.email "yamaroo@example.com"
```
- `~/.gitconfig` は[「天下一.gitconfig大会」の意外な結末](https://blog.cybozu.io/entry/1645)等を参考にカスタマイズする


# git secrets
- AWSのクレデンシャルを守るためにインストールしておく
- brewでインストールし、初期設定を行う
 
```
brew install git-secrets
git secrets --register-aws --global #AWSに対する設定は一括して行う
```
- MacOSのSourceTreeで使いたい時には[この辺](https://github.com/awslabs/git-secrets)を参考にする

# fzf

- brewでインストール
- その他の参考情報
    - [fzfを使おう](https://qiita.com/kompiro/items/a09c0b44e7c741724c80)
    - [fzfを使ってターミナルでの作業を効率化する](https://www.trhrkmk.com/posts/fzf-command-line-productivity-tools)
    - [fzf（fuzzy finder）の便利な使い方をREADME, Wikiを読んで学ぶ](https://wonderwall.hatenablog.com/entry/2017/10/06/063000)

```
brew install fzf
```

- ここまでで `.zshrc` に必要な最低限の設定が次の通り

```text:.zshrc
export FZF_DEFAULT_OPTS="--height 50% --layout=reverse --border --inline-info --preview 'head -100 {}'"
```

## ripgrep, batをインストール

- fzf のユーティリティとして今回付帯的にインストールする
- [ripgrep](https://github.com/BurntSushi/ripgrep)はgrepコマンドの拡張、[bat](https://github.com/sharkdp/bat)はcatコマンドの拡張
- brew でインストール

```
brew install ripgrep
brew install bat
```

- ripgrep, batインストール後のfzf のための`.zshrc`設定内容

```:.zshrc
export FZF_DEFAULT_OPTS="--height 50% --layout=reverse --border --inline-info --preview 'bat  --color=always --style=header,grid --line-range :100 {}'"
export FZF_DEFAULT_COMMAND="rg --files --hidden --follow --glob '!.git/*'"

export FZF_CTRL_T_COMMAND="rg --files --hidden --follow --glob '!.git/*'"
export FZF_CTRL_T_OPTS="--preview 'bat  --color=always --style=header,grid --line-range :100 {}'"
```

# anyenv
- [anyenv](https://github.com/anyenv/anyenv)でNode.jsやPythonのバージョン管理を包括的に行う（必要に応じて anyenv 自体のアップデートも公式を見て実施する）
- brew でインストール

```
brew install anyenv
```

- `.zshrc`への追加内容は次の通り

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

`exec $SHELL -l` で `.zshrc` の修正内容を適用する

# nodenv
- Node.jsを使うために、anyenvに続けてインストールする

```
anyenv install nodenv
exec $SHELL -l
```
- `nodenv install -l` で利用可能なバージョン一覧を確認し、所望のバージョンをインストール（今回は執筆時点案定版の`v8.10.0`）

```
nodenv install 8.10.0 #インストール
```
- `nodenv versions` でインストールされたことを確認

```
nodenv versions
  v8.10.0
```
- プロジェクト単位で利用バージョンを設定できるが、グローバルで`v8.10.0`を利用できるようにしておく

```
nodenv global v8.10.0 #グローバル利用バージョンの設定
nodenv versions #設定確認
* v8.10.0 (set by /Users/username/.anyenv/envs/nodenv/version)
node -v #コマンドの実行確認
v8.10.0
npm -v #npmの確認
5.6.0
```

# pyenv（Python編）
- Pythonを使うために、nodenv同様anyenvに続けてインストールする

```
anyenv install pyenv
exec $SHELL -l
```
- `pyenv install -l` で利用可能なバージョン一覧を確認し、所望のバージョンをインストール（今回は`3.6.0`）

- なお、`pyenv install 3.6.0` が Mojave でエラーにならないように次の通り `zlib` を事前に設定する

```
sudo installer -pkg /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg -target /
```

- `zlib` 問題を解決したら、`Python 3.6.0` のインストールを進める

```
pyenv install 3.6.0 #インストール（少々時間がかかる）
```
- `pyenv versions` でインストールされたことを確認

```
pyenv versions
* system (set by /Users/username/.anyenv/envs/pyenv/version)
  3.6.0
```
- グローバルで`3.6.0`を利用できるようにしておく

```
pyenv global 3.6.0 #グローバル利用バージョンの設定
pyenv versions #設定確認
  system
* 3.6.0 (set by /Users/username/.anyenv/envs/pyenv/version)
python -V #コマンドの実行確認
Python 3.6.0
```

# pyenv（Anaconda編）
- [Anaconda](https://www.anaconda.com/)の管理もpyenvで行える

```
anyenv install pyenv
exec $SHELL -l
```
- `pyenv install -l | grep anaconda` で利用可能なバージョン一覧を確認し、所望のバージョンをインストール（今回は`anaconda3-5.0.0`）

```
pyenv install anaconda3-5.0.0 #インストール（少々時間がかかる）
```
- `pyenv versions` でインストールされたことを確認

```
pyenv versions
* system (set by /Users/username/.anyenv/envs/pyenv/version)
  anaconda3-5.0.0
```
- グローバルで`anaconda3-5.0.0`を利用できるようにする

```
pyenv global anaconda3-5.0.0 #グローバル利用バージョンの設定
pyenv versions #設定確認
  system
* anaconda3-5.0.0 (set by /Users/usrname/.anyenv/envs/pyenv/version)
python -V #コマンドの実行確認
Python 3.6.2 :: Anaconda, Inc.
conda info -e #仮想環境の確認
# conda environments:
#
root                  *  /Users/username/.anyenv/envs/pyenv/versions/anaconda3-5.0.0
```

# Pureプロンプト
- 今回は[これ](https://www.slant.co/topics/7553/versus/~powerlevel9k_vs_pure_vs_spaceship)を見て、Pureプロンプトを利用することにした
- `npm` でインストールする（今回Preztoは使わない）

```
npm install --global pure-prompt
```

- `.zshrc` への追加内容は次の通り

```shell:.zshrc
autoload -U promptinit; promptinit
prompt pure
```

# Docker

- [公式ページ](https://hub.docker.com/editions/community/docker-ce-desktop-mac)からダウンロードして、インストール
- 以前はVagrant上のUbuntu上にインストールしていたが、今回はMacの上にインストールすることにした

# AWS CLI
- [公式ページ](https://aws.amazon.com/jp/cli/)中の[こちらのドキュメント](https://docs.aws.amazon.com/cli/latest/userguide/install-macos.html)を参考にインストール
- Python設定時にpipが使えるようになっているので、次のようにインストールできる

```
pip3 install awscli --upgrade --user
```

- `aws --version`でインストール状況確認する

```
aws --version
 aws-cli/1.16.137 Python/3.6.0 Darwin/18.5.0 botocore/1.12.127
```

- `aws configure`で初期設定を行う

# Serverless Framework
- AWS Lambda等サーバーレスサービスのデプロイ・管理に利用する
- `npm` でインストールする

```
npm install -g serverless
```

# AWS SAM
- Serverless Frameworkと機能がラップするが、SAMでしかできないこともあるので入れておく
- [こちら](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/serverless-sam-cli-install-mac.html)に従って次の通り、brewでインストールする

```
brew tap aws/tap
brew install aws-sam-cli
```