npm(Node Package Manager)&Node.jsについて語る

前提

モダンな(死語?)フロントの開発で多くのJavaScript(以下js)のライブラリが使われていると思います。
この夏モテる為にNode.jsをインストールしてReactなんかを使っちゃったりする方も多いかと思います。

npmって何?

Node Package Managerの略です。
そしてnpmはNode.jsのパッケージ管理ツールです。

ライブラリやモジュールなどの集まりであるパッケージ(Reactなど)を利用するのに楽な管理ツールみたいなものだと思ってください。
ですのでまずはnpmを使用するためにNode.jsをインストールしなければなりません。

Node.jsの謎

前回も話した部分なんですが

通常JavaScriptはHTML等に埋め込んで使われるものです。
ブラウザが無ければ実行できない言語です。

ChromeのV8 JavaScriptエンジンで動作するJavaScript(実行)環境
って書いたのでNode.jsというWEBサーバーが無いとReactアプリなどは動かないのかな、Chromeでしか動かないのかな・・・みたいに思う人もきっといるはずです。
ですがそんなことはありません。

Node.jsはサーバサイドのJavaScript実行環境、クライアントサイドJavaScriptの開発環境の両方の側面を持っています。

Node.jsはWEBサーバーなのか

Node.jsはWebサーバの役割もNode.jsが担当できます。
というか元々その目的で開発されたようなものだと思います(憶測)。

Webサーバとしての機能も全てひっくるめてNode.jsが担当して効率的に処理できるようになっているため
大量の同時接続をさばけるようなネットワークアプリケーションを構築することができます。

皆さんがよく使っているであろうApacheやnginxのようなWebサーバーの変わりができます。
直接HTTPリクエストを受け取り、処理できます。

Node.jsのおかげでJavaScriptをブラウザ以外で使える

Node.jsでモバイルアプリケーションやデスクトップアプリケーションの開発が可能です。

React NativeやElectronを使ってJavaScript+HTML+CSSでアプリを作ることができるからです。

JavaScriptはChromeやFirefoxといった「ブラウザ上」で動作するプログラミング言語です。
JavaScript実行環境としてPythonやRubyのようにPC・スマホ上で動かせるようにしてくれたのが「Node.js」ということです。

例えばWindowsPCにインストールすると「node.exe」が出来て実行環境も立ち上げることができます。
Node.jsの機能は「サーバーサイドのJavaScript実行環境」、だけというわけではないということです。

いろいろな問題を解決してくれるNode.js

JavaScriptを触っていると「ES8」「ES9」などという言葉に触れることがあります。
これは簡単に説明するとjsのバージョンです。

特に「ES5」から「ES6(ECMAScript2015=ES2015)」でかなり進化しました。

ただ、ES6仕様で書かれたプログラムがブラウザの仕様が追い付いていないためで動かないなんてこともありました。

その時、「ES6以降の新しい仕様で書いたJavaScriptファイル」をBabel等(変換を行うツール)に「ES5のJavaScriptファイル」に変換するのに
Babelを動かすための環境としてNode.jsが役立ったりしました。

ほかにも役立つNode.js

・SassをCSSに変換するためにを使う
・テストツールやコード検証ツールを使うためにNode.jsを使う
・開発用の簡易Webサーバをローカルで立てるためにNode.jsを使う
・静的サイトをビルドするためにNode.jsを使う
など色々なところで役に立っています。

JavaScript

Posted by bistro