インフラエンジニアなMacセットアップ

## ※お願い※

古い記事なのでメンテナンスしません。


## ※注意※

mac を新調して手順を改めて確認しました。
~/Library/LaunchAgents に plistをコピーする手順が抜けている可能性もあるので
brewコマンドは１つずつ実行して、追加でコマンドを実行するような指示が出ていないか確認して下さい。

## ※注意２※

dockerまわりが古いです。
Docker Toolboxをサイトからダウンロードして使用することをオススメします。

## まえがき

Opsや情報システムやDevOpsややっているインフラエンジニアなMac設定。

Homebrew / brew cask をなるべく使ってインストール。
初めてmacで開発す人も、大体この内容でやれば
「あー.vimrcがごちゃごちゃでわかんねー！」とか
「あー.bash_profileがごちゃごちゃでわかんねー！」とか
「あーrbenv入れておけばよかったー」とか
「あーgem install で sudoつけるのめんどくせー」とか
「brew cask なんてあったのかよー」
ならなくて済むかなと思います。
　# もとい、私がそうなったので新しいMacを手に入れたこのタイミングで
　# 俺的きれいなMacセットアップをまとめてみました。


# 先にインストール

先にインストールしておくと便利なものを入れておく

* メモ [Kobito](http://kobito.qiita.com/)
* メモ [Evernote](http://evernote.com/intl/jp/)
* 画像 [Skitch](http://evernote.com/intl/jp/skitch/)

サイトからダウンロードしてインストール
(すぐ使わなければbrew caskからでもOK)

# Macの設定

## 音量

`0` にする。

## dock
エンジニアたるもの、 dockは下段以外におくべし。
（ターミナル使うときに下段は結構邪魔）

[システム環境設定] - [Dock] 
　　- [画面上の位置]を左
　　- サイズを少し小さく
　　- [拡大]にチェック。拡大サイズは真ん中と最大の間くらい

## マウス、カーソル、タッチパッド

基本的に全部にチェック。

### [システム環境設定] - [トラックパッド]

#### ポイントとクリック
- [x] タップでクリック
- [x] 副ボタンのクリック
- [x] 調べる
- [x] ３本指のトラック

軌跡の早さ  -> MAX速い

#### スクロールとズーム
- [x] スクロールの方向：ナチュラル
- [x] 拡大/縮小
- [x] スマートズーム
- [x] 回転

#### その他のジェスチャ
- [x] 書くのが
- [x] め
- [x] ん
- [x] ど
- [x] う
- [x] になった。。全部チェック入れる。

### カーソルサイズ

カーソルを探す時間は無駄。
障害調査時にそんなことで焦るのも無駄。
大きくする。

[OS X Mavericks: マウスポインタを拡大する](https://support.apple.com/kb/PH14073?locale=ja_JP&viewlocale=ja_JP)


[システム環境設定] - [アクセシビリティ] - [ディスプレイ] [カーソルのサイズ] スライダを右に移動

## 時計

いつでも事象の発生時刻を押さえられるようにしておくのが運用管理の鉄則。

[システム環境設定] - [日付と時刻] - [時計]で
[日付のオプション] の [日付を表示] にチェックを入れる

## キーボード

### 引用符（シングルクオートを開き引用符と閉じ引用符に変換しないようにする）

Macのデフォルトおせっかい設定。
シングルクオートでくくったつもりが
開き引用符と閉じ引用符に変換される。
テキストに書いてあったコマンドをコピペして実行しようとすると実行できない、とか
プログラム書くとき面倒だったりするので直す。

[システム環境設定] - [キーボード] -[ユーザー辞書]
[スマート引用符とスマートダッシュを使用] のチェックを外す。


# インストール

## App Store

* Xcode
	* インストール後、一度起動してライセンスに同意しておくこと

## xcode-select --install

```bash:
$ xcode-select --install

コマンドラインデベロッパーツールのインストールを求められるので画面の指示に従う

```


## anyenv

### 本体

https://github.com/riywo/anyenv
通りにインストールする。


.bash_profileは以下の処理を追加する

```bash:
echo 'for D in `ls $HOME/.anyenv/envs`'                     >> ~/.bash_profile
echo 'do'                                                   >> ~/.bash_profile
echo '    export PATH="$HOME/.anyenv/envs/$D/shims:$PATH"'  >> ~/.bash_profile 
echo 'done'                                                 >> ~/.bash_profile
```



anyenv-updateも入れておく

```
mkdir -p $(anyenv root)/plugins
git clone https://github.com/znz/anyenv-update.git $(anyenv root)/plugins/anyenv-update
```

### rbenv & ruby

もうとにかくいろいろ使うので最初に入れておく


```bash:
anyenv install rbenv
exec $SHELL -l

rbenv install 2.3.1
rbenv global 2.3.1 # ※systemのデフォルトがよければ実行しない
rbenv rehash

rbenv exec gem install bundle 
rbenv rehash



#####以下古いバージョン入れたければ
# 2.1.2
rbenv install 2.1.2
rbenv global 2.1.2 # ※systemのデフォルトがよければ実行しない
rbenv rehash

rbenv exec gem install bundle 
rbenv rehash

# 2.0.0
rbenv install  2.0.0-p481
rbenv global 2.0.0 # ※systemのデフォルトがよければ実行しない

rbenv exec gem install bundle 
rbenv rehash

 # -> rbenvでbundlerを入れておくとgem installでsudoつけなくてよくて便利

# railsは http://railstutorial.jp/ お勉強用
gem install rails --version 4.0.5

# chefはknife solo を使って適用している。chef serverは使っていない
gem install knife-solo
```


### pyenv & python

aws cliを利用するのに使う
pipも一緒にインストールされるので便利

```bash:
anyenv install pyenv
exec $SHELL -l

pyenv install 2.7.11 
pyenv install 3.5.1
 # -> zlibがない旨のエラーが出た人はコマンドラインデベロッパーツールをインストールする

pyenv global 2.7.11 3.5.1 # 2系を優先
pyenv version # 優先順位を確認
pyenv rehash
```

pyenv-virtualenvインストール


```
git clone https://github.com/yyuu/pyenv-virtualenv.git  ~/.anyenv/envs/pyenv/plugins/pyenv-virtualenv
echo 'eval "$(pyenv virtualenv-init -)"' >> ~/.bash_profile
exec $SHELL -l
```

```
pip install Fabric
pip install sphinx
```


### ndenv & yeoman & reveal.js

markdownでプレゼンテーション資料が作れるrevealが便利

```sh
anyenv install ndenv
exec $SHELL -l
ndenv install v0.10.4 # AWS Lambdaサポート（2016/06時点）
ndenv install v4.3.2 # AWS Lambda（2016/06時点）
ndenv rehash
ndenv global v4.3.2
ndenv rehash

# yeoman
npm install -g yo

# Yeoman generator for reveal.js
npm install -g generator-reveal

# bower
npm install -g bower

# browserify
npm install -g browserify

# gulp
npm install -g gulp

# grunt
npm install -g grunt-cli
ndenv rehash

```

### goenv & go

```bash:
anyenv install goenv
exec $SHELL -l

goenv install 1.6.2
goenv rehash
exec $SHELL -l
```



### plenv & perl

```sh
anyenv install plenv
exec $SHELL -l

plenv install 5.25.1

plenv global 5.25.1
exec $SHELL -l
plenv version

# cpanmインストール
plenv install-cpanm

```



## homebrew

http://brew.sh
に従ってインストール

## homebrew cask

サイトからダウンロードしてインストールが面倒な人向け。

http://caskroom.io
に従ってインストール

## いろいろインストール(homebrew)

※Brewfileで整理するのが良いと思います

```bash:
# bash-completion
brew install bash-completion
echo 'if [ -f $(brew --prefix)/etc/bash_completion ]; then' >> ~/.bash_profile
echo '  . $(brew --prefix)/etc/bash_completion'             >> ~/.bash_profile
echo 'fi'                                                   >> ~/.bash_profile
echo                                                        >> ~/.bash_profile

# git
brew install git

# rmコマンドの代わりにtrashを使って、削除時にはゴミ箱に入れる
brew install trash
echo 'alias rm="trash"' >> ~/.bash_profile

# インフラ・ネットワーク系
brew install wget
brew install htop

# nkf(文字コードを調べる:文字コードの変換はiconvを使う)
brew install nkf

# 構成管理ツール(ansible)
#####pipで入れるのが好み
#####brew install ansible

# CI、運用ツール
brew install jenkins
cp -p /usr/local/opt/jenkins/*.plist ~/Library/LaunchAgents
## 自動起動
launchctl load ~/Library/LaunchAgents/homebrew.mxcl.jenkins.plist
## 起動停止
launchctl stop homebrew.mxcl.jenkins
launchctl start homebrew.mxcl.jenkins


# エディタ
brew install lua
### vim* pythonのバージョン2.7 3.x 両方vimで使えるようにするため後述。
###brew install macvim --with-lua
###brew install vim --with-lua
echo 'export PATH="/usr/local/bin:$PATH"'  >> ~/.bash_profile

# ターミナル
brew install tmux

# editorconfig(タブとか合わせたりするのに使う)
brew install editorconfig

# フォント
## ricty
brew tap sanemat/font
brew install Caskroom/cask/xquartz
brew install ricty

cp -f /usr/local/opt/ricty/share/fonts/Ricty*.ttf ~/Library/Fonts/
fc-cache -vf

# watchコマンド
brew install watch

# gls(グラフィカルなls)
brew install coreutils

# figlet(bannerコマンドの代わり)
brew install figlet
figlet figlet installed!!

# 検索(Simplistic interactive filtering tool)peco
brew tap peco/peco
brew install peco

# tig(gitをターミナルで便利に使う)
brew install tig

# ruby関係
## rsense
brew install rsense
ruby /usr/local/Cellar/rsense/0.3/libexec/etc/config.rb > ~/.rsense
 
# tree : ディレクトリ構成をツリー状に表示する
brew install tree

# 7z : unzip で `skipping: filename  need PK compat. v4.5 (can do v2.1)` と出てしまうzipファイルを解凍するために使う
brew install p7zip
# json関係
brew install jq
brew install jsonpp # json_pp
brew install yajl # json_verify

# imagemagick(convertコマンドとか)
brew install imagemagick

# pnmtopngコマンドとか
brew install netpbm

# CSV/TSV にSQLを投げたい
brew install q
```

### 文字補完

tabキーで

```bash:
# vagrant-completion
brew install homebrew/completions/vagrant-completion
# kitchen-completion
brew install kitchen-completion
# ruby / gem / bundler / rake / rails / grunt
brew install ruby-completion
brew install gem-completion
brew install bundler-completion
brew install rake-completion
brew install rails-completion
brew install grunt-completion

# python / django / pip
brew install django-completion
brew install pip-completion

```


## いろいろインストール(homebrew cask)

### インストール

```bash:
# 日本語入力IME
brew cask install google-japanese-ime

# ターミナル
brew cask install iterm2

brew cask install totalterminal

# ブラウザ
brew cask install firefox
brew cask install google-chrome


# 開発環境(vagrant)
brew cask install virtualbox
brew cask install vagrant
## vagrant plugin(https://github.com/mitchellh/vagrant/wiki/Available-Vagrant-Plugins)
### sahara(sandbox)
vagrant plugin install sahara
### vagrant-cachier(provision高速化)
vagrant plugin install vagrant-cachier
### vagrant-global-status(VMの一覧表示)
vagrant plugin install vagrant-global-status
### vagrant-omnibus(chef自動インストール)
vagrant plugin install vagrant-omnibus
### vagrant-vbguest(Virtualbox-guest-addtion自動インストール)
vagrant plugin install vagrant-vbguest
### berkshelf
vagrant plugin install vagrant-berkshelf
### vagrant-hostmanager(/etc/hosts)
vagrant plugin install vagrant-hostmanager
### vagrant-aws(create aws ec2)
vagrant plugin install vagrant-aws
vagrant box add dummy https://github.com/mitchellh/vagrant-aws/raw/master/dummy.box

# 構成管理ツール(chef)
brew cask install chefdk


# 健康（ブルーライトカット）
brew cask install flux

# エディタ
brew cask install atom
brew cask install sublime-text

# mac設定
## キーボード設定
brew cask install karabiner
brew cask install shiftit
brew cask install xquartz # shiftitが依存

## fan controle
brew cask install macs-fan-control

## Finder拡張
brew cask install xtrafinder

# ランチャー
brew cask install alfred

# 圧縮解凍(GUI)
brew cask install the-unarchiver

# 計算、統計
brew cask install r
brew cask install rstudio

# 電子書籍
brew cask install kindle
brew cask install kindle-previewer # epub -> mobi変換
brew cask install calibre # pdf -> mobi変換

# ポモドーロタイマー
brew cask install tomighty

# エビデンス取得
## gif動画
brew cask install licecap
brew cask install gyazo

# 画像編集
brew cask install gimp

# cheatsheet(commandキー長押しでアクティブアプリのショートカットキーを表示)
brew cask install cheatsheet

# slack
brew cask install slack

# ファイル転送（FTP / SFTP / SCP / S3 etc.. ）
brew cask install cyberduck

# リモートデスクトップ(Microsoft公式)
brew cask install remote-desktop-connection

# Googleドライブ
brew cask install google-drive

# Finder
## finderのリフレッシュが遅いので入れておく
brew cask install refresh-finder


# Android開発
brew cask install android-studio

# ドキュメント・リファレンス検索
brew cask install dash

# Google Earth & Google Earth Plugin
## ex. http://typhoon.mapping.jp/
brew cask install google-earth google-earth-web-plugin

# スリープモードにならないように一時的に変更する
brew cask install caffeine

# 匿名ブラウザ
## 悪いことをするため…じゃなくてアクセス制限とかセキュリティ確認とか
brew cask install torbrowser

# flash player(safari)
brew cask install flash

# docker
####バージョンアップが激しいので公式からダウンロードする
####brew cask install boot2docker boot2docker-status
####brew install docker-compose
####brew install docker-machine
####brew install docker-swarm
####brew cask install kitematic

# solr
brew cask install java
brew install solr

# evernote
brew cask install evernote
brew cask install skitch

# マインドマップ。WindowsでもMacでも使える。Evernoteに同期ができる
brew cask search xmind

```

## 色々インストール(gem)

```bash:
# ec2に楽に接続
gem install ec2ssh 
# うまく動かない場合はpreview版3.0.0を入れる。 gem install ec2ssh -v 3.0.0.beta1
rbenv rehash
ec2ssh init
ec2ssh update

# 
gem install kitchen-vagrant

# tmux
gem install tmuxinator

```
## いろいろインストール(chefdkエコシステム)

```bash:
chef gem install knife-solo
chef gem install kitchen-vagrant
```

## hubot テスト環境

### hubot

```sh
npm install -g yo generator-hubot
brew install redis
ln -sfv /usr/local/opt/redis/*.plist ~/Library/LaunchAgents
launchctl load ~/Library/LaunchAgents/homebrew.mxcl.redis.plist
```

### let's chat

```sh
mkdir -p ~/development/lets-chat
cd $_
git clone https://github.com/sdelements/lets-chat.git
cd lets-chat
npm install
cp settings.yml.sample settings.yml
npm start
curl http://localhost:5000/!
```

-> つながったらブラウザからアカウント登録、ログインをしておく
また、hubot用のアカウントも登録しておく（別のメールアドレスで登録する）

### 設定

#### Vim

##### vimbootstrap でなんちゃってvimmer

とりあえずインストール。
(あとで入れ直す)
```
brew install macvim
```


http://vim-bootstrap.com/
でvimrcを作成

```bash:
mv ~/Downloads/vimrc ~/.vimrc
```

個人的な設定は~/.vimrc.local に書く。
個人的にNeoBundleでインストールしたいpluginは
~/.vimrc.local.bundles に書く


```vim:~/.vimrc.local.bundles
NeoBundle 'editorconfig/editorconfig-vim'
NeoBundle 'Shougo/unite.vim'
NeoBundle 'basyura/unite-rails'
NeoBundle 'Shougo/neocomplete.vim'
```

vimのプラグインをインストールする

```bash:
vim +NeoBundleInstall +qall
```

##### python 2.x 3.x 両方つかえるようにする

-python / +python3 の状態だと、python 2.7系のpyenvを使っている状態でvimを開いてもうまく動かない。

```
$ vim --version | grep python
+cryptv          +linebreak       -python          +viminfo
+cscope          +lispindent      +python3         +vreplace
$
```

https://gist.github.com/splhack/4ec93591aec286beac496bbd5cc8d764
を参考にpyenvで2.7 / 3.x系をインストールして
macvimを入れ直す。

私の環境では 2.7.11をインストールするときに

```
CONFIGURE_OPTS="--enable-shared" pyenv install 2.7.11
```

で一回インストールしてから

```
$ PYTHON_CONFIGURE_OPTS="--enable-shared" \
    LDSHARED="clang -bundle" \
    LDCXXSHARED="clang++ -bundle" \
    BLDSHARED="clang -bundle -lpython2.7" \
    pyenv install 2.7.11
```
をしないとうまくインストールできなかった。
（
```Fatal Python error: PyThreadState_Get: no current thread
/bin/sh: line 1: 71480 Abort trap: 6```
　というエラーが出た）

otoolコマンドを実行するコマンドもanyenvを使っている場合はパスが異なる。

うまくmacvimがインストールできると +python/dyn +python3/dyn  になる。

```
~ $ vim --version | grep python
+cryptv            +linebreak         +python/dyn        +viminfo
+cscope            +lispindent        +python3/dyn       +vreplace
~ $
```


#### sublime text2


* Package Controlをインストールしておく

https://sublime.wbond.net/installation#st2


* fontを等幅フォントにしておく

Rictyにする。

[Sublime Text 2] - [Preferences] - [Setting User]を開いて以下を記入。

```json
{
	"ignored_packages":
	[
		"Vintage"
	],
    "font_face": "Ricty",
    "font_size": 16.0
}

```

#### editorconfig

sublime text, atom も設定しておく。
どっちもパッケージとして提供されている。

```bash:atom
apm install editorconfig
```


```bash:sublimetext
cmd+shift+p -> Package Control: install -> editorconfig
```


#### XtraFinder

XtraFinderを起動するとアクセシビリティを有効にするように通知されるので従う。

[システム環境設定] - [セキュリティとプライバシー] - [アクセシビリティ] - [プライバシー] に、 xtraFinderをドラックアンドドロップして有効にする。

* タブ

- [タブ]
  - [x] タブ
  - [x] 同一タブを新規タブで開く


#### karabiner

##### キー入力を速くする
 
神速で `delete` したり
神速で `<-` したり。仕事が早くなった。気がする。

- [key repeat] - [Basic Configuration] - [Key Repeat] 
  - [Delay Until Repeat] 250ms
  - [Key Repeat] 15ms

##### `command + w` を打とうとして間違って　`command + q` (アプリを終了する) を押してしまって　あー！　ってならないようにする

chromeでタブを閉じようとして`command + w` を打ったつもりが
間違って　`command + q` 押しちゃってアプリケーションごと終了しちゃうことが
あるので、`command + q` を２回押すと終了するように設定する。

[Change Key]で[quit app] で検索。
[Custom Shortcuts] の以下のどちらかにチェックを入れる。

- [x] Hold Command+Q… （長押し）
- [x] Press Command+Q twice to Quit Application　（２回押し）


#### ShiftIt

起動する
自動起動にするか聞かれるので Yes
アクセシビリティの設定をしろといわれるので
[システム環境設定] - [セキュリティとプライバシー] - [アクセシビリティ] - [プライバシー] に、 ShitItをドラックアンドドロップして有効(チェック)にする。

[command] + [option] + [control] + [矢印キー]でWindowが寄ることを確認する。
（日本語配列のキーボードだとcontrolが少し遠くて操作しづらいかも）

#### Chrome

起動して、Googleアカウントにログイン。

#### [f.lux](https://justgetflux.com/)

ブルーライトをカットしてくれる。
一回起動すると、画面が赤みがかった感じになる。
これを入れてから半年くらい経つが
目薬を買わなくなった。

#### Google Drive

Google Drive を起動してログインして同期しておく。

#### Google 日本語入力

￥キーを押した時に、バックスラッシュが出るように設定しておく。

![Google_日本語入力_環境設定バックスラッシュ.png](https://qiita-image-store.s3.amazonaws.com/0/17518/e7748ad7-1e87-7c88-3b36-e4fdaefee133.png "Google_日本語入力_環境設定バックスラッシュ.png")


#### Mail.app

* メールヘッダーを表示する方法を知っておく

エビデンスに本文しか残さないと後で面倒。
件名、受信時間、To/CC、本文、できれば他ヘッダー情報　を残す癖が大事。


メールの画面で[command] + [shift] + [H]

* 未読メール

未読メールだけ一覧で出す方法

http://inforati.jp/apple/mac-tips-techniques/internet-hints/how-to-read-unread-a-message-of-mac-mail-efficiently.html


#### iterm2

* バッファを増やす

出力結果をコピーするつもりだったのにコピーできなかったなんてことが起きないように。

[iTerm] - [Preferences] - [profiles] - [星マークがついたprofileのTerminal] [Scroleeback Lines]で[Unlimited scrollback]にチェックを入れる

* 新しいwindowを開いた時にcurrent directoryを開く

[iTerm] - [Preferences] - [profiles] - [星マークがついたprofileのTerminal] 
[General] - [Working Directory] で [Reuse previous session's directory]

#### TotalTerminal

一回起動しておく

control 2回おしたら起動するようにしておく

![0001TotalTerminal.png](https://qiita-image-store.s3.amazonaws.com/0/17518/3597208f-b044-3865-86f1-f5330397686a.png "0001TotalTerminal.png")

exit したらターミナルを閉じるようにしておく
w
![0003TotalTerminal.png](https://qiita-image-store.s3.amazonaws.com/0/17518/1cc5dadb-7f68-9290-1da4-c55855591008.png "0003TotalTerminal.png")



#### tmux

いままで使っていたけど
クリップボードが共有されなくて
標準出力をコピーするのが面倒なので
今はデフォルトでは使っていない。

tmuxinatorを使えば、画面分割の情報等が保持できるので
IDEを起動するみたいに使えそう。


#### atom

```
apm install rsense
apm install autocomplete-plus
```


## その他インストール
### AWS CLI

```bash:
pip install awscli
pyenv rehash

# Command Completion
complete -C aws_completer aws

# configure
aws configure 
```

### ~~formatmatch~~

~~コピー＆ペーストするときにtextのみコピーするためにインストールする。~~
~~Appstoreからインストール。~~

~~起動する~~
~~Preferences.を開いて、自動起動をOnにする~~

### Get Plain Text

インストールして、起動して、`ログイン時に起動する`　にしておく

### solarized

http://ethanschoonover.com/solarized
ダウンロードして解凍。
以下のファイルをダブルクリックしてインポートする。もしくはターミナルからopenコマンドで開く。
* Downloads/solarized/iterm2-colors-solarized/Solarized¥ Dark.itermcolors
* Downloads/solarized/iterm2-colors-solarized/Solarized¥ Light.itermcolors
iterm2の色に設定する。


#### cheatsheet

起動すると、アクセシビリティを有効にするように言われる。
[システム環境設定] - [セキュリティとプライバシー] - [アクセシビリティ] - [プライバシー] に、cheatsheetがあるので、有効にする。
command を長押しするとアクティブなアプリのショートカットキーが表示される。


#### clean: desktop にファイルを残さない


app storeからインストール
https://itunes.apple.com/jp/app/clean/id418412301?mt=12&ign-mpt=uo%3D4

![001Clean_Preferences.png](https://qiita-image-store.s3.amazonaws.com/0/17518/a52887ef-97f4-d4e0-83de-ea4c0e564336.png "001Clean_Preferences.png")
![002Clean_Preferences.png](https://qiita-image-store.s3.amazonaws.com/0/17518/7ba3aec5-fd8b-f640-ccfb-add1429ba46e.png "002Clean_Preferences.png")
![003Clean_Preferences.png](https://qiita-image-store.s3.amazonaws.com/0/17518/b8c4b197-9227-a875-f487-4d3f39b4c3da.png "003Clean_Preferences.png")

## yosemite 対応


Wi-fiがよく切れる件対応。
vagrant起動中とか通信料が増えた時によく切れて困る。

```
brew cask install kext-utility
```

インストールが終わったら finder から kext utility を起動
処理が終わったらrebootする。