macの環境構築を簡単にするためにdotfileを作った

# はじめに
この記事の完全版
忘れてしまうので自分用のメモ。
https://qiita.com/nakagawa1017/items/4d39ccf681a9c7ee0786

OS: macOS Catalina

## やりたいこと
- macの環境構築を簡単にするために、必要なシェルの設定、homebrewで落としてくるコマンド、macのアプリを自動で落としてくるようにしたい。
- 使うシェルはfish

## 自分が設定したリポジトリ
参考までに自分のリポジトリを置いておきます
https://github.com/marina1017/dotfiles

# 手順
## 1.初期化とアップデート
OSが最新かAppstoreを見た 最新だったのでOK

## 2.環境構築の準備
### masを使うためにApp storeにログインしておく

### sshでGitHubとやり取りする
`.ssh`ファイルを作って、下記の参考文献のようにGitHubとつなげておく

#### 参考文献
[GitHubでssh接続する手順~公開鍵・秘密鍵の生成から~](https://qiita.com/shizuma/items/2b2f873a0034839e47ce)

## 3.dotfilesに入れておいた中身のスクリプトの実行
### dotfilesをクローンする

### ドットファイル(先頭に.がついた不可視ファイル)をあるべきところに移動させるためスクリプトを実行する

```
$sh install.sh
```

```install.sh
#!/bin/bash

set -u

# 実行場所のディレクトリを取得
THIS_DIR=$(cd $(dirname $0); pwd)

cd $THIS_DIR
git submodule init
git submodule update

echo "start setup..."
for f in .??*; do
    [ "$f" = ".git" ] && continue
    ln -snfv ~/dotfiles/"$f" ~/
done

echo "fish系"
ln -sf ~/dotfiles/fish ~/.config/fish

echo "fishパッケージマネージャーfisherで管理されているもの"
ln -sf ~/dotfiles/fisher ~/.config/fisher

cat << END

**************************************************
DOTFILES SETUP FINISHED! bye.
**************************************************

END
```

これを実行すると`dotfiles`以下にあった`.Brewfile`,`.gitconfig`,`.gitignore_global`,`fish`,`fisher`がホームディレクトリ以下にシンボリックリンクをはられる。
このドットファイルをシンボリックリンクにすることで、変更が起きても`dotfiles`ないのファイルが更新されるためgitで管理がしやすくなる。

### homebrewのインストールとbrew bundleを実行
homebrewのインストールには`Command Line Tools for Xcode`が必要なので先にインストールをしておく
それが終わったら、.Brewfileに記載されているアプリをインストールする。

```homebrew_install.sh
#!/bin/bash

### メモ
#さきにApp storeにログインしておく
#install.shを実行しておく

### 不可視ファイルを可視化する(再起動したら見える)
echo "不可視ファイルを可視化します"
defaults write com.apple.finder AppleShowAllFiles TRUE

### Command Line Tools
echo "Command Line Tools for Xcodeのインストールをします"
xcode-select --install


### homebrew
echo "homebrewをインストールしています"
which brew >/dev/null 2>&1 || /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

echo "brew doctorを実行しています"
which brew >/dev/null 2>&1 && brew doctor

echo "run brew updateを行います"
which brew >/dev/null 2>&1 && brew update --verbose

echo "homebrew周りの設定が終了しました"

### .Brewfileに記載されているアプリをインストール
echo ".Brewfileに記載されているアプリをインストールします"
brew bundle --global --verbose

### fishシェルに切り替える

```

#### 注
2>&1 とすると、標準出力と標準エラー出力の両方を出力する

#### .Brewfileについて
必要な物を一覧化したら下記のようになった。Xcodeについては、Xcodeの新バージョンが出るたびに新しい物を入れるため、バージョン管理しなくてもいいなという気持ちになったので入れていない

```:.Brewfile
tap "homebrew/bundle"
tap "homebrew/cask"
tap "homebrew/core"

brew "mas"
brew "git"
brew "git-lfs"
brew "tig"
brew "fish"
brew "fzf"
brew "nodebrew"
brew "pipenv"
brew "rbenv"
brew "go"
brew "pngquant"

cask "google-chrome"
cask "google-japanese-ime"
cask "authy"
cask "iterm2"
cask "dash"
cask "charles"
cask "visual-studio-code"
cask "sketch"
cask "docker"
cask "clipy"
cask "postman"
cask "adobe-creative-cloud"

mas "co.nimbusweb.nimbuscapture", id: 1125725441
mas "com.apple.iWork.Keynote", id: 409183694
mas "com.pearlmountainsoft.PicGIFLite", id: 844918735
mas "Slack", id: 803453959
mas "LINE", id: 539883307
```

### シェルの設定
最後にシェル周りとパスを通す周りがうまくいっているかを確認する

```
$sh setup_shell.sh
```

```:setup_shell.sh
#!/bin/bash
## 導入メモ
# https://qiita.com/nakagawa1017/items/b0ac953f3448a46899fb

## /etc/shellsファイルに「/usr/local/bin/fish」を一番下に入れる
### メモ：pwを要求される
sudo sh -c "echo /usr/local/bin/fish >> /etc/shells"

## ruby2.6.3を入れる(仕事用)
### メモ：パスを通すべき「/Users/marina/.rbenv/shims」は下記コマンドを実行しないと生成されない
rbenv install 2.6.3

echo "パスが通っているか確認する「/Users/{ユーザー名}/.rbenv/shims/ruby」のような感じで出るか"
which ruby

echo "パスが通っているか確認する「/Users/{ユーザー名}/.rbenv/shims/ruby」のような感じで出るか"
which gem

## デフォルトシェルを fish に変更
### メモ：pwを要求される
echo "デフォルトシェルを fish に変更"
chsh -s /usr/local/bin/fish

## ログインシェルを起動
echo "ログインシェルを起動"
fish -l

```