てがるにDB構築：RenderでPostgreSQL環境を作る

## はじめに
アプリケーションを作成する際、DB（データベース）をどのように作成するかも大事になってきます。
個人で開発している程度であればあまりDBの構築に時間はかけたくありませんが、設定周りなど結構複雑なイメージがあります。

今回はそんなときに便利な、サクッと簡単にDBを作成する方法を紹介します。

## RenderでDBを作成する
RenderというWebアプリのデプロイを無料で簡単にできるサービスがあります。

そのRenderの中で、PostgreSQLのDBを簡単に作成できるものがあるので、今回はそれを利用します。

まずはRenderのダッシュボードにアクセスし、「New」から「PostgreSQL」を選択します。

https://dashboard.render.com/

<img width='70%' src='https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/251137/cd353f3f-b862-4b48-1457-4ba89eb9aeac.png'>

### データベース情報の設定
<img width='70%' src='https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/251137/da870379-e4ab-b2f1-9aaf-ce1caa368455.png'>

#### Name
Render内で使用するPostgreSQLのインスタンスの名前です。任意の名前を設定します。

#### Database
PostgreSQLのdbnameです。必須ではありませんが、任意の値を設定します。
省略した場合は、ランダムで生成されるとのこと。

#### User
PostgreSQLのuserです。Databaseと同じく必須ではありませんが、任意の値を設定します。

#### Instance Type
無料で使いたいので、Freeを選択します。

:::note warn
無料枠には制限があり、30日間しか使えません。期限が切れるとアクセスできなくなります。
（有料にアップグレードすればアクセス可能）
:::


以上が設定できたら画面左下の「Create Database」を押下します。

少しの間、以下のように「Createing」のStatusとなります。
<img width='70%' src='https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/251137/9e496103-5127-3d19-6068-14b7c8895f4c.png'>

Statusが「Avalilable」になると、データベースの作成は完了です。
<img width='70%' src='https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/251137/0f9a2042-9c69-b6a7-8d33-d2dedb5079ea.png'>

### 接続情報の取得
先ほどの「Info」右上にある「Connect」をクリックします。
<img width='70%' src='https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/251137/3d3b7571-0d35-051e-0be8-503df1d3282d.png'>
本来はアプリからPostgreSQLを利用するのですが、今回はてっとり早くコマンドでDBの挙動を確認するので、「External」タブの「PSQL Command」をコピーしておきます。



## PostgreSQLを導入する

PostgreSQLのコマンドを利用できるよう、以下のサイトからダウンロードします。
https://www.postgresql.jp/index.php/download

わたしはmacを使用していて、homebrewが使えるので、そちらを使ってインストールします。
バージョンはRenderに導入したものと同じ16にします。

```zsh
brew install postgresql@16
```

homebrewでインストールした場合、まだ`psql`コマンドは使用できる状態にありません。
利用できるよう設定する必要があります。

<img width='70%' src='https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/251137/e9a102a0-2181-9704-daeb-c7f6455a9d0a.png'>

上の画像のように、実行結果の中から`export PATH`と書かれている箇所を探します。
（`cmd + F`で検索ができます）
`psql`コマンドを使うため、PATHを通すためのコマンドが見つかるはずです。

このコマンドをターミナルで実行します。

```zsh
echo 'export PATH="/usr/local/opt/postgresql@16/bin:$PATH"' >> ~/.zshrc
```

設定を即座に反映させたいので`source`コマンドを実行します。
※実行環境によっては「~/.zhrc」ではない場合もあります。上記のechoコマンドの「>>」の右側にあるファイルを指定してください。

```zsh
source ~/.zshrc
```

これで`psql`コマンドを実行する環境が整いました。
以下のコマンドでバージョンが表示されればOKです。
```zsh
psql --version
```

## 接続確認
先ほどコピーしたコマンドをそのままターミナルなどに貼り付けます。

接続が成功すると、以下のような表示になります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/251137/5cf40a5f-5a41-8963-86fa-3ee14ca4be2d.png)

簡単なSQL文を実行してみます
```sql
-- テーブルの作成
CREATE TABLE items (
    id SERIAL PRIMARY KEY,
    name VARCHAR(100) NOT NULL
);

-- データの挿入
INSERT INTO items (name) VALUES ('サンプルアイテム');

-- 新規作成データの読み取り
SELECT * FROM items;

-- データの更新
UPDATE items SET name = '更新されたアイテム' WHERE id = 1;

-- 更新後データの読み取り
SELECT * FROM items;

-- データの削除
DELETE FROM items WHERE id = 1;

-- 削除後データの読み取り
SELECT * FROM items;

```
結果は以下のようになります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/251137/c867d2b9-8906-98ba-61ed-ad2292220b41.png)


いずれも正常にコマンド実行ができていることがわかります。

## まとめ
Renderを使うことで、わずらわしい設定を一切することなく、DBを利用することができるようになりました。
無償利用だと30日間しか使えないのがネックですが、簡単な確認程度であれば事足りるかと思います。

フロントもバックエンドも全部Renderでデプロイして簡易的なサービスを作ることにチャレンジしてみたいと思いました。

## 参考にしたサイト
* [Render.com に PostgreSQL を使った Web アプリを載せるには](https://note.com/watanabe_kf1983/n/n9e4597ae223e)