チャットやスケジュール管理などの アプリ開発で頼りになる 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.
参考/
blog.carlesmateo.com 、
blog.famzah.net
JavaやCには劣るものの、PHPに比べると処理速度が速いことが分かります。さすがGoogle V8 JavaScriptエンジンを搭載しているだけのことはありますね。
Node.js を使ったアプリ例
Node.js が利用されるアプリの種類としては、チャットや通知系アプリ、toDoリスト、スケジュール管理、リモート操作、統計データ、描画などが挙げられます。
以下に Node.js を応用したアプリのサンプルをご紹介します。
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系エンジニアを目指すなら 当メディアを運営しているCodeCampでは、マンツーマンで現役エンジニアからプログラミングコースを提供しています。このコースの特徴は
バックからフロントまでエンジニアとしての基礎スキルを着実に獲得できる プログラミング未経験から転職・フリーランスへ挑戦できる 実際にWebサービスを開発するのでポートフォリオとしても使用できる
いかがでしたでしょうか?JavaScript でバックエンド開発ができる Node.js は、一見すると魅力的に感じますが、サーバー・プログラムをすべて構築しないといけない点は若干ストレスに感じるかもしれません。ただし、開発スピードを加速する Node.js 用モジュールはたくさん公開されていますので、効率のよいアプリ開発に挑戦していきたいですね。
未経験でも、現役エンジニアの手厚い指導が受けられるCodeCampのレッスン【無料カウンセリング】とは? 【CodeCampの無料カウンセリング】で知ることができる内容 自分にあったプログラミング言語とは? 初心者のための挫折しない 学習の進め方
独学よりも速く、確実に プログラミングを習得する方法
満足度97.1%、現役エンジニアのマンツーマンレッスンとは?
CodeCampがプログラミング初心者から選ばれる理由
未経験からエンジニア転職・フリーランスとして活躍するステップ
開催時間:毎日9時〜21時迄(所要時間40分) PCとインターネットがあれば、日本全国どこからでも受講できます
CodeCampで学習できる言語・技術