Node.js開発のデファクトスタンダード:Express.jsを用いたシンプルなAPIサーバー構築例


Node.js開発のデファクトスタンダード:Express.jsを用いたシンプルなAPIサーバー構築例

expressjs/express

2025-10-09

さて、今回ご紹介するのは...

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/usersJSONデータが表示されます。

どうです、先輩! Node.jsのコア機能だけで書くよりも、ずっと分かりやすく、短いコードでAPIのエンドポイントが作れましたよね!

Bさん
「なんだ!そうだったのか!! そうだろ?これがExpress.jsの力だ。これで君も爆速でAPI開発ができるぞ!頑張れ!」


expressjs/express




パスワード管理に終止符を! Bitwarden/clientsの導入と活用

登場人物ルパン三世 最新技術に弱い天才泥棒。次元大介 寡黙で頼れる相棒。石川五右衛門 パスワードを毎回手打ちする律儀な剣士。銭形警部 フィッシング詐欺メールに引っかかりがちな捜査の鬼。場所 とあるアジト【コントの始まり】ルパン 「ようし、今夜のターゲットは世界銀行の機密データだぜ!次元、準備はいいか?」


freeCodeCamp:あなたのキャリアを変える無料プログラミング学習の決定版!

突然ですが、あなたはこんな風に思っていませんか?「プログラミングを学びたいけど、何から始めたらいいか分からない…」 「スキルアップしたいけど、お金がかかるのはちょっと…」 「実戦で使えるコードを書きたいけど、どこで経験を積めばいいの?」もし、一つでも当てはまるなら、今日の放送はあなたのためにあります!


既存スタックを活かす!ソフトウェアエンジニアが知るべきPlayCanvas Engineの魅力と実践

PlayCanvas Engineは、一言で言えば「ウェブベースのパワフルなグラフィックスランタイム」です。WebGL、WebGPU、WebXRといった最新のウェブ技術を駆使して、ブラウザ上で高性能な3Dコンテンツやゲームを実現するための心臓部となるライブラリです。


ヘッドレスCMS「Strapi」でJavaScript開発を加速!データとAPIのイケてる関係

Strapiってのはね、例えるならキミのプロジェクトの裏方にいる、超有能なDJブースみたいなもんだ。いや、もっと正確に言うなら、キミが作ったアプリケーションにデータを届けるための、最高にイケてるヘッドレスCMSってやつさ!「ヘッドレスCMS?それって何?」って思ったそこのキミ!心配ないぜ。通常のCMS(WordPressとかMovable Typeとかね)は、コンテンツの管理画面と、そのコンテンツを見せるためのウェブサイトが一体になってるだろ?でもヘッドレスCMSは違うんだ。コンテンツの管理機能だけを切り離して、頭(ヘッド)がない状態、つまり「ヘッドレス」なんだ。


開発効率を数十倍に!Bundler/Test Runner/Package Managerを統合した「Bun」徹底解説

今回は、密室殺人事件ドラマのコントのように、すべての謎を一つで解決してしまうような、オールインワンのJavaScriptツールキット、それが「Bun(ブン)」です。Bunは、ウェブ開発の現場で日々直面する様々な課題を、一つのツールで高速かつ効率的に解決するために設計された、新しいJavaScriptランタイムです。


ソフトウェアエンジニアが知っておきたい!OSSの「Immich」で実現するプライベートな写真管理術

Immichっていうのはね、自分で管理できる写真や動画のストレージサービスだよ。簡単に言うと、GoogleフォトとかiCloudみたいなサービスを、自分の家のサーバーで動かせるようにしたものなの。お兄ちゃんはソフトウェアエンジニアだから、このすごさがわかるよね?ただの写真管理アプリじゃないんだよ。


サヨナラ属人化!Markdown対応知識ベースで爆速開発チームへ変貌

「うおおおお!またこのバグ!?」「え、この仕様どこに書いてあるの…?」「前に誰か解決してた気がするんだけどな…」皆さん、よくある光景ですよね?炎上プロジェクトでは、情報が散乱し、ナレッジが共有されず、同じような問題に何度もぶつかることが日常茶飯事です。そんなカオスを打開し、チームを救う切り札となるのが、今回ご紹介する「爆速知識ベース」です!


より良いNode.js開発のために:nodebestpracticesを読み解く

Node. js開発の「ゴールドスタンダード」とも言える、goldbergyoni/nodebestpracticesという素晴らしいガイドについて、ソフトウェアエンジニアの視点から、キャンプ場の設営になぞらえて、分かりやすくご説明しますね。


あなたのサービス品質向上に貢献:qeeqbox/social-analyzer導入とAPI連携の具体例

このツールは、指定されたユーザー名が、1000以上のソーシャルメディアやウェブサイトで利用されているかどうかを、効率的かつ広範囲にわたって調査・分析するためのものです。Node. js、JavaScript、Pythonに対応しており、API、CLI(コマンドラインインターフェース)、そしてウェブアプリとして利用できます。


ふらっと立ち寄った居酒屋で聞く、Prisma入門

「Prisma」ってのはよ、まぁ、あの、えーと… 「データベースと仲良くなるためのすごいヤツ」 だな!いや、もっとちゃんと話すと、「次世代のORM(Object-Relational Mapper)」 ってやつだよ。ORMってのは、データベースのテーブルとかを、JavaScriptとかのプログラムで扱うオブジェクト(クラスとか)にしてくれる魔法の道具って思ってくれや。