Welcome to Node.js

npmからモジュールをインストールしサクッと動作させてみよう

npm実践! モジュールをインストールしQRコードを生成しよう〈Node.jsシリーズ vol.2〉

Node.jsの基本を順を追って展開していくこの連載では、前回に続いてNode.jsの代表的パッケージマネージャー・npmの使い方と、そもそもモジュールとはなにかということをお伝えします。
まずは、コードのモジュール化、そしてnpmから実際にモジュールをインストールし使うまでを行ってみましょう。

モジュールを書いてみよう

他の言語と同じく、Node.jsではコードの内容をモジュールとして定義し、外部化することができます。モジュールはファイル単位で定義し、コード中から require(モジュールへのパス)を記述することでオブジェクトとして読み込む事ができます。

モジュールへのパスは、呼び出し元ファイルからの相対パスで記述します。
また、node_modulesというディレクトリ配下におかれたモジュールは、コアモジュールと同じようにパス記号を付けず呼び出すことができます。
いずれの場合も、拡張子は省略することができます。

その1:変数を定義したモジュール(相対パスで読み込み)

簡単な例として、コンソールに出力する文言を定義するモジュールと、それを呼び出すコードを書いてみましょう。
お互いのファイルは同じパス上に存在し、これを相対パスで読み込みます。

module_sample.js

1
2
var message = 'This is message from MODULE';
module.exports = message;

最後の1行に注目して下さい。
module.exportsというプロパティに、文言を定義したmessageを代入していますね。requireは、この内容を返します。

呼び出し元のコードも書いてみましょう。

sample.js

1
2
var message = require( './module_sample' ); // モジュール呼び出し
console.log( message );

$ node sample.jsで実行してみると「This is message from MODULE」という文字が表示されるはずです。

モジュールから読み込んだ内容をコンソールに表示できました!

その2:オブジェクトを定義したモジュール(node_modulesディレクトリから呼び出し)

上記の例ではモジュールにて変数を定義しましたが、もちろんオブジェクトを定義することもできます。
ふたたびモジュールを書いてみましょう。今度はnode_modulesディレクトリ配下に置き、ここから呼び出してみます。

module_object.js

1
2
3
4
5
6
7
8
9
10
11
12
13
var sample = {};

// 代入した数の2乗を返す
sample.square = function ( x ) {
    return Math.pow( x, 2 );
};

// 代入した文言に文字列を整形して返す
sample.formatText = function ( str ) {
    return  "You said, " + str;
};

module.exports = sample;

呼び出すコードは以下のようになります。

sample2.js

1
2
3
4
5
6
7
var moduleObject = require( 'module_object' );

// 代入した数の2乗を表示
console.log( moduleObject.square( 5 ) );

// 代入した文字列が整形された結果を表示する
console.log( moduleObject.formatText( "this is TEST." ) );

そして、$ node sample2.jsで呼び出してみましょう。

「You said, this is TEST.」と表示されれば問題なく動作しています。
きちんと代入した結果をもとに関数が返した値が表示されています。このように簡単にNode.jsのモジュールを作ることができます。

さて、この仕組みを踏まえて、もっと高機能なモジュールを試してみましょう。

npmの公開モジュールを使ってみよう

現在、さまざまな開発者によって開発されたNode.js用のモジュール群が公開されています。
Node.jsと一緒にインストールされているnpmを使って、モジュールをインストールして使ってみましょう。

npmは「Node Package Manager」の略で、Node.js用のパッケージ管理システムです。
コマンドラインベースでさまざまなモジュールをダウンロードしたり、作成して登録することができます。
PerlのCPAN、PHPのPEARのようなものですね。

詳しい使い方についてはまた次回以降で触れるとして、今回は「qrcode-console」という、ちょっとお遊び的なモジュールをダウンロードして、触ってみましょう。

コンソール上でQRコードを生成・表示するモジュールです。

npmコマンドでのモジュールインストール

npm installコマンドでモジュールがインストールできます。
インストールの方法は2通りあります。

ローカルインストール

$ npm install qrcode-consoleとすることで、コマンドを実行するパス直下のnode_modulesディレクトリにインストールします。
特定の範囲のコードにのみモジュールを適用したい場合に用います。

グローバルインストール

$ sudo npm install -g qrcode-consoleとすることで、同一環境内にあるすべてのコードからモジュールを使えるようにインストールします。
この場合はsudoにて実行します。

インストールが終わったところで、さっそくこちらのモジュールを組み込んだサンプルプログラムを作ってみましょう。

qrcode_sample.js

1
2
3
4
5
6
7
var qrcode = require( 'qrcode-console' );

console.log( "\n\n\n\n" ); // 認識しやすいように余白を追加

qrcode.generate( 'Recruit Lifestyle' ); // QRコードを生成

console.log( "\n\n\n\n" ); // 認識しやすいように余白を追加

$ node qrcode_sample.jsで実行してみると……ASCIIテキストでQRコードが表示されました!

【注意】Terminalの背景が黒以外だとQRコードとして認識してくれません。OS X標準のTerminalではプロファイルを「Pro」などにしてコントラストをハッキリさせることで解決できます。

スマホで読み込んでみると、入力した「Recruit Lifestyle」という文字情報が表示されたはずです。

モジュールを組み合わせて機能を拡張していく過程を一通り体験したところで、次回はいよいよ本格的なアプリケーションの実装に取り組んでいきたいと思います。お楽しみに!

Tech Blog

(編集部)

株式会社リクルートライフスタイルのTech Blog編集部です。いま流行りのTechネタやちょっと使えるTipsなどをお届けしていきます。

NEXT