【Java】【STS4】MacでゼロからJava開発環境を構築したいんじゃ！

## はじめに

こんにちは！
この世界のどこかのWindowsで、STSを使ってJavaの何かを作成している民です。
家のMacではJava触れてないな…セットアップが面倒だもんな…と思っていたのですが、一念発起してMacでJavaの開発環境をセットアップしてみようと思いました！

基本的にはこれらの記事を参考にさせていただきました！

- [MacにSpring Tool Suiteを導入する](https://qiita.com/segur/items/f9d7b5cdbc02531ffbb0)
- [Spring Tool Suite 4インストールマニュアル](https://qiita.com/kurukuruz/items/3425a6f7a836433ca9f8)

これらを見ながら、[Spring徹底入門](https://www.shoeisha.co.jp/book/detail/9784798142470)と見比べたり、Macに置き換えたりSTS4に置き換えたり、そもそも分からない部分があって都度調べたことも備忘録として残しておきました。この記事はより初心者向けな内容になっているかと思います。
Homebrew当然分かるよ！とか、MacじゃなくてWindowsなんだけど…な方はぜひ上記記事を参考にしてください〜！

### 使用環境とバージョン

- macOS Catalina
- Homebrew 2.2.13
- jdk14.0.1
- Maven 3.6.3_1
- STS 4.6.1

## Homebrewのインストール
まず[Homebrew](https://brew.sh/index_ja)をインストールします。
Homebrewはパッケージ管理ツールで、パッケージのインストールやアンインストールを一元的に管理するためのものです。[^1]

[^1]: [homebrewとは何者か。仕組みについて調べてみた](https://qiita.com/omega999/items/6f65217b81ad3fffe7e6)

<img width="1440" alt="スクリーンショット 2020-04-26 20.17.21.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/469936/99729636-5933-5fb3-9eee-868f956d1b5e.png">

インストール方法はトップ画面に書いてあるとおりです。
`/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"`
このコードをコピペしてターミナルで実行するだけでインストールができます。

```
$ /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"

==> This script will install:
/usr/local/bin/brew
/usr/local/share/doc/homebrew
/usr/local/share/man/man1/brew.1
/usr/local/share/zsh/site-functions/_brew
/usr/local/etc/bash_completion.d/brew
/usr/local/Homebrew
==> The following existing directories will be made group writable:
/usr/local/bin
==> The following existing directories will have their owner set to {ユーザーネーム}:
/usr/local/bin
==> The following existing directories will have their group set to admin:
/usr/local/bin
==> The following new directories will be created:
/usr/local/etc
/usr/local/include
/usr/local/lib
/usr/local/sbin
/usr/local/share
/usr/local/var
/usr/local/opt
/usr/local/share/zsh
/usr/local/share/zsh/site-functions
/usr/local/var/homebrew
/usr/local/var/homebrew/linked
/usr/local/Cellar
/usr/local/Caskroom
/usr/local/Homebrew
/usr/local/Frameworks
==> The Xcode Command Line Tools will be installed.

Press RETURN to continue or any other key to abort
```

Homebrewをインストールする際に具体的に何をインストールするのか、どんなディレクトリが作られるのかなどの説明です。同意する場合はエンターを押し、Apple IDのパスワードを入力すると、Homebrewのインストールが完了します（数分かかります）。

いろいろ出た後で`==> Installation successful!`が表示されれば、インストールは完了です！下の方はHomebrew自体の説明や宣伝なので気にしなくて大丈夫です。

<img width="533" alt="スクリーンショット 2020-04-26 21.17.31.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/469936/47ca1103-c546-a033-49e6-69d47e49e767.png">

## JDKのインストール

Homebrewをインストールしたことで、インストールがスイスイできるようになりました！
続いて、JDKをインストールしていきます。

```
brew cask install java
```

`cask`はHomebrew-cask（Homebrewの拡張版）のオプションです。Homebrewをインストールした際に同時に入っているかと思いますが、なければ

```
brew install cask
```

で[インストールされます](https://qiita.com/yuzukaki/items/6461079cfd0b43e55785)。

さて、`brew cask install java`を実行すると、再びパスワードが求められます。

```
$ brew cask install java
==> Downloading https://download.java.net/java/GA/jdk14.0.1/664493ef4a6946b186ff
######################################################################## 100.0%
==> Verifying SHA-256 checksum for Cask 'java'.
==> Installing Cask java
==> Moving Generic Artifact 'jdk-14.0.1.jdk' to '/Library/Java/JavaVirtualMachin
Password:
```

パスワードを入力すると、Javaのインストールは完了です！

```
🍺  java was successfully installed!
```

絵文字！！絵文字出せるんですね！！カワイイ！！🍺

`cask`でインストールしたものは現時点（Homebrew 2.2.13）だと`/usr/local/Caskroom`配下に配置されます。
`Finder>移動>フォルダへ移動`で`/usr/local/`と入力すると、HomebrewやCaskroomフォルダがあるはずです！

<img width="479" alt="スクリーンショット 2020-04-27 0.04.15.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/469936/146c91bd-4311-4904-a60c-47239e1382be.png">

Javaのパスは、今回は以下のようになりました。バージョンは変わるはずです。

```
/Library/Java/JavaVirtualMachines/openjdk-14.0.1.jdk/Contents/Home
```

続いて、Javaの[パスを通して](https://qiita.com/soarflat/items/09be6ab9cd91d366bf71)いきます。
ホームディレクトリ（`cd ~`で移動した先）で`echo $PATH`をすると、デフォルトの場合このようになっているはずです。

```
echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
```

ここに先ほどのJavaのパスを通すために、以下工程を実行します。

```
# JAVA_HOMEに先ほどインストールしたJavaを指定
$ export JAVA_HOME={先ほどのJavaのパス（今回なら/Library/Java/JavaVirtualMachines/openjdk-14.0.1.jdk/Contents/Home）}

# PATHの先頭に追加
$ export PATH=$JAVA_HOME/bin:$PATH
```

もう一度`echo $PATH`をして、Javaのパスが追加されていることを確認します。

```
$ echo $PATH    
/Library/Java/JavaVirtualMachines/openjdk-14.0.1.jdk/Contents/Home/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
```
## Mavenのインストール
続いてMavenをインストールしていきます。

```
$ brew install maven
####################
# ...（ダウンロード状況等いろいろ表示され、最後にSummary（要約）が表示される）
####################
==> Summary
🍺  /usr/local/Cellar/openjdk/13.0.2+8_2: 631 files, 314.6MB
==> Installing maven
==> Downloading https://www.apache.org/dyn/closer.lua?path=maven/maven-3/3.6.3/binaries/apa
==> Downloading from https://downloads.apache.org/maven/maven-3/3.6.3/binaries/apache-maven
######################################################################## 100.0%
🍺  /usr/local/Cellar/maven/3.6.3_1: 87 files, 10.7MB, built in 19 seconds
==> Caveats
==> openjdk
For the system Java wrappers to find this JDK, symlink it with
  sudo ln -sfn /usr/local/opt/openjdk/libexec/openjdk.jdk /Library/Java/JavaVirtualMachines/openjdk.jdk

openjdk is keg-only, which means it was not symlinked into /usr/local,
because it shadows the macOS `java` wrapper.

If you need to have openjdk first in your PATH run:
  echo 'export PATH="/usr/local/opt/openjdk/bin:$PATH"' >> ~/.zshrc

For compilers to find openjdk you may need to set:
  export CPPFLAGS="-I/usr/local/opt/openjdk/include"

####################
# 警告に出ていたシンボリックリンクの作成等を行う
####################
$ sudo ln -sfn /usr/local/opt/openjdk/libexec/openjdk.jdk /Library/Java/JavaVirtualMachines/openjdk.jdk
$ echo 'export PATH="/usr/local/opt/openjdk/bin:$PATH"' >> ~/.zshrc

####################
# M2_HOMEを作成
####################
$ export M2_HOME=/usr/local/Cellar/maven/3.5.3/libexec

####################
# PATHの先頭に追加
####################
export PATH=$M2_HOME/bin:$PATH
```

※インストール時に出た警告の詳細は以下記事が詳しいです。自分はJavaのパスを直接`~/.zshrc`に貼り付けてしまいました。
https://qiita.com/to-lz1/items/898421e5050cae90ec20

## STSのインストール
画面あるのでここが一番簡単ですね…以下からMacOS版の**Spring Tools 4 for Eclipse**をインストールするだけです。STS4から、VSCodeのアドオンなどでもできるそうです！
https://spring.io/tools

ダウンロードしたらdmgを開いて…

<img width="696" alt="スクリーンショット 2020-04-27 23.23.48.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/469936/930918f3-05fb-945f-7ed5-667e03e3fdda.png">

Macではお馴染みのドラッグアンドドロップをして…

<img style="border:solid;" width="639" alt="スクリーンショット 2020-04-27 23.22.37.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/469936/cc863f7f-c331-3fa2-f547-414976c4e37e.png">

$\huge{ジャーン！}$

<img width="864" alt="スクリーンショット 2020-04-27 23.28.31.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/469936/c40405c5-3e47-944e-0c59-c5f02446ba83.png">

ワークスペースを設定します。
デフォルトだと名前長いので自分でディレクトリ（ファイル）作った方が良いかもです。

<img width="630" alt="スクリーンショット 2020-04-27 23.30.03.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/469936/943f7fd8-372c-7871-ace4-cd0bb36228e1.png">

「Launch」押下でメイン画面が開きます！やったー！

<img width="1440" alt="スクリーンショット 2020-04-27 23.30.22.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/469936/76c14001-aa70-61b9-6908-31744c257967.png">

（日本語化やプロキシ設定は今回やらなかったのですが、必要な方は行ってください！「はじめに」で触れたこちらの記事が分かりやすいです→[MacにSpring Tool Suiteを導入する](https://qiita.com/segur/items/f9d7b5cdbc02531ffbb0)）
## JRE, Mavenの確認
意図したJava, Mavenになっているか、一応確認しておきます。
`Spring Tool Suite 4 > Preferences > Java > Installed JREs` で選択されているJREが、先ほどインストールしたJavaになっているか確認します。

<img width="306" alt="スクリーンショット 2020-04-28 0.17.02.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/469936/c8877a3e-e08e-252b-c945-f055aea59d26.png">

<img width="859" alt="スクリーンショット 2020-04-28 0.18.44.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/469936/ee14b765-77de-86b6-99b9-32d69d20f875.png">

先ほどHomebrewでインストールしたファイルパスと同じなので、大丈夫そうですね！

続いてMavenの確認です。
`Spring Tool Suite 4 > Preferences > Maven > Installations` で、インストールしたMavenのファイルパスが指定されていない場合、右上の`Add`を押下します。

<img width="701" alt="スクリーンショット 2020-04-28 0.41.00.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/469936/00988aad-8b5b-6a69-f71d-b1abb7ebb616.png">

| 項目| 今回適用する設定|
|:-----------|:------------|
| Installation type      | External（外部） | 
| Installation home     | {先ほどMavenをインストールしたファイルパス}| 
| Installation name       | {弁別可能であればなんでも良い} |


<img width="589" alt="スクリーンショット 2020-04-28 0.43.36.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/469936/06212a97-8a7b-189c-6e34-105924fde986.png">
これでFinishを押下します。

ENBEDDEDから今作成したmavenにチェックを移し、`Apply and Close`で設定確認は完了です！

<img width="701" alt="スクリーンショット 2020-04-28 0.47.05.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/469936/8b699ed3-97f4-5ae7-fc8a-3b6902dcfebc.png">

## おわりに
環境構築って初心者にとっていちばんの難所ですよね…Javaやりたいだけなのにlinuxコマンド知らないと立ち行かないし、設定ファイルのありかも分からないし…
自分も 初めてのMac × 初めてのSTS4 × 初めてのOpenJDK なので、いろいろ間違っているかもしれないです！間違いや「ここの手順要らなくない？」みたいな部分ございましたら、そっと教えてください！f(><;　補足も大歓迎です！

お読みいただきありがとうございました！