Node.js開発のデファクトスタンダード:Express.jsを用いたシンプルなAPIサーバー構築例
さて、今回ご紹介するのは...
Aさん (新人エンジニア)
「先輩、Web APIを作りたいんですけど、Node.jsだけだと、URLのルーティングとか、リクエストの処理とか、イチから全部書くのが大変で...」
Bさん (先輩エンジニア)
「おっ、頑張ってるな!でも、そうなんだよな。特に大規模になってくると、生のNode.jsだとコードがごちゃごちゃになって管理が大変になる...。まるで、部品がバラバラのレゴブロックを、設計図なしで組み立てるみたいだ。」
Aさん
「まさしくそんな感じです!なんか、もっとこう...パッと簡単に組み立てられる『フレーム』みたいなものはないんですか?」
Bさん
「なんだ!そうだったのか!! そこに、Web開発のデファクトスタンダード的なフレームワーク、Express.jsがあるじゃないか!」
Express.jsは、Node.js上で動作する、高速で、柔軟性が高く、必要最低限の機能だけを持ったWebアプリケーションフレームワークです。
ソフトウェアエンジニアの視点から見ると、Express.jsは主に以下の点で非常に役に立ちます。
「URLによって処理を振り分ける(ルーティング)」や「リクエストのボディを解析する」など、Webアプリケーションで必ず必要になる共通の機能をシンプルに提供してくれます。これにより、毎回イチから書く手間がなくなり、本質的なビジネスロジックの開発に集中できます。
Express.jsの肝は、このミドルウェアです。ミドルウェアとは、リクエストが最終的な処理にたどり着くまでの間に、認証チェック、ログ記録、データ圧縮などの追加の処理を挟み込むための仕組みです。必要な機能だけを組み合わせて使えるため、非常に柔軟で、メンテナンスしやすい構造になります。
設定がシンプルで軽量なので、RESTful API(データをやり取りするためのWebサービス)のバックエンドサーバーを構築する際に、多くの企業で採用されています。学習コストも比較的低いので、すぐに戦力になれますよ!
導入はとても簡単です!
まずは、Node.jsのプロジェクトを初期化します。
# プロジェクトフォルダを作成して移動
mkdir my-express-app
cd my-express-app
# package.json を作成(-yで質問をスキップ)
npm init -y
npmコマンドを使って、Express.jsをプロジェクトに追加します。
# expressをインストール
npm install express
server.js などのファイル名で、以下のコードを記述します。
// 1. Expressモジュールを読み込む
const express = require('express');
// 2. Expressアプリケーションのインスタンスを作成
const app = express();
// 3. サーバーが使用するポート番号を定義
const port = 3000;
// --- ルーティングの設定 ---
// GETリクエスト(/)が来たら実行する処理
app.get('/', (req, res) => {
// レスポンスとして文字列を送信
res.send('Hello, Express World! ');
});
// GETリクエスト(/api/users)が来たら実行する処理
app.get('/api/users', (req, res) => {
// レスポンスとしてJSONデータを送信 (APIに最適!)
const users = [
{ id: 1, name: 'Taro Yamada' },
{ id: 2, name: 'Hanako Sato' }
];
res.json(users);
});
// --- サーバーの起動 ---
// 指定したポートでサーバーを待ち受け状態にする
app.listen(port, () => {
// サーバーが起動したらコンソールにメッセージを出力
console.log(`サーバーが起動しました: http://localhost:${port}`);
});
Node.jsで作成したサーバーファイルを実行します。
node server.js
ブラウザやAPIクライアント(Postmanなど)で、以下のURLにアクセスしてみましょう。
| アクセス先 | 結果 |
http://localhost:3000/ | Hello, Express World! という文字列が表示されます。 |
http://localhost:3000/api/users | JSONデータが表示されます。 |
どうです、先輩! Node.jsのコア機能だけで書くよりも、ずっと分かりやすく、短いコードでAPIのエンドポイントが作れましたよね!
Bさん
「なんだ!そうだったのか!! そうだろ?これがExpress.jsの力だ。これで君も爆速でAPI開発ができるぞ!頑張れ!」