MacでPostgreSQLを利用する方法(インストールからDB作成まで)

# はじめに

現在のDBMS(Database Management System)において主流となっているRDS(Relational Database)ですが、
そこで利用されているのが`SQL`(Structured Query Language)という言語です。
代表的なものといえば、

・Oracle Database(Oracle社)
・SQL Server(Microsoft社)
・DB2(IBM社)
・**PostgreSQL(オープンソース)　←今回扱います**
・MySQL(オープンソース、現在はOracle社が開発元)

が挙げられると思います。

私自身もPF制作でRDSとしてMySQLを利用していましたが、ほとんどRailsの機能に頼ってしまっており、
そこで実際に発行されているSQLの扱いについてはあまり自信がない状態でしたので、
この度基本からしっかり学びたいと考え、以下の書籍を用いて学習を始めました。

https://www.amazon.co.jp/SQL-%E7%AC%AC2%E7%89%88-%E3%82%BC%E3%83%AD%E3%81%8B%E3%82%89%E3%81%AF%E3%81%98%E3%82%81%E3%82%8B%E3%83%87%E3%83%BC%E3%82%BF%E3%83%99%E3%83%BC%E3%82%B9%E6%93%8D%E4%BD%9C-%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E5%AD%A6%E7%BF%92%E3%82%B7%E3%83%AA%E3%83%BC%E3%82%BA-%E3%83%9F%E3%83%83%E3%82%AF/dp/4798144452

(表紙は紫のキリンのシルエットが目印です。)

SQLに関する内容がわかりやすく丁寧に説明されており、コマンドの書き方も実際に手を動かしながら学べる構成となっているため、
個人的にかなりオススメの書籍となっています。

しかし、最初のPostgreSQLの導入部分がWindows版のみで説明されていたため、Mac利用者の私は少々手こずることとなりました。
そのため今回は、MacでPostgreSQLをインストールし、実際に利用できるまでを解説したいと思います。

# 説明

早速順を追って説明していきたいと思います。
今回は現時点(2021年6月)での最新版であるバージョン13.3を導入したいと思います。
ちなみに使用しているMacのOSは`macOS Big Sur バージョン11.4`です。

## インストール

まずはPostgreSQLのホームページに移動します。

https://www.postgresql.org/

トップ画面を開いたら、上部メニューの`Download`を選択します。

<img width="500" alt="スクリーンショット 2021-06-07 11 23 48" src="https://user-images.githubusercontent.com/75191225/120960696-58e00e80-c797-11eb-88ef-3214832a7aa5.png">

今回はMacにインストールするため、`macOS`を選択します。

<img width="800" alt="スクリーンショット 2021-06-07 11 26 07" src="https://user-images.githubusercontent.com/75191225/120960812-92187e80-c797-11eb-9cd9-1712ca289bc2.png">

最上部の`Download the installer`をクリックします。

<img width="800" alt="スクリーンショット 2021-06-07 11 29 29" src="https://user-images.githubusercontent.com/75191225/120961051-03f0c800-c798-11eb-9535-59d6bd640eff.png">

インストールするバージョンを選択します。
(今回は`Version 13.3`の`Mac OS X`を選択)

<img width="700" alt="スクリーンショット 2021-06-07 11 33 52" src="https://user-images.githubusercontent.com/75191225/120961186-45817300-c798-11eb-8d35-93bebe7a4264.png">

ダウンロードされたZIPファイルを解凍し、解凍された`postgresql-13.3-1-osx`ファイルを開きます。
セットアップウィザードが起動しますので、`Next`を選択します。

<img width="400" alt="スクリーンショット 2021-06-07 11 40 09" src="https://user-images.githubusercontent.com/75191225/120961301-85485a80-c798-11eb-9573-c3ea2f37ec76.png">

今回は全てのコンポーネントをインストールするため、全てにチェックをつけて`Next`を選択します。

