Node.jsのREPL(Read-Eval-Print Loop)は、開発者がコードをインタラクティブに実行できる環境を提供するツールです。このツールを使用すると、Node.jsのコマンドラインインターフェース上でリアルタイムにJavaScriptコードを実行でき、開発者が即座に結果を確認し、コードを試すことができます。REPLは、特にデバッグ、テスト、実験などの場面で非常に便利です。
1. REPLとは何か?
REPLは、次の4つのステップを繰り返します:

- Read(読み取る): ユーザーが入力したコードを読み取る。
- Eval(評価する): 入力されたコードを実行して評価する。
- Print(出力する): 実行結果をコンソールに表示する。
- Loop(繰り返す): ユーザーに次の入力を求め、上記のステップを繰り返す。
この循環的なプロセスにより、開発者はコードをすばやく試し、即座に結果を得ることができます。
2. REPLの起動方法
Node.jsのREPLを使用するには、まずNode.jsがインストールされている必要があります。インストールが完了したら、ターミナル(またはコマンドプロンプト)を開き、次のコマンドを実行してREPLを起動します。
bashnode
これで、次のようなプロンプトが表示され、REPLが起動します。
markdown>
このプロンプトに続けてJavaScriptコードを入力することができます。
3. 基本的な使い方
REPLでは、通常のJavaScriptのコードを入力して、その場で結果を確認できます。例えば、数値の計算を行う場合、次のように入力します。
javascript> 2 + 3
5
REPLは即座に結果を表示します。文字列や変数、関数など、通常のJavaScriptコードも実行できます。
javascript> let name = "Node.js"
undefined
> console.log(name)
Node.js
ここで、「undefined」が表示されるのは、変数の代入自体が値を返さないからです。しかし、console.log(name)
を実行すると、期待通り「Node.js」が出力されます。
4. 関数の定義と実行
REPL内で関数を定義し、実行することもできます。例えば、簡単な関数を定義してみましょう。
javascript> function greet(name) {
... return `Hello, ${name}!`;
... }
undefined
> greet("World")
'Hello, World!'
関数定義の後、そのまま関数を呼び出すことができ、結果を得ることができます。このように、REPLを使ってコードをインタラクティブに試すことが可能です。
5. 非同期処理とREPL
Node.jsは非同期処理を多く使用するため、REPL内でも非同期コードを実行できます。例えば、setTimeout
関数を使用した非同期処理を試してみます。
javascript> setTimeout(() => {
... console.log("Hello after 1 second!");
... }, 1000);
undefined
このコードを実行後、1秒後に「Hello after 1 second!」というメッセージが表示されます。REPLでは非同期処理の結果を後から確認できるため、リアルタイムで非同期処理の動作を試すこともできます。
6. REPLのコマンド
REPLにはいくつかの便利なコマンドがあります。これらを使うことで、REPLの操作を効率的に行うことができます。
.exit
REPLを終了するには、Ctrl + C
を2回押すか、次のコマンドを入力します。
javascript> .exit
.help
REPL内でヘルプを表示するには、次のコマンドを入力します。
javascript> .help
これにより、REPLで使用できるコマンドが一覧で表示されます。
.save
REPLのセッションで入力したコードをファイルに保存することもできます。例えば、現在のセッションを「script.js」ファイルに保存するには、次のコマンドを使います。
javascript> .save script.js
これにより、REPLで入力したすべてのコードが「script.js」というファイルに保存されます。
.load
保存したコードをREPLに読み込むこともできます。例えば、前述の「script.js」ファイルを読み込むには、次のコマンドを使います。
javascript> .load script.js
7. モジュールのインポートと利用
Node.jsのREPLでは、外部モジュールをインポートして使用することもできます。例えば、fs
モジュールを使用してファイル操作を試してみます。
javascript> const fs = require('fs');
undefined
> fs.readFileSync('example.txt', 'utf8')
'This is a test file.'
このように、REPL内で簡単にNode.jsの標準モジュールやカスタムモジュールを利用することができます。
8. REPLのカスタマイズ
Node.jsのREPLは、$NODE_REPL_HISTORY
という環境変数を使って履歴を管理することができます。これにより、過去に入力したコマンドを再実行することが可能です。例えば、コマンド履歴を保存しておくことで、次回REPLを開いたときに前回のセッションを簡単に再開できます。
また、repl
モジュールを使用して、独自のREPL環境をプログラムmaticallyにカスタマイズすることもできます。これにより、特定の機能を追加したり、特定の設定を適用したりすることができます。
9. 結論
Node.jsのREPLは、開発者にとって非常に強力なツールです。インタラクティブな環境でコードを即座に実行できるため、コードのテストやデバッグを迅速に行えます。REPLは、Node.jsの学習を加速し、開発中に直面する問題の解決にも役立つ便利なツールです。ぜひ、日々の開発の中で積極的に活用してみてください。