エンジニア向けmacOSクリーンセットアップ手順

新しい MacBook Pro をゲットした！
新しい MacBook Air をゲットした！
新しい iMac をゲットした！

そんな時、クリーンで開発がしやすい環境を構築したくなります。

自分的な王道セットアップ手順を公開します。

# トラックパッドの設定

>
MacBook
MacBook Pro
MacBook Air
Magic Trackpad

何よりもまず、トラックパッドを使いやすく設定します。
OSデフォルトのトラックパッドは、若干使いにくいです。

## （事前）システム環境設定を開く

メニューバーからシステム環境設定を選択。
<img width="274" alt="メニューバー.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/84173/b3e1df38-e66c-6a71-75bd-776ed2026f47.png">

トラックパッドを開く。
<img width="780" alt="トラックパッド.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/84173/0f5e33eb-d721-08b8-2da8-19a63b0de7ba.png">

## タップでクリックを有効にする 【オススメ度：★★★★★】

Mac のトラックパッドは、感度も最高で軽快に動作するのが強みです。
そして、最近のトラックパッドは電気で生成する触覚フィードバックなので、昔のスイッチを押し込むタイプのマウスみたいに、クリックすることも必要ではないのです。
なのに、初期設定ではタップで反応しないようになっています。
スマホではタップが当たり前なので、「あれ、反応しない？」と思ってしまう人も多いはず。

まず、タップでクリックを有効にしましょう。
<img width="780" alt="タップでクリック.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/84173/78f64f74-5ef3-a590-ab74-a8365dbb3e1b.png">

クリック感は、「弱い」「中」「強い」から選ぶことができますが、だんぜん「弱い」がオススメです。
タップを押し込むときの指の力が少なくて済むので、短い時間でタップできますし（ごく些細な時間の差ですが、軽快な操作をするには重要な時間差なのです！）、何より指が疲れなくて済みます。

## ページ間のスワイプを3本指に変更する 【オススメ度：★★☆☆☆】

「ページ間をスワイプ」は、左右にスワイプすることで、ページを進んだり、戻ったりする操作ができるものです。

デフォルトでは、「2本指で左右にスクロール」となっているのですが、ページ遷移が重ねた紙のようなアニメーションでスクロールするのは、 Safari しかありません。
そして、 Finder やシステム環境設定では左右にスワイプしても前のページに戻れないのです！

それを、「3本指でスワイプ」に変えると、 Finder でもシステム環境設定でも、前のページに戻るナビゲーション機能が使えるようになります。

「2本指または3本指でスワイプ」は、「2本指で左右にスクロール」の重ねた紙のようなアニメーションと、「3本指でスワイプ」のナビゲーション機能の両方が使えるようになります。
内部的には、「3本指でスワイプ」は左右に動かした量が一定量を超えると、前に戻る・次に進むボタンをタップしたのと同じ処理をしている様子です。
「2本指で左右にスクロール」の場合は、指を動かした量に応じてアニメーションが進んでいく感じですね。

アニメーションを楽しむのも良いのですが、私の場合はメインブラウザが Safari ではないですし、何よりページ遷移は一瞬で切り替わって欲しいので、「3本指でスワイプ」限定にしています。

<img width="780" alt="ページ間をスワイプ.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/84173/cb73148c-fb65-d069-8a66-b15851248abe.png">

なお、3本指をページ遷移に使ってしまうので、フルスクリーンアプリケーション間のスワイプは4本指に変わります。

# キーボードの設定

>
MacBook
MacBook Pro
MacBook Air

エンジニアはタイプすることが多いですし、タイプが高速であれば高速であるほど書けるコード量が増えるので、キーボードの設定変更は必須です。

## （事前）システム環境設定を開く

キーボードを開く。
<img width="780" alt="キーボード.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/84173/0c2733cc-c428-22c7-1dd4-65c8adc2db8e.png">

## キーのリピートを速くする 【オススメ度：★★★★★】

macOSのデフォルトでは、同じキーを押し続けていても連続入力にならないようになっています。

エンジニアは、キーを連続入力することが多いですよね。
キーのリピートをMAX「速い」に、リピート入力認識までの時間をMAX「短い」にしておきます。

<img width="780" alt="キーのリピート.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/84173/16671de8-6905-3a22-3e3d-a1e5a161387d.png">

## キーボードのF1、F2などのキーを標準のファンクションキーとして使用する 【オススメ度：★★★☆☆】

