ほんじゃらねっと

ダイエット中プログラマのブログ

作業自動化のための Node.js 入門

これまでいくつかの記事でNode.jsを使ったスクリプトを載せてきたが、

自動化のためのスクリプトを書いて動かす環境として

Node.jsは手軽だし速いし色々ライブラリは揃ってきているし

なかなか良い環境だと感じている。

Web系の仕事をしていればJavascriptはある程度親しみのある言語だろうし、

GruntやGulpのようなWeb関連作業を自動化する

機能満載のタスクランナーまで用意されている。

実行環境もインストーラをダウンロードしてインストールすれば

パッケージ管理ツール付きで入手することができるので、

すぐに開発を始めることができる。

非同期処理が得意なサーバアプリケーションを作るための環境として

紹介されることが多いけど、この手軽に導入できて

Javascriptでサクッとアプリが作れるところだけでも十分に価値があると思う。

ノンプログラマが仕事を効率化するためにプログラミングを始めるなら、

とりあえずNode.jsから始めてみたらいいんじゃないだろうか。

今回はこのブログで紹介しているNode.jsのサンプルを試していただけるよう、

Node.js実行環境のインストールから

簡単なサンプルプログラムを作って実行するところまでを紹介したい。

自分でプログラムを作成するところまでいかなくても、

入手したプログラムを実行できるようになれば自動化作業も捗るのではないかと思う。

Node.js実行環境を作る

Node.jsをインストール

とりあえず一番簡単なのは、本家サイトから最新版をダウンロードしてインストール!

Node.js

インストールが完了したらnodeコマンドとnpmコマンドが使えるようになっているはず。

コマンドプロンプト/コンソールを開き、下記のコマンドでチェックしてみよう:

node -v
npm -v

インストールに成功していたらバージョン番号が表示される。

「node」と「npm」、2つのコマンドについて理解する

まずはこの2つのコマンドを使いこなせるようになろう。

といっても覚えることはそれほど多くない。

nodeコマンドはJavascriptで書いたプログラムを実行するためのコマンドだ。

下記のようにJavascirptファイルを指定して実行する:

node <Javascriptファイル>
node sample.js

npm (Node Package Manager)はnodeコマンド実行時に使用するパッケージ(ライブラリ)を

ダウンロードしてインストールするためのコマンドだ。

下記のnpm本サイトに登録されているパッケージをインストールすることができる:

www.npmjs.com

パッケージは特定のアプリケーション用にインストールすることもできるし、

どのアプリケーションでも使えるようにグローバルにインストールすることもできる。

Grunt(そのうち紹介する)のようにコマンドとして

使いたいようなパッケージはグローバルインストールするが、

基本的にパッケージは

アプリケーションごとにインストールするものだと覚えておけば良い。

アプリケーション用にインストールする場合:

npm install <パッケージ名>

グローバルにインストールする場合:

npm install -g <パッケージ名>

アプリケーション用にパッケージをインストールすると、

今いるフォルダに「node_modules」というフォルダができ、

そこにパッケージ内容が保存される。

nodeコマンドでJavascriptを実行する時にnode_modulesの中のパッケージが参照される。

Node.jsアプリケーションのパッケージ構成を管理する

実際にNode.jsでアプリケーションを作って使用する場合、

ローカルで作成したアプリケーションをサーバ上でも動かしたり、

他のメンバーに共有したりする時に

いちいちnpmコマンドで1つ1つのパッケージをインストールするのは面倒だし、

大量のパッケージをそのままコピーして持っていくのも大変なので、

アプリケーションが使うパッケージの情報をまとめておき、

一括インストールできる機能が用意されている。

npmでパッケージをインストールする前に、下記のコマンドを実行する:

npm init

このコマンドは、

アプリケーションに関する情報をまとめた「package.json」というファイルを

生成してくれる。

実行すると色々質問されるが、回答内容はpackage.jsonに

記載されるだけなので分からないところは適当でOK。

次にアプリケーションに必要なパッケージをインストールするのだが、

その時に「--save-dev」というオプションをつけてインストールする。

npm install <パッケージ名> --save-dev

こうすると、パッケージがインストールされると同時に

package.jsonにアプリケーションが使用するパッケージ情報として追記される。

パッケージをインストールする度にpackage.jsonが更新されるので、

アプリケーションを作っている途中でパッケージを追加しても問題ない。

こうして作成したアプリケーションを他の環境に持っていく時は

node_modulesを除いた構成で持って行き、

その環境で下記のコマンドを実行するとpackage.jsonに

記載されたパッケージを一括インストールしてくれる。

npm install

これは他の誰かが作成したNode.jsアプリケーションを自分の環境で動かすときも同じで、

ローカルに保存したアプリケーションのpackage.jsonがあるフォルダで

「npm install」を実行するだけで必要なパッケージが揃い、

実行する準備ができる、というわけだ。

あとはnodeコマンドを実行するだけで良い。

サンプルプログラムを作成して実行してみよう

1つサンプルを作成してみよう。

「request」というパッケージを使って、

この記事のURLにアクセスして内容を取得、表示するNode.jsスクリプトを作る。

スクリプトの作成から実行まで順を追ってやってみる。

まずこれから作成するプログラム用のフォルダを作成して、

コマンドプロンプト/コンソールでそのフォルダの中に移動し、

npm init

を実行して「package.json」を作ろう。

Enter連打で進めば、フォルダ名と同じ名前のアプリケーションとして作成してくれる。

package.jsonを開いてみると、下記のような内容になっているはずだ:

{
  "name": "node_sample",
  "version": "1.0.0",
  "description": "", 
  "main": "sample.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },  
  "author": "", 
  "license": "ISC"
}

次に、下記のnode.jsプログラムを「sample.js」とか好きな名前で作成する:

var request = require('request');

var targetUrl = "http://blog.honjala.net/about";

request(targetUrl, function (err, res, body) {
    if (err) {
        console.log(err);
    }   
    console.log(body);
});

次に、このプログラムは「request」というパッケージを使用するので、

npmコマンドでインストールする:

(インターネットに接続されている環境で実行しよう)

npm install --save-dev request

ドバドバっと画面にメッセージが表示され、

requestパッケージが依存パッケージも含めてインストールされる。

同じフォルダ内にnode_modulesフォルダが作成され、

package.jsonの内容が下記のように変更されているはず:

{
  "name": "node_sample",
  "version": "1.0.0",
  "description": "", 
  "main": "sample.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },  
  "author": "", 
  "license": "ISC",
  "devDependencies": {
    "request": "^2.69.0"
  }
}

下の方の「devDependencies」のところに

「request」パッケージのバージョン2.69.0に対応してますよ、

という旨の記述が追加されている。

これで実行する準備ができたので、

下記のコマンドで先ほど作成したsample.jsを実行する:

node sample.js

実行すると、分かりにくいかもしれないが

このブログの「このブログについて」ページ(http://blog.honjala.net/about)の

HTMLソースが取得され、画面に表示される。

おわり

これがnode.jsプログラムを作成して実行するまでの大まかな手順だ。

この手順を押さえておけば、

例えば下記のページで紹介しているコードもコピペして実行できる。

blog.honjala.net

このブログで紹介しているコードをどんどん試してみていただきたい。

続きでGrunt入門記事を書いた:

blog.honjala.net

現場で通用する力を身につける Node.jsの教科書

現場で通用する力を身につける Node.jsの教科書