Worldアプリケーションを通じてNode.jsのCLIアプリケーションの基本を学びましょう。今回作成するNode.jsのCLIアプリケーションでは、JavaScriptやMarkdownなどのファイルを扱います。そのため、まずそれらのファイルを置くためのディレクトリを作成します。ここではnodecliという名前で新しいディレクトリを作成します。ここからは作成したnodecliディレクトリ以下で作業していきます。このプロジェクトで作成するファイルは、必ず文字コード(エンコーディング)をUTF-8、改行コードをLFにしてファイルを保存します。Worldアプリケーションを作ってみましょう。World!"という文字列を表示するCLIアプリケーションを記述します。はじめに用意するのは、アプリケーションのエントリーポイントとなるJavaScriptファイルです。nodecliディレクトリにmain.jsという名前でファイルを作成し、次のように記述します。World!");ウェブブラウザの実行環境では、console.logメソッドの出力先はブラウザの開発者ツールのコンソールでした。Node.js環境では、console.logメソッドの出力先は標準出力になります。World!"という文字列を出力するものです。JavaScriptのコードをNode.jsで実行するには、nodeコマンドを使用します。次のコマンドを実行して、Node.jsでmain.jsを実行します。World!Node.jsでは、エントリーポイントとなるJavaScriptファイルを作成し、そのファイルをnodeコマンドの引数に渡して実行するのが基本です。ウェブブラウザのJavaScriptと同じく、コードは1行目から順に実行されます。Node.jsとブラウザのグローバルオブジェクトNode.jsはChromeと同じV8というJavaScriptエンジンを利用しています。そのため、ECMAScriptで定義されている基本構文はブラウザと同じように使えます。ブラウザ環境とNode.js環境では利用できるグローバルオブジェクトが違うため、アプリケーションを開発するときにはその違いを理解しなくてはなりません。ECMAScriptで定義されているグローバルオブジェクトはブラウザとNode.jsどちらの環境にも存在します。BooleanやStringなどのラッパーオブジェクト、MapやPromiseのようなビルトインオブジェクトはどちらの環境にも存在します。実行環境によって異なるオブジェクトもあります。ウェブブラウザ環境のグローバルオブジェクトはwindowオブジェクトですが、Node.jsではglobalと呼ばれるオブジェクトがグローバルオブジェクトになります。ブラウザのwindowオブジェクトには、次のようなプロパティや関数があります。documentXMLHttpRequest一方、Node.jsのglobalオブジェクトには、たとえば次のようなプロパティや関数があります。processBufferそれぞれのグローバルオブジェクトにあるプロパティなどは、同じ名前でグローバル変数や関数としてアクセスできます。window.documentプロパティは、グローバル変数のdocumentとしてもアクセスできます。ECMAScriptで定義されたものではありませんが、ほぼ同等の機能と名前を持つプロパティや関数がブラウザとNode.jsのどちらにもある場合があります。次のようなAPIは同等の機能を提供しますが、メソッドの種類や返り値が異なります。APIsetTimeout関数これらを踏まえた上で、次のセクションからCLIアプリケーションの開発をはじめていきましょう。このセクションのチェックリストmain.jsファイルを作成したnodeコマンドでmain.jsを実行し、標準出力にログが出力されるのを確認したグローバルオブジェクトについて、ウェブブラウザとNode.jsで実行環境による違いがあることを理解した。