コンテンツにスキップ

第5回 - Node.js

  • Node.jsはJavaScriptには無い機能を拡張したJavaScript実行環境の一つ
  • ブラウザで使用するJavaScriptではセキュリティ上の理由でローカルのファイルシステムへのアクセスやネットワーク操作が厳しく制限されている。
    • 例えば、ファイルの内容を変更したり、データベースへアクセスする操作など。
    • そういったブラウザでは実行できない操作を、実行するための環境として作られたのがNode.js
    • 主にサーバ側で必要な操作をするために使用される。
  • Node.jsでは元々高速なJavaScriptの実行能力を活かしつつ、サーバー側に必要な機能を追加することで、効率的なサーバー側の実行環境を実現した。

Node.jsをインストールすると使用できるようになる3つのコマンド

Section titled “Node.jsをインストールすると使用できるようになる3つのコマンド”

Node.jsでJavaScriptを実行するコマンド

nodeコマンドの使い方
# Node.jsのバージョン確認
node --version
# JavaScriptファイルを実行
node index.js
# 実行中のファイルの変更を監視
node --watch server.js

npmで公開されているプラグインやモジュールをインストールして使用することができるコマンド。

サーバー側で使用されるものだけではなく、ブラウザ側で使用されるプラグインなども多数存在し、バージョン管理やアップデートなども可能。

npmコマンドの使い方
# 一般的なインストール
npm install パッケージ名
# package.jsonの新規作成
npm init
# 開発用パッケージのインストール
npm install --save-dev パッケージ名
# グローバルインストール
npm install -g パッケージ名
# パッケージのアンインストール
npm uninstall パッケージ名
# インストール済みパッケージの一覧表示
npm list
# パッケージの更新
npm update
# スクリプトの実行
npm run スクリプト名
# package.jsonを元にインストール
npm install

npmパッケージを一時的に実行するコマンド

主な用途として、

  • プロジェクトにインストールせずにパッケージを一時実行
  • ローカルにインストールされた公開されていないパッケージの実行
  • 異なるバージョンのパッケージを試す などで使用される。
npxコマンドの使い方
# cowsayコマンドをインストールせずに、試す
npx cowsay "こんにちは!!"

JSONとは何か? | MDN

  • JSONは.jsonというファイル形式の、軽量なテキストファイル
  • JavaScriptのオブジェクトをベースにしているが、JavaScriptに限らず多くのプログラミング言語でサポートされており、データを交換するために使用されることが多い。
user.json
{
"users": [
{
"id": 1,
"name": "田中太郎",
"age": 30
},
{
"id": 2,
"name": "山田花子",
"age": 25
},
{
"id": 3,
"name": "佐藤次郎",
"age": 35
}
]
}
products.json
[
{
productId: "PROD-001",
name: "ノートパソコン",
price: 89000,
inStock: true,
},
{
productId: "PROD-002",
name: "ワイヤレスマウス",
price: 2500,
inStock: true,
},
{
productId: "PROD-003",
name: "キーボード",
price: 8900,
inStock: false,
},
];
  • npm initコマンドを使用すると、package.jsonというJSONファイルが自動生成される。

  • package.jsonファイルには、プロジェクト名、バージョン、説明文、作者情報などのプロジェクトの基本的な情報を記載する。

  • 「scripts」セクションには、プロジェクトで使用する様々なコマンドを定義できる。

    • 例えば、アプリケーションの起動や、ビルド、などの任意のコマンドを設定できる。
package.json
{
"name": "プロジェクト名",
"version": "バージョン番号",
"description": "プロジェクトの説明",
"scripts": {
"dev": "開発環境立ち上げコマンド",
"test": "テストコマンド"
},
"license": "ライセンス情報"
}

try…catchとは、プログラム実行中に予期せぬエラー(ファイルがない、通信が切れた等)が起きたとき、プログラムを強制終了させずに、エラー出力やその後のプログラムの実行などに対処するための構文で、プログラムの安全装置として機能する。

サーバー側の処理を作る際に、1つのエラーでサーバー全体が停止してしまうと困るので、「エラーは必ず起きるもの」という前提で、一つのエラーでサーバーを停止させないためにtry...catchを使用する。

また、プログラミング用語で、こういった処理のことを「例外処理」と呼ぶ。

通常の処理をtryブロックの中に書き、失敗したときの対応catchブロックの中に書く。

try...catchの使い方
try {
// ここに通常の処理を書く
console.log("処理スタート");
doSomethingFunction(); // ← もしこの関数が存在していなくてエラーが起きると...
console.log("成功!"); // ← この行はスキップされる
} catch (error) {
// エラーが起きたら、即座にここにジャンプしてくる
console.log("失敗したけど、大丈夫。処理を続けます。");
console.error("エラー内容:", error.message);
}
// try...catch を抜けた後も、プログラムは動き続ける
console.log("次の処理へ...");

なぜサーバー側では例外処理が重要なのか

Section titled “なぜサーバー側では例外処理が重要なのか”

Webサーバーは、24時間営業のコンビニのようなもので、多くのお客さん(ユーザー)が同時に利用している。

  1. お客さんが、レジで牛乳を床に落としてしまった(エラー発生)。
  2. 店員(プログラム)はパニックになり、お店のシャッターを即座に下ろして閉店してしまう(サーバーダウン)。
  3. 店内にいた他のお客さんも全員強制的に追い出される。
  4. 店長(管理者)が来て再起動するまで、誰もお店を使えない。
  1. お客さんが、レジで牛乳を床に落としてしまった(エラー発生)。
  2. 店員は「あ、こぼれちゃいましたね。拭いておきます」と、catch処理(エラー発生時の処理)を実行。
  3. お店は営業を続けます。
  4. 他のお客さんは何事もなかったかのように買い物を続けられる。