0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Node.js】~インストールからモジュールシステムとnpmを使いこなす~

Posted at

はじめに

この記事では、Node.jsの基本的な概念と使い方を学んでいきます。JavaScriptをブラウザの外で動かせるNode.jsの世界に触れてみましょう。

Node.jsとは

Node.jsは、ブラウザの外でJavaScriptを実行できる環境です。

従来のJavaScriptはWebブラウザ上でしか動作しませんでしたが、Node.jsを使うことで以下のようなことが可能になります。

  • Webサーバーの構築
  • ネイティブアプリケーションの開発(例: Visual Studio Code)
  • コマンドラインツールの作成
  • ファイル操作やデータベース接続

Node.jsのインストール

インストール方法

推奨バージョン: LTS(Long Term Support)版を選択することをおすすめします。

インストールの確認

ターミナルまたはコマンドプロンプトで以下のコマンドを実行してください。

node --version
npm --version

バージョン番号が表示されれば、インストール成功です。

ブラウザとNode.jsの違い

Node.js環境では、ブラウザ特有のオブジェクトは使用できません。

主な違い

ブラウザ環境:

  • windowオブジェクトがグローバルスコープ
  • DOM操作が可能
  • ファイルシステムへの直接アクセス不可

Node.js環境:

  • windowオブジェクトは存在しない
  • DOM操作は不可
  • ファイルシステムへの直接アクセスが可能

基本的な使い方

Hello World

まずは簡単なプログラムを作成してみましょう。

hello.jsというファイルを作成します。

console.log('Hello, Node.js!');

実行するには、ターミナルで以下のコマンドを入力します。

node hello.js

コマンドライン引数の取得(Process & argv)

Node.jsでは、プログラム実行時に渡された引数をprocess.argvで取得できます。

// args.js
console.log(process.argv);

実行例:

node args.js arg1 arg2

process.argvは配列で、以下のような構造になっています。

[
  '/path/to/node',     // Node.jsの実行パス
  '/path/to/args.js',  // 実行したスクリプトのパス
  'arg1',              // 1つ目の引数
  'arg2'               // 2つ目の引数
]

ファイル操作(fsモジュール)

Node.jsでは、fsモジュール(File Systemの略)を使ってファイル操作を行います。

モジュールの読み込み

const fs = require('fs');

同期版と非同期版

fsモジュールには、同期版と非同期版の2種類のメソッドがあります。

非同期版(推奨):

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

同期版:

const data = fs.readFileSync('sample.txt', 'utf8');
console.log(data);

非同期版を使用すると、ファイル読み込み中も他の処理を並行して実行できるため、パフォーマンスが向上します。

モジュールシステム

Node.jsでは、コードを複数のファイルに分割し、必要な部分だけを読み込むことができます。

モジュールのエクスポート

他のファイルで使いたい関数をmodule.exportsでエクスポートします。

// math.js
function add(a, b) {
  return a + b;
}

function subtract(a, b) {
  return a - b;
}

module.exports = {
  add,
  subtract
};

module.exportsは最初は空のオブジェクトです。ここにプロパティとして関数を追加していくイメージを持つと理解しやすいでしょう。

モジュールのインポート

他のファイルで定義された関数を使用するには、require関数を使います。

// app.js
const math = require('./math');

console.log(math.add(5, 3));      // 8
console.log(math.subtract(10, 4)); // 6

ディレクトリのrequire(index.js)

ディレクトリ自体をrequireすることもできます。その際、Node.jsは自動的にindex.jsファイルを探して読み込みます。

myModule/
  ├── index.js
  ├── add.js
  └── subtract.js
// myModule/index.js
const add = require('./add');
const subtract = require('./subtract');

module.exports = {
  add,
  subtract
};
// app.js
const myModule = require('./myModule'); // index.jsが自動的に読み込まれる

この仕組みは、他の人が作成したモジュールを使うときに便利です。

パッケージ管理

npmとは

npm(Node Package Manager)は、Node.jsのパッケージを管理するツールです。Node.jsをインストールすると、npmも一緒にインストールされます。

パッケージとライブラリの違い

npmでインストールできるものは「パッケージ」と呼ばれます。パッケージは、ライブラリを含むより広い概念です。

ライブラリ: コアとなる機能を提供するコード

パッケージ: ライブラリ + 設定ファイル + ドキュメント + その他のリソース

package.json

package.jsonは、プロジェクトの情報や依存関係を管理するファイルです。

作成方法

npm init

対話形式で質問に答えると、package.jsonが生成されます。

すべてデフォルト値で良い場合は、以下のコマンドが便利です。

npm init -y

package.jsonの役割

  • プロジェクトの基本情報(名前、バージョン、説明など)
  • 依存パッケージの管理
  • スクリプトコマンドの定義
{
  "name": "my-project",
  "version": "1.0.0",
  "description": "My first Node.js project",
  "main": "index.js",
  "scripts": {
    "start": "node index.js"
  },
  "dependencies": {
    "express": "^4.18.0"
  }
}

パッケージのインストール

ローカルインストール

プロジェクトごとにパッケージをインストールします。

npm install パッケージ名

インストールすると、以下のことが自動的に行われます。

  1. node_modulesディレクトリにパッケージがダウンロードされる
  2. package.jsondependenciesに追加される
  3. package-lock.jsonが生成・更新される

依存関係の一括インストール

package.jsonがある状態で以下のコマンドを実行すると、記載されているすべての依存関係が自動的にインストールされます。

npm install

これにより、他の開発者と同じ環境を簡単に再現できます。

グローバルインストール

システム全体で使用するツールは、-gオプションをつけてグローバルにインストールします。

npm install -g パッケージ名

グローバルパッケージは、どのディレクトリからでも実行できるコマンドラインツールとして使用できます。

まとめ

この記事では、Node.jsの基本を学びました。

  • Node.jsはブラウザの外でJavaScriptを実行できる環境
  • fsモジュールでファイル操作が可能
  • module.exportsrequireでコードを分割・再利用できる
  • npmを使ってパッケージを管理できる
  • package.jsonで依存関係を管理できる

次のステップ

Node.jsの基本を理解したら、以下のトピックに挑戦してみましょう。

  • ExpressフレームワークでWebサーバー構築
  • 非同期処理の深掘り(Promise、async/await)
  • データベース連携
  • RESTful APIの作成

Node.jsの世界は広大です。実際に手を動かしながら、少しずつ学んでいきましょう。

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?