初心者(自分のこと)がNode.jsの学習をしていて、まずよく分からなかったのが、モジュールとオブジェクトの関係です。
[php]var http = require(‘http’);[/php]
これは、Node.js内で使われているJavaScriptファイルの第1行目に頻出するコードです。「プログラミングにありがちなおまじないの呪文みたいなもんですから」と言ってしまえばそれまでですが、ちゃんと意味があります。
以降はJavaScriptの文法について一定の知識があるという前提でお話を進めます。
用語の解説
モジュールとオブジェクトの関係を知るために、それぞれの用語を一つずつ解説していきましょう。
モジュールとは?
Wikipediaの「モジュール」を引用すると概要部分でこのように説明されています。
モジュール(Module)とは、工学などにおける設計上の概念で、システムを構成する要素となるもの。いくつかの部品的機能を集め、まとまりのある機能を持った部品のこと。モジュールに従っているものをモジュラー (modular)という。
具体的には自動車のエンジンとか水道のポンプのようにある程度の機能を持ったカタマリみたいなものを指します。
オブジェクトとは?
徹底マスター JavaScriptの教科書のP.44から引用します。
オブジェクトはいくつかの変数の集まりで、いわゆる複合型データです
requireとは?
Node.js超入門のP.65から引用します。
(require)メソッドは、Node.js独特のモジュールローディングシステムを利用するものです。
‘http’とは?
httpとはネットワークの基本モジュールであり、HTTPアクセスの機能がまとめられています。その機能を使って何ができるかは公式ドキュメントにまとめられています。
モジュールはオブジェクトの上位概念
用語を一つずつ丁寧に調べて行くと、なんとなく両者の関係性が分かってきました。変数のhttpをデバッグしてみましょう。すると両者の関係性がより分かりやすくなります。
[php]
var http = require(‘require’);
console.log(http);
[/php]
この2行のコーディングをあえて日本語に訳すと、こんな感じでしょうか
[php]
httpモジュールをローディングシステムで呼び出しオブジェクトとして、変数httpに代入する
変数httpの内容を出力する
[/php]
この2行のコードを実行してターミナルの画面で確認すると、キーとプロパティが一対になったオブジェクトデータが出力されています。ちなみにこの内容は、公式ドキュメントと合致します。
ざっくり言ってしまえば、モジュールはオブジェクトの上位概念であり、オブジェクトはモジュールの下位概念であると言えます。