0
0

【Node.js】初心者必見!ゼロから学べる実践入門

Posted at

Node.jsとは?

Node.jsは、GoogleのV8 JavaScriptエンジン上に構築された、イベント駆動、非同期I/Oを備えたJavaScriptランタイムです。
これにより、高いパフォーマンスを保ちながら非同期処理を行うことができます。

Node.jsインストール

npm(Node Package Manager)

Node.jsのためのパッケージ管理ツールです。
これにより、JavaScriptのライブラリやツールを簡単にインストール、管理、共有することができます。
npmは、依存関係の管理やバージョン管理を行い、開発プロジェクトを効率的にサポートします。

基本的なnpmコマンド

npm init: 新しいNode.jsプロジェクトのためのpackage.jsonファイルを作成します。
npm install <package-name>: 指定したパッケージをインストールします。
npm uninstall <package-name>: 指定したパッケージをアンインストールします。
npm update: インストールされたパッケージを最新のバージョンに更新します。
npm list: インストールされているパッケージとそのバージョンを表示します。

package.jsonの活用

プロジェクトの設定や依存関係を管理する重要なファイルです。
npm initコマンドで生成され、以下のような情報が含まれます。
name: プロジェクト名
version: プロジェクトのバージョン
scripts: 実行可能なスクリプト
dependencies: プロジェクトが依存しているパッケージ
devDependencies: 開発時にのみ必要なパッケージ

package.json
{
  "name": "my-project",
  "version": "1.0.0",
  "scripts": {
    "start": "node index.js",
    "test": "jest"
  },
  "dependencies": {
    "express": "^4.17.1"
  },
  "devDependencies": {
    "jest": "^26.6.3"
  }
}

スクリプトの設定

package.jsonのscriptsセクションでは、プロジェクトのビルドやテスト、その他のタスクを実行するためのコマンドを定義できます。
例えば、startというスクリプトを定義して、node index.jsを実行することができます。

npm run start

モジュールとパッケージ管理

readFile.js
const fs = require('fs');

fs.readFile('hello.js', 'utf8', (err, data) => {
  if (err) {
    console.error(err);
    return;
  }
  console.log(data);
});

このコードを実行すると、hello.jsの内容が表示されます。

次に、npmを使って外部パッケージをインストールし、利用してみましょう。
ここでは、HTTPリクエストを簡単に行えるaxiosパッケージを使ってみます。

まず、プロジェクトのルートディレクトリで以下のコマンドを実行してpackage.jsonを作成します。

npm init -y

次に、axiosパッケージをインストールします。

npm install axios

axiosExample.jsというファイルを作成し、以下のコードを記述します。

axiosExample.js
const axios = require('axios');

axios.get('https://jsonplaceholder.typicode.com/todos/1')
  .then(response => {
    console.log(response.data);
  })
  .catch(error => {
    console.error(error);
  });

このコードを実行すると、外部APIからデータを取得し、表示します。

簡単なウェブサーバーの作成

Node.jsの強力な機能の一つに、簡単にウェブサーバーを作成できる点があります。
httpモジュールを使って、簡単なウェブサーバーを作成してみましょう。

server.js
const http = require('http');

const server = http.createServer((req, res) => {
  res.statusCode = 200;
  res.setHeader('Content-Type', 'text/plain');
  res.end('Hello, World!\n');
});

const PORT = 3000;
server.listen(PORT, () => {
  console.log(`Server running at http://localhost:${PORT}/`);
});

このコードを実行すると、ローカルホストの3000番ポートでウェブサーバーが立ち上がります。
ブラウザでhttp://localhost:3000にアクセスすると、Hello, World!が表示されます。

非同期処理とコールバック

コールバック
非同期処理の基本的な方法の一つがコールバック関数です。

const fs = require('fs');

function readFileCallback(filePath, callback) {
  fs.readFile(filePath, 'utf8', (err, data) => {
    if (err) {
      callback(err, null);
    } else {
      callback(null, data);
    }
  });
}

readFileCallback('hello.js', (err, data) => {
  if (err) {
    console.error('Error reading file:', err);
  } else {
    console.log('File content:', data);
  }
});

コールバック関数は、非同期処理が終了した際に実行される関数です。
この例では、fs.readFileの完了後にコールバックが呼ばれます。

プロミス

非同期処理の結果を扱うためのもう一つの方法です。
プロミスを使うことで、非同期処理の結果をより直感的に扱うことができます。

const fs = require('fs').promises;

async function readFilePromise(filePath) {
  try {
    const data = await fs.readFile(filePath, 'utf8');
    console.log('File content:', data);
  } catch (err) {
    console.error('Error reading file:', err);
  }
}

readFilePromise('hello.js');

async/awaitを使うことで、非同期コードが同期的に見えるように書くことができ、エラーハンドリングも簡単になります。

まとめ

Node.jsは、GoogleのV8エンジン上で動作する非同期I/O対応のJavaScriptランタイムです。
サーバーサイドアプリケーションの開発に使われ、イベント駆動型の高性能な処理が可能です。
npmを使って豊富なパッケージを利用し、迅速な開発が行えます。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0