【Node.js実戦習得】第1回:JS経験を活かしてサーバーサイドの世界へ

社員ブログ

登場人物紹介

  • 熊木(くまき):フロントエンドの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をサーバー側で動かすための『仕組み』なんですね。

その通り。

だから、変数宣言の constletif 文や for ループ、非同期処理の async/await といった構文は全てそのまま使える

ゼロから新しい言語を勉強し直す必要がないのが、最大のメリットだね。

 

 

ブラウザのJSとNode.jsの違い

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

『できること』、つまり標準で用意されている機能(API)が違う。

ちょっと表にまとめてみよう。

💡 ブラウザのJS vs Node.js 比較

項目ブラウザのJavaScriptNode.js
主な用途Webページの見た目や動きの制御APIサーバーの構築、バッチ処理など
実行場所ユーザーのブラウザサーバー、またはローカルPCのOS上
画面操作windowdocument(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の環境を構築して、簡単なスクリプトを動かすところから始めてみよう。

 

本日のまとめ

  1. Node.jsは言語ではなく「実行環境」。ブラウザ外でJavaScriptを動かすための仕組みである。
  2. 基本文法は同じ。ただし windowdocument は使えず、代わりにファイル操作やサーバー構築の機能が使える。
  3. 実務ではTypeScriptがほぼ必須。堅牢なバックエンドを作るために、型定義の理解も並行して進めていく。

次回:第2回「WSL2(Ubuntu)への環境構築と最初のスクリプト実行」に続く

タイトルとURLをコピーしました