JavaScript関連の分野について学習をしていると Node.jsというものがどうしても目に入ってくるのですが、プログラミング初学者の私にとっては、わかりやすく解説しようとしてくれている記事を10本調べてみても結局Node.jsがなんなのかわかりませんでした。
もしかして同じような初心者の人いるのでは?と思い、理解が進んだ説明を書き留めておきます。
Node.js ってなんなん?ていつまで経っても解決しない方はぜひご覧ください。
クライアントサイド JavaScript
Webクライアント(Webブラウザ)で動作するJavaScript。
ユーザーの目に見える場所(フロントエンド)の挙動にあれこれ指示を出す言語。
マウスオーバーするとポップアップが出る、webサイト上に画像のスライダーの挙動を実現させる、など。
Webサーバーとの情報のやり取りをしてくれる、言語のような使い方ができるというもの。
↓
本来webページには、登録された情報を引っ張ってくる指示が出されてからサーバーに情報を取りに行って表示されるというプロセスがある。
サーバサイド JavaScript : Node.js
Webサーバーは、Webクライアントからの要求に応じて、データベースに入っている情報を取得したり格納したり、いわゆるユーザーの目に見えない(バックエンド)処理を担当する。
このとき、Webサーバ側でもプログラムが動作しており、Webサーバ側で動作するように作られた JavaScript言語の実行エンジン(JavaScriptインタプリタ)が Node.js である。
Node.js は、Webサーバだけでなく、JavaScript言語で書かれたスタンドアロンアプリケーションを動かすこともできる。
非同期処理、非同期通信
データベースに登録されたユーザー情報などをサーバーに連携して取り出してきて表示、、、
というように、情報取得の要求(ユーザーから)
→ サーバーへ情報を探しに行く
→ 該当情報を返して表示
という一連の流れに時間がかかりすぎると、ちょっとサービスによってはユーザーの要求するイベントに対してタイムラグが発生し、(LINEのやり取りや決済サービスなど)サービス的にイケてないものになってしまいそうな時に使われるものらしい。
特徴:
- webサイトやサービス上で、
- 入力された情報などをリアルタイムでサーバーに保存し反映し続ける(常時接続)
LINEがなんか挙動が止まって数秒経ってからようやくメッセージ送れるみたいな状態だと結構ストレス溜まりますよね。
そうならないようにするための実装方法、という解釈ができました。
JavaScript言語は、非同期処理や非同期通信を行うプログラムを作るのに向いている言語です。
参考
参考にさせていただいたサイト:
https://eng-entrance.com/what-is-nodejs