M1MacでJava8とPostgreSQL13の環境構築

# 1. JDKのインストール
JDK（Java Development Kit）は、環境構築するためのファイルがパッケージされている。
以下の公式サイトから「jdk-8u401-macosx-aarch64.dmg」をダウンロード

https://www.oracle.com/java/technologies/downloads/#java8-mac

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2674841/a0c1152b-f911-a4a4-1b5e-7f931e856a60.png)

ダウンロードの前にプロファイル作成が必要
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2674841/7ab9a1c7-9387-13cd-5ebb-3b1a07d9a3bc.png)

インストールを進める
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2674841/c4aedbd4-bb55-f269-0323-504934b2e17c.png)

ターミナルでインストール確認
```
> java -version
java version "1.8.0_401"
Java(TM) SE Runtime Environment (build 1.8.0_401-b10)
Java HotSpot(TM) 64-Bit Server VM (build 25.401-b10, mixed mode)
```

環境変数の設定１

```
cd ~
echo JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_401.jdk/Contents/Home >> .zshrc
source .zshrc                                                         echo $JAVA_HOME                                                       ```

```
以下が設定されていればOK

```
> echo $JAVA_HOME  
/Library/Java/JavaVirtualMachines/jdk1.8.0_401.jdk/Contents/Home
```

※~/.zshrc は、zsh シェル（Unix シェルの一種）の設定を格納するファイルで起動時に読み込まれる。
source .zshrcでターミナルを再起動せずに、読み込む。

環境変数の設定２
```
cd ~
echo PATH=$PATH:$JAVA_HOME/bin >> .zshrc
source .zshrc
echo $PATH
```

以下が設定されていればOK

```
> echo $PATH 
(他の環境変数):/Library/Java/JavaVirtualMachines/jdk1.8.0_401.jdk/Contents/Home/bin
```

VSCodeの拡張機能「Extension Pack for Java」をインストール

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2674841/378be2b2-bfda-3c73-bd2b-b0b306eefe5c.png)

## linuxのバージョン
```
root@c90332e693e9:/# cat etc/os-release 
PRETTY_NAME="Debian GNU/Linux 12 (bookworm)"
NAME="Debian GNU/Linux"
VERSION_ID="12"
VERSION="12 (bookworm)"
VERSION_CODENAME=bookworm
ID=debian
HOME_URL="https://www.debian.org/"
SUPPORT_URL="https://www.debian.org/support"
BUG_REPORT_URL="https://bugs.debian.org/"
```

# 2. Maven3のインストール
Javaプロジェクトの構築(ビルド)、依存関係の管理、プロジェクト情報の管理などを行うためのツール
以下の公式サイトから「apache-maven-3.8.8-bin.tar.gz」をダウンロード

https://maven.apache.org/download.cgi

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2674841/11722493-cc98-a877-5a89-e1ed1c8ed6cc.png)

展開したファイルを（/Users/ユーザー名）直下に移動
ターミナルで以下を実行してください。これにより、環境変数 PATH を設定。
```
cd ~
echo PATH=$PATH:~/apache-maven-3.8.8/bin >> .zshrc
source .zshrc
echo $PATH
```

バージョン確認
```
➜  ~ mvn -v
Apache Maven 3.8.8 (4c87b05d9aedce574290d1acc98575ed5eb6cd39)
Maven home: /Users/jaraki/apache-maven-3.8.8
Java version: 1.8.0_401, vendor: Oracle Corporation, runtime: /Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home
Default locale: en_JP, platform encoding: UTF-8
OS name: "mac os x", version: "14.2.1", arch: "aarch64", family: "mac"
```

# 3. PostgreSQL 13のインストール
homebrewでインストール

```
brew install postgresql@13
```

別バージョンのpostgresqlがある場合、以下で切り替え
```
brew services stop postgresql
brew link --overwrite postgresql@13
brew services start postgresql
psql -V
```
以下が表示されればOK
```
➜  ~ psql -V            
psql (PostgreSQL) 13.14
```

ディレクトリの作成
```
sudo mkdir -p /usr/local/var/postgres
```
ユーザ権限の設定
```
sudo chown $(whoami) /usr/local/var/postgres
```
DBの初期化
```
initdb /usr/local/var/postgres
```

postgreSQLサーバ起動
```
pg_ctl -D /usr/local/var/postgres start
```

DBのステータスを確認
```
➜  ~ psql -l
                               List of databases
   Name    | Owner  | Encoding |   Collate   |    Ctype    | Access privileges 