>
MacBook
MacBook Pro TouchBarなし
MacBook Air

ファンクションキー使いますよね。
文字入力でカタカナにするときや、デバッグでステップ実行するときにも使いますし、いろんなキーボードショートカットを使いこなしているエンジニアにとって、ファンクションキーが使いにくいのは致命的です。

でも、TouchBar付きの場合は、Karabiner-Elements使ってキーマップを変えてしまう方が楽だと思います。

# Dockの設定

## （事前）システム環境設定を開く

Dockを開く。
<img width="780" alt="Dock.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/84173/3d63f2c1-3451-30e7-580c-22d37ed68c01.png">

## Dockを自動的に非表示にする 【オススメ度：★★★☆☆】

ディスプレイの限られた領域で、最大限に画面を広く使って、コードの視認性を高めたいですよね。
Dockを自動で隠す設定にして、画面を広く使いましょう。

<img width="780" alt="Dockを自動的に非表示にする.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/84173/3f923dbb-90b0-190e-e66d-795cbb6259f5.png">

Dockが隠れた状態でも、ショートカット `control + F3` でDockにアクセスできます。
矢印キーでアプリケーションアイコンを移動し、エンターキーで起動することができます。

# メニューバーの設定

## （事前）システム環境設定を開く

一般を開く。
<img width="780" alt="一般.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/84173/793ffd52-a134-ab97-645b-e31df5132bcd.png">

## メニューバーを自動的に非表示にする 【オススメ度：★★☆☆☆】

ディスプレイの限られた領域で、最大限に画面を広く使って、コードの視認性を高めたいですよね。
メニューバーを自動で隠す設定にして、画面を広く使いましょう。

<img width="780" alt="メニューバーを自動的に非表示にする.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/84173/a33c0a2e-2a3d-08ee-1b36-ecc8521027bc.png">

メニューバーには良くアクセスするので、使いにくく感じる人もいると思います。
全員にオススメするわけではありません。
メニューバーが隠れた状態でも、ショートカット `control + F2` でメニューバーにアクセスできます。

# アプリのインストール

