💻

俺流MacBook Proインストールまとめ

2021/07/04に公開

@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 本指ドラッグ

ここにあった、よかった。

Shot
Screen Shot 2015-05-28 at 2.00.20 PM.png

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 の方で作成。

localhost.yml
- 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