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.x
8.x
10.x
)がLTS
となっており、サポート期間が長くなっています。 - サポート期間などは下記ページから確認できます。
8.x
async/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 などのユーティリティを提供 |
ストリームとは
ストリームの場合、データの読み/書き/変換を徐々に行うことができます。大きいデータを扱うケースなどで活用します(一度に全てのデータをメモリに読み込むとメモリ不足になるため)。