5分で終了。node.jsの環境構築が拍子抜けするほど簡単だったのでサンプルプログラム付きでまとめてみました【Mac編】

Screen Shot 2013 04 06 at 1 04 13

HTML5の発表に合わせて再注目され、今はweb標準には必須のスキルとなっているjavascriptですが、一般に知られるフロントエンドだけではなく、実はPHP等が動くサーバサイドでも使われています。

今回は今注目のnode.jsの紹介、Macでの環境構築、Helloworld作成、そしてより知識を深めるための便利サイトを一気にまとめて紹介します!

  1. サーバサイドjavascript?
  2. 僕が使ってみたいと思った理由や具体的なメリット・デメリット等
  3. 動作環境
  4. 実際にMacにインストールしてみる
  5. はじめの一歩。Hello World
  6. もっと深く知りたい方へ

サーバサイドjavascript?

フロントエンドとバックエンドで同じ言語を使えるというのは学習コストを考えると非常にメリットがあるのではないでしょうか。しかも多くのユーザが使い始めているjsとなると注目されるのもうなずけます。

node.jsのトレンド

Screen Shot 2013 04 11 at 3 39 07 PM

※アクセス制限があるようで、途中から表示されなくなったので、キャプチャを貼らせてもらいました。最新情報はGoogleTrendsでチェックして下さい。

僕が使ってみたいと思った理由や具体的なメリット・デメリット等

jsだけでなんでもできちゃう時代

まず、jsがWeb標準において欠かせない技術になり、プログラム言語のトレンドになっていったことが大きいです。ウェブサイトの構築はもちろん、アプリまで作れてしまう上、サーバサイドもコントロールできるとなれば、もはや選択しない理由がないといったところですね。

また、もともとnode.jpを入れるきっかけになったのですが、jsをシンプルなクラスベースの書式で書けるTypeScriptにも興味があって、その開発環境の構築に必要だった事もあげられます。node.jsは何かと組み合わせて更にその威力を発揮できるという潜在的なものを持っているようなので、その勉強も兼ねています

node.jsを使うメリット

スターバックス方式で大量に注文を受付けるイベントループ

Apacheはユーザからのアクセスに対し、スレッドというものを作る必要があり、同時アクセス数が増える事で使用するメモリの必要量も増えてしまうので、ある時点から急にパフォーマンスが落ちてしまいます。この問題は(C10K問題(クライアント1万台問題)))としてたびたび議論されていましたが、それを改善できる技術として注目されたのが、スレッドを1個しかもたないイベントループです。1つしかスレッドを持たないので、メモリ消費量を劇的に抑えることに成功しています。

シングルスレッドで処理を捌くためのノンブロッキングI/O

1つしかないスレッドで大量アクセスに耐えるイベントループですが、ではどうやって殺到する複数アクセスをさばくのかか。その秘密はデータの送受信(I/O)が完了を待たず(ブロックせず)に、次の処理をうけつけ、それぞれを並列に実行できる「ノンブロッキングI/O方式」にありました。イベントループはノンブロッキングI/O方式によって高速処理を実現しています。

イベントループ、ノンブロッキングI/O等について、スターバックスに例えて分かりやすく説明している素晴らしい記事があります。ここを読めばイメージしやすいと思います。

Webアプリサーバーの常識を覆す「Node.js」 – スタバ方式で「C10K問題」を解消:ITpro

node.js大量アクセスに耐えうるシステム構築ができるという部分が特徴であり最大のメリットであると言えそうですね。

良いことずくめに見えるけど、、デメリットは?

ここに関しては、慎重に言及していきたいところなので、最初に記事を引用させてもらう形で、紹介したいと思います。

node.jsは普及しそうに無い: ニュースの社会科学的な裏側
node.jsは普及しそうに無い ここ一ヶ月ぐらいからJavaScriptが注目されているようだ。理由は簡単で、GoogleのJavaScriptエンジンを使ったアプリケーション・サーバー …
GREEが悩むNode.jsの問題を考えるヒント – ぼちぼち日記
GREEが悩むNode.jsの問題を考えるヒント Node.js 先日 GREEを支える大規模インフラテクノロジー」-GREE Platform Summer Conference 2012 という …

なるほど。やはり完璧なものは無いということですね〜。

内容はメモリリーク問題や、イベントループに関するものでしたが、個人的には後々改善解消される問題なのかなと思っていて、ユーザ数増加に伴う安定化のニーズが後押しして、少しずつ安定していくのでは、と見ています。今のところそのデメリット以上に余るメリットが多いように思うので、もっていて損はしないスキルと言えるのではないでしょうか。

動作環境

オフィシャルサイトからの抜粋です。

Screen Shot 2013 04 11 at 12 39 35 PM

  • Windows
  • Mac OS
  • Linux
  • SunOS
  • Source Code

となっています。ソースコードがあるので、コンパイル&インストールで、多くのUnix環境へ組み込むことも出来そうですね。

次は実際に、MacOSXにインストール&Hello worldまでの手順を追ってみましょう

