サーバサイドjavascript実行環境Nodejsとは

nodejs

javascriptはフロントエンドで使用する言語というイメージが強いのですが、nodejsなどのプラットホームを使用することによりjavaやrubyのようにサーバサイドのプログラミングも可能になります。今トレンドになっているSPA(シングルページアプリケーション)を開発しようとしたとき、Angularjs・Reactjs・Vuejsなどのフレームワークを導入するのが一般的になっていますが、そういったパッケージのバージョン管理にもnodejsを使用します。私自身なんとなくnodejsを使っていたのですがふんわりとしか理解できていなかったので、改めてnodejsとnodejsパッケージのバージョン管理の詳細についてまとめてみました。

Nodejs

Nodejsとは一言でいうと「サーバサイドのjavascript実行環境」です。Webサーバとしても使える上、デスクトップアプリケーションも開発できるというjavascriptらしくまさにどこでも活用することができます。普段お世話になっているslackやvscodeなどのアプリケーションも一部nodejsのフレームワークを使って作られています。以下特徴についてまとめました。

  • メモリ消費が少ない(シングルスレッド)。小規模開発運用時にパフォーマンスが出せる
  • C10K問題の解決につながる高速性能
  • 非同期処理により前処理が終わらなくても次の処理を実行できる
  • V8 javascriptエンジンを使用しており高速
  • フロントエンドとサーバサイドの互換性はない

小規模開発においてとにかく高速といったイメージでしょうか。近年クラウド環境下で小さなマイクロサービスを組み合わせてリリースと改善のスピードを高速化するのが主流になってきているようなので、そういった要件にマッチしているようです。

コード実行例

hello_world.jsに「Hello World」と出力する簡単なスクリプトを記載しました。

で簡単に実行することができます。

nodeコマンドが使えなかった方は以下サイトを参考にnodejsをインストールしてみてください。

npm

npmは「Nodejsのパッケージのバージョンを管理するツール」です。アプリ開発においてパッケージのバージョンは重要で、互換性のあるパッケージをインストールしないとたちまちアプリが動かなくなってしまいます。rubyでいうところのbundler、pythonでいうところのpipにイメージは近いのではないかというのが私の感覚です。

npmパッケージは以下サイトで検索することができます。自分で作成して公開することも可能です。

コード実行例

グローバルにパッケージをインストール

npm配下にあるnode_modulesにパッケージをインストール。すべてのプロジェクトでパッケージが使用可能

ローカルにパッケージをインストール

プロジェクト配下(現在のディレクトリ)にあるnode_modulesにパッケージをインストール。プロジェクトのみでパッケージが使用可能

パッケージをアンインストール

インストール済みパッケージ一覧を表示

インストール済みパッケージ一覧を表示(直下のみ)

package.json

アプリケーションが使用している外部パッケージとの依存関係(互換性)を示したファイルです。このパッケージのこのバージョンがないとアプリが動きませんよという説明書のようなもので、npm install を実行するとこのファイルをもとにパッケージがインストールされます。インストールされるパッケージのバージョンは^(キャレット)がついている場合、メジャーバージョンのみ固定(バージョンの一番左のゼロ以外の数値を固定)。~(チルダ)がついている場合、マイナーバージョンのみ固定など、実際にインストールされているバージョンとは差異がある場合があるので、インストールされているパッケージのバージョンを調査する際にはふさわしくありません。

コード実行例

package.jsonの作成

パッケージ名やパッケージの詳細をインタプリタ形式で入力を促されますが、パッケージを作成する時以外はデフォルトで大丈夫です。

package-lock.json

上記で記載したようにpackage.jsonだけではパッケージのバージョン再現が難しいため(想定のバージョンと違うバーションがインストールされる可能性がある)、それを解消するためのファイルです。文字通りバージョンをロック(固定)して指定のバージョンをインストールするようにします。

npmバージョン5以降から使用が可能です。

node_modules

npmによってインストールされた、モジュールファイルが保存されているファイルです。もし余裕があればただモジュールを使うだけでなく、どういったコードが書かれているか検証を行うと理解が深まると思います。

yarn

yarnもnpmと同様nodejsにおけるパッケージ管理ツールです。ただし、npmを置き換えるものではなく、パッケージのレジストリもモジュールのインストールされる場所もpakeage.jsonに関しても同様です。yarnは並列インストールが可能なのでインストールの速度が向上するという利点がありましたが、現在はnpmの性能も向上してきているようです。どちらを採用するかは開発方針によるといった感じでしょうか。

コード実行例

グローバルにパッケージをインストール

ローカルにパッケージをインストール

パッケージをアンインストール

インストール済みパッケージ一覧を表示

インストール済みパッケージ一覧を表示(直下のみ)

スポンサーリンク

シェアする

  • このエントリーをはてなブックマークに追加

フォローする