はじめに
アプリケーションを作成する際、DB(データベース)をどのように作成するかも大事になってきます。
個人で開発している程度であればあまりDBの構築に時間はかけたくありませんが、設定周りなど結構複雑なイメージがあります。
今回はそんなときに便利な、サクッと簡単にDBを作成する方法を紹介します。
RenderでDBを作成する
RenderというWebアプリのデプロイを無料で簡単にできるサービスがあります。
そのRenderの中で、PostgreSQLのDBを簡単に作成できるものがあるので、今回はそれを利用します。
まずはRenderのダッシュボードにアクセスし、「New」から「PostgreSQL」を選択します。
データベース情報の設定
Name
Render内で使用するPostgreSQLのインスタンスの名前です。任意の名前を設定します。
Database
PostgreSQLのdbnameです。必須ではありませんが、任意の値を設定します。
省略した場合は、ランダムで生成されるとのこと。
User
PostgreSQLのuserです。Databaseと同じく必須ではありませんが、任意の値を設定します。
Instance Type
無料で使いたいので、Freeを選択します。
無料枠には制限があり、30日間しか使えません。期限が切れるとアクセスできなくなります。
(有料にアップグレードすればアクセス可能)
以上が設定できたら画面左下の「Create Database」を押下します。
少しの間、以下のように「Createing」のStatusとなります。
Statusが「Avalilable」になると、データベースの作成は完了です。
接続情報の取得
先ほどの「Info」右上にある「Connect」をクリックします。
本来はアプリからPostgreSQLを利用するのですが、今回はてっとり早くコマンドでDBの挙動を確認するので、「External」タブの「PSQL Command」をコピーしておきます。
PostgreSQLを導入する
PostgreSQLのコマンドを利用できるよう、以下のサイトからダウンロードします。
https://www.postgresql.jp/index.php/download
わたしはmacを使用していて、homebrewが使えるので、そちらを使ってインストールします。
バージョンはRenderに導入したものと同じ16にします。
brew install postgresql@16
homebrewでインストールした場合、まだpsql
コマンドは使用できる状態にありません。
利用できるよう設定する必要があります。
上の画像のように、実行結果の中からexport PATH
と書かれている箇所を探します。
(cmd + F
で検索ができます)
psql
コマンドを使うため、PATHを通すためのコマンドが見つかるはずです。
このコマンドをターミナルで実行します。
echo 'export PATH="/usr/local/opt/postgresql@16/bin:$PATH"' >> ~/.zshrc
設定を即座に反映させたいのでsource
コマンドを実行します。
※実行環境によっては「~/.zhrc」ではない場合もあります。上記のechoコマンドの「>>」の右側にあるファイルを指定してください。
source ~/.zshrc
これでpsql
コマンドを実行する環境が整いました。
以下のコマンドでバージョンが表示されればOKです。
psql --version
接続確認
先ほどコピーしたコマンドをそのままターミナルなどに貼り付けます。
簡単な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;
いずれも正常にコマンド実行ができていることがわかります。
まとめ
Renderを使うことで、わずらわしい設定を一切することなく、DBを利用することができるようになりました。
無償利用だと30日間しか使えないのがネックですが、簡単な確認程度であれば事足りるかと思います。
フロントもバックエンドも全部Renderでデプロイして簡易的なサービスを作ることにチャレンジしてみたいと思いました。