まっさらなMacに開発環境を構築する（個人的な備忘録

自分が行う設定や、インストールするソフト類を記録する。
みんなもどこかしら役に立ったら、いいね👍しようね(請求)。
記事書くひとのモチベーションになる上、参考になった記事がちゃんとバズるようになるので、
いい情報を得るために積極的にいいねしよう(提案)。
こんな記事にはLGTMしなくていいから(良心)

# 環境
小生のメイン環境
- MacBook Pro 15-inch (Mid 2014)

# システム環境設定
## Dock
下にあるとスペースを無駄にしている気がするので、小生は左で自動で隠す派。周りは右に置く人が多い気がする。
そして、昔からの癖でアプリケーションフォルダがないと落ち着かない。
右クリック > 表示形式 > フォルダ で昔のようにタイル状に並ぶ。
<img width="215" alt="スクリーンショット 2019-08-04 0.51.46.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/30688/9d85080a-910e-9e22-eef4-b7c402924fa5.png">
正直、だいたい後述のAlfredで起動できるのでそれで済むが、
アプリの一覧としては、4本指でトラパをつまむと出てくるメニュー(Launchpad)よりも、これのほうが落ち着くからである。
レガシーは遺してはならないので、この時代を知らない人は、忘れよう(戒め)。

## ホットコーナー
使ってる人見たことないけど、大学院の恩師から伝授されて今でも愛用している設定。
画面の四隅にカーソルを当てると、所定の動作を割り当てられる。
システム環境設定 > デスクトップと〜 > スクリーンセーバー > ホットコーナー...

以下、小生の設定例
**右上**: デスクトップ
(ファイル掴んで右上に当て、一旦デスクトップに置く、とかいうときに重宝)
**右下**: ディスプレイをスリープさせる
(ディスクまでスリープさせたりはしないので、席を立つときにディスプレイだけサッと落とせて便利)

