- 更新日: 2017年05月22日
- 公開日: 2016年02月22日
初心者にもわかりやすく解説!サーバーサイドJavaScript、Node.js とは?
チャットやスケジュール管理などの アプリ開発で頼りになる Node.js。 今や Web の世界を飛び出してIoTの分野でも Node.js が活用されるなど、注目のツールであることは間違いありません。
Node.js の世界をちょこっと覗いてみませんか?
アプリ開発者必見?の Node.js とは
Node.js とは
Node.js は、2009年にリリースされたオープンソースなサーバー・サイド用のプラットフォームになります。リアルタイムな Web アプリ環境を可能とするノンブロッキング I/O や Google Chrome にも搭載されている Google V8 JavaScript エンジンを採用している特徴があります。
Node.js のメリット・デメリット
- メリット1 大量のリクエスト処理をさばける PHP などの Apache による処理は、一つ一つのリクエストに対して一つ一つのスレッドが必要となり、メモリー負荷、しいては処理不可能になるということがあります。しかし、Node.js で採用しているイベントループでは、一度にたくさんリクエストが飛んできても、クエリーと呼ばれる箱にいったん収納し、処理が行われて、サーバーのメモリー負荷を軽減することができます。
- メリット2 リアルタイムな処理が可能 例えばメッセージ受信などで PHP の場合はページを更新しないと受信有無が分からいないのに対して、Node.js を利用するとページ更新しなくても自動的にメッセージ受信状況が更新されていきます。SNS アプリや G-mail などをイメージいただくと分かりやすいと思います。
- デメリット1 Node.js 対応のサーバーを利用する必要がある 国内のレンタルサーバーで Node.js を使おうと思うと VPS サーバーでの利用が必要だったり、使えてもレスポンスが遅いなど問題のあるケースが目立ちます。Node.js ユーザーでは Heroku や OpenShift などのサーバーが有名ですが、海外のサービスになりますので英語力が必要となります。(サーバー比較の参考ブログ/グルチェ開発ブログ)
- デメリット2 サーバーへ Node.js をセットする必要がある PHP や Ruby、Java などのバックエンド言語はレンタルサーバーにすでにセットされていますが、Node.js は自分でセットアップする必要があります。サーバープログラムを自ら構築していきます。
他のバックエンド言語とのパフォーマンス比較
フォルクスワーゲンの IT マネージャーを務め、Geenapp の CTO を務めるプログラムなスペイン人の Carles Mateo さんの資料を元に、Node.js のパフォーマンスを見ておきたいと思います。
1位 | Java | 6 s. |
---|---|---|
2位 | Go | 7 s. |
3位 | Lua | 8 s. |
4位 | C++ | 10 s. |
5位 | C | 10 s. |
6位 | Assembler | 10 s. |
7位 | Node.js | 10 - 14 s. |
8位 | Phantomjs | 20 - 21 s. |
9位 | PHP | 38 s. |
10位 | Phthon | 44 s. |
JavaやCには劣るものの、PHPに比べると処理速度が速いことが分かります。さすがGoogle V8 JavaScriptエンジンを搭載しているだけのことはありますね。
Node.js を使ったアプリ例
Node.js が利用されるアプリの種類としては、チャットや通知系アプリ、toDoリスト、スケジュール管理、リモート操作、統計データ、描画などが挙げられます。
以下に Node.js を応用したアプリのサンプルをご紹介します。
- サンプルアプリ
https://i.cloudup.com/transcoded/zboNrGSsai.mp4
- サンプルアプリ お絵かき for PC source : tutorialzine
Node.js を体験
ローカル環境で Node.js を体験していきたいと思います。
まずは PC に Node.js を公式サイトよりダウンロードします。
左:v4.2.6 LTS 安定版 右:v5.5.0 Stable 最新版 https://nodejs.org/
今回は v5.5.0 Stable をインストールして、Node.js を体験してみます。
インストールが完了し、Node.js アプリを開くと早速 Node.js を体験することができます。 試しに、
[code]Console.log(“Hello World”)[/code]
と入力すると Hello World が表示され、Node.js が正しく起動していることが分かります。
しかし、Node.js 上でコードを記述・管理していくのはナンセンスなので、テキスト・エディタでプログラミングを行っていたいと思います。 試しにテキストエディタで node.js-test.js という JavaScript ファイルを作成し、Web ページにアクセスしたときにサーバーサイドで JavaScript が処理されるか試してみたいと思います。 まず下記のコードを記述した node.js-test.js ファイルを作成し、デスクトップに保存します。
[code title="node.js-test.js"] var http = require('http'); var server = http.createServer(); server.on('request', doRequest); server.listen(1234); console.log('Server running!');
// リクエストの処理 function doRequest(req, res) { res.writeHead(200, {'Content-Type': 'text/plain'}); res.write('Hello World'); res.end(); } [/code]
次にコマンドプロンプト(Mac の場合はターミナル)を開きます。 デスクトップのディレクトリに移動して、
[code]node node.js-test[/code]
と記述し、実行します。 すると Server running! と表示されます。(画像左) そしてブラウザを立ち上げて、指定したポート http://127.0.0.1:1234 にアクセスします。 ブラウザ上で正しくHello World と表示されていることが分かります。(画像右)
実行中のサーバーを終了する場合は、コマンドプロンプト(ターミナル)で Ctrl + C を押します。 今回は、文字を出力するように設定しましたが、コードを書き換えれば HTML ファイルを読み込むことも可能です。
またローカル環境で Node.js を試しましたが、実際にサーバーで Node.js を動かそうと思うと「デプロイ」する必要があります。文量的に、デプロイについては割愛させていただきます。
\Webサイト担当者としてのスキルが身に付く/
まとめ
いかがでしたでしょうか?JavaScript でバックエンド開発ができる Node.js は、一見すると魅力的に感じますが、サーバー・プログラムをすべて構築しないといけない点は若干ストレスに感じるかもしれません。ただし、開発スピードを加速する Node.js 用モジュールはたくさん公開されていますので、効率のよいアプリ開発に挑戦していきたいですね。
- この記事を書いた人
- オシママサラ