<img width="400" alt="スクリーンショット 2021-06-07 11 43 40" src="https://user-images.githubusercontent.com/75191225/120961439-cd677d00-c798-11eb-96bf-f50527d75203.png">

データを格納するディレクトリを選択します。
基本的にデフォルトのままでOKです。

<img width="400" alt="20200806160921" src="https://user-images.githubusercontent.com/75191225/120961883-9c3b7c80-c799-11eb-9e9b-ec60d9097e8d.png">

データベース接続時のパスワードを設定し、`Next`で先に進みます。
(主に後述の`pgAdmin4`および`SQL Shell (psql)`の部分で必要になります。)

<img width="400" alt="20200806161002" src="https://user-images.githubusercontent.com/75191225/120961928-b6755a80-c799-11eb-9a30-513c40854327.png">

ポート番号はデフォルト(`5432`)のままでOKです。

<img width="400" alt="20200806161214" src="https://user-images.githubusercontent.com/75191225/120961996-d573ec80-c799-11eb-9477-320ac8f090fa.png">

デフォルトの文字コード選択画面では、`ja_JP.UTF-8`を選択し、`Next`で先に進みます。

<img width="400" alt="20200806161753" src="https://user-images.githubusercontent.com/75191225/120962043-eb81ad00-c799-11eb-8756-8c54e7c4d39e.png">

確認画面が表示されます。内容を確認し問題がなければ`Next`で先に進みます。

<img width="400" alt="20200806161941" src="https://user-images.githubusercontent.com/75191225/120962339-7f537900-c79a-11eb-9c2a-788be77887f7.png">

`Next`でインストールを開始します。終了したら`Finish`でウィザードを終了します。

<img width="400" alt="20200806162201" src="https://user-images.githubusercontent.com/75191225/120962418-a4e08280-c79a-11eb-9fa6-1b1b31fdf200.png">

続いて、PostgreSQL13の`pgAdmin4`を開きます。

<img width="400" alt="スクリーンショット 2021-06-07 12 14 50" src="https://user-images.githubusercontent.com/75191225/120962570-f426b300-c79a-11eb-8556-9ef5193fffd6.png">

開くとパスワードを要求されるので、インストールの際に設定したパスワードを入力します。

<img width="1692" alt="スクリーンショット 2021-06-07 13 06 58" src="https://user-images.githubusercontent.com/75191225/120962666-22a48e00-c79b-11eb-985d-c8cf57709ff3.png">

続いて、左上の`Servers`をクリックすると再びパスワードを要求されるので、
先ほどと同じパスワードを入力します。

<img width="1691" alt="スクリーンショット 2021-06-07 13 07 40" src="https://user-images.githubusercontent.com/75191225/120962875-8b8c0600-c79b-11eb-9365-21143e6a8a31.png">

パスワードを入力すると以下の画面となり、サーバーが起動します。
(`pgAdmin4`での作業はこれで終了です。)

<img width="1695" alt="スクリーンショット 2021-06-07 13 08 08" src="https://user-images.githubusercontent.com/75191225/120962964-bd9d6800-c79b-11eb-9585-8e2bfd930f11.png">

次にPATHの設定をします。「~/.bash_profile」ファイルにパスを追加します。
ターミナルで以下のコマンドを実行します。

```
$ echo 'export PATH=$PATH:/Library/PostgreSQL/11/bin' >> ~/.bash_profile
```


そして「~/.zprofile」ファイルにもパスを追加します。
ターミナルで以下のコマンドを実行します。

```
$ echo 'export PATH=$PATH:/Library/PostgreSQL/11/bin' >> ~/.zprofile
```

上記のコマンドを実行したら、一度ターミナルを再起動し、
`postgres --version`でバージョンの確認をします。
以下のように表示されていればOKです。

```
postgres (PostgreSQL) 13.3
```

インストール編は以上となります。

## 起動

PostgreSQLのインストールが完了しましたので、
実際にコマンドを起動してデータベースを作成するまでの手順を説明します。

まず、`SQL Shell (psql)`を起動します。

