コロナ禍における大学研究室でのソフトウェア開発環境構築(macOS編)

本記事は[東京学芸大学 櫨山研究室 Advent Calendar 2020](https://qiita.com/advent-calendar/2020/hazelab)の二日目の記事になります

# はじめに

[前回の記事](https://qiita.com/wf-yamaday/items/f8305faf0291d671494f)ではWindowsにおける環境構築を扱いました，

今回の記事ではmacOSでの環境構築を取りあげます．
なお本記事のソースコードやドキュメントなどは以下のGitHubリポジトリから見ることができます．

<a href="https://github.com/HazeyamaLab/setup"><img src="https://github-link-card.s3.ap-northeast-1.amazonaws.com/HazeyamaLab/setup.png" width="460px"></a>

# 概要

- 研究室配属後に最初に行う環境構築を自動化したよmacOS編）
- この記事の内容を使えば，あなたのmacの環境構築を自動化できます

# macOSのパッケージ管理ソフト(Homebrew)

macOSのパッケージ管理ソフトは[Homebrew](https://brew.sh/)が最も多く使われていると思います．

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/225901/132ac037-e339-4aee-0c22-81d87d376918.png)


Homebrewでは以下のようなコマンドで必要なソフトウェアをインストールすることができます．

```sh
brew install インストールしたいソフトウェア名
```

このHombrewを使って環境構築の自動化をします．

# brew tap

`brew tap`コマンドはhomebrewでソフトウェアを取得するリポジトリを追加することができる命令です．
`brew tap`でリポジトリを追加することで通常homebrewではインストールできないGUIのソフトウェアもコマンドからインストールが可能になります．

# Homebrew Cask

[Homebrew Cask](https://github.com/Homebrew/homebrew-cask)はHomebrewによってGoogle chromeなどのGUIアプリケーションのインストールを可能にします．

どうやら標準でtapされているようです．

# Brewfile

Homebrewではインストールするパッケージやtapするリポジトリなどを`Brewfile`というファイルで管理することができます．
今回，用意しているBrewfileは[GitHub](https://github.com/HazeyamaLab/setup/blob/master/macOS/Brewfile)から確認することができます．

```:Brewfile
tap "homebrew/cask"
tap "AdoptOpenJDK/openjdk"
brew "git"
brew "mysql"
brew "mas"
cask "adoptopenjdk/openjdk/adoptopenjdk8"
cask "adoptopenjdk11"
cask "adoptopenjdk14"
cask "iterm2"
cask "visual-studio-code"
cask "google-chrome"
cask "docker"
cask "virtualbox"
cask "vagrant"
mas "Xcode", id: 497799835
```

`Brewfile`があるディレクトリで`brew bundle`コマンドを実行するだけで`Brewfile`に記述してあるパッケージをインストールすることが可能です．

```sh:terminal
brew bundle
```

# これらを一括で実行するシェルスクリプトを書く

実はHomebrewを使うにはCommand line tools for Xcodeが必要になります．
なのでそのインストールから行うシェルスクリプトを書きます．

スクリプトの手順を図示すると以下のようになります．

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/225901/65303f5a-bee6-a149-256d-4176f7c9c013.png)

## スクリプトのコード

実際のスクリプトのコードは<a href="https://github.com/HazeyamaLab/setup/blob/master/macOS/install.sh" target=”_blank” rel="noopener noreferrer">GitHub</a>においてあります．
ここでは説明用に改変したコードを載せます．

```sh
#!/bin/bash

# Command Line Developper Toolsのインストール
if which xcode-select >/dev/null 2>&1; then
  echo "[1/4] xcode-select is already installed! skipping this step."
else
  echo "[1/4] installing xcode-select..."
  xcode-select --install
fi

# Homebrewのインストール
if which brew >/dev/null 2>&1; then
  echo "[2/4] homebrew is already installed! skipping this step."
else
  echo "[2/4] installing homebrew..."
  /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"
fi

# GitHubからBrewfileをダウンロード (とりあえずHOMEディレクトリに配置する．)
echo "[3/4] download Brewfile..."
cd "$HOME" && curl -fsSL https://raw.githubusercontent.com/${Brewfileを配置しているGitHubリポジトリのBrewfileへのパス} > ./Brewfile

# 取得したBrewfileをもとにパッケージをインストール
echo "[4/4] installing package..."
cd "$HOME" && brew bundle
```

上記のコードでは`Brewfile`をGitHubリポジトリから`curl`で取得しています．
適宜，読み替えてください🙇‍♂️


## スクリプトの実行方法

Homebrewのインストール手順に倣って`curl`でWeb上からコードを取得し実行します．
今回はGitHubで管理しているのでGitHub上からスクリプトのソースを取得してパイプで流します．

```sh:terminal
curl -sf https://raw.githubusercontent.com/${GitHubリポジトリにあるスクリプトファイルへのパス}| sh -s
```

`curl`はmacOSでは標準で使えるので1コマンドで環境を構築することができます．

**[注意]
前回の記事でも書きましたが，単純な方法なので採用しています．
Web上のスクリプトコードには必ずしも安全である保証はありません．
安易に他人が作成したWeb上のスクリプトコードを実行しないようにしましょう．**

# おわりに

研究室では前回の記事と今回の記事の内容で遠隔で環境構築を実施しました．
スクリプトを用意する手間はありましたが比較的スムーズに環境構築を終えることができ無事にチームでのWebアプリケーション開発も終えることができました．

また環境構築の手順をソースコード化することができ保守性も向上したと感じております．