カテゴリ: JavaScript 更新日: 2026/03/31

JavaScriptのCommonJSとES Modulesの違いを理解しよう!モジュール管理の基本を初心者向けに徹底解説

JavaScriptのCommonJSとES Modulesの違いを理解しよう
JavaScriptのCommonJSとES Modulesの違いを理解しよう

先生と生徒の会話形式で理解しよう

生徒

「JavaScriptのCommonJSとES Modulesの違いって何ですか?モジュールって言われてもよくわかりません。」

先生

「モジュールとは、プログラムを部品のように分ける仕組みのことです。JavaScriptではCommonJSとES Modulesという二つのモジュール方式があります。」

生徒

「どうして二つもあるんですか?」

先生

「歴史的な理由があります。Node.jsで使われてきたのがCommonJSで、後から標準仕様として登場したのがES Modulesです。順番に違いを見ていきましょう。」

1. JavaScriptのモジュールとは何か

1. JavaScriptのモジュールとは何か
1. JavaScriptのモジュールとは何か

JavaScriptのモジュールとは、プログラムを小さな部品に分けて管理する仕組みのことです。大きなプログラムを一つのファイルに全部書くと、読みにくくなり、修正も難しくなります。そこで、機能ごとにファイルを分けて、それぞれを読み込んで使う方法がモジュールです。

例えば、計算をするファイル、文字を表示するファイル、データを扱うファイルなどに分けることで、整理されたプログラムになります。これがJavaScriptのモジュール管理の基本です。

CommonJSとES Modulesは、そのモジュールを読み込む方法や書き方が違うだけで、目的は同じです。どちらもJavaScriptのコードを整理するための大切な仕組みです。

2. CommonJSとは何か

2. CommonJSとは何か
2. CommonJSとは何か

CommonJSは、主にNode.jsで使われてきたモジュール方式です。サーバー側のJavaScriptで広く使われています。特徴はrequireとmodule.exportsという書き方を使うことです。

まずは簡単な例を見てみましょう。

math.jsというファイルを作ります。


function add(a, b) {
  return a + b;
}

module.exports = add;

次に、別のファイルで読み込みます。


const add = require("./math");

const result = add(3, 5);
console.log(result);

実行結果は次のようになります。


8

requireは他のファイルを読み込む命令です。module.exportsは外部に公開する部品を指定するための書き方です。CommonJSはシンプルでわかりやすいのが特徴です。

3. ES Modulesとは何か

3. ES Modulesとは何か
3. ES Modulesとは何か

ES Modulesは、JavaScriptの標準仕様として追加されたモジュール方式です。ブラウザでもNode.jsでも使うことができます。importとexportという書き方を使います。

先ほどと同じ内容をES Modulesで書いてみましょう。

math.js


export function add(a, b) {
  return a + b;
}

読み込む側


import { add } from "./math.js";

const result = add(10, 2);
console.log(result);

実行結果


12

exportは外に公開するという意味です。importは取り込むという意味です。英語の意味そのままなので覚えやすいです。これがES Modulesの基本的な使い方です。

4. 書き方の大きな違い

4. 書き方の大きな違い
4. 書き方の大きな違い

CommonJSとES Modulesの大きな違いは、書き方と読み込みのタイミングです。CommonJSは実行時に読み込みます。一方でES Modulesは事前に読み込みます。これを静的読み込みと呼びます。

また、CommonJSは基本的に一つの値をmodule.exportsでまとめて出しますが、ES Modulesは複数の値をexportで個別に出すことができます。


// ES Modulesで複数を公開
export const name = "太郎";
export const age = 20;

import { name, age } from "./user.js";
console.log(name, age);

太郎 20

このように、ES Modulesは部品を細かく管理できるという特徴があります。大規模な開発ではとても便利です。

5. Node.jsでの使い分け

5. Node.jsでの使い分け
5. Node.jsでの使い分け

Node.jsでは長い間CommonJSが使われてきました。しかし現在ではES Modulesも使えるようになっています。package.jsonでtypeをmoduleに設定することで、ES Modulesが利用できます。

新しいプロジェクトではES Modulesが推奨されることが増えています。ただし、古いライブラリや既存のコードではCommonJSが使われている場合もあります。

そのため、JavaScript初心者でもCommonJSとES Modulesの両方を理解しておくことが大切です。特にNode.js開発ではrequireとimportの違いを知っていると、エラーの原因がわかりやすくなります。

6. どちらを使えばよいのか

6. どちらを使えばよいのか
6. どちらを使えばよいのか

これからJavaScriptを学ぶ初心者の方には、まずES Modulesを覚えることをおすすめします。理由は、JavaScriptの公式な標準仕様だからです。ブラウザでも使えるため、将来的にも安心です。

しかし、CommonJSも今なお多くの現場で使われています。特にNode.jsの古いプロジェクトでは必須の知識です。

JavaScriptのCommonJSとES Modulesの違いを理解することで、モジュールエラーの原因を見つけやすくなり、コードの整理方法も身につきます。モジュール管理はJavaScript開発の基礎であり、初心者から上級者まで必須の知識です。

プログラムを部品に分けて整理するという考え方を理解すれば、JavaScriptだけでなく他のプログラミング言語にも応用できます。これがモジュールの本当の価値です。

まとめ

まとめ
まとめ