-----------+--------+----------+-------------+-------------+-------------------
 postgres  | jaraki | UTF8     | en_US.UTF-8 | en_US.UTF-8 | 
 template0 | jaraki | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/jaraki        +
           |        |          |             |             | jaraki=CTc/jaraki
 template1 | jaraki | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/jaraki        +
           |        |          |             |             | jaraki=CTc/jaraki
(3 rows)
```

# 4. pgAdmin 4のインストール
以下より「pgAdmin 4 v7.8」をダウンロード
※ Macのバージョンは、14 (Sonoma)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2674841/57e55f8d-1aa5-4775-749d-d2ab00d5bdf1.png)

pgadmin4-7.8-arm64.dmgをダウンロード
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2674841/8dd861ed-2332-3893-7f72-7aa904e7f717.png)

インストールしていく
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2674841/4d11a24a-cf42-0c1d-9eaa-02f92e8601a7.png)

phAdminの起動

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2674841/22694e13-ec56-5225-f473-e39c905cd13e.png)

サーバの接続
![Screenshot 2024-03-30 at 17.44.38.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2674841/2179ca76-53db-0c4c-00c4-0333a3e9c1b7.png)

任意の名前を設定
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2674841/ba8d4852-2bef-3540-f2fc-90a0b927a7bd.png)

それぞれ設定して保存
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2674841/0122e30b-a592-2989-03c8-e55517847cd3.png)

接続状態となる
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2674841/347c2357-ac6f-0faf-231f-c8bc0bacef72.png)

# 5. A5M2のインストール
以下から、「A5:SQL Mk-2(x64 edition)」をダウンロード
https://www.vector.co.jp/soft/dl/winnt/business/se422726.html

以下に配置
/users/{ユーザー名}/Applications/

Wineのインストール
 ※Mac で Windows のアプリケーションを動作できるようにするシステム
```
brew tap gcenx/wine
brew install --cask --no-quarantine gcenx/wine/wine-crossover
```

Winetricksのインストール
 ※Wine のライブラリを管理するツール。
```
brew install wget
brew install winetricks
```

MSゴシック等の代替フォントをインストール
```
winetricks fakejapanese_ipamona
```

メイリオフォントの代替フォントをインストール
```
winetricks fakejapanese_vlgothic
```
環境変数の設定
```
echo PATH="/opt/homebrew/opt/unzip/bin:$PATH" >> ~/.zshrc
```

wineでレジストリエディタを起動
```
wine regedit
```

A5M2.exeで起動
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2674841/13f400e1-e38e-3007-ed41-3ed9b5122959.png)

「Add」でデータベースを登録
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2674841/59011bfd-0421-c48e-1572-40dd194d1277.png)

PostgreSQLを選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2674841/25ffd2cd-da7d-f6cd-e6a1-d720886457d6.png)


接続情報を設定
※以下の画面が表示されない場合、Databaseタブの「Add or Delete Database...」をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2674841/d43a85c2-14b8-7388-cb15-e6514661a3b4.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2674841/9bb8d204-d1b5-75d8-6f22-168296699d71.png)

以下にSQLを貼り付け
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2674841/49434b5c-926f-4d02-f599-f55e0370935b.png)

SQL実行で以下の警告
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2674841/5c18992a-3f04-dfd9-3ee8-54b17689b8e0.png)

# 6. Spring Tool4のインストール
以下のサイトでダウンロード
https://spring.io/tools

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2674841/313181f9-219c-c3d2-7790-8d5108a51744.png)

インストール
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2674841/b3cf1e61-04a4-4860-d91d-cac03b02ac97.png)

workspaceのpathを設定
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2674841/80785b1b-b075-e80e-3da6-d3d99a53ec4b.png)


起動して、設定を表示

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2674841/7aa04594-ebb9-4f57-aeda-be03c7f985ac.png)

javaバージョンの設定
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2674841/5560688f-7afe-9c7e-0436-381f8f9b31bf.png)

コンパイラの設定

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2674841/b1b5d8be-2cd1-c11d-5ff4-09f3c7de64dc.png)

インポート
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2674841/c6a8f96d-ebb9-3a3b-441b-2fa77a409ef7.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2674841/b1d0fa50-f4e8-f156-d3c1-7cd710d7012a.png)

![Screenshot 2024-04-06 at 19.18.42.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2674841/dc0ef6bf-d59c-51ad-7de2-074603d84944.png)


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2674841/dd0cb247-3f3a-d86a-9b96-bbd56123e041.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2674841/64f5ae42-ba84-3b79-bd6c-aaca73394b18.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2674841/5a61e8ca-01ab-55d0-33ca-d2edd60896d4.png)

# 7. Lombokのインストール

https://projectlombok.org/download

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2674841/357489b5-6fb3-ba7c-7a56-4e66e50440eb.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2674841/2a5bc82c-d151-8b7a-6bd6-3cf65acb2d15.png)

以下のエラー発生

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2674841/21ff1618-0184-7614-6a9b-0d51a97bd800.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2674841/383d86f5-6987-d68c-4125-266077d1b913.png)

ここで.iniを指定
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2674841/f088a737-401a-427c-2a68-b4067a4026e4.png)

インストール成功
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2674841/3a3379b0-ffc0-1936-bfd7-5d3bda23fec7.png)




# テーブル作成

以下を実行した。
```
CREATE COLLATION IF NOT EXISTS pg_catalog."ja_JP.utf8" (LC_COLLATE = 'ja_JP.UTF-8', LC_CTYPE = 'ja_JP.UTF-8');
```

localデータ「ja_JP.UTF-8"」がないエラー

```
db-1   | 2024-04-06 19:34:15.261 JST [66] ERROR:  could not create locale "ja_JP.UTF-8": No such file or directory
db-1   | 2024-04-06 19:34:15.261 JST [66] DETAIL:  The operating system could not find any locale data for the locale name "ja_JP.UTF-8".
db-1   | 2024-04-06 19:34:15.261 JST [66] STATEMENT:  CREATE COLLATION IF NOT EXISTS pg_catalog."ja_JP.utf8" (LC_COLLATE = 'ja_JP.UTF-8', LC_CTYPE = 'ja_JP.UTF-8');
```

MacOSの言語設定を英語→日本語に変更。成功した。（Dockerのコンテナではない）
```
CREATE COLLATION