<img width="400" alt="スクリーンショット 2021-06-07 14 24 01" src="https://user-images.githubusercontent.com/75191225/120963209-1c62e180-c79c-11eb-851c-b4f02752ea86.png">

すると下画像のようなターミナルが出現します。

<img width="571" alt="スクリーンショット 2021-06-07 13 26 40" src="https://user-images.githubusercontent.com/75191225/120963307-4916f900-c79c-11eb-99fd-7155e735e617.png">

コネクトするサーバーはほぼデフォルトで問題ありませんので、
`Database [postgres]:`と`Password for user postgres:` 以外の項目は
何も入力しないでEnterでOKです。
`Database [postgres]:`の項目は作成したいDB名、`Password for user postgres:` は
インストール時に設定したパスワードを入力します。
今回は私が利用している書籍の内容に則り、`shop`というDBを作成したいと思います。

(`Password for user postgres:`入力時、画面には入力内容が表示されませんが、
内部で正常に入力されていますので気にせず入力しましょう。)

<img width="572" alt="スクリーンショット 2021-06-07 13 28 45" src="https://user-images.githubusercontent.com/75191225/120963351-621faa00-c79c-11eb-8bfe-94980bfa1666.png">

DBの作成に成功すると、
`Password for user postgres:`の真下に下記のコマンドが表示されると思います。

```
Welcome to psql X.X.X, the PostgreSQL interactive terminal.

Type:  \copyright for distribution terms
       \h for help with SQL commands
       \? for help with psql commands
       \g or terminate with semicolon to execute query
       \q to quit

shop=#
```

これでDBの作成は完了です。
以降はコマンド入力でテーブルの作成等できるようになっていると思いますので、
各自の利用内容に沿って進めていただければと思います。

## 終了

最後に、終了方法についてです。
今回使用した`SQL Shell (psql)`および`pgAdmin4`それぞれに終了方法がありますので、
紹介します。

### SQL Shell (psql) の終了方法

まず、`SQL Shell (psql)`ですが、こちらは専用ターミナルで`quit`のコマンドを打てばOKです。
下画像のように、再下段に「プロセスが完了しました」と表示されます。

<img width="400" alt="スクリーンショット 2021-06-10 17 45 12" src="https://user-images.githubusercontent.com/75191225/121497129-14ae7180-ca16-11eb-9bbd-197908e20a3c.png">

###  pgAdmin4 の終了方法

続いて、`pgAdmin4`ですが、下画像のように`PostgreSQL 13`の部分を右クリックし、
出てきたメニューで`Disconnect Server`を選択します。

<img width="1742" alt="スクリーンショット 2021-06-10 17 47 53" src="https://user-images.githubusercontent.com/75191225/121497494-7969cc00-ca16-11eb-938f-66cd07c47803.png">

確認画面が表示されるので、`OK`をクリックします。

<img width="1743" alt="スクリーンショット 2021-06-10 17 48 08" src="https://user-images.githubusercontent.com/75191225/121498136-1a588700-ca17-11eb-8343-74eaf3712a02.png">

下画像のようにサーバーが切断されたのを確認したら、`pgAdmin4`のプロセスを終了します。

<img width="1742" alt="スクリーンショット 2021-06-10 17 48 19" src="https://user-images.githubusercontent.com/75191225/121498337-4b38bc00-ca17-11eb-9634-82b684aca5bc.png">

※ 上記の方法でサーバーを切断する前は、`pgAdmin4`のプロセスを終了することができません。
(一応「強制終了」で終了させることができますが、PCが異常発熱したりすることもある(実証済)ため、
面倒でも上記の方法で終了させることをお勧めします。

# おわりに

今回はMacでのPostgreSQLの導入方法について紹介しました。
もしかすると導入するバージョンにより多少の相違があるかもしれませんが、
是非参考にしていただければと思います。

# 参考文献

・https://mrradiology.hatenablog.jp/entry/2020/08/06/173523
・https://lets.postgresql.jp/documents/tutorial/macosx/2