AWS Lambdaが Node.js(v8.10) をサポートし始めてから、Node.jsを利用する機会が増えてきました。ここでは、Node.jsの概要について取り上げます。
目次
特徴
- Google V8 JavaScript Engine というランタイムエンジンを利用してJavaScriptを実行できます。
- PHPなどは
ApacheやNginxなどのWebサーバーを別に必要としますが、WebサーバーもNode.jsで作ることができます。 シングルスレッドイベントドリブンを採用しています。- シングルスレッドで複数接続に対応します。
- マルチスレッドに比べて、CPUリソースを必要としません。
ノンブロッキングI/Oを採用しています。- ハードディスクの入出力で待ちが発生せず、処理内容にもよりますが、たくさんの接続を同時に処理することが可能です。
バージョン
- 偶数バージョン(
6.x8.x10.x)がLTSとなっており、サポート期間が長くなっています。 - サポート期間などは下記ページから確認できます。
8.xasync/awaitを利用できるようになりました。
10.x
コアモジュール
path http などのコアモジュールが提供されています。
- コアモジュールの一覧は下記ページから確認できます。
- ドキュメントは下記ページから確認できます。
個人的に利用機会がありそうなモジュールを取り上げます。
| モジュール | 概要 |
|---|---|
| http | HTTPサーバー、HTTPリクエスト |
| https | HTTPSサーバー、HTTPSリクエスト |
| querystring | URLクエリ文字列の解析、フォーマット |
| fs | ファイルの読み書き |
| path | ファイルとディレクトリのパス操作 |
| stream | ストリームの枠組みを提供 |
| os | OS関連のユーティリティメソッドを提供 ( ホスト名 CPU数 メモリ量 など) |
| process | Node.jsプロセスに関する情報を提供 ( コマンドライン引数 環境変数 カレントディレクトリ など) |
| util | format inspect などのユーティリティを提供 |
ストリームとは
ストリームの場合、データの読み/書き/変換を徐々に行うことができます。大きいデータを扱うケースなどで活用します(一度に全てのデータをメモリに読み込むとメモリ不足になるため)。