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
: 開発時にのみ必要なパッケージ
{
"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
モジュールとパッケージ管理
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というファイルを作成し、以下のコードを記述します。
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モジュールを使って、簡単なウェブサーバーを作成してみましょう。
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を使って豊富なパッケージを利用し、迅速な開発が行えます。