Node.js といえば発表された当初、イベント駆動、ノンブロッキングI/O、スケーラブルネットワークブログラミング、といった部分が注目され非常に話題になりました。
フロントエンド技術の興隆目覚しい昨今においては、Sass や CoffeeScript のコンパイルを自動化する Grunt や Gulp といったタスクランナーを動かすための開発環境インフラとして大きな役割をはたしています。
今回はそんな node.js の基本的な利用方法についてまとめてみました。
Node.js のインストールとバージョン管理
発表当初、試すのにも敷居の高さがあった Node.js ですが、今では Windows でも容易に利用できるようになってます。 Windows で Node.js をインストールする一番簡単な方法は、以下公式サイトにあるインストーラーを使用する方法です。 ダウンロードして実行するのみでインストールは完了します。
しかし、Node.js はバージョンアップのサイクルが非常に早く、バージョンによっては動作しないモジュールがあった場合、バージョン変更するのが非常に面倒です。 そこで Node.js のインストールとバージョン変更を簡単に行うことができるバージョン管理ツールを使用してみます。 バージョン管理ツールには以下のものがあります。
- nodist
- Windows 専用のバージョン管理ツール
- nvm
- Mac OSX/Linux 用のバージョン管理ツール
- nvmw
- Windows 向けの nvm、Python のインストールが必要
- nodebrew
- Perl製のバージョン管理ツール、Mac OSX/Linux 用
ちなみにマイナーバージョンが、v0.2, v0.4 のように偶数値のものが安定板、v0.3, v0.5 のように奇数値のものが開発版という位置づけになります。
nodist によるインストールとバージョン管理
今回は Windows 専用のバージョン管理ツール「nodist」を使用してみます。 GitHub よりソースコードを取得します。
Git がインストールされてない場合は https://github.com/marcelklehr/nodist より “Donwload ZIP” をクリックし、ソースコード一式を取得し解凍します。
次に環境変数の設定を行います。ソースコードの展開先を c:\ide\nodist とした場合、コマンドプロンプト(もしくは Git の Bash)より以下のように入力します。
コマンドプロンプトを一旦閉じ再起動すると環境変数が適用されますので、その状態でNode.js のインストールを行います。
インストールされた node.js のバージョンを確認します。
最新の安定版がインストールされてるいることを確認できます。試しに旧バージョン(v0.10.2)をインストールしてみます。
nodist と入力するとインストールされてるバージョンの一覧と適用されてるバージョンの確認ができます。
v0.10.35 が適用されてることが分かります。バージョンを切り替えるには以下のように入力します。
バージョン番号を指定せず、最新の安定版を適用するには stable と指定します。
特定のバージョンをアンインストールするにはバージョン番号の前に – を指定します。
Node.js を対話モードで使用してみる
Node.js を対話モードのREPL(Read eval print loop:対話的実行環境)で動かしてみます。 node と入力します。
キー入力待ち状態になります。計算式を入力すると計算結果が表示されます。
JavaScript の命令も使用できます。
プログラムを実行してみます。以下コードを hello.js という名前で作業フォルダに保存します。
コマンドプロンプトに戻り(Ctrl+Cを2回もしくは .exit と入力すると戻れます)以下のよう入力すると実行できます。
対話モードで .help と入力すると使用できるコマンド一覧が表示されます。
モジュールの読み込み
require 関数を使用するとプログラム内で他の js ファイル(モジュール)を読み込むことができます。 また、モジュールは exports オブジェクトを通じ値やメソッドを定義することができます。
指定した名前に挨拶する hello_name モジュール(hello_name.js)を作成してみます。
hello_name モジュールを呼び込み、’Taro’ に挨拶する hello_taro モジュール(hello_taro.js)を作成します。
hello_taro.js を実行すると Hello, Taro ! と表示されます。
標準モジュールを使用してみる
node.js に最初から組み込まれている標準モジュールをいくつか使用してみます。
- http
- HTTP サーバやクライアント機能を提供します
- fs
- ファイルシステムへのアクセス機能を提供します
- net
- TCP 通信によるネットワークサーバやクライアント機能を提供します
HTTP サーバを動かす
http モジュールは、HTTP サーバやクライアント機能を提供します。 下記コードを http.js というファイル名で保存します。
http.js を実行します。
ブラウザより http://localhost:8080 にアクセスすると Hello Node ! と表示されます。
Web API を利用する
http モジュールを使用し Web API を利用してみます。 http://nodejs.org/ のはてブ数を取得してみます。 下記コードを webapi.js というファイル名で保存します。
webapi.js を実行すると http://nodejs.org/ のはてブ数が表示されます。
ファイルシステム にアクセスする
fs モジュールは、ファイルシステムへのアクセス機能を提供します。 下記コードを fs.js というファイル名で保存します。
fs.js を実行すると fs.txt が無いためエラーが表示されます。
fs.txt を以下のように作成します。
fs.js を再度実行すると、fs.txtの中身が表示されます。
TCP サーバを動かす
net モジュールは TCP 通信によるネットワークサーバやクライアント機能を提供します。 下記コードを net.js というファイル名で保存します。
net.js を実行します。
telnet で localhost に接続後、適当にキー入力しエンターすると入力した文字が表示されます。
npm でサードパーティ製モジュールをインストールする
npm(Node Package Manager)を使用することで、サードパーティ製のモジュールをインストールすることができます。 以下のモジュールをインストールして使用してみます。
- request
- HTTP リクエスト処理の簡潔な記述を可能にする
- async
- 非同期処理の簡潔な記述を可能にする
request モジュールをインストールしてみます。
作業フォルダに node_modules フォルダが生成され request モジュールが配置されます。
-g オプションを付けてインストールするとグローバル環境に配置され、異なる作業フォルダからもモジュールを利用できるようになります。
パッケージ定義ファイルを利用しインストールする
パッケージ定義ファイル package.json に利用するモジュールを定義しインストールすることもできます。 プロジェクトフォルダを作成し、その中に package.json を定義してみます。
npm init と入力すると対話形式で、package.json を作成することができます。
ここではとりあえず何も入力せず全てエンターします。
対話入力が終わると以下内容の package.json が生成されます。
この package.json に dependencies 属性を追記し、インストールしたいモジュール名とバージョンを指定します。
ここでは request と async を指定します。
npm install と入力すると package.json に定義されたモジュールがインストールされます。
指定 URL の HTML を読み込む
request モジュールを使用し、指定した URL の HTML を読み込み表示してみます。 下記コードを request.js というファイル名で保存します。
request.js を実行すると、指定した URL の HTML が表示されます。
非同期処理を分かりやすく書く
非同期処理をコールバックで定義するとネストが深くなり、可読性が悪くなりがちです。 async モジュールを使用し非同期処理の記述をすっきりさせる事ができます。
まずは順次処理から。下記コードを series.js というファイル名で保存します。
series.js を実行すると、定義した順番に処理が実行されてることが確認できます。
次に並列処理を書いてみます。series の記述箇所を parallel に置き換えた下記コードを parallel.js というファイル名で保存します。
parallel.js を実行すると、処理の呼び出しが先行して行われ、処理が終了した順にコールバックが実行されてることが確認できます。
async.series や async.parallel の引数には配列を指定しましたが JSON を指定することもできます.
この場合、JSON 形式で処理結果を受け取ることができます。
最後に
以上、基本的な利用方法のまとめでした。 node.js 対応の PaaS もめずらしくない世の中ですので、機会があったら利用していきたいと思います。
サンプルプログラム一式は以下にあります。
https://github.com/cyokodog/JS_STUDY