実際にMacにインストールしてみる

  1. node.jsの本家サイトからnode.jsをダウンロードします

    nodejs.org

    追記:日本語版もありましたので追記しておきます

    nodejs.jp/nodejs.org_ja/

    130407 0001

    トップページにあるInstallボタンで環境に合った(WindowsかMacか等)インストーラを判断してくれるはずですが、うまくいかない場合はその左下にあるDOWNLOADボタンから選ぶことも可能です。

  2. ダウンロードしたインストーラをダブルクリックします

    130407 0008

  3. 下記「使用許諾契約」を確認後「続ける」をクリック

    130407 0009

  4. クリックすると再確認画面がでるので、問題なければ「同意する」をクリック

    130407 0028

  5. インスール先が自動で設定されているので、通常はそのまま「インストール」をクリックしてしまって問題ないと思います。(僕の環境ではHDD1が自動で設定されていました)

    必要であれば「カスタマイズ」ボタンを押してインストール先を変更した後、インストールして下さい。

    130407 0012

  6. 下記アカウントパスワード入力のダイアログが表示されたら、パスワードを入れて「ソフトウェアをインストール」をクリックして下さい。

    130407 0029

  7. インストールが完了すると下記画面が表示されます。簡単ですね!

    130407 0015

  8. 動作確認をしてみましょう

    ターミナルでインストール確認をしてみましょう。
    右上のSpotlightから「ter」と入れるとすぐに見つかります。

    130407 0027

  9. 起動画面
    130407 0017
  10. $に続けて以下のコマンドを入力します。

    node -v

    130407 0018

  11. エンターを押し、バージョンが表示されれば、インストール確認完了です。
    (番号はバージョンによって変わります)
    130407 0019

はじめの一歩。Hello World

インストールが完了したらhello worldで動作確認をします。とはいえ、作成するコードはたった1行です。

  1. デスクトップに”helloworld.js”というファイルを作成し、以下のコードを入力して下さい。

    console.log('hello world');

    130407 0020

  2. デスクトップに保存します

    スクリーンショット 2013 04 07 0 32 56

  3. インストール確認と同様にターミナルを起動して以下のコマンドを入力、エンターでデスクトップに移動します

    cd desktop

    130407 0021

  4. いよいよ、スクリプトの実行です。といってもとても簡単です。node コマンドでjsファイルを呼び出すだけです

    node helloworld.js

    130407 0022

  5. hello world と表示されれば成功です!

    130407 0023

いかがでしたか?あっけなくここまで来てしまった!って方も多いかと思います。もともと知られている言語で、サーバサイドのプログラミングができるので、習得までのモチベーションも維持できるのではないでしょうか。今度はレンタルサーバへのインストールなど実務で使えるところまで勉強してみたいですね。その際はまた記事にまとめていきたいと思います。

今回使用したサンプルファイルはここからダウンロードできますので、お試しください。(1行だけしか書かれていませんが)

続けて、以下に更に理解を深めるための参考サイトを集めてみました。node.jsをもっと深く学びたい方はこちらを参考にしてみて下さい。

もっと深く知りたい方へ

本家、関連サイトはこちら

node.js
node.js Node.js is a platform built on Chrome’s JavaScript runtime for easily building fast, …
node.js : 日本語
Node.jsは高速でスケーラブルなネットワークアプリケーションを 簡単に構築するためにChrome の JavaScript 実行環境 上に構築されたプラットフォームです。 Node.jsはイベン …
Node.js 日本ユーザグループ
Node.js 日本ユーザグループ ナビゲーション メーリングリスト ドキュメント 関連ドキュメント リンク IRC ブログ 連絡先 日本語訳ドキュメント v0.11.0 マニュアル v0.10.3 …

こちらは、node.jsの概要についてまとめられているサイト、サンプルプログラムを作りながら理解を深めることができるサイトを集めてみました。どれも良いサイトばかりです。

node.jsでサーバサイドJavaScript開発入門:サーバサイドJavaScriptの本命「node.js」の基礎知識 – @IT
サーバサイドJavaScriptの本命「node.js」の基礎知識 (1/3) いま注目の「サーバサイドJavaScript」の実装の本命として話題を集める「Node.js」の概要から実践的な使い方ま …
Node.js とは一体何か?
Node.js はサーバー・サイドの JavaScript インタープリターであり、サーバーの動作に関する概念を変えるものです。Node.js が目指しているのは、プログラマーが非常にスケーラビリティ …
第一回 Node.jsでどんなことができる?|マルチデバイスLab. – Multi Device Lab.
サーバーサイド界隈で注目を集めているNode.js。概要や導入の際の注意点や、tipsを公開していきます。 …
Nodeビギナーズブック » Node.jsチュートリアル » Node.js 教程
本書は、Node.jsでのアプリケーション開発を始めようとする皆さんに、 ”高度な”JavaScriptについて知るべきあらゆることを解説します。 よくある”Hello World”チュートリアルの、 …
第1回 Node.jsとは:基礎から学ぶNode.js|gihyo.jp … 技術評論社
本連載では,注目を集めるNode.jsを使って,Webアプリケーションを様々なクラウド環境で動かすことを最終目的にしています。Node.jsに触れたことがないJavaやPHPなど普段サーバサイドで開発 …
JavaScriptでWebアプリを開発できる「Node.js」活用入門 | SourceForge.JP Magazine
JavaScript、そして非同期・シングルスレッドで注目を浴びるNode.js  Node.jsはJavaScriptでWebアプリケーションのサーバーサイドプログラムを実装できる技術で、開発プロ …


投稿日

カテゴリー:

投稿者:

タグ: