

高岡智則
年齢:33歳 性別:男性 職業:Webディレクター(兼ライティング・SNS運用担当) 居住地:東京都杉並区・永福町の1LDKマンション 出身地:神奈川県川崎市 身長:176cm 体系:細身〜普通(最近ちょっとお腹が気になる) 血液型:A型 誕生日:1992年11月20日 最終学歴:明治大学・情報コミュニケーション学部卒 通勤:京王井の頭線で渋谷まで(通勤20分) 家族構成:一人暮らし、実家には両親と2歳下の妹 恋愛事情:独身。彼女は2年いない(本人は「忙しいだけ」と言い張る)
はじめに
このページでは「cjs」とは何かを、初心者にも分かるように丁寧に解説します。キーワードはCommonJSという古くからあるモジュールの仕組みです。プログラミングの世界では「モジュール」とは、別々のファイル同士で機能を分け、必要な時に呼び出して使う部品のことを指します。ここでは、初心者の観点から
cjs(CommonJS)とは何か
「cjs」は「CommonJS」の略です。Node.jsが中心となって使われてきたモジュール形式で、主にサーバーサイドのJavaScriptで使われてきました。ブラウザのJavaScriptでは直接は使えず、サーバー上のファイルを分割して組み合わせるのに便利です。初心者には「ファイルを分けて組み合わせる」という考え方を覚えるとよいでしょう。
主な特徴
まず覚えておきたいのは、CJSではモジュールを読み込むときに require(...) を使い、モジュールから外部に公開したい機能は module.exports に割り当てる点です。たとえば、ファイルAで関数を定義し、それを別のファイルBで使いたい場合、A に module.exports = { add } のように書き、B では const { add } = require('./A') のように呼び出します。こうした流れがCJSの基本形です。この仕組みは同期的に動くため、ファイルの読み込みは基本的に順番どおりに処理されます。
もう少し具体的な例を見てみましょう。ファイル calculate.js に以下のように書くとします。const add = (x, y) => x + y; module.exports = { add };。別のファイル main.js からは const { add } = require('./calculate') のように使えます。こうした書き方が「CommonJSの基本形」です。
ファイル拡張子と設定の話
CJSを明示したいときは .cjs という拡張子を使うことがあります。最近のNode.jsの仕組みでは、package.json の type フィールドの設定次第で、.js が ESM(ECMAScript Modules)として扱われることがあります。その場合、.cjs を使うことで「このファイルはCommonJSとして扱う」という意図を確実に伝えられます。
ESMとの違いと使い分け
現在のJavaScriptでは、ESM(import/export)という新しい仕組みが標準になりつつあります。ESMはブラウザとサーバー双方で広く使われる前提で作られており、読み込みは非同期的で、トップレベルの await などの新機能に対応しています。これに対してCJSは昔からある仕組みで、requireでの読み込みとmodule.exportsによる出力が基本です。混在させると挙動が変わり、相互運用が難しくなることがあるので、可能なら一つのモジュールシステムに統一するのが無難です。
実務では、2020年代中盤以降は新規のプロジェクトではESMを選ぶケースが多くなっています。ただし既存の大きなコードベースを維持する場合、CJSを継続して使うこともあります。環境に合わせた選択と移行計画を立てることが大切です。
実践的な使い方の例と注意点
Node.jsの実行環境でCJSを使うときは、node ファイル名.cjs のように実行します。注意点として、CJSとESMを同じプロジェクトで無理に混在させると、import/exportとrequireの境界でエラーが出ることがあります。 migrate の際は、まず小さなモジュールから順に移行していくと失敗が少なくなります。
ブラウザだけで動かす場合は、CJSはそのままでは使えません。ブラウザではモジュールバンドラ(Webpack・Rollup など)を使ってESM風に受け渡すか、サーバーサイドの機能をAPI経由で呼び出す形になります。
要点のまとめと表
以下の表は、CJSとESMの違いを分かりやすく比較したものです。読みやすさのため、要点だけを抜き出しています。
| 説明 | |
|---|---|
| 読み込み方法 | CJS: require() |
| 出力方法 | CJS: module.exports |
| 拡張子の目印 | .cjs はCommonJSのファイルを示すことがある |
| ECMAScriptとの関係 | ESMは import/export、CJSは従来のモジュール方式 |
まとめとして、cjs・とは?という問いには「CommonJSという、Node.jsで使われる伝統的なモジュール規格」と覚えておくとよいです。現在はESMが主流になりつつありますが、既存のコードや特定の運用環境ではCJSがまだ重要な役割を果たしています。初心者はまずCJSの基本を押さえ、将来ESMへの移行を視野に入れておくと、スキルの幅が広がります。
cjsの関連サジェスト解説
- cjs esm とは
- cjs esm とは、JavaScriptのモジュールの2つの仕組みのことです。CJSはCommonJSの略で、古くから Node.js で使われてきた仕組みです。使い方は require でモジュールを読み込み、module.exports で返す形です。ESMはECMAScript Modules の略で、現代の標準モジュールです。import で読み込み、export で公開します。ブラウザでも使えるのが特徴です。使い分けのポイントは、プロジェクトの寿命と互換性です。新しいコードを書くならESMを選ぶのが基本で、ブラウザとサーバーの両方で動く点が魅力です。古いライブラリが CJS のままの場合は、ESM へ完全移行する前に一時的な互換手段を使うことが多いです。 Node.js での運用では、パッケージの type 設定や拡張子の選択が重要です。実際のコード例を見てみましょう。CJS なら const util = require('util'); module.exports = { hello: function(){...} }; ですが ES Module なら import { promisify } from 'util'; export function hello() { ... } となります。CJS から ESM へは動的 import や createRequire を使って互換性を取る方法もあります。設定としては package.json に type: module を追加すると .js が ESM になります。逆に CJS のままにしたい場合は .cjs 拡張子を使うと良いです。
cjsの同意語
- CommonJS
- JavaScript のモジュール規格の正式名称。Node.js などで使われる従来のモジュールシステムで、require での読み込みと module.exports でのエクスポートを特徴とします。
- CJS
- CommonJS の略称。短く表記するときに使われる同じ意味の表現です。
- CommonJSモジュール規格
- JavaScript のモジュールを定義・利用する公式仕様。ファイル間の依存関係を扱う仕組みを定義しています。
- CommonJS仕様
- CommonJS の公式仕様のこと。モジュールの読み込み手順やエクスポートの仕組みを定義しています。
- CommonJSモジュールシステム
- CommonJS によるモジュールの実装形。コードの再利用性を高めるために使われます。
- CommonJSモジュール
- CommonJS 規格に準拠したモジュールのこと。require で読み込み、module.exports で出力するのが特徴です。
- Node.jsモジュール規格(CommonJS)
- Node.js がデフォルトで利用するモジュール規格。基本は CommonJS の実装です。
- CommonJS標準
- CommonJS の標準的な表現を指す言い方。主に JavaScript のモジュール設計で用いられます。
- CJS仕様
- CommonJS の仕様の略称として使われることがあります。
cjsの対義語・反対語
- ESM(ECMAScript Modules)
- 現代の公式モジュール形式。import/exportを使い、静的に解析される。CommonJSのrequire/module.exportsとは異なる仕組みで、ブラウザとNode.jsの両方で広く使われている対義語の代表格。
- ECMAScriptモジュール
- ESMと同じ意味。ECMAScript標準のモジュール機能を指す表現。
- ESモジュール
- ESMの略称表現。対義語として頻出する表現。
- AMD(Asynchronous Module Definition)
- 非同期にモジュールを定義する仕組み。CommonJSの同期的な読み込みとは設計思想が異なる、競合するモジュール形式の一つ。
- UMD(Universal Module Definition)
- 複数の環境で動くように設計されたモジュール定義。CommonJS/ESMの実装差を跨いで使えるようにした形式。
- 非モジュール/グローバルスコープのスクリプト
- モジュール機能を使わず、グローバル変数として読み込む従来の書き方。CJSやESMとは境界がなく、再利用性が低い状態を指す解釈。
- モジュールを使わない古いスクリプト(スクリプトタグのみ)
- モジュール機能を使わず、純粋なスクリプトとして読み込む方法。CJS/ESMの対比として挙げられるケースがある。
cjsの共起語
- CommonJS
- JavaScriptのモジュール仕様のひとつで、Node.jsなどで広く使われる従来のモジュールシステム。cjsの正式名称として使われることが多いです。
- Node.js
- サーバーサイドのJavaScript実行環境。長年、CommonJSを中心としたモジュール形式と深く結びついています。
- require
- CommonJSでモジュールを読み込む関数。同期的に他のモジュールを取得する基本的な手段です。
- module.exports
- モジュールが外部へ提供する値を指定する、CommonJSのエクスポート方法の核となる構文です。
- exports
- module.exports のショートハンド的なオブジェクト。エクスポートを一部追加する場合などに使われます。
- ESM
- ES Modulesの略称。import/exportを使う現代的なモジュール仕様で、ブラウザと同じ書き方が使えます。
- import
- ESMでモジュールを読み込む構文。静的解析に適しており、ツールチェーンが最適化しやすいです。
- export
- ESMでモジュールをエクスポートする構文。どの値を外部に公開するかを指定します。
- type: module
- package.jsonのtypeフィールドをmoduleに設定すると、デフォルトがESMになる設定です。
- package.json
- Node.jsプロジェクトの設定ファイル。依存関係やスクリプト、モジュール形式の指定などを管理します。
- __dirname
- 現在のディレクトリのパスを表すCommonJSのグローバル変数。
- __filename
- 現在のファイルのパスを表すCommonJSのグローバル変数。
- .cjs
- CommonJSモジュールを明示する拡張子。Node.jsで利用されることがあります。
- .mjs
- ESMモジュールを示す拡張子。ESMを明示する用途で使われます。
- Webpack
- 複数のモジュールを1つのファイルに束ねて配布するビルドツール。CJS/ESMの両方を扱えます。
- Rollup
- ライブラリ向けのモジュール束ねツール。ESMを中心に扱われることが多いです。
- Parcel
- 設定が少なく使いやすいモジュールバンドラー。CJS/ESMの両方をサポートします。
- Babel
- 最新のJavaScript機能を古い環境へ変換するトランスパイラ。CJS/ESMの移行時にも関係することがあります。
- 相互運用
- CommonJSとESMの間でデータやモジュールをやり取りする際の互換性やブリッジ機能のこと。
- 互換性
- CJSとESM、異なる実行環境間の動作の整合性を指す概念です。
- npm
- Node.jsのパッケージマネージャ。CJS由来のパッケージが多く流通しています。
- node_modules
- 依存ライブラリが格納されるフォルダ。モジュール解決の中心拠点です。
- dist
- ビルド後の配布物を置くディレクトリ。ライブラリやアプリの成果物が入ります。
- require.resolve
- 特定のモジュールの解決パスを取得するための補助関数です。
- 動的インポート
- import()を使って、実行時にモジュールを非同期で読み込む機能です。
cjsの関連用語
- CJS (CommonJS)
- Node.js などで使われる伝統的なJSモジュール形式。require() で読み込み、module.exports で公開する。
- ES Modules (ESM)
- JavaScript の標準モジュール形式。import/export で依存関係を宣言・公開する。
- require()
- CommonJS のモジュール読み込み関数。同期的にモジュールを取得する。
- module.exports
- このモジュールが外部に公開する値を設定するオブジェクト。
- exports
- モジュール公開のショートカット。実際には module.exports のプロパティ追加を簡易化する。
- import
- ESM のモジュール読み込み構文。静的に依存関係を宣言する。
- export
- ESM の公開構文。外部に提供する機能を宣言する。
- package.json
- Node.js プロジェクトの設定ファイル。依存関係、スクリプト、モジュールタイプなどを管理する。
- type: module
- package.json に type: module を設定すると .js が ES Modules として扱われる。
- Node.js
- サーバーサイドの JavaScript 実行環境。CJS/ESM の実行元として広く使われる。
- Webpack
- 主要なモジュールバンドラー。複数のモジュールをブラウザ用の1ファイルにまとめる。
- Rollup
- ライブラリ向けの軽量バンドラー。静的解析によって最適化された束ね方を得意とする。
- Browserify
- 古い CommonJS をブラウザで動かすためのバンドラー。require() をブラウザ対応に変換する。
- Parcel
- 設定なしで動くゼロ設定バンドラー。開発を素早く回せる。
- Babel
- 新しいJavaScript機能を古い環境でも動くように変換するトランスパイラ。
- dynamic import()
- ESM の動的読み込み。実行時にモジュールを読み込むことができる。
- import.meta.url
- ESM のメタ情報。現在のモジュールの URL を表す。
- __filename
- 現在のモジュールのファイル名を表す Node.js/CJS の組み込み変数。
- __dirname
- 現在のモジュールのディレクトリパスを表す組み込み変数。
- require.cache
- 読み込んだモジュールのキャッシュ。2回目以降の読み込みを速くする。
- module
- 現在のモジュールを表す CJS の特殊オブジェクト。exports などを含む。
- __esModule
- Babel などの ESM 互換性を示すフラグ。ESM 風のエクスポートを扱う目安。
- CJSとESMの相互運用
- 同一プロジェクトで CJS と ESM を混在させる際の留意点。default export の扱い、require() からの読み込みなどに注意。



