App Storeを起動するよりも先にすることは、 [Homebrew](https://brew.sh/) をインストールすることです！
アプリも [Homebrew Cask](https://formulae.brew.sh/cask/) でインストールして、環境をクリーンに保ちましょう。

## Homebrew のセットアップ 【必須度：★★★★★】

Homebrew をセットアップアップするために、 `Terminal.app` を開きます。
コピペ

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

## iTerm2 のインストール 【必須度：★★★★★】

[iTerm2](https://www.iterm2.com/) は、デファクトのターミナルアプリです。

最近の `Terminal.app` はカスタマイズできることも増え、使いやすくなってきています。
それでも、 iTerm2 の方ができることが多く、使いやすいです。

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

```shell
brew cask install iterm2
```

## ブラウザのインストール 【必須度：★★★★☆】

ブラウザも Homebrew でインストールしましょう。
必要なブラウザを選んでください。

* Google Chrome

```shell
brew cask install google-chrome
```

* Firefox

```shell
brew cask install firefox
```

* Opera

```shell
brew cask install opera
```

* Vivaldi

```shell
brew cask install vivaldi
```

## Node.js のセットアップ 【必須度：★★☆☆☆】

緒論ありますが、私は [nodebrew](https://github.com/hokaccha/nodebrew) を使ってます。

※ 環境変数の設定は各バージョンマネージャーのサイトを参照

* [nodebrew](https://github.com/hokaccha/nodebrew)

```shell
brew install nodebrew
nodebrew install latest
```

* [nodenv](https://github.com/nodenv/nodenv)

```shell
brew install nodenv
nodenv init
nodenv install --list
```

* [nvm](https://github.com/nvm-sh/nvm)

```shell
brew install nvm
nvm install node
```

## ソースコード管理ツールのインストール 【必須度：★★★☆☆】

* [Sourcetree](https://www.sourcetreeapp.com/)

```shell
brew cask install sourcetree
```

## 仮想化ツールのインストール 【必須度：★☆☆☆☆】

* [Docker](https://www.docker.com/products/docker-desktop)

```shell
brew cask install docker
```

* [VirtualBox](https://www.virtualbox.org/wiki/Downloads)

```shell
brew cask install virtualbox virtualbox-extension-pack
```

## エディタのインストール 【必須度：★★★★☆】

* [Visual Source Code](https://code.visualstudio.com/Download)

```shell
brew cask install visual-studio-code
```

* [Sublime Text 3](https://www.sublimetext.com/3)

```shell
brew cask install sublime-text
```

* [Atom](https://atom.io/)

```shell
brew cask install atom
```

## コミュニケーションツールのインストール 【必須度：★☆☆☆☆】

* [Slack](https://slack.com/downloads/mac)

```shell
brew cask install slack
```

* [Google Chat](https://gsuite.google.com/products/chat/)

```shell
brew cask install google-chat
```

* [Skype](https://www.skype.com/get-skype/)

```shell
brew cask install skype
```

* [ChatWork](https://go.chatwork.com/download/)

```shell
brew cask install chatwork
```

## IME のインストール 【必須度：★★☆☆☆】

* [ATOK](https://www.justsystems.com/jp/products/atokmac/)

```shell
brew cask install atok
```

* [Google IME](https://www.google.co.jp/ime/)

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

# キーマップのカスタマイズ

>
US キーボード

エンジニアにとっては、日本語が入力しやすいことよりも、プログラミング言語が入力しやすいことの方が重要です。
今までの短い人生で、タイプした量が多いのは何よりもプログラミング言語。
その次にスマホのフリック入力でしょう。

英語圏生まれのプログラミング言語は、英字キーボードの記号配置を参考に作られてますね。
英字キーボードでタイプしたら、プログラミング言語がタイプしやすいのは当然です。

それでも、日本語入力ができないのは困ります。
そんな癖のある悩みを解決してくれるのが、キーリマッピングアプリの [Karabiner-Elements](https://pqrs.org/osx/karabiner/) です。

## Karabiner-Elements のインストール 【必須度：★★★☆☆】

```shell
brew cask install karabiner-elements
```

## オススメの Modifications

<img width="1112" alt="Complex Modifications.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/84173/b09a2841-372f-c1e8-28b2-bf6bd6ca1aff.png">

### （事前）設定の仕方

事前に用意されているパターンリストの中から、好みの設定を選んで、 Karabiner に登録します。
[Karabiner-Elements complex_modifications rules](https://pqrs.org/osx/karabiner/complex_modifications/)

### コマンドキー（右のみ）を単体で押したときに、英数・かなをトグルで切り替える 【オススメ度：★★★★★】

US キーボードには「英数」キーや「かな」キーがないので、代わりに右の ⌘ キーで切り替えるようにします。

* 含まれているパッケージ  
  `For Japanese （日本語環境向けの設定） (rev 4)`
* ルール名  
  `コマンドキー（右のみ）を単体で押したときに、英数・かなをトグルで切り替える。`

### fn キーと数字キーを押したときに、ファンクションキーとして動作させる 【オススメ度：★★★★☆】

TouchBar 付きモデルの場合、 TouchBar のファンクションキーは押しにくいですし、コンビネーションで動作しなかったりします。
fn キーと数字キーの組み合わせでしたら、コンパクト物理キーボードでも同じ仕様のものがあるので、違和感なく使えます。

* 含まれているパッケージ  
  `Map fn + number keys to function keys (rev 2)`
* ルール名  
  `Map fn + number keys to their corresponding function keys (rev 1)`

### caps lock キーを control キーとして動作させる 【オススメ度：★★★★☆】

macOS では、 Linux と同じように control キーと組み合わせて使えるショートカットが多いです。
カーソル移動も `control + A` や `control + E`、 `control + N` `control + P` などよく使います。
ホームポジションから指を動かさなくて良いので、タイプ効率がアップします。

[The Best Keyboard Shortcuts for Bash (aka the Linux and macOS Terminal)](https://www.howtogeek.com/howto/ubuntu/keyboard-shortcuts-for-bash-command-shell-for-ubuntu-debian-suse-redhat-linux-etc/)

control キーはよく使うので、 caps lock キーに割り当てすると、タイプしやすくなります。

* 含まれているパッケージ  
  `Change caps_lock key (rev 4)`
* ルール名  
  `Change caps_lock to control if pressed with other keys. (rev 2)`

### fn キーとチルダキーを押したときに、エスケープキーとして動作させる 【オススメ度：★★★☆☆】

TouchBar 付きモデルの場合、 esc キーも TouchBar になります。
vim を使っていたら、 esc キーを入力する機会が多いですよね。

* 含まれているパッケージ  
  `Change fn + grave_accent_and_tilde to esc`
* ルール名  
  `Change fn + grave_accent_and_tilde to esc`