libro
www.tuyano.com
初心者のための Node.jsプログラミング入門

Node.jsのスクリプトの基本を覚えよう (1/5)

作成:2013-04-13 10:32
更新:2013-10-25 21:41

■基本のスクリプトとhttpオブジェクト

では、前回作成したスクリプトを見ながら、Node.jsのスクリプトの基本について理解していきましょう。(下のリスト欄を参照)


1. httpオブジェクトのロード
var http = require('http');
まず最初に行うのは、必要なライブラリ類のロードです。これは「require」という関数を使って行います。引数に、読み込むオブジェクト名を指定することで、そのオブジェクトが読み込まれて返されます。これを変数に代入して利用することになります。

ここでは「http」というオブジェクトを用意していますね。これは文字通りHTTPの各種機能をまとめたものです。ここからサーバーのオブジェクトを作成します。


2. Serverオブジェクトの作成
var server = http.createServer();
httpオブジェクトの「createServer」メソッドを呼び出してhttp.Serverオブジェクトを作成します。これが、いわばNode.jsの「サーバー」となる部分です。このオブジェクトを用意し、必要な設定をしてからサーバーとして実行します。ここでは引数なしで呼び出していますが、以下のように書くこともできます。
http.createServer(function(○○){
    ……処理が書いてある……
}).listen(○○);
おそらく、Node.jsのサイトやその他の解説サイトを見ると、たいていはこの書き方をしているはずです。createServerの引数に、サーバーでリクエストを受け取った時の処理を関数として用意しておく書き方です。また、その後にlistenという待受のためのメソッド(後述)も続けて書いてあります。

この書き方でも全く問題ないのですが、全部ひとまとめに書いてあるため、慣れないとちょっとわかりにくい気がするので、ここではあえて「createServer時には引数はなし。後で必要な処理を用意する」という書き方をしてあります。


3.リクエストの処理を設定
server.on('request', doRequest);
http.Serverオブジェクトには、さまざまなイベントが用意されており、その処理を組み込むためのメソッドも用意されています。「on」というメソッドは、指定のイベント処理を組み込むためのもので、第一引数にイベント名を、第2引数に組み込む処理(関数)をそれぞれ指定します。

ここでは、「request」というイベントに、「doRequest」という関数を割り当てています。requestというのは、http.Serverオブジェクトがクライアントからのリクエストを受け取ったときに発生するイベントで、要するにこれで「ブラウザからサーバーにアクセスした時のサーバー皮の処理」を組み込むわけです。


4. 待ち受けスタート
server.listen(1234);
http.Serverオブジェクトの準備が整ったら、「listen」メソッドを実行します。これにより、サーバーは待ち受け状態となり、クライアントからリクエストがあればそれを受け取り処理するようになります。引数にはポート番号を指定してあります。第2引数としてホスト名を指定したり、第3引数にバックログを指定したり、第4引数にコールバック関数を用意したりすることもできるんですが、とりあえず「第1引数にポート番号」だけ覚えておけば十分です。


5. コンソールに出力
console.log('Server running!');
listenで待ち受けスタートした所で、メッセージをコンソールに出力しています。consoleはコンソールを扱うためのオブジェクトで、「log」でログ出力を行うことができます。ちょっとしたデバッグ用にログの出力は覚えておくと重宝するでしょう。

※プログラムリストが表示されない場合

AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。

●プログラム・リスト●

※前回作成のスクリプト
var http = require('http');

var server = http.createServer();
server.on('request', doRequest);
server.listen(process.env.PORT, process.env.IP);
console.log('Server running!');

// リクエストの処理
function doRequest(req, res) {
    res.writeHead(200, {'Content-Type': 'text/plain'});
    res.write('Hello World\n');
    res.end();
}
※関連コンテンツ

「初心者のための Node.jsプログラミング入門」に戻る