Node.js
Node.jsとは
Webページ作成などの際に使われるJavaScriptを、サーバー側で動作させるプラットフォームのこと。
JavaScriptとは
動きのあるWebページを作成する際に使われるプログラミング言語。Webページ上でポップアップウィンドウやスライドショーなどを表示させられる。例えば、Google MapはWebページ上でマウスポインタを使い自在に操作できる、これもJavaScriptにより実現できる機能。
JavaScriptは本来Webブラウザ上のみで動作し、単体ではサーバー上で動作させることはできない。Node.jsを使うことで、JavaScriptがサーバー上でも動作できるようになる。
https://www.kagoya.jp/howto/it-glossary/develop/nodejs/
Node.jsのフレームワーク
Express
Node.jsで利用できるWebアプリケーションフレームワーク。フレームワークとは、システム開発時によく使う機能や設計などを予め用意してあるアプリケーション。Webアプリケーションを開発する上で、より短いプログラムで効率よく開発することがでる。
Ruby言語のRuby on Railsというフレームワークがあるが、ExpressはRuby on Railsと同じ立ち位置と言える。
Node.jsで開発する際に便利な機能をまとめたものをパッケージと呼ぶが、Expressもパッケージの一つである。
npm
Node Package Managerの略称。Node.jsのパッケージ(Package )を管理する(Manager)ツール。
EJS
Enbedded JavaScript。 Enbedded=埋め込む。主にJavaScriptで使用されるテンプレートエンジン。HTMLをヘッダーやフッターで分割して管理することやHTML内でループ処理を記述し実現できる。JavaScriptを使用してHTMLマークアップを生成できるシンプルなテンプレート。
JavaScriptのコードを記述するには、<% %>または<%= %>で囲む。<% %>で囲んだ場合はブラウザに何も表示されないので、変数の定義などに用いる。変数の値などをブラウザに表示したい場合は<%= %>を用いる。
Node.jsのメリット・デメリット
メリット
大量アクセスに強い
C10K問題を解決できる
ノンブロッキングI/O方式
通常、コンピューターは現在の処理が完了するのを待ってから次の処理に移るが、前の処理が終わるまで次の処理に移れないので、大量なアクセスが生じると処理しきれなくなる。ノンブロッキングI/O方式では、前の処理が完了しない状態でも次の処理を開始できるため、大量のアクセスも処理できる仕組みになっている。
C10K問題
サーバー同時接続数が一定数を超えると、ハードウェアの処理が遅くなってしまうこと。C10K問題は略語で、「Client 10K(=1万)問題」という。一般的には1つのプロセスごとに1つの処理が行われ、プロセス数が上限に達すると処理に遅延が発生する。Node.jsではノンブロッキングI/O方式の採用により、1つのプロセスで複数の処理を実行可能でC10K問題の原因が避けられる。
デメリット
対応しているサーバーが少ない
特定のイベントの処理が重たいと、大量のリクエスト待ち状態になる
シングルスレット
プログラムを実行する際、同時に1つの処理しか行わないことです。反対に複数の処理を同時に行うことを「マルチスレッド」と言う。サーバーに対する接続数が増えてもメモリが浪費されない反面、特定のイベントに関する処理が重たい場合、大量のリクエストが待ち状態になってしまう点は注意が必要。その結果システムエラーが発生するとサーバーがダウンしてしまう可能性がある。