Mac の環境を再構成することはあまりないのですが、いつかは使うだろうということで Ansible で自動化できるようにしてみました。会社で使っている MacBook が件の GPU のリコール対象なので緊急時には使うだろうし、OS X のバージョンアップをしたときに動作がおかしくなってクリーンインストールするかもしれないですし。

ただ、あまり頻繁に使うものでもないので、わりといい加減な設定になっています。本来 Ansible が推奨する構成にもなってません。

とはいっても、Travis CI ではエラーがないことを確認しています (Travis CI を使ってみたかっただけ)

Ansible で環境の自動化をできるようにした理由ですが、Homebrew から Brewfile を読み込ませてパッケージのインストールすることができなくなったのが主な要因です。ネットで調べると、同じ境遇に合った人が移行先に Ansible を選択している人が多かったので、乗っかることにしました。

完全に自分の設定なので、そのまま使えるわけではないですが、参考にしていただければと思います。

https://github.com/gonzoooooo/mac-ansible

事前準備

Ansible をインストールするために、Homebrew をインストールします。

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

からの

$ brew install ansible

あとは GitHub から設定一式をダウンロードして、make するだけです。楽ちん!

Ansible の設定内容について

この Ansible の設定で自動的に行われるのは、以下の 4 つです。

  1. Homebrew でパッケージのインストール
  2. Hombbrew Cask でアプリケーションのインストール
  3. rbenv で Ruby のインストール
  4. Mac OS X の設定変更

1. Homebrew でパッケージのインストール

前述したとおり、Brewfile でパッケージをインストールしていたのと同じことをしています。

2. Hombbrew Cask でアプリケーションのインストール

家庭用と会社用でインストールするアプリケーションが異なるので、切り替えられるようにしています。また、家庭用は MacBook Pro と MacBook Air でインストールするアプリケーションが異なるので、全部で 3 種類用意しています。

3. rbenv で Ruby のインストール

このブログを作っている Octopress が Ruby 1.9.x を使う (はず) なので、1.9.x と最新版の 2 種類をインストールするようにしています。複数のバージョンを入れるため、インストール後に最新版を Global に設定しています。

また、rbenv-default-gems を使うことで、必要な gem が自動的にインストールされるようになっています。

4. Mac OS X の設定変更

defaults コマンドで設定できるものを変更できるようにしています。もっとできそうな気がしますが、調べるよりは自分で設定したほうが早い気がしたので、このあたりに留めています。

一応内容を記載しておきます。

osx_defaults:
  dock:
    - domain: com.apple.dock      # Dock の位置を右にする
      name: orientation
      type: string
      value: right
    - domain: com.apple.dock      # Dock のアニメーションをスケーリングにする
      name: mineffect
      type: string
      value: scale
    - domain: com.apple.dock      # Mission Control の 'ウィンドウをアプリケーションごとにグループ化` を OFF
      name: expose-group-by-app
      type: bool
      value: false
    - domain: com.apple.dock      # Dock の最小サイズ
      name: tilesize
      type: float
      value: 36
    - domain: com.apple.dock      # Dock の最大サイズ
      name: largesize
      type: float
      value: 65
    - domain: com.apple.dock      # Dock を自動的に隠す
      name: autohide
      type: bool
      value: true
    - domain: com.apple.dock      # Dock の中身を空にする
      name: persistent-apps
      type: string
      value: <array/>
    - domain: com.apple.dock      # 同上
      name: persistent-others
      type: string
      value: <array/>
  finder:
    - domain: com.apple.finder      # Finder で隠しファイルを表示する
      name: AppleShowAllFiles
      type: bool
      value: true
    - domain: com.apple.finder      # QuickLook でテキストを選択できるようにする
      name: QLEnableTextSelection
      type: bool
      value: true
  others:
    - domain: -g                                # F1 F2 キーをそのまま使う
      name: com.apple.keyboard.fnState
      type: bool
      value: true
    - domain: -g                                # スワイプを普通の向きにする
      name: com.apple.swipescrolldirection
      type: bool
      value: false
    - domain: com.apple.screencapture           # スクリーンキャプチャの保存先を Pictures フォルダにする
      name: location
      type: string
      value: ~/Pictures
    - domain: -g                                # 保存先を指定するダイアログを簡易的なものにしない
      name: NSNavPanelExpandedStateForSaveMode  
      type: bool
      value: true