新しいMacを買ったらやること

# はじめに

**Mac** 買い替えて 移行アシスタント使って移行しようと試みましたが、有線接続でないと移行する時間めちゃくちゃ掛かりそうだったので、これを機に環境構築し直す方法を考えてみることにしました。

完全に自分用のメモになってしまうため、あまり参考にはならないと思いますが、「こうやって環境作っている人もいるんだなあ」みたいに眺めて暇をつぶしてもらえたらなと思います。

# やること一覧

## Finder の設定

[iMac/MacBook購入後に必ず設定したい設定項目](https://qiita.com/ryuichi1208/items/5905240f3bfce793b33d) を参考に、ターミナルを起動し以下のコマンドを入力する。


```zsh
# デフォルトで隠しファイルを表示する
$ defaults write com.apple.finder AppleShowAllFiles -bool true

# USBやネットワークストレージに.DS_Storeファイルを作成しない
$ defaults write com.apple.desktopservices DSDontWriteNetworkStores -bool true
$ defaults write com.apple.desktopservices DSDontWriteUSBStores -bool true

# 設定反映
$ killall Finder
```

その他、[上のリンク](https://qiita.com/ryuichi1208/items/5905240f3bfce793b33d)を参考にお好みなやつを設定する。

## Xcode と Homebrew

### Xcode

- **`Xcode`** を `AppStore` からインストールする。
    - ターミナルを起動し以下のコマンドを入力して、**`Command Line Tools`** のインストールを行う。
     
```zsh:
$ xcode-select --install
```

### Homebrew

https://brew.sh/index_ja をもとに以下をコピペして実行することで [Homebrew] をインストールする。

```zsh:
$ /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"
```

インストール完了後に以下のように実行して確認する。

```zsh
$ brew doctor
```

問題があった場合、今のうち解決しておいてください。
また、以下でも、こまめに `brew doctor` を入力するようにお願いします。


## Google Chrome 関連

- **`Google Chrome`** をインストールする。
 
```shell:
$ brew cask install google-chrome
```

- **`Google Chrome`** のアカウント同期を行う。
- 好きなフォントをインストールして **`Google Chrome`**  に設定する。

## キーボード入力関連

- **`Google 日本語 IME`** をインストールする。

```shell:
$ brew cask install google-japanese-ime
```

- `英数 (Google)` と `ひらがな (Google)` のみにする。
- キーのリピートとキーのリピート認識時間をお好みに変える。
- キーボードの修飾キーをお好みに変える。
- システム環境設定 -> キーボード -> 入力ソース -> ショートカット -> `Ctrl + Space` で日本語切り替えできるように設定する。


## Visual Studio Code のインストール

いつの間にか使い慣れてしまったエディタ **`Visual Studio Code`** をインストールしておき、設定ファイルとかを書き換える必要がある場合に備えておきます。

```zsh
$ brew cask visual-studio-code
```

## anyenv のインストール

`xxx-env` 系が多すぎるのでこれを機に **[anyenv]** に統一してしまいます。

```zsh
$ brew install anyenv
$ anyenv init
```

入れ終わったら必要なもの適当に入れてください。以下は例です。

```zsh
$ anyenv install rbenv
$ anyenv install pyenv
$ anyenv install nodenv
$ exec $SHELL -l
```

おそらく、**[Homebrew]** で入れた場合、下のコマンドを実行する必要があると思われます。
というのも `anyenv init` しただけでは、私の環境だと `.zshrc` に `eval "$(anyenv init -)"` ←書けと言われてしまいます。

```zsh
$ echo 'eval "$(anyenv init -)"' >> ~/.zshrc
$ exec $SHELL -l
```

`.zshrc` はどうせ後で **`dotfiles`** で上書きすることに注意してください。

## iStats のインストール

私の趣味ですが、**[iStats]** をこの時点でインストールしてしまいます。
**[iStats]** は **`gem`** を使ってインストールするので `$ anyenv install rbenv` を先に行っておく必要があります。

```zsh
# インストール可能なバージョンの一覧
$ rbenv install -l

# とりあえず、最新バージョンをインストールする。
$ rbenv install 2.7.1

# バージョンを切り替えない場合、システムの gem を使おうとするので切り替える。
$ rbenv global 2.7.1

# iStats のインストール
$ gem install iStats

# 動作チェック
$ istats -h
$ istats scan
$ istats enable all
$ istats
```

## Python のインストール

のちほど、**[Powerline]** を **`pip`** でインストールするため、**[pyenv]** を使って **`Python`** のインストールを済ましておきます。

```zsh
# インストール可能なバージョンの一覧
$ pyenv install -l

# とりあえず、最新バージョンをインストールする。
$ pyenv install 3.8.3

# バージョンを切り替えない場合、システムの pip を使おうとするので切り替える。
$ pyenv global 3.8.3
```

ここでおそらく、`brew doctor` で `config` 関連の警告が出ると思われるので、`.zshrc` に以下を記述しておきます。

```zsh
alias brew="env PATH=${PATH//$(pyenv root)\/shims:/} brew"
```

多分、↓をコピペ実行でもいけます。また、↑と同様の内容が **`dotfiles`** のほうにも記述されているか確認しておいてください。

```zsh
$ echo `'alias brew="env PATH=${PATH//$(pyenv root)\/shims:/} brew"' >> .zshrc`
```

ただし、`config` ファイルが増えると、このやり方では厳しくなっていくと思われるので注意が必要です。

## [Oh-My-Zsh] のインストール

別に **[Oh-My-Zsh]** でなくてよいのですが、なんか完全にこれを上書きできるようなフレームワークがないようでしたので、これを継投させることにしました。
はっきり言って、そもそもシェルも `zsh` である必要はなく、 `fish` に乗り換えてしまうというのもありだと思います。
今回はまだその時期ではないかなと思っただけで、環境の再構築をする際には、この部分 (zsh 周り) は常に議論の余地があります。

<!---
### Zsh のインストール

まず、`システムの zsh` から `brew の zsh` に変更しておきます。
これはおそらく必要ではありませんが、面倒なことになったら嫌なので、念の為やっておきます。

```zsh
# zsh のインストールを行う。
$ brew install zsh

# /etc/shells に /usr/local/bin/zsh を追加する。
$ sudo vi /etc/shells

# ログインシェルに設定する。
$ chsh -s /usr/local/bin/zsh
```

### [Oh-My-Zsh] のインストール
--->

↓をそのまま実行すると既存の `.zshrc` に上書きするのでお気をつけください。
さすがに、tmp ファイルのような残骸は存在するようですが。

```zsh
$ sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
```

インストール後、`Catalina` の場合、ディレクトリの権限が安全ではないと怒られるようです。
推奨どおりに↓を実行するとだいたい消えると思われます。

```zsh
$ compaudit | xargs chmod g-w,o-w
```

**`Zsh`** に関してはとりあえず、システムの **`Zsh`** を継投させることにしました。
なにか問題があったら **`Brew`** の **`Zsh`** にします。

## [iTerm2] のインストール

今更ですが、ここで **[iTerm2]** を入れておきます。
入れ忘れていただけなので、実際は **`Visual Studio Code`** を入れるタイミングで同時に入れてしまっていいと思います。

```zsh
$ brew cask install iTerm2
```

## [tmux] のインストール

```zsh
$ brew install tmux
$ tmux --version
```

**[tmux]** の動作を確認しておいてください。

## [Powerline] のインストール

```
$ pip install powerline-status
```

インストールできたら `~/.config/powerline` にシンボリックリンク作っておきます。

```zsh
$ ln -s ~/.anyenv/envs/pyenv/versions/3.8.3/lib/python3.8/site-packages/powerline ~/.config/powerline
```

この時点で、↓を `.zshrc` や `tmux.conf` に書き込んで、**[powerline]** の動作を確認してもいいです。

```zsh:.zshrc
# powerline
if [[ -f ~/.config/powerline/bindings/zsh/powerline.zsh ]]; then
    powerline-daemon -q
    . ~/.config/powerline/bindings/zsh/powerline.zsh
fi
```

```conf:tmux.conf
# powerline
if-shell "test -f ~/.config/powerline/bindings/tmux/powerline.conf" \
  "source ~/.config/powerline/bindings/tmux/powerline.conf"
```

## Powerline 用の フォントをインストール

**[Powerline]** で使用できる日本語フォントをここでインストールしておきます。

### Ricty for Powerline のインストール

**[Powerline]** でも使える Ricty フォントをインストールしておきます。
`brew tap` コマンドを使用します。

```zsh
# 今回は sanemat さんのリポジトリを使わせてもらいます。
$ brew tap sanemat/font

# ricty が追加されていることと、options に --with-powerline があるかを確認しておく。
$ brew search ricty
$ brew options ricty

# ricty のインストール
$ brew install ricty --with-powerline

# フォントのコピー（cp -f /PATH/TO/RICTY/fonts/Ricty*.ttf ~/Library/Fonts/）
$ cp -f /usr/local/opt/ricty/share/fonts/Ricty*.ttf ~/Library/Fonts/

# フォントのキャッシュ更新
$ fc-cache -vf
```

インストールが完了したら、**[iTerm2]** のフォントを **`Ricty for Powerline`** に設定して、うまく描画されていることを確認してください。


### [nerd-fonts] のインストール

```zsh
$ brew tap homebrew/cask-fonts
$ brew cask install font-hack-nerd-font
```

好きなフォントを選んでください。
私は **デフォルトフォント** に **`Ricty for Powerline`** を、**Non-ASCII Font** に **`nerd-font`** をそれぞれ設定しました。

## [Git] のインストール

**`dotfiles`** の Git リポジトリを落とす必要があるので、先に [Git] をインストールしておきます。

```zsh
# そもそも Git が入っているか確認する。
$ git --version

# brew で入れ直す。
$ brew install git
$ exec $SHELL -l

# 新しい Git になっているか確認する。
$ git --version
```

## 汎用的なツールをインストール

ここでは、環境ごとに必要なものではなく、どんな環境下でもほしいツールをインストールしてしまいます。
汎用ツールゆえに、なるべく **`Brew`** でインストールしておこうと思います。
キリがないので適当に切り上げてます。

```zsh
$ brew install peco
$ brew install ghp
$ brew install glances
$ brew install jq
$ brew install lsd
$ brew install fd
$ brew install ripgrep
$ brew install rga
$ brew install procs
$ brew install bat
$ brew install git-delta
...
$ brew doctor
```

## Dotfiles のインストール

自分のリポジトリから `Dotfiles` のインストールを行う前に、いままでの設定と前のPCの設定で整合性が取れるように `Dotfiles` を編集しておいてください。

```zsh
$ git clone https://github.com/username/dotfiles
```

このあと適当にシンボリックリンクをはり、動作の確認をお願いします。
うまく行かなかった部分は、きちんと Fix して push しておきましょう。

# おわり

基本的な設定は以上になります。
基本的な設定に抑えたため、この設定が足りないなどはあると思いますが、それは各々必要な部分を考えて入れるようにお願いします。

おつかれさまでした。:tada:

[Homebrew]:<https://brew.sh/>
[anyenv]:<https://github.com/anyenv/anyenv>
[iStats]:<https://github.com/Chris911/iStats>
[pyenv]:<https://github.com/pyenv/pyenv>
[Powerline]:<https://github.com/powerline/powerline>
[Oh-My-Zsh]:<https://github.com/ohmyzsh/ohmyzsh>
[iTerm2]:<https://www.iterm2.com/index.html>
[tmux]:<https://github.com/tmux/tmux>
[Git]:<https://github.com/git/git>
[nerd-fonts]:<https://github.com/ryanoasis/nerd-fonts>