🙆

Node.jsとかよく分かんないから調べる

2022/04/11に公開

業務で後輩に上手いこと説明できなかったので調べる。

Node.jsってなんだ

今までのイメージ

  • なんか裏で勝手に動くやつ。(ウイルスみたいな扱いすぎる)
  • .jsって付いてるしたぶんJavaScriptと思うけど、正体不明。
  • サーバっぽいが、サーバじゃないかもしれない。正体不明。
  • npmとかyarnがよしなにしてくれたりしてくれなかったりするが、正体不明。

調べる

公式より

Node.js はスケーラブルなネットワークアプリケーションを構築するために設計された非同期型のイベント駆動の JavaScript 環境です

なんのこっちゃ。

スケーラブルとは

スケーラビリティとは、機器やソフトウェア、システムなどの拡張性、拡張可能性のこと。スケーラビリティの高いことを「スケーラブルな」(scalable)と表現することもある。

「非同期型のイベント駆動」の意味については、こちらが分かりやすかった。

  • 非同期について

同期型が処理を順番にこなしていくイメージに対し,非同期型は重い処理を後から実行するイメージになります.HTTPのリクエストやデータベース処理,タイマー処理やイベント処理などには必ず必要になります.理解しておきましょう.

  • イベント駆動について

イベント駆動型とは,何かしらのイベントが発生した時に特定の処理を実行するものです.フロントエンドではボタンがクリックされた時,画面をスクロールした時,カーソルが乗った時,ページをロードした時など様々です.

JavaScript環境ってどういう意味なの

まんまの意。もっというと、「JavaScriptを実行するための環境」らしい。
JREがJavaを動かせるように、Node.jsはJavaScriptをOS上で動かせる。
元々JavaScriptはブラウザ上で動作する言語だけど、Node.jsが出てきたおかげでOS上でも動けるようになった。

Webサーバと勘違いしてたのはなんでなの

元々の開発目的が↑で書かれてた通りの「Node.js はスケーラブルなネットワークアプリケーションを構築するため」なので、サーバサイドで使われるのが多い。だけど、サーバサイドだけに使われるわけでもない。

npmってなんなの

Node.js用のパッケージ管理ツール。Node Package Managerの略。(パッケージ:ライブラリとかフレームワークとかモジュールとか…)
npm install 〇〇〇 でパッケージをインストールできる。
インストールしたパッケージはpackage.jsonに自動で書き込まれる。
gitとかでNode.jsを利用したアプリケーション開発を行うときは、cloneしたプロジェクトのルートディレクトリでnpm install を実行することで、package.jsonに書かれたパッケージを一括でインストールできる。

yarnってなんなの

npmと同じく、パッケージ管理ツール。npmと互換性があるので、同じpackage.jsonを使うことができる。
npmと比較すると、利点は以下の通り。

  • インストール時間が短い
  • チェックサムでライブラリの整合性をチェックできる
  • yarn.lockなるファイルに、パッケージの依存プログラムのバージョンが書き込まれる。これによって、パッケージの再インストール時にバージョンが不一致になる…ということがなくなる

どっちを使ってもそんなに違いはないので、プロジェクトの規約に則って使い分ければいい感じっぽい。

まとめ

Node.jsくんはすごい。

Discussion