akiyoko blog

akiyoko の IT技術系ブログです

OS X Yosemite / MacBook Pro (Early 2015) の開発環境セットアップ

前回の過去記事、

では、OS X Yosemite / MacBook Pro (Early 2015) の初回セットアップ手順をまとめたのですが、今回はそれに引き続き、開発環境のセットアップ手順をまとめていきたいと思います。主に、Python 系の開発環境のセットアップになります。


参考記事

若干古いですが、すごく参考になった記事です。
<参考>
Introduction | Mac OS X Setup Guide


こちらの記事も参考にしましたが、Brewfile がそのまま使えなくなったので、素の brew コマンドを叩くようにしています。

<参考>
新卒エンジニア向け:Macにインストールすべきアプリ達


環境

  • OS X Yosemite 10.10.5

 

セットアップするもの



なお、本記事の手順およびアプリのバージョン等は、2015年9月20日時点のものです。



 

1. Xcode

1.1. Xcode 6.4

Xcode は App Store からインストールします。

f:id:akiyoko:20150917080054p:plain

が、ここでいきなりハマります。。

Xcode のダウンロードが全然進まず(数十KB/秒くらい?)、結局「Xcode をダウンロードできませんでした」というエラーが出てしまい、何度やり直してもダメ。


いろいろググッた後、ダメ元で Google Public DNS を使うように設定したらすんなりとダウンロードできるようになりました。


設定方法は、[システム環境設定] → [ネットワーク] から、
f:id:akiyoko:20150919030402p:plain
f:id:akiyoko:20150919030416p:plain

<参考>
[Mac]Mac でGoogle Public DNS を設定する方法



 

1.2. Command Line Tools

Command Line Tools をインストールするには、以下のコマンドを実行します。

$ xcode-select --install

ダイアログが出てくるので、「インストール」をクリックします。
f:id:akiyoko:20150917080119p:plain
f:id:akiyoko:20150917080236p:plain

Command Line Tools がインストールされると、合わせて、Git などもインストールされます。

$ git --version
git version 2.3.2 (Apple Git-55)
$ which git
/usr/bin/git


ちなみに、Mavericks 以前では、Xcode を起動して、
[Xcode] → [Preferences] → [Downloads]
と操作することでインストールできたのですが、Mavericks 以降はそれができなくなったようです。

<参考>
MavericksでCommand Line Developer Toolsをインストールする方法が変更 | Act as Professional




次に、Xcode/iOS のライセンスに同意しておきます。
理由としては、これ以降の手順で Homebrew を使っていろいろインストールするのですが、その際に、

$ brew install caskroom/cask/brew-cask
==> Tapping caskroom/cask


Agreeing to the Xcode/iOS license requires admin privileges, please re-run as root via sudo.


Error: Failure while executing: git clone https://github.com/caskroom/homebrew-cask /usr/local/Library/Taps/caskroom/homebrew-cask --depth=1

などといったエラーが出ることがあるので、ここで先にライセンス処理を済ませておきます。


Xcode/iOS ライセンスに同意するには、以下のコマンドを実行します。

$ sudo xcodebuild -license
Password: xxxxx


You have not agreed to the Xcode license agreements. You must agree to both license agreements below in order to use Xcode.

Hit the Enter key to view the license agreements at '/Applications/Xcode.app/Contents/Resources/English.lproj/License.rtf'

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] agree

<参考>
"Agreeing to the Xcode/iOS license requires admin privileges, please re-run as root via sudo." when using GCC - Stack Overflow



 

2. Homebrew

2.1. Homebrew

ターミナルで以下のコマンドを実行して、Homebrew をインストールします。
なお、途中で管理者パスワードを聞かれるので、適宜入力します。

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


念のため、コマンドは公式サイトをチェックしておいた方がよさげです(記事によっては公式サイトとは異なるコマンドが記載されている場合があるようです)。

<参考>
Homebrew — OS X 用パッケージマネージャー

$ brew --version
0.9.5 (git revision a2a7; last commit 2015-09-14)


Homebrew は「/usr/local/」以下にファイルをインストールするので、「/usr/local/bin」にパスを通しておく必要があるのですが、最初から「/usr/local/bin」にパスが通っていたので、今回は特に何もしませんでした。

