【初心者向け】PostgreSQL & Node.js をまとめてキャッチアップ

はじめに

データベースとWebアプリケーションの連携について学ぶため、PostgreSQLとNode.js、Expressを使って従業員管理システムのREST APIを構築してみました。本記事では、環境構築から実際のAPI作成まで、初心者の視点で学んだことをまとめます。

今回作成したもの

  • PostgreSQL 17 を使ったデータベース
  • Node.js + Express によるREST APIサーバー
  • Sequelize を使ったORM実装
  • CRUD操作 (Create, Read, Update, Delete) の完全実装

環境構築

PostgreSQLのインストール

Windows環境では、wingetを使って簡単にインストールできました

winget install PostgreSQL.PostgreSQL.17
winget install PostgreSQL.pgAdmin

ポイント:

  • PostgreSQLはWindowsサービスとして自動起動
  • pgAdminでGUI管理が可能
  • 初期設定でパスワードの設定が必要

Node.js環境の準備

プロジェクトの依存関係:

{
  "name": "intro-sq",
  "dependencies": {
    "express": "^4.18.2",
    "pg": "^8.16.3",
    "sequelize": "^6.37.7"
  }
}

学んだこと:

  • npmパッケージ名は小文字とハイフンのみ使用可能
  • introSQintro-sq への変更が必要だった

データベース設計

employeeテーブル

CREATE TABLE employee (
  id SERIAL PRIMARY KEY,
  name TEXT NOT NULL UNIQUE,
  tel TEXT
);

特徴:

  • id:自動採番の主キー
  • name:一意制約付きの必須項目
  • tel:NULL許可の電話番号

アプリケーション構成

ディレクトリ構造

introSQ/
├── app.js                 # メインアプリケーション
├── routes/
│   └── index.js          # APIルーティング
├── app/
│   ├── db/
│   │   ├── db-config.js  # DB接続設定
│   │   └── db-client.js  # CRUD操作
│   └── model/
│       └── employee.js   # Sequelizeモデル
└── package.json

API エンドポイント

Method URL 機能
GET /employee/find 全従業員取得
POST /employee/register 新規登録
PUT /employee/update 情報更新
DELETE /employee/remove 削除

実装のポイント

1. Express アプリケーションの基本構造

var express = require('express');
var app = express();

// JSONパーサーミドルウェア
app.use(express.json());
app.use(express.urlencoded({ extended: false }));

// ルーティング設定
app.use('/', indexRouter);

// サーバー起動
app.listen(3000, function() {
  console.log('Server is running on port 3000');
});

2. Sequelizeモデル定義

const employee = dbConfig.define('employee', {
  id: {
    type: Sequelize.INTEGER,
    primaryKey: true,
    autoIncrement: true 
  },
  name: {
    type: Sequelize.STRING
  },
  tel: {
    type: Sequelize.STRING
  }
}, {
  timestamps: false,
  freezeTableName: true
});

3. REST APIの実装

// GET - データ取得
router.get('/employee/find', function(req, res, next) {
  const query = req.query;
  dbClient.find(query, function(result) {
    res.json(result);
  });
});

// POST - データ登録
router.post('/employee/register', function(req, res, next) {
  const addData = req.body;
  dbClient.register(addData, function(result) {
    res.json(result);
  });
});

フレームワーク vs ライブラリの理解

フレームワークとライブラリの違いについては、理解があやふやな部分がありましたが、開発を通して両者の違いを理解することができました。

また、ランタイム環境についても理解を深めることができたので、3者の違いをまとめておきます。

フレームワーク

  • Express: アプリケーションの構造を提供
  • フレームワークが主導権を握る
  • 決められたルールに従ってコードを配置

ライブラリ

  • Sequelize: 特定機能を提供
  • 開発者が必要時に呼び出す
  • 使用方法の自由度が高い

ランタイム環境

  • Node.js: JavaScript実行環境
  • ブラウザ外でのJavaScript実行を可能に

学習成果

技術的な理解

  1. PostgreSQL: オープンソースのリレーショナルデータベース管理システム
  2. Node.js: JavaScriptでサーバーを構築するための実行環境
  3. Express: Node.jsのための軽量なWebアプリケーションフレームワーク
  4. Sequelize: Node.js用のORM(DBを簡単に操作するためのライブラリ)

開発スキル

  1. 環境構築: wingetを活用したツール導入
  2. 設定管理: 認証設定とセキュリティ
  3. API設計: RESTful な設計原則
  4. テスト: Postmanによる動作確認

まとめ

今回の学習を通して、モダンなWeb アプリケーション開発の基礎を体験できました。 上述した技術の組み合わせにより、効率的で保守性の高いアプリケーション開発が可能であることを実感しました。


参考リンク


この記事が、同じように学習を始める方の参考になれば幸いです。

ご覧いただきありがとうございます! この投稿はお役に立ちましたか?

役に立った 役に立たなかった

0人がこの投稿は役に立ったと言っています。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です