俺流MacBook Proインストールまとめ
@armorik83 です。新 MacBook Pro 15"が発売され、長らくの相棒 MacBook Pro も 6 年選手だったため、めでたく引退となった。今日は個人の日記レベルで新しい Mac をセットアップしていく。
OS を丸ごと再インストールする機会自体あまりないが、私は儀式的に OS X をアップグレードする度にクリーン・インストールする癖があり、次の機会に備えてメモを残す。(未だにクリーン・インストール儀式を執り行うが、周りはどうなんだろう)
購入時点の環境
2015 年 5 月 28 日、開封直後の状態。
- MacBook Pro 15" Mid 2015
- 2.8GHz Core i7
- 16GB DDR3
- 500GB Storage
電源投入
-
cmd-R
を押しっぱなし - Disk Utility でプリインストールを削除
- Yosemite 再インストール(要 Wifi)
確認
「Yosemite 10.10.3 だとこうなってるのかーなるほどー」などと言いながら。
bash --version
# 3.2.57
ruby -v
# 2.0.0p481
python -V
# 2.7.6
php -v
# 5.5.20
node -v
# node: command not found そりゃそうだ
git --version
# この辺からXcodeを求められる
Xcode 必須
command line developer tools
の兼ね合いで OS X, iOS エンジニアでなくとも Xcode は必須。App Store からサクっと落とす。これがまた長い。待ってる間に他の作業を進める。
Dropbox
色々自動化したいところだが、この記事を旧 Mac で書いている都合でデータのやりとりが必要だったので、Dropbox は手動インストールで妥協した。2 段階認証の端末が手元にないと詰む。
システム環境設定
Mission Control
- Mission Control: F12
- Application windows: F13
- Show Desktop: F11
- Show Dashboard: -
手癖。
Keyboard
- Use all F1, F2…
- Control と Caps lock を入れ替え
- Show Spotlight search のショートカットを
ctrl-A
に
US 配列なので Control を A の左隣に入れ替える。これも手癖。
Trackpad
追加で ON にするもの。
- Tap to click
3 本指ドラッグが無いじゃないか! と憤慨しかけたが、ちゃんと機能自体は残っていた。
Yosemite での 3 本指ドラッグ
ここにあった、よかった。
Xcode command line developer tools
認証
Xcode のインストールが終わったので続き。Xcode のライセンス認証は Terminal で。
sudo xcodebuild -license
By typing 'agree' you are agreeing to the terms of the software license agreements. Type 'print' to print them or anything else to cancel, [agree, print, cancel]
何度かspace
連打して、これが表示されたらagree
と入力。
command line developer tools
xcode-select --install
command line developer tools をインストール、しばし待つ。インストールが完了したら確認。
git --version
# 2.3.2
Homebrew
Homebrew を入れる。コマンドはおなじみのやつ。
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
brew -v
# Homebrew 0.9.5
brew doctor
brew update
doctor
, update
は慣習だが、真っさらなので何も起こらなかった(珍しい)。
Ansible
今回、@t_wada 氏の『Mac の開発環境構築を自動化する (2015 年初旬編)』を実践すべくこの記事を書いているため、Ansible に初挑戦する。
brew install ansible
ansible --version
# ansible 1.9.1
自動化開始
元の記事に従ってプロビジョニング用のディレクトリを作る。
mkdir .mac-provisioning; cd $_
inventory ファイル作成
ansible 用の inventory ファイル(実行対象ホスト指定ファイル)を作る。この辺も元の記事に従う。
echo 'localhost' > hosts
playbook ファイル作成
次に playbook(プロビジョニングの内容)を書く…って、ずっと元記事をなぞってますよ。これは面倒だったので旧 Mac の方で作成。
- hosts: localhost
connection: local
gather_facts: no
sudo: no
vars:
homebrew_taps:
- caskroom/cask
homebrew_packages:
- { name: nodebrew }
- { name: ansible }
- { name: git }
- { name: zsh, install_options: disable-etcdir }
- { name: wget }
- { name: curl }
- { name: tree }
- { name: phantomjs }
homebrew_cask_packages:
- { name: 0xed }
- { name: mongochef }
- { name: atom }
- { name: clamxav }
- { name: cleanarchiver }
- { name: cyberduck }
- { name: daisydisk }
- { name: easyfind }
- { name: firefox }
- { name: flux }
- { name: google-chrome }
- { name: google-japanese-ime }
- { name: imageoptim }
- { name: iterm2 }
- { name: kobito }
- { name: skim }
- { name: skype }
- { name: slack }
- { name: teamviewer }
- { name: timemachineeditor }
- { name: vagrant }
- { name: virtualbox }
tasks:
- name: add tap repos
homebrew_tap: tap={{ item }} state=present
with_items: homebrew_taps
- name: update homebrew
homebrew: update_homebrew=yes
# brew
- name: install brew packages
homebrew: >
name={{ item.name }}
state={{ item.state | default('latest') }}
install_options={{
item.install_options | default() | join(',')
if item.install_options is not string
else item.install_options
}}
with_items: homebrew_packages
register: brew_result
- name: make package info dir
file: path=brew_info state=directory
- name: save package info
shell: brew info {{ item }} > brew_info/{{ item }}
with_items: brew_result.results | selectattr('changed') | map(attribute='item') | map(attribute='name') | list
# cask
- name: install homebrew-cask
homebrew: name=brew-cask state=latest
- name: install packages
homebrew_cask: name={{ item.name }} state={{ item.state|default('installed') }}
with_items: homebrew_cask_packages
register: cask_result
- name: make package info dir
file: path=cask_info state=directory
- name: save package info
shell: brew cask info {{ item }} > cask_info/{{ item }}
with_items: cask_result.results | selectattr('changed') | map(attribute='item') | map(attribute='name') | list
# oh-my-zsh
- name: install oh-my-zsh
shell: curl -L https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh | sh
args:
creates: ~/.oh-my-zsh/
handlers:
- name: run fc-cache
shell: fc-cache -vf
GUI 依存率高し、黒い画面に詳しくないのでこんな量。オススメがあったら教えてください。
実行
HOMEBREW_CASK_OPTS="--appdir=/Applications" ansible-playbook -i hosts -vv localhost.yml
あとは:coffee:しながら眺める。HOMEBREW_CASK_OPTS
は入れたほうがいいみたいだ。Cask のインストール先が~/Applications
にならないようにするため。
いくつかコケてた
Cask でコケてるのがあった。もう今回は原因追求せず手動で入れることにした。
nodebrew
フロントエンドでnode
必須なので。Node.js, io,js のバージョン管理はnodebrewで行う。
nodebrew ls-remote
# 最新版のバージョンを確認
nodebrew install-binary v0.12.4
nodebrew install-binary io@v2.1.0
nodebrew use io@v2.1.0
node -v
# v2.1.0
# パスは通っている前提
npm i -g
npm i -g npm
npm i -g babel browserify mocha fixpack
npm i -g
は、あまり入れない。
残りは手作業
あとはどうしても手作業的な部分があるので、それはチマチマと。今回の自動化も詳しく分かっていないまま試みているので詰めが甘いかもしれない。
しかしこれは早い、Homebrew Cask は是非ともオススメしたい。かつては各種サイトからインストーラをダウンロードして個別に展開していたので隔世の感がある。
こういったプロビジョニングを見直し育てることもまた楽しみのひとつだ。あとはこの新しい相棒と共に励み、戦い、稼ぐだけである。以上。
Discussion