$ env $PATH
env: /usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin: No such file or directory

もしパスが通っていなければ、以下を実行。

$ echo "export PATH=/usr/local/bin:\$PATH" >> ~/.bash_profile
$ source ~/.bash_profile


最後に、Homebrew の診断をしておきます。

$ brew doctor
Your system is ready to brew.


使い方

brew search パッケージ名
brew install パッケージ名
brew list

<参考>
Mac OS X YosemiteにHomebrewをインストール - @uents blog


 

2.2. Homebrew Cask

次に、Homebrew Cask をインストールします。

Homebrew Cask を導入することで、コマンドラインから通常のアプリ(dmgパッケージ)をインストールすることができるようになります。

$ brew install caskroom/cask/brew-cask

 

【2016/03/10 追記】

Homebrew Cask のインストール方法が変更されました。
手順については、以下を参照。
akiyoko.hatenablog.jp



診断しておきます。

$ brew cask doctor


最後に、appdirオプションの設定をしておきます。

特に appdirオプションについては、設定を強くオススメします。設定しておかないと、アプリケーションによって /Applicationsだったり、 ~/Applicationsだったりにシンボリックリンクリンクが作られてしまいます。
その他、必要に応じてオプションを追加しましょう。詳しくは公式ドキュメントを参照してください。


How to Use Homebrew-cask


HomebrewとAnsibleでMacの開発環境構築を自動化する | Mawatari.jp」より

$ echo 'export HOMEBREW_CASK_OPTS="--appdir=/Applications"' >> ~/.bash_profile
$ source ~/.bash_profile


 

3. 開発系パッケージ

3.1. Python

Macには、デフォルトでも Python 2.7 が入っているのですが、

$ python --version
Python 2.7.10
$ which python
/usr/bin/python

Homebrew でインストールすることで、より新しいステーブルな Python を入れることができます。

$ brew install python

$ python --version
Python 2.7.10
$ which python
/usr/local/bin/python

でも、結局バージョンは変わらずでした。


<参考>
python - Installing pip on Mac OS X - Stack Overflow


 

3.2. pip

pip は、Homebrew の formula が用意されていないので、次のようにインストールします。

$ sudo easy_install pip

$ pip --version
pip 7.1.2 from /usr/local/lib/python2.7/site-packages (python 2.7)


 

3.3. virtualenv

virtualenv は、pip でインストールします。

$ pip install virtualenv

$ pip list | grep virtualenv
virtualenv (13.1.2)


 

3.4. JDK 1.8

Python 開発環境「PyCharm」を起動するには JDK が必要なので、事前に最新版の JDK 1.8 をインストールしておきます。

$ brew cask install java


Java のインストール先を確認します。

$ /usr/libexec/java_home -V
Matching Java Virtual Machines (1):
    1.8.0_60, x86_64:   "Java SE 8" /Library/Java/JavaVirtualMachines/jdk1.8.0_60.jdk/Contents/Home

/Library/Java/JavaVirtualMachines/jdk1.8.0_60.jdk/Contents/Home

$ /usr/libexec/java_home -v 1.8
/Library/Java/JavaVirtualMachines/jdk1.8.0_60.jdk/Contents/Home

パスを通します。

$ cat << EOF >> ~/.bash_profile
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_60.jdk/Contents/Home
export PATH=\$JAVA_HOME/bin:\$PATH
EOF

$ source ~/.bash_profile

バージョンを確認。

$ java -version
java version "1.8.0_60"
Java(TM) SE Runtime Environment (build 1.8.0_60-b27)
Java HotSpot(TM) 64-Bit Server VM (build 25.60-b23, mixed mode)


 

3.5. Git

$ brew install git

Xcode の Command Line Tools でインストールされたバージョン(2.3.2)から、若干バージョンが新しくなりました。

$ git --version
git version 2.5.2
$ which git
/usr/local/bin/git


初期設定をしておきます。

$ git config --global user.name "akiyoko"
$ git config --global user.email "akiyoko@users.noreply.github.com"
$ git config --global color.ui auto

<過去記事>



Git はコマンドで使う派なので、SourceTree 等のアプリは今のところ入れていません。


 

3.6. nodebrew & Node.js

nodebrew は、Node.js を管理するためのパッケージです。


<過去記事>

