NodeJS 速習チュートリアル

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('ファイルを読み込み中...(こちらが先に実行されます!)');

この例の動作:

  1. 組み込みの fs モジュールをロードします。
  2. ファイルを読み込むために readFile を呼び出します。
  3. Node.jsはファイルを読み込んでいる間、次の行へ進みます。
  4. ファイルの読み込みが完了すると、コールバック関数が実行されます。 このノンブロッキングな挙動により、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.js

7. Node.jsのバージョンとLTS

Node.jsは6ヶ月ごとに新しいメジャーバージョンをリリースします。
プロジェクトの安定性を確保するため、プロダクション環境(本番環境)では LTS (Long Term Support) バージョンを使用してください。