Query returned successfully in 45 msec.
```
pgAdminで作成できたことを確認。
```
SELECT * FROM pg_collation WHERE collname = 'ja_JP.utf8';
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2674841/29ce5e64-963e-e14f-7e55-019f9f4e6414.png)

以下で所有者をpostgresに変更
```
ALTER COLLATION pg_catalog."ja_JP.utf8" OWNER TO postgres;
```

postgres はid 10であることがわかる。
```
SELECT usesysid, usename FROM pg_catalog.pg_user;
```

# Dockerでmavenを動作させる
以下のイメージを利用

https://hub.docker.com/layers/library/maven/3.8.4-openjdk-8/images/sha256-10852d323d11b127d39b2ad612dc31ec935fcccbb0bbe4275742db4abbedd095

Dockerfile.dev
```
FROM maven:3.8.4-openjdk-8
# 永続化でマウントされるパスをワーキングディレクトリに指定
WORKDIR /
COPY . .
```

これで、mvnコマンドが実行可能
以下参照

https://qiita.com/KevinFQ/items/e8363ad6123713815e68

# エラー対応

アプリケーション“SpringToolSuite4.app”を開けません。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2674841/90c9924f-b24d-0382-d275-2437201fd9a5.png)

言語が英語から日本語に変わったから？？
再度、以下のようにインストールを行う。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2674841/b3cf1e61-04a4-4860-d91d-cac03b02ac97.png)


## 参考にしたサイト
https://qiita.com/suke_masa/items/f9af0fb84ad9447ae961#intellij-idea

https://www.beex-inc.com/blog/pgAdmin_RDSforPostgreSQL_20231005

https://qiita.com/poccariswet/items/9c75da7b626f31d8abac

https://techtekulife.jp/a5m2_with_mac/

https://qiita.com/ryamate/items/7c07881d066bbde4577a

https://qiita.com/valzer0/items/db7639d8231bf5121297