Node.js 入門
1. 学習内容
このチュートリアルでは、以下の内容を学習します:
- Node.jsのインストールと実行方法
- モジュールやイベントループなどのコア概念
- WebサーバーおよびAPIの構築方法
- データベースやファイルの操作
- Node.jsアプリケーションのデプロイ
2. Node.jsとは?
Node.jsは、Windows、Mac、Linuxなどで動作する、フリーかつオープンソースのJavaScriptランタイムです。
Webブラウザの外でJavaScriptコードを実行することを可能にし、JavaScriptによるサーバーサイド開発を実現します。
ChromeのV8 JavaScriptエンジン上に構築されたNode.jsは、スケーラブルなネットワークアプリケーションを効率的に構築できるように設計されています。
2.1 例:メッセージを出力する
独自のNode.jsサーバーを用意しましょう。
// コンソールにメッセージを出力
console.log('Hello from Node.js!');3. なぜNode.jsなのか?
Node.jsは、最小限のオーバーヘッドで多くの同時接続を処理することに長けており、以下のような用途に最適です:
- リアルタイムアプリケーション(チャット、ゲーム、コラボレーションツール)
- APIおよびマイクロサービス
- データストリーミングアプリケーション
- コマンドラインツール(CLI)
- サーバーサイドWebアプリケーション
そのノンブロッキングでイベント駆動(Event-driven)なアーキテクチャにより、I/Oヘビーなワークロードに対して非常に高い効率を発揮します。
4. 非同期プログラミング
Node.jsは、非同期(ノンブロッキング)プログラミングを採用しています。
これは、ファイルの読み込みやデータベースとの通信といったタスクの完了を待っている間も、他の処理を続行できることを意味します。
非同期コードにより、Node.jsは多くの処理を同時にこなすことができ、高速かつ効率的です。
4.1 例:ファイルを非同期で読み込む
// ファイルシステムモジュールをロード
const fs = require('fs');
// ファイルを非同期で読み込む
fs.readFile('myfile.txt', 'utf8', (err, data) => {
if (err) {
console.error('ファイル読み込みエラー: ' + err);
return;
}
console.log('ファイルの内容: ' + data);
});
console.log('ファイルを読み込み中...(こちらが先に実行されます!)');この例の動作:
- 組み込みの fs モジュールをロードします。
- ファイルを読み込むために readFile を呼び出します。
- Node.jsはファイルを読み込んでいる間、次の行へ進みます。
- ファイルの読み込みが完了すると、コールバック関数が実行されます。 このノンブロッキングな挙動により、Node.jsは多くのリクエストを効率的に処理できます。
5. Node.jsで何ができるのか?
- Webサーバー: 高速でスケーラブルなネットワークアプリケーションの作成
- ファイル操作: サーバー上のファイルの読み取り、書き込み、管理
- データベース連携: MongoDB、MySQLなどのデータベースとの連携
- API: RESTfulサービスやGraphQL APIの構築
- リアルタイム通信: WebSocketsを利用したライブアプリケーションの処理
- CLIツール: コマンドラインアプリケーションの作成
5.1 例:シンプルなWebサーバー
const http = require('http');
// HTTPサーバーを作成
http.createServer((req, res) => {
res.writeHead(200, {'Content-Type': 'text/plain'});
res.end('Hello World!');
}).listen(8080);6. Node.jsファイルとは?
Node.jsファイルは、サーバー上で実行されるコードを含んでいます。通常、拡張子は .js であり、 node コマンドで起動できます。
- Node.jsファイルは、特定のイベント(Webリクエストなど)が発生したときにタスクを実行します。
- 効果を発揮させるには、サーバー上で起動させる必要があります。
- JavaScriptの構文を使用します。
6.1 例:Node.jsファイルの実行
node app.js7. Node.jsのバージョンとLTS
Node.jsは6ヶ月ごとに新しいメジャーバージョンをリリースします。
プロジェクトの安定性を確保するため、プロダクション環境(本番環境)では LTS (Long Term Support) バージョンを使用してください。