Node.jsを利用したWebアプリ開発

1OF0xEMkWBv 69zvmNs6RDQ 728x319 - Node.jsを利用したWebアプリ開発

今回は、第二弾としてNode.jsの概要ついて解説していきたいと思います。

 

第一弾でご紹介しましたが、このNode.jsというのはGoogle ChromeのJavaScriptエンジン「V8」からスクリプト実行環境を取り出したものになります。
Node.jsを利用することで、サーバサイドのプログラムを作成することもできますし、バッチ処理としてスクリプト利用されることもあります。
そんなNode.jsについて、より深く理解していただき、Webアプリ開発へのきっかけとして取り進めていただければと思います。

1. Node.jsの特徴

Node.js自体が普及したきっかけとして、いくつかの理由があります。
また、それらの理由は、そのままNode.jsでできることに直結してくるわけです。

 

ここでは、Node.jsに何ができるのか見ていただきたいと思います。

1-1. 実行効率が良いWebアプリ実行環境

第一弾でも紹介させていただきましたが、Node.jsは、優れたサーバサイドJavaScriptの実行環境として注目され始めました。
Googleによる「V8」エンジンを搭載した高速スクリプト実行環境に加えて、非同期処理を標準APIとして提供することで、実行効率の良いWebアプリ実行環境として利用することができます。
このNode.jsの人気の理由として、Node.jsが提供しているAPIが基本的にのノンブロッキングI/Oになっているという点にあるのですが、なんだそれと思った方は、引き続きページを読んでいただければ説明するのでお待ちください。

 

とりあえず、この仕組みのおかげで、CPUの性能が低いサーバ上でも高いパフォーマンスを発揮できるわけです。
特に、リアルタイムのチャットアプリといったものも比較的に小さな処理に対してその真価を発揮することができるのです。

1-2. サーバ・クライアント側にて同じ言語で書ける

一般的にですが、Webアプリで必要なのは、Webサーバ上で動作するサーバ側のプログラム、Webブラウザ上で動作するクライアント側のプログラムです。
当然、Webブラウザで動作するプログラム自体もWebサーバから転送されるものですが、そのプログラムがどのコンピュータ上で動作するのかという点を意識したプログラムを作成する必要があります。

 

Node.jsの登場以前というのは、サーバ側のプログラムはJava、PHP、Ruby、Pythonなどのプログラミングでコーディングすることが一般的でした。
Webブラウザ上で動作するクライアント側のプログラムは、JavaScriptで記述する一方で、サーバ側では異なる言語を利用していたわけですね。

 

モダンなプログラミング言語は少なからず共通認識する部分はあるものの、サーバ・クライアント側で異なる言語を利用しなければならないということで、ストレスになる要因でした。
よくプログラミングを始めようとする方から様々なお問い合わせをいただくことがありますが、言語選択で悩む方も少なくありません。
今回のようなNode.jsに関しては、学習コストという点において、JavaScriptを記述できればサーバ・クライアント側両方で作成できることから大きなメリットになると思います。

 

そして、このNode.jsを利用すれば、お伝えした通りサーバ・クライアント側もJavaScriptで記述できるわけです。

1-3. 便利で強力なライブラリを簡単に利用できる

Node.jsの魅力はまだあります。
Node.jsは高速なスクリプト実行エンジンであることに加えて、様々な便利ライブラリをそれはもう手軽に利用することができます。
この手軽さを手助けしてくれるのが、Node.jsのためのパッケージマネージャであるnpmになります。
上位互換のyarnもありますが、ここではnpmの説明をしていきたいと思います。

 

このnpmを利用することで手軽にライブラリをインストールすることができます。
そのため、様々なツールがNode.jsを利用して開発されており、パッケージマネージャであるnpmを経由してインストールし利用することができます。

 

まさに、豊富なライブラリが存在していることもNode.jsの魅力の一つであるわけです。

2. 大量アクセスにも強い

前述でもお伝えした内容ですが、APIにノンブロッキングI/Oを採用しているため、Node.jsは大量のアクセスに強い特徴があります。

 

このノンブロッキングI/Oとは、ファイルやネットワークの入出力を行う際に、処理をブロックしないことです。
時間がかかる入出力処理を非同期処理にすることで、高い性能を発揮しています。

 

ファイルの読み込み・書き込み、ネットワーク入出力などは、実行に時間がかかってしまいます。
ノンブロッキングI/Oを採用しているAPIを利用することで、Node.jsでは入出力待ちの間に、別処理を行うことができるため、効率的なアクセスとして処理することができるわけです。

 

例えば、、、

 

コンビニでの会計処理を想像してください。

 

お客さんがお弁当を持ってレジにきます。
会計を済ませ、お弁当を温めるよう店員さんに頼みました。
お弁当を温めている間に、次の会計待ちだったお客さんの対応をします。

 

もちろん、スレッド数やCPU処理、リクエスト数によって変化しますが、概念としては理解できたかなと思います。

 

上記のような仕組みを利用することで、大量アクセスの処理を可能としているわけです。

3. まとめ

⬛まとめ – 1
Node.jsを利用して効率の良いWebアプリが作成できます。

 

⬛まとめ – 2
Node.jsにより、サーバ・クライアント側どちらも対応できます。

 

⬛まとめ – 3
パッケージマネージャnpmは便利。

 

次回は、いよいよNode.jsのインストールについての記事をアップしようと思います。
今回の記事を最後までお読みいただき、ありがとうございました。

Pythonチュートリアル公開中です。

 

ABOUTこの記事をかいた人

sugi

大学卒業後、IT企業に就職を果たす。システム開発・人工知能に触れながら大手企業と業務をこなす。2年半後脱サラし、現在フリーランス活動中。 2019年2月から起業する予定。 自社サービス及び製品を開発し、売り上げを立てている。