Node.jsでHello World

実際にアプリケーションを作成するまえに、まずはHello Worldアプリケーションを通じてNode.jsのCLIアプリケーションの基本を学びましょう。

Hello World

まずはNode.jsでHello Worldアプリケーションを作ってみましょう。 具体的には、実行すると標準出力に"Hello World!"という文字列を表示するCLIアプリケーションを記述します。 はじめに用意するのは、アプリケーションのエントリポイントとなるJavaScriptファイルです。 適当なディレクトリにmain.jsという名前でファイルを作成し、次のように記述します。

console.log("Hello World!");

Webブラウザの実行環境では、console.log関数の出力先はブラウザのコンソールでしたが、 Node.js環境では標準出力になります。 このコードは、標準出力にHello World!という文字列を出力するものです。

JavaScriptのコードをNode.jsで実行するには、nodeコマンドを使用します。 次のコマンドを実行して、Node.jsでmain.jsを実行します。

$ node main.js
Hello World!

Node.jsの基本は、エントリポイントとなるJavaScriptファイルを作成し、そのファイルをnodeコマンドの引数に渡して実行するという流れです。 また、WebブラウザのJavaScriptと同じく、コードは1行目から順に実行されます。

Node.jsとブラウザのグローバルオブジェクト

Node.jsはChromeと同じV8エンジンを利用しているため、ECMAScriptで定義されている基本構文はほとんどブラウザと同じように使えます。 ただし、ブラウザ環境とNode.js環境では利用できるグローバルオブジェクトが違うため、アプリケーションを開発するときにはその違いを理解しなくてはなりません。

ECMAScriptで定義されているグローバルオブジェクトはブラウザとNode.jsどちらの環境にも存在します。 たとえばBooleanStringなどのラッパーオブジェクトや、MapArrayPromiseのようなビルトインオブジェクトがそれにあたります。

Webブラウザ環境のグローバルオブジェクトはwindowオブジェクトですが、Node.jsではglobalと呼ばれるオブジェクトがグローバルオブジェクトになります。 ブラウザのwindowオブジェクトにはたとえば次のようなプロパティや関数があります。

一方、Node.jsのglobalオブジェクトにはたとえば次のようなプロパティや関数があります。

それぞれのグローバルオブジェクトにあるプロパティなどは、同じ名前でグローバル変数や関数としてアクセスできます。 たとえばwindow.documentプロパティは、グローバル変数のdocumentとしてアクセスすることもできます。

また、ECMAScriptで定義されたものではありませんが、ほぼ同等の機能と名前をもつプロパティや関数がブラウザとNode.jsどちらにもある場合もあります。 たとえば次のようなものです。

  • Console API
  • setTimeout関数

これらを踏まえた上で、次のセクションからCLIアプリケーションの開発をはじめていきましょう。