過去記事の当時は、nodebrew は Homebrew で管理していなかったのですが、今回は Homebrew でインストールすることとします。

$ brew install nodebrew

$ nodebrew --version
nodebrew 0.8.1


パスを通します。

$ echo "export PATH=\$HOME/.nodebrew/current/bin:\$PATH" >> ~/.bash_profile
$ source ~/.bash_profile


Node.js の最新版をインストールします。

$ nodebrew install-binary stable
$ nodebrew list
v4.0.0

current: none
$ nodebrew use v4.0.0
use v4.0.0
$ node -v
v4.0.0
$ npm -v
2.14.2

<参考>
Node.jsの管理をHomebrewからnodebrewに変える - Qiita



途中、インストール時にエラーが出て、少しハマってしまいました。。

$ nodebrew install-binary stable
fetch: http://nodejs.org/dist/v4.0.0/node-v4.0.0-darwin-x64.tar.gz
Warning: Failed to create the file 
Warning: /Users/akiyoko/.nodebrew/src/v4.0.0/node-v4.0.0-darwin-x64.tar.gz: No 
Warning: such file or directory

curl: (23) Failed writing body (0 != 1033)
download faild: http://nodejs.org/dist/v4.0.0/node-v4.0.0-darwin-x64.tar.gz
$ mkdir -p ~/.nodebrew/src

とすると、解消できました。



 

3.7. wget

OS X には wget が入っていないので、Homebrew からインストールします。

$ brew install wget

$ wget --version
GNU Wget 1.16.3 built on darwin14.1.0.

 

3.8. tree

tree も OS X にデフォルトでインストールされていないので、インストールします。

$ brew install tree

 

3.9. AWS CLI

$ brew install awscli

$ aws --version
aws-cli/1.8.2 Python/2.7.10 Darwin/14.5.0


aws configure コマンドでアクセスキーの設定をします。
ここでは以前に AWS Management Console で設定した「Admin」のアクセスキーを利用します。

<過去記事>

$ aws configure
AWS Access Key ID [None]: AKIXXXXXXXXXXXXXXXXX
AWS Secret Access Key [None]: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Default region name [None]: ap-northeast-1
Default output format [None]: json

~/.aws/ 以下に 2つのファイルが作成されます。

$ cat ~/.aws/credentials
[default]
aws_access_key_id = AKIXXXXXXXXXXXXXXXXX
aws_secret_access_key = xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

$ cat ~/.aws/config
[default]
output = json
region = ap-northeast-1


試しに、S3 のバケット一覧を取得してみます。

$ aws s3 ls
2015-06-23 01:27:06 app1-transcoder-in
2015-08-20 00:41:35 app1-transcoder-out



 

3.10. Ansible

$ brew install ansible

$ ansible --version
ansible 1.9.3
  configured module search path = None

Vagrant で起動した VM(192.168.33.10 で起動中と仮定)に対して、疎通テストをしてみます。

まずは、インベントリファイルを、とりあえず ~/hosts あたりに作っておきます。

$ cat << EOF > ~/hosts
[webservers]
192.168.33.10

[all:vars]
ansible_ssh_user=vagrant
EOF

インベントリファイルを探索するルールについては、以下を参照のこと。
osx - Where to store Ansible host file on Mac OS X - Stack Overflow


実行結果。

$ ansible -i ~/hosts all -m ping -k
SSH password:
192.168.33.10 | success >> {
    "changed": false,
    "ping": "pong"
}



 

4. 開発系アプリ

開発系アプリのインストール方針として、App Store でインストールできるものは App Store で、インストールできないものは(公式ページから dmgパッケージをダウンロードしてインストールするのではなく)Homebrew Cask からインストールすることとします。

4.1. iTerm2

$ brew cask install iterm2

iTerm を立ち上げて、Profile設定から適宜設定を変更します。


[Profiles] → [Open Profiles...] → [Edit Profiles...] → [Text]

f:id:akiyoko:20150923003922p:plain

とりあえず、フォントを 10pt くらいに変更。



便利なショートカット
ショートカット 説明
cmd + f 検索
cmd + t 新規タブ
cmd + w タブを閉じる
cmd + ←(→) タブの左右移動
cmd + 数字 タブ番号を指定して移動
cmd + shift + h クリップボードの履歴表示


 

4.2. Sublime Text 3

Sublime Text 3 はまだベータ扱い?らしく、caskroom/homebrew-versions を tap してからインストールします。
「sublime-text3」ではなく「sublime-text」という名前に変わったようです。(2016/9/2 修正)

(変更前)

$ brew tap caskroom/homebrew-versions
$ brew cask install sublime-text3

(変更後)

$ brew cask install sublime-text


以降、Sublime Text 3 の初期設定をしていきます。

<参考>
[tips][Sublime Text] Sublime Text 3をインストールしたらまずやること



4.2.1. License

[Help] → [Enter License]

「----- BEGIN LICENSE -----」から「------ END LICENSE ------」までを貼り付け。

f:id:akiyoko:20150919031027p:plain


4.2.2. Package Controlのインストール

Console を表示します。

Mac : control + ` (shift + @)
Win : Ctrl + `

Installation - Package Control
の「SUBLIME TEXT 3」タブに記載されているコマンド

import urllib.request,os,hashlib; h = '2915d1851351e5ee549c20394736b442' + '8bc59f460fa1548d1514676163dafc88'; pf = 'Package Control.sublime-package'; ipp = sublime.installed_packages_path(); urllib.request.install_opener( urllib.request.build_opener( urllib.request.ProxyHandler()) ); by = urllib.request.urlopen( 'http://packagecontrol.io/' + pf.replace(' ', '%20')).read(); dh = hashlib.sha256(by).hexdigest(); print('Error validating download (got %s instead of %s), please try manual install' % (dh, h)) if dh != h else open(os.path.join( ipp, pf), 'wb' ).write(by)

をコピペして Enter(上記コマンドは適宜、公式ページを参照してください)。

f:id:akiyoko:20150919031258p:plain


4.2.3. 日本語のインライン化

「IMESupport」は不要になったようです。日本語入力時にも特に問題はありません。

f:id:akiyoko:20150919031502p:plain


4.2.4. 文字コード対応

Package Control を開きます。

Mac : command + shift + p
Win : Ctrl + Shift + p

Package Control で「ConvertToUTF8」を検索してインストールします。

f:id:akiyoko:20150919031657p:plain


4.2.5. 全角スペースの表示

Package Control で「TrailingSpaces」を検索してインストールします。

f:id:akiyoko:20150922235053p:plain


行末のスペースは表示されているのですが、全角スペースが認識できていないような。。

<参考>
Sublime Text 3でスペース(半角・全角)やタブを可視化する方法




4.2.6. ユーザ設定

[Preference] → [Settings - User]

{
    "default_encoding": "UTF-8",  // デフォルトのエンコーディングの文字コード
    "draw_white_space": "all",  // タブやスペースなどの不過視文字を表示
    "fallback_encoding": "UTF-8",  // 文字コードが不明なファイルのエンコーディングの文字コード
    //"font_face": "",
    "font_size": 10,
    "highlight_line": true,  // 現在の選択行をハイライト表示
    "ignored_packages":
    [
        "Vintage"
    ],
    "line_padding_top": 2,  // 行間
    "show_encoding": true,  // エンコーディングの文字コードを右下のステータスバーに表示
    "tab_size": 4,
    "trailing_spaces_highlight_color": "comment",  // コメントの色でハイライト
    "trailing_spaces_regexp": " |[ \t]+",  // 全角スペースを正規表現に追加
    "translate_tabs_to_spaces": true,  // タブをスペースに変換
    //"trim_trailing_white_space_on_save": true,  // 空白の削除
    "word_wrap": true  // 自動改行
}

 

4.2.7. sublコマンドで起動できるように

$ ln -s /Applications/Sublime\ Text.app/Contents/SharedSupport/bin/subl /usr/local/bin/subl

これで、「subl xxx.txt」とコマンドを打つことで、ファイルを Sublime Text 3 で起動することができるようになります。

<参考>
Sublime Text | Mac OS X Setup Guide


4.2.6. 再起動

最後に、Sublime Text 3 を再起動します。


4.3. Vagrant & VirtualBox

Vagrant および VirtualBox をインストールします。

$ brew cask install vagrant
$ vagrant --version
Vagrant 1.7.4

$ brew cask install virtualbox