# ソフト
AppStoreで落とせるものはなるべくAppStoreのリンクを張った。
分類はなんか百貨店のフロア名みたいになってしまった。
## ライフスタイル
- [Chrome](https://www.google.com/intl/ja/chrome/)
説明不要。問答無用。小生有自信推奨此品。美味、健康。

- [Spark](https://apps.apple.com/jp/app/spark/id997102246)
ちょっと前までAirMailのβ版を使っていたが、有料に移行したというセコい理由で乗り換え。
HTMLメールしかなくてプレーンテキストが打てなくて困るなど。純正のメーラーでもいいかなと思い始めている。

## ユーティリティ
- [Alfred](https://alfredapp.com)
ランチャ。これがないともうだめ。フォルダもアプリも大体ここから呼び出して済ませる。
ちなみにこれはAppStoreにもあるが、課金して便利に使う場合は公式サイトから落とさないといけなかったはずなので、公式のURLを記載。

- [MagicPrefs](http://magicprefs.com/)
中クリック(ミドルクリック)を、トラックパッドの3本指クリックで代用したいので、これを導入。
主にブラウザのタブ管理するときに効率爆上げ。
上記設定だけで、
リンクを3本クリックすると新規タブで開く、
タブを3本クリックで閉じる。
とか設定できる。

ただし、このツールは相当古く、管理もされていないツールなので、
気にする方は使わないように。

- [The Unarchiver](https://apps.apple.com/jp/app/the-unarchiver/id425424353)
昔から解凍用に使っている。知らないうちにダークモード対応なんてしてた。
もし他に良いものがあれば情報ください。

- [WinArchiver Lite](https://apps.apple.com/jp/app/id414855915)
Windowsとzipデータをやり取りするときのマナー。
文字化けさせない、余計なファイルを固めないために、このアプリを使う。

- [f.lux](https://justgetflux.com/)
ブルーライト~~ヨコハマ~~カットアプリ
これがないとおめめがしんどい。
これの良いところとしては、普通はON、正しい色がほしいフォトショイラレのときはOFF、みたいにアプリ毎設定ができるところ。

- [PicGIF Lite](https://apps.apple.com/jp/app/picgif-lite/id844918735)
Gif作成ツール。
`Cmd+Shift+5` とかQuickTimeとかで録画したものをgifアニメにして貼り付ける、のが主目的。

- [Skitch](https://apps.apple.com/jp/app/id425955336)
スクショやそこいらの画像に、ちゃちゃっとキャプションつけられるもの。
Macのプレビューでもサクッとできたりするが、こちらの方が直感的なので好き。

- [Karabiner](https://pqrs.org/osx/karabiner/)
キーバインドの変更ができるツール。デフォのmacならあまり要らないが、
外付けkeyboardとかのキーバインド変更や、
その外部キーボード接続時にmac本体のキーボードを無効にする設定など(これでHHKBとか乗っけて仕事するひとも多い)につかう

## メディア系
- [MPlayerX](http://mplayerx.org/download.html), [VLC](https://www.videolan.org/vlc/index.ja.html)
動画再生はこれ2つだが、大概MPlayerXでOK。ダメならVLCで見る。
MPlayerXは上下左右キーで1分、15秒、単位での送り戻しができるのでいい。その他も実にシンプル。
VLCは機能豊富なので小難しいことやりたいとき用。まれにお鉢が回る。  
MPlayerXはここ数年更新されていないので、気になる方は使わないほうがいいかも。
また、余計なソフトをインストールするようしつこく言ってくるので、間違えてインストールしないよう注意。
★ 2020/01/06 追記
最近、macOSをCatalinaに上げたら、音だけ再生されて、画像は最初のフレームから動かなくなりました。
多分設定が悪い気はする。けど使えなくなったので、メインでQuickTime、サブでVLCに変更。

- [Adobe CC](https://www.adobe.com/jp/creativecloud/catalog/desktop.html)
言わずもがな。

# 開発環境(ほぼターミナル)
はい、ここからが本番。

## [Command Line Tools](https://developer.apple.com/download/more/)

ひとまず[XCode](https://apps.apple.com/jp/app/xcode/id497799835)は初手でインストール。
初期で入っているコマンド類は少ないので、ひとまず諸々まとめて入れるために、これを適用。
gitを使おうとしてbashに「ないよ。」と怒られて気づいた。そりゃそうか。
大体下記を実行すれば入るかと思うが、

```shell
$ xcode-select --install
```

今回ちょっとできなさそうだったので、[Apple Developer](https://developer.apple.com/download/more/)とかで、xcodeやosのバージョンに合うCommand Line Toolsを落として入れた。

## [Homebrew](https://brew.sh/index_ja.html)
パッケージツール。大体これでいれるので、上記リンクの通り、rubyのワンライナーを実行。

```shell
# 下記は記事執筆時点。上記リンク参照のこと。
$ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
```

## Shell
いつもzshではなくfishを使うので、以下大多数はあまり参考にならないと思う。
わからない方はfishは入れずに。どうぞ。

### tmux (ターミナルマルチプレクサ)
iTermがあれば複数のプロンプトをタブ管理できるが、
Linuxを扱うときに使い慣れていたので `tmux` を使う。
このtmuxは仮想端末というもので、サーバーで使った場合、セッションを起動したらウィンドウを閉じても処理し続けてくれるので、すこ。

```shell
$ brew install tmux
```

### fish shell
不親切なbashは使いたくないけど、zshをゴリゴリいじるのもつらそう。
妥協点としてfishを使っている。
tabでの補完も効くし、オプションやパスのサジェスチョンもわかりやすい。
難しいことをしないなら、とても親切なshell。

Homebrewのfishのバージョンが3に上がってた。
前は自分でビルドしていたが、brewからでいいでしょ。

```shell
$ brew install fish
```

#### fishをログインシェルに登録
fishはこの段階ではログインシェルとして登録されていないので、 `chsh` すると `fish: non-standard shell` と怒られる。

まずfishの場所を確認。

```shell
$ which fish # これの出力をメモる
```

エディタでもvimでも良いが `/etc/shells` を開いて上記コマンドで出たパスを新しい行に追記。(vimの場合 `sudo` で開くのをお忘れなく。)

#### ログインシェルを変更

```shell
$ sudo chsh -s $(which fish) ユーザ名
```
#### [fisherman(プラグインマネージャ)](https://github.com/jorgebucaran/fisher)
fishのプラグインマネージャ。
前はoh-my-fishという、zshでいうところのoh-my-zshみたいなものがあったが、最近はfisherを使っている人をよく見る。
[github](https://github.com/jorgebucaran/fisher)から丸写し。
実際、fishのfunctionを入れているフォルダにfish scriptを入れるだけのようなので、違う場所に保存している方は読み替えて、どうぞ。

```shell
$ curl https://git.io/fisher --create-dirs -sLo ~/.config/fish/functions/fisher.fish
```

### みため (Powerline類)
#### カラースキーム
最近好きで使っている[Japanesque](https://this.aereal.org/entry/2013/01/02/222304)をいれておく。Draculaみたいなカラーリングかな？
https://this.aereal.org/entry/2013/01/02/222304
上記からgithubに飛び、iterm用のJapanesque.itermcolorsをもらってくる。

#### tmux powerline
以下参照しながらtmuxのステータスをpowerline系にする。
https://qiita.com/yukirii/items/92c9ceedd26f168c87dc

**※注意**
今回、参照元どおり、pythonのパッケージマネージャである `pip` を使っているので、先に後述のpythonを入れておく。
なお、homebrewからのインストールでは現在(2019.09)pythonは3系が入るので、 `pip3` コマンドが使える。
いちいち `3` をつけるのが面倒なら、shellの設定に以下のaliasを追加するといいかも

```shell
alias pip='pip3'
```

### その他個人的に使うものを入れておく

```shell
$ brew install fzf go wget
```
wgetって標準で入ってないのね...。
以下、その他諸々作業の必要なもの

#### Python(3系)
pythonは書けないのだが、パッケージマネージャ `pip` でインストールする物があるので導入。
あと、初期でmacにはpythonが入ってるが、pipはない & 2系なので、3系を入れる。

バージョン管理ツールは...ひとまずpythonは仕事で使わないなら要らなさそうなので、ナシで。

```shell
$ brew install python
```

上記ではpipでインストールしたツールが使えないので、pipのPATHを通す。
(記事書いてる当初はpythonは3.7だったので、適宜読み替えていただいて)
以下はfish shellでのPATH通しなので、

```shell:fish用(~/.config/fish/config.fish)
# python pip用PATH
set PATH $HOME"/Library/Python/3.7/bin" $PATH
```

bashやzshの方はそれぞれのconfigに以下でPATHを通しておく。

```shell
export PATH=$PATH:$HOME/Library/Python/3.7/bin
```

#### [node.js](https://github.com/tj/n)

nで管理してみる

```shell
$ brew install n
$ n -V #インストールされているかバージョン確認
```
ここで `$ n latest` を実行すると最新のnodeが入るが、sudoをつけてねと怒られるので

```shell
$ sudo n latest
```

##### globalで権限エラーを出さないように
`$ npm config get prefix` を叩くと、globalでインストールしたときのパスが見られるが、
このままnpmでglobalにインストールすると、write権限が無いとエラーが出る。
(一例として、 `permission denied, access '/usr/local/lib/node_modules/'` など)
ので、そのディレクトリの所有者を `chown` して、普段のユーザーに変える。
ついでにbinとshareも `chown` しているので、要らない方は適宜とるようにどうぞ。

```shell
# 以下、fish shell向け。bashなどPOSIX互換shellは、$(whoami)とする
$ sudo chown -R (whoami) (npm config get prefix)/{lib/node_modules,bin,share}
```

#### neovim
エディタはvimでも良いのだが、neovimを使っているため、別途いれる

```shell
$ brew install neovim
```
設定ファイルはdotfilesがあるので、プラグイン管理の[dein.vim](https://github.com/Shougo/dein.vim)を入れて起動すればおわり。
下記はgithubで書かれているインストール手順。
一応、 `~/.cache/dein` にインストールするのがおすすめのようで、特にこだわりがないのでその通り入れる。

```shell
$ curl https://raw.githubusercontent.com/Shougo/dein.vim/master/bin/installer.sh > installer.sh
$ sh ./installer.sh ~/.cache/dein
```

あとは、ここをコピペしてね〜という文章が出てくるので、 `init.vim` に追記する。
私の場合はdotfilesに追記済みなので、これで終了。

dotfilesを参考にされたい奇特な方は[こちら](https://github.com/oratake/dotfiles)をどうぞ

#### docker

[Docker Desktop](https://docs.docker.com/docker-for-mac/install/)のインストールをしておく。
Docker Desktopの初回起動時にdocker系のコマンドが入るので、使えるか確認。

```
$ docker --version
$ docker-compose --version
$ docker-machine --version
```
それぞれバージョンが表示されればOK

#### [Amethyst(ウィンドウマネージャ)](http://ianyh.com/amethyst/)
Linuxでいう[awesome](https://awesomewm.org/)みたいなウィンドウマネージャ。

```shell
$ brew cask install amethyst
```

`brew cask` って初めて使った。GUIアプリをコマンドラインからインストールできるらしい。
夢が広がってないか？

# 今後の展望
こうやって書き残すのはいいが、そのうちshell scriptにでもして、環境構築を自動化できるところはしていきたい。