Node.jsを使用してWebサーバーを構築するための方法について、完全かつ包括的に解説します。このガイドでは、Node.jsのHTTPモジュールを使ってシンプルなWebサーバーを立ち上げ、リクエストに応じてレスポンスを返す基本的な仕組みを説明します。
1. Node.jsのインストール
Node.jsはJavaScriptをサーバーサイドで実行できるようにするためのランタイムです。まず、Node.jsをインストールする必要があります。
インストール手順:
- Node.jsの公式サイト(https://nodejs.org/)にアクセスします。
- 最新の安定版(LTSバージョン)をダウンロードし、インストールします。
インストール後、ターミナルで以下のコマンドを実行し、インストールが正常に完了したか確認します。
bashnode -v npm -v
これで、Node.jsとnpm(Node.jsのパッケージマネージャー)が正しくインストールされていれば、バージョン番号が表示されます。
2. Node.js HTTPモジュールの使用
Node.jsにはhttpという組み込みのモジュールがあり、これを使用してWebサーバーを構築します。HTTPモジュールは、リクエストを受け取り、それに応じたレスポンスを返す基本的なサーバー機能を提供します。
まず、プロジェクトのディレクトリを作成し、そこでNode.jsのサーバーを設定します。
プロジェクトの作成
適当なディレクトリを作成し、その中にserver.jsというファイルを作成します。
bashmkdir my-node-server
cd my-node-server
touch server.js
サーバーコードの作成
server.jsファイルを開き、次のコードを記述します。
javascript// HTTPモジュールをインポート
const http = require('http');
// サーバーのポート番号
const port = 3000;
// サーバーを作成
const server = http.createServer((req, res) => {
// レスポンスのヘッダーを設定
res.statusCode = 200; // ステータスコード200(成功)
res.setHeader('Content-Type', 'text/plain'); // レスポンスのコンテンツタイプを指定
// レスポンスとして返す内容
res.end('こんにちは、Node.jsのWebサーバーです!\n');
});
// サーバーを指定したポートでリッスン
server.listen(port, () => {
console.log(`サーバーは http://localhost:${port} で動作しています`);
});
このコードの解説:
http.createServer:新しいHTTPサーバーを作成します。リクエストを受け取るたびにコールバック関数が実行されます。res.statusCode:HTTPステータスコードを設定します。この例では200(正常)を設定しています。res.setHeader:レスポンスヘッダーを設定します。ここでは、レスポンスのコンテンツタイプを「text/plain」にしています。res.end:レスポンスのボディ部分を指定します。この例では「こんにちは、Node.jsのWebサーバーです!」というメッセージを返しています。server.listen:指定したポート番号でサーバーを起動します。この場合、ポート3000でリッスンしています。
3. サーバーの起動
server.jsを作成したら、以下のコマンドでサーバーを起動します。
bashnode server.js
ターミナルに「サーバーは http://localhost:3000 で動作しています」と表示されたら、サーバーが正常に起動しています。
ブラウザでhttp://localhost:3000にアクセスすると、ブラウザに「こんにちは、Node.jsのWebサーバーです!」と表示されます。
4. HTTPリクエストとレスポンスの処理
上記のサーバーコードは基本的なサーバー機能しか提供していませんが、実際のWebサーバーはリクエストの種類やURLに応じてさまざまな処理を行います。例えば、GETリクエストやPOSTリクエストに対応する方法を見ていきます。
URLパスに応じたレスポンスの変更
次のコードでは、URLのパスに応じて異なるレスポンスを返すようにしています。
javascriptconst http = require('http');
const url = require('url');
const port = 3000;
const server = http.createServer((req, res) => {
const parsedUrl = url.parse(req.url, true);
res.statusCode = 200;
res.setHeader('Content-Type', 'text/plain');
// リクエストのパスに応じて異なるレスポンスを返す
if (parsedUrl.pathname === '/') {
res.end('ホームページへようこそ!\n');
} else if (parsedUrl.pathname === '/about') {
res.end('私たちについての情報です。\n');
} else {
res.statusCode = 404;
res.end('ページが見つかりません\n');
}
});
server.listen(port, () => {
console.log(`サーバーは http://localhost:${port} で動作しています`);
});
このコードでは、url.parseを使ってリクエストのURLを解析し、pathnameプロパティを使ってリクエストされたパスを確認しています。/(ホーム)と/about(アバウト)という2つのパスに対応し、それ以外のパスに対しては404エラーメッセージを返します。
5. 終わりに
これで、Node.jsを使った基本的なWebサーバーが作成できました。このサーバーは、GETリクエストに対してレスポンスを返すシンプルなものですが、Node.jsのHTTPモジュールを使用すると、より高度な機能を持つWebアプリケーションを構築することができます。次のステップとしては、HTTPメソッド(GET、POST、PUT、DELETEなど)に対応する処理を追加したり、テンプレートエンジンを使って動的なコンテンツを生成したり、データベースと接続してデータを処理する方法を学んでいくと良いでしょう。