今回はJavaScriptのCommonJSとES Modulesの違いについて、モジュールとは何かという基本から丁寧に確認してきました。JavaScriptにおけるモジュール管理は、大きなプログラムを整理し、再利用しやすくし、保守性を高めるための重要な仕組みです。CommonJSは主にNode.js環境で長く使われてきたモジュール方式であり、requireとmodule.exportsを使って部品を読み込みます。一方で、ES ModulesはJavaScriptの標準仕様として定められたモジュール方式で、importとexportを使ってファイル間で機能を共有します。

JavaScript初心者にとって大切なのは、CommonJSとES Modulesの書き方の違いだけでなく、モジュール管理の考え方そのものを理解することです。なぜファイルを分けるのか、なぜexportやmodule.exportsで公開するのか、なぜimportやrequireで読み込むのかを理解することで、JavaScriptの設計力が身につきます。特にNode.js開発ではCommonJSとES Modulesが混在するケースもあり、エラーの原因がモジュール方式の違いにあることも少なくありません。

ここで、CommonJSとES Modulesの違いを整理するために、簡単なサンプルプログラムをもう一度確認しましょう。まずはCommonJS形式です。


function greet(name) {
  return "こんにちは、" + name + "さん";
}

module.exports = greet;

const greet = require("./greet");

console.log(greet("花子"));

こんにちは、花子さん

次に、ES Modules形式で書き直してみます。JavaScriptの標準仕様であるES Modulesでは、exportとimportを使います。


export function greet(name) {
  return "こんにちは、" + name + "さん";
}

import { greet } from "./greet.js";

console.log(greet("太郎"));

こんにちは、太郎さん

このように、JavaScriptのCommonJSとES Modulesの違いは、主に書き方と読み込みの仕組みにあります。CommonJSは実行時に読み込む仕組みで、Node.jsで広く利用されてきました。ES Modulesは静的に解析される仕組みで、ブラウザとNode.jsの両方で利用できる標準的なモジュール方式です。現在のJavaScript開発ではES Modulesが推奨される場面が増えていますが、CommonJSの知識も依然として重要です。

JavaScript初心者の方は、まずES Modulesのimportとexportの基本をしっかり理解し、その上でCommonJSのrequireとmodule.exportsの書き方を学ぶとスムーズです。モジュールを理解することは、コードの再利用性を高め、保守しやすい設計を実現する第一歩です。Node.jsやフロントエンド開発においても、モジュール管理の理解は必須です。

JavaScriptのCommonJSとES Modulesの違いを正しく理解しておけば、モジュールエラーや読み込みエラーが発生したときにも落ち着いて原因を分析できます。モジュールとは単なる書き方の違いではなく、プログラムを部品として設計するための考え方そのものです。これからJavaScriptを学習する方も、すでにNode.jsで開発している方も、モジュール管理の基本をしっかり身につけていきましょう。

先生と生徒の振り返り会話

生徒

JavaScriptのCommonJSとES Modulesの違いがやっと整理できました。requireとimportは似ているけれど、仕組みが違うのですね。

先生

そうですね。CommonJSはNode.jsで使われてきたモジュール方式で、module.exportsとrequireを使います。ES ModulesはJavaScriptの標準仕様で、exportとimportを使います。

生徒

モジュールはコードを部品に分ける考え方だと理解できました。大きなプログラムでも整理しやすくなりますね。

先生

その通りです。JavaScriptのモジュール管理を理解することで、再利用性や保守性が高まります。Node.js開発でもフロントエンド開発でも重要な基礎知識です。

生徒

これからはES Modulesを中心に学びつつ、CommonJSも読めるようにしていきます。JavaScriptの理解が一段と深まりました。

先生

とても良い姿勢です。JavaScriptのCommonJSとES Modulesの違いを理解できたことは、モジュール管理の第一歩です。これからも基礎を大切に学習を続けていきましょう。

関連記事:
カテゴリの一覧へ
新着記事
New1
JavaScript
JavaScriptのCommonJSとES Modulesの違いを理解しよう!モジュール管理の基本を初心者向けに徹底解説
New2
JavaScript
JavaScriptの条件式におけるnull・undefined判定のコツ!初心者でもわかる判定方法ガイド
New3
JavaScript
JavaScriptの条件式で論理演算子(&&, ||, !)を活用する方法!初心者でもわかる使い方ガイド
New4
TypeScript
TypeScriptでエラー処理を共通関数化して効率的に開発しよう!初心者向け例外処理ガイド
人気記事
No.1
Java&Spring記事人気No1
JavaScript
JavaScriptのインストール方法まとめ!Windows・Mac・Linux別にステップ解説
No.2
Java&Spring記事人気No2
JavaScript
JavaScriptプログラムの実行方法まとめ!ブラウザ・Node.js・コンソールの使い方
No.3
Java&Spring記事人気No3
JavaScript
JavaScriptのtoStringとString関数の違いを初心者向けに解説
No.4
Java&Spring記事人気No4
TypeScript
TypeScriptでコメントを書く正しい書き方と使い分け【初心者向けにやさしく解説】
No.5
Java&Spring記事人気No5
JavaScript
JavaScriptで統一感のあるコードを書くための基本ルール完全ガイド初心者向けコーディング規約入門
No.6
Java&Spring記事人気No6
TypeScript
TypeScriptのnever型を使ったエラーハンドリング!例外処理を極める安全なコードの書き方
No.7
Java&Spring記事人気No7
JavaScript
JavaScriptでプロジェクトを管理する方法!ディレクトリ構造とファイル管理の基本
No.8
Java&Spring記事人気No8
JavaScript
JavaScriptのonclick・onchangeなどの基本イベントを理解しよう