登場人物紹介
- 熊木(くまき):フロントエンドのJavaScript(ReactやVueなど)を中心に担当している若手エンジニア。3ヶ月後の契約終了に伴い、次の現場(Node.js環境)へ移ることが決まっているが、バックエンド未経験のため不安を感じている。

熊木です。よろしくお願いします。
- 酒本(さかもと)先輩:フロントからバックエンド、インフラまで一通り何でもこなす中堅エンジニア。Node.jsの専門家というわけではないが、実務でマルチにシステムを構築してきた経験から、熊木の手助けを買って出る。

酒本です。熊木さんのメンターをさせてもらってます。
熊木、次の現場に悩む

酒本先輩、ちょっと今お時間いいですか?

ん、どうした? 3ヶ月後の次の現場の件?

はい。次のチームの主要技術がNode.jsらしいんです。
僕はこれまでブラウザ上のJavaScriptしか触ったことがなくて……。
DOM操作やAPIの叩き方は分かりますが、サーバーサイドとなると完全に未経験なので、正直今のままで通用するのか不安なんです。

なるほどね。
でも、JavaScriptの読み書きができるならそこまで構える必要はないよ。
Node.jsは新しく覚える言語じゃなくて、『実行場所が変わっただけのJavaScript』だからね。
私も以前の案件で急に触ることになったけど、言語仕様自体は同じだから意外となんとかなったよ。

実行場所が変わっただけ、ですか?

そう。それじゃ業務に必要なNode.jsの基礎を一緒に整理していこうか。
まずは『Node.jsとは何か』という基本から整理してみよう。
そもそもNode.jsとは何なのか

まず前提として、普段熊木が書いているJavaScript(JS)はどこで動いている?

Google ChromeやSafariといったブラウザの中ですよね。
HTMLを書き換えたり、イベントを検知したりしています。

そうだね。
ブラウザの中には、JSを解析して実行するための『JavaScriptエンジン』が入っている。Chromeでいうと『V8』というエンジンだ。Node.jsというのは、そのブラウザ用のエンジンを単体で取り出して、パソコンやサーバー上で直接JSが動くようにした実行環境のことなんだよ。

プログラミング言語の名前ではなく、JSをサーバー側で動かすための『仕組み』なんですね。

その通り。
だから、変数宣言の const や let、if 文や for ループ、非同期処理の async/await といった構文は全てそのまま使える。
ゼロから新しい言語を勉強し直す必要がないのが、最大のメリットだね。
ブラウザのJSとNode.jsの違い

文法が同じなら、何が具体的に変わるんでしょうか?

『できること』、つまり標準で用意されている機能(API)が違う。
ちょっと表にまとめてみよう。
💡 ブラウザのJS vs Node.js 比較
| 項目 | ブラウザのJavaScript | Node.js |
|---|---|---|
| 主な用途 | Webページの見た目や動きの制御 | APIサーバーの構築、バッチ処理など |
| 実行場所 | ユーザーのブラウザ | サーバー、またはローカルPCのOS上 |
| 画面操作 | window や document(DOM)が使える | 使えない(画面の概念がない) |
| ファイル操作 | セキュリティ上、PC内のファイルは読めない | 自由に読み書きできる(fsモジュール) |
| ネットワーク | サーバーにデータをリクエストする | リクエストを待ち受けるサーバーになる |

なるほど。
画面を操作する document などは使えない代わりに、ファイルシステムにアクセスしたり、ネットワークサーバーを立ち上げたりできるんですね。

そう。
だから、これまでPHPやRuby、Javaなどが担っていた『バックエンドの領域』を、JavaScriptの知識のまま実装できるようになるんだ。
現代のNode.js開発には「TypeScript」が必須

それなら、僕の知っている知識がそのまま活かせそうで少し安心しました。

ただ、ここで一つ重要なポイントがある。
次の現場ではTypeScript(TS)を使うかどうか聞いてる?

あ、はい。
確か『Node.js + TypeScript』の構成だと聞いています。

やっぱりそうか。
今の時代のNode.js開発、特に実務の現場では、純粋なJavaScriptのまま書くことは少なくなっていて、TypeScriptを導入するのがほぼ標準になっているんだ。

TypeScriptって、あの型を定義するやつですよね?
フロントエンドでも少し見かけますが、バックエンドでも重要なんですか?

バックエンドこそ重要だね。
Node.jsは自由度が高い反面、大規模なシステムになると『この変数に何が入っているか分からない』といったバグが起きやすくなる。
データベースのデータ構造や、APIのやり取りに『型』をカチッと定義しておくことで、開発効率が劇的に上がるし、凡ミスをコンパイル時点で防げる。

なるほど。
Node.jsの仕組みを理解しつつ、型安全に書くためにTypeScriptも合わせて学んでいく必要があるんですね。

ではさっそく実際に熊木のPCにNode.jsの環境を構築して、簡単なスクリプトを動かすところから始めてみよう。
本日のまとめ
- Node.jsは言語ではなく「実行環境」。ブラウザ外でJavaScriptを動かすための仕組みである。
- 基本文法は同じ。ただし
windowやdocumentは使えず、代わりにファイル操作やサーバー構築の機能が使える。 - 実務ではTypeScriptがほぼ必須。堅牢なバックエンドを作るために、型定義の理解も並行して進めていく。
次回:第2回「WSL2(Ubuntu)への環境構築と最初のスクリプト実行」に続く

