※非エンジニアやJS初心者向けの記事です。分かりやすさを優先しているので、正確な定義とは若干ズレている可能性があることをご了承下さい。
Node.jsって何ですか?
"プログラミング言語ではない"
言語
は"JavaScript"
"Node.js"は実行環境
です。
よくわからない
だと思います。
有名な言語は大概実行環境
も一緒になっていることが多いです。
身近なものだと、VBAとWord/Excel/PowerPointの関係に近い
VBA、いわゆるマクロって呼ばれる機能ですね。
「書き方、基本命令」を決めている言語
と、
「拡張命令、できること」を決めている実行環境
がある訳です。
Word/Excel/PowerPointはプログラミング言語ですか?
違いますよね?
"プログラミング言語ではない"
"Node.js"は実行環境
です。
今までは、これが各種"ブラウザ"でした。
"Node.js"はサーバーサイドやその他諸々ができる子です。
ただ一つ違うこと
ブラウザはJavaScriptが無くても成り立ちますし、
Word/Excel/PowerPointはVBAが無くても成り立ちます。
その点、"Node.js"は、JavaScriptの実行がメイン機能なので、JavaScriptが無いと成り立ちません。
もう一声
人間で例えてみる。
言語はコミュニケーションの手段でしかありません。
やれることは人によって違います。
"Node.js"はサーバーサイドやその他諸々ができる子です。
TypeScriptって何ですか?
"方言"のようなものです
JavaScript「本当に!?」
TypeScript「ほんまか!?」
関係性も似ています
関西弁を話せる人は、ある程度標準語を話せることが期待できます。
標準語を話せても、関西弁を話せるとは限りません。
(習得は新規言語に比べると楽ですし、雰囲気は感じ取れます)
※一部派生言語では、大きく書き方が違う場合もあります。日本語なら琉球語のようなものがあります。
V8って何ですか?
日本の男性アイドルグループです
JavaScriptの言語を解釈するパーツです
これがあるとJavaScriptが話せるようになります。
Node.jsでもブラウザ(Chrome)でもV8が使われています
言語を話すためのパーツなので共通です。
FirefoxやEdgeは…?
SpiderMonkey
やChakra
などオリジナルのエンジンを利用しています。
V8は頭の片隅に置いておく程度でいい
電子レンジにマグネトロンが使われていることは、知らなくても生きていける。
(おまけ)
JavaScript≠フロントエンド
ブラウザだけじゃない。
Node.js≠サーバーサイド
コマンドラインツールも作れる。マイコン制御にも使われたりする。
Webだけのモノじゃない。
これは、JSの可能性をブラウザの外、全てに広げるものだ。
世間的にはサーバーで使うことが多くても、例外は居る。(私とか)