Macに開発環境を構築(Homebrew)


買ってきた(またはOS再インストールした)ばかりのMacに
Web開発でよく使われる言語・ライブラリ・ツールを
ブラウザで配布サイトを廻ってインストーラパッケージをダウンロード＆インストールという方法ではなく
macOS用パッケージマネージャー[Homebrew](https://brew.sh/)を使用して
極力、コマンドのコピー＆ペーストのみで進める手順です
使用しない言語やツールの項目はスキップしてください

```terminal:(参考)Mac(v10.15.2)に最初からインストール済みのバージョン
$ git --version
xcode-select: note: no developer tools were found at '/Applications/Xcode.app', requesting install. Choose an option in the dialog to download the command line developer tools.

$ java --version
No Java runtime present, requesting install.

$ php -v
PHP 7.3.9 (cli) (built: Nov  9 2019 08:08:13) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.3.9, Copyright (c) 1998-2018 Zend Technologie

$ perl -v
This is perl 5, version 18, subversion 4 (v5.18.4) built for darwin-thread-multi-2level

$ python -V
Python 2.7.16

$ python3 -V
xcode-select: note: no developer tools were found at '/Applications/Xcode.app', requesting install. Choose an option in the dialog to download the command line developer tools.

$ ruby -v
ruby 2.6.3p62 (2019-04-16 revision 67580) [universal.x86_64-darwin19]
```


# Homebrewをインストールする
### Command Line Tools for Xcodeインストール
Homebrewをインストールするために必要なgitなどインストールするため
Command Line Tools for Xcodeをインストールします

```terminal:
$ xcode-select --install
xcode-select: note: install requested for command line developer tools
```
- 今すぐインストールしますか？というダイアログが表示されるので  
  [インストール]を選択,完了メッセージが表示されるまでしばらく待つ

```terminal:(参考)インストールされたバージョン
$ clang --version
Apple clang version 11.0.0 (clang-1100.0.33.8)

$ git --version
git version 2.21.0 (Apple Git-122)

$ make --version
GNU Make 3.81

$ python3 -V
Python 3.7.3

$ swift --version
Apple Swift version 5.1 (swiftlang-1100.0.270.13 clang-1100.0.33.7)

$ svn --version
svn, version 1.10.4 (r1850624)

```

### Homebrewのインストール
```terminal:
$ ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
(表示に従ってリターンキーやMacにログインしているユーザのパスワードを入力)
```

```terminal:Homebrewの主なコマンド
$ brew update
Homebrew自身のアップデート

$ brew search <パッケージ名>
指定パッケージ名/アプリケーション名にマッチするインストール可能なパッケージ名/アプリケーション名のリストが表示される

$ brew install <パッケージ名>
指定パッケージ(と依存パッケージ)がインストールされる
searchコマンドでFormulaeに表示されるものはこちらのコマンドでインストールする

$ brew cask install <アプリケーション名>
指定アプリケーションがインストールされる
searchコマンドでCasksに表示されるものはこちらのコマンドでインストールする

$ brew upgrade
インストール済みのパッケージがアップグレードされる

$ brew cleanup
アップグレード前の古いパッケージやインストールバイナリ、ログがクリアされる
```

# 各言語最新版のインストール

### NodeJS (最新版のみ利用する場合)
```sh
$ brew install node

$ node -v
v13.6.0

$ npm -v
6.13.4
```

### NodeJS (複数のバージョンをnvmで管理する場合)
```sh:nvmのインストール
$ brew install nvm
```

```sh:~/.zshrcに追記
export NVM_DIR="$HOME/.nvm"
[ -s "/usr/local/opt/nvm/nvm.sh" ] && . "/usr/local/opt/nvm/nvm.sh"
[ -s "/usr/local/opt/nvm/etc/bash_completion.d/nvm" ] && . "/usr/local/opt/nvm/etc/bash_completion.d/nvm"
```

```sh
# 再読み込み
$ exec $SHELL -l

$ nvm --version
0.35.2
```

```sh:nvmで最新LTS版をインストール
$ nvm install --lts

$ node -v
v12.14.1
```

### Go言語
```sh:
$ brew install go

$ go version
go version go1.13.6 darwin/amd64
```

### Java(JDK)

```sh:
$ brew cask install java
(パスワードの入力)

$ /usr/libexec/java_home -V
Matching Java Virtual Machines (1):
    13.0.1, x86_64:	"OpenJDK 13.0.1"	/Library/Java/JavaVirtualMachines/openjdk-13.0.1.jdk/Contents/Home

$ java -version
openjdk version "13.0.1" 2019-10-15
OpenJDK Runtime Environment (build 13.0.1+9)
OpenJDK 64-Bit Server VM (build 13.0.1+9, mixed mode, sharing)

$ javac -version
javac 13.0.1
```

### Gradle
JavaやKotlinのビルドツール

```sh:
$ brew install gradle

$ gradle -v

------------------------------------------------------------
Gradle 6.0.1
------------------------------------------------------------
(以下略)
```

### Kotlin
```sh:
$ brew install kotlin

$ kotlinc -version
info: kotlinc-jvm 1.3.61 (JRE 13.0.1+9)
```

### Rust
```sh:
$ brew install rustup-init

$ rustup-init
(中略)
1) Proceed with installation (default)
2) Customize installation
3) Cancel installation
>1

$ exec $SHELL -l
# cargo, rustc, rustup などのコマンドが利用可能になる
```

```sh:以降、rustcやcargoを最新版に更新する場合
$ rustup update
```

### Python
```sh:
$ brew install python

# 再読み込み
$ exec $SHELL -l

# python 2.x は更新されません
$ which python && python -V
/usr/bin/python
Python 2.7.16

# python 3.x が最新版になります
$ $ which python3 && python3 -V
/usr/local/bin/python3
Python 3.7.6
```

### PHP
```sh:
$ brew install php

# 再読み込み
$ exec $SHELL -l

$ which php && php -v
/usr/local/bin/php
PHP 7.4.1 (cli) (built: Dec 18 2019 14:46:18) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
    with Zend OPcache v7.4.1, Copyright (c), by Zend Technologies
```

#### [Composer](https://getcomposer.org/)のインストール
PHPのデファクトスタンダード的なパッケージマネージャ
PythonのpipやRubyのgem、NodeJSのnpmのような付属ツールではないので別途インストールが必要

```sh:
$ brew install composer

$ which composer && composer -V
/usr/local/bin/composer
Composer version 1.9.1 2019-11-01 17:20:17
```


# 各種ツールやIDEのインストール

### Docker
```terminal:
$ brew cask install docker
```

### Google Chrome
```terminal:
$ brew cask install google-chrome
```

### Google 日本語入力
```terminal:
$ brew cask install google-japanese-ime
```
インストール後再起動とシステム環境設定のキーボードから入力ソースの設定が必要

### iTerm2
```terminal:
$ brew cask install iterm2
```

### JetBrains Toolbox
phpStormやGolandなどのIntelliJ系IDE管理ツール

```terminal:
$ brew cask install jetbrains-toolbox
```

### Visual Studio Code
```terminal:
$ brew cask install visual-studio-code
```

### VirtualBox
```terminal:
$ brew cask install virtualbox
```

## Homebrew Bundle について
https://github.com/Homebrew/homebrew-bundle
Homebrewでインストールするパッケージを一括管理できる拡張機能
Brewfileと呼ばれる設定ファイルをもとにパッケージやアプリケーションを一括インストールできる

### Brewfileの例
```sh:.Brewfile
tap "homebrew/bundle"
tap "homebrew/cask"
tap "homebrew/core"

brew "composer"
brew "python"
brew "go"
brew "gradle"
brew "kotlin"
brew "node"
brew "nvm"
brew "php"
brew "rustup-init"

cask "google-chrome"
cask "google-japanese-ime"
cask "iterm2"
cask "java"
cask "jetbrains-toolbox"
```

### Brewfile を作成する
```
$ brew bundle dump --global
```
現在Homebrewでインストールされている情報をもとに ~/.Brewfile が作成される
すでにある ~/.Brewfile を上書きする場合は`--force`オプションを追加


### Brewfile から一括インストール

```
$ brew bundle install --global
```

### Brewfile にないファイルの一括削除

```
$ brew bundle cleanup --global --force
```

## トラブルシュート
インストールしたアプリによっては macOS により実行制限されている場合があります
起動できなかった場合
[システムの環境設定]-[セキュリティとプライバシー]-[一般]タブにて
[ダウンロードしたアプリケーションの実行許可]で許可したうえで
"(アプリ名)"は開発元を確認できないため、使用がブロックされましたの表示がある場合
[このまま開く] で開いてみてください