VMの管理をしやすくするために、Vagrant-Manage もインストールしておきます。

$ brew cask install vagrant-manager

<参考>


ちなみに以前は、

という感じで、アプリをダウンロードしてからインストールしていました。


また、Vagrantbox.es というサイトから Box を検索して「vagrant box add」で URL を登録していましたが、現在は Vagrant を開発している本家 HashiCorp が Box を配布するようになっています。

Discover Vagrant Boxes | Atlas by HashiCorp


なので、「Boxを追加する」という作業も不要になりました。
「vagrant init」で名前を指定した後、初回の「vagrant up」実行時にダウンロードが始まります。

$ mkdir -p ~/vagrant/ubuntu14 && cd $_
$ vagrant init ubuntu/trusty64
$ vagrant up


また、Vagrant-Manager のアプリを起動すると、現在 Vagant で起動している VM の数と状態が容易に把握できるようになります。

f:id:akiyoko:20150922192926p:plain



<SSH で VM に乗り込む方法>

$ cd ~/vagrant/ubuntu14/ 
$ vagrant ssh

あるいは、IPアドレスを指定してSSHで乗り込む方法もあります。

$ vi Vagrantfile
-----
 29   # config.vm.network "private_network", ip: "192.168.33.10"
  ↓
 29   config.vm.network "private_network", ip: "192.168.33.10"
-----
(※コメントアウトを削除)

$ vagrant reload

### SSHログインID/Pass は、vagrant/vagrant で
$ ssh vagrant@192.168.33.10

 

4.4. PyCharm

インストールするのは、Professional Edition です。

$ brew cask install pycharm

【2015/10/26 追記】
PyCharm の設定について、記事にまとめました。



 

4.5. Cyberduck

FTP アプリです。

$ brew cask install cyberduck


 

4.6. R & RStudio

brew tap homebrew/science
### XQuartz のインストールは不要でした
### brew cask install xquartz
brew install r
brew cask install rstudio


図のキャプションに日本語を使うと文字化けしてしまう問題への対応方法
~/.Rprofile

setHook(packageEvent("grDevices", "onLoad"),
        function(...){
          if(.Platform$OS.type == "windows")
            grDevices::windowsFonts(sans ="MS Gothic",
                                    serif="MS Mincho",
                                    mono ="FixedFont")
          if(capabilities("aqua"))
            grDevices::quartzFonts(
                sans =grDevices::quartzFont(
                    c("Hiragino Kaku Gothic Pro W3",
                      "Hiragino Kaku Gothic Pro W6",
                      "Hiragino Kaku Gothic Pro W3",
                      "Hiragino Kaku Gothic Pro W6")),
                serif=grDevices::quartzFont(
                    c("Hiragino Mincho Pro W3",
                      "Hiragino Mincho Pro W6",
                      "Hiragino Mincho Pro W3",
                      "Hiragino Mincho Pro W6")))
          if(capabilities("X11"))
            grDevices::X11.options(
                fonts=c("-kochi-gothic-%s-%s-*-*-%d-*-*-*-*-*-*-*",
                    "-adobe-symbol-medium-r-*-*-%d-*-*-*-*-*-*-*"))
          grDevices::pdf.options(family="Japan1GothicBBB")
          grDevices::ps.options(family="Japan1GothicBBB")
        }
        )
attach(NULL, name = "JapanEnv")
assign("familyset_hook",
       function() {
         winfontdevs=c("windows","win.metafile",
             "png","bmp","jpeg","tiff","RStudioGD")
         macfontdevs=c("quartz","quartz_off_screen","RStudioGD")
         devname=strsplit(names(dev.cur()),":")[[1L]][1]
         if ((.Platform$OS.type == "windows") &&
                 (devname %in% winfontdevs))
           par(family="sans")
         if (capabilities("aqua") &&
                 devname %in% macfontdevs)
           par(family="sans")
       },
       pos="JapanEnv")
setHook("plot.new", get("familyset_hook", pos="JapanEnv"))
setHook("persp", get("familyset_hook", pos="JapanEnv"))

X11 の警告が出るなら、X11 の部分(19〜22行目)をコメントアウト。

参考
RStudio for MacOSX でプロットが文字化けする場合のメモ - 牌語備忘録 -pygo