cjs・とは?初心者が知っておくべきCommonJSの基本と使い方共起語・同意語・対義語も併せて解説!

  • このエントリーをはてなブックマークに追加
cjs・とは?初心者が知っておくべきCommonJSの基本と使い方共起語・同意語・対義語も併せて解説!
この記事を書いた人

高岡智則

年齢:33歳 性別:男性 職業:Webディレクター(兼ライティング・SNS運用担当) 居住地:東京都杉並区・永福町の1LDKマンション 出身地:神奈川県川崎市 身長:176cm 体系:細身〜普通(最近ちょっとお腹が気になる) 血液型:A型 誕生日:1992年11月20日 最終学歴:明治大学・情報コミュニケーション学部卒 通勤:京王井の頭線で渋谷まで(通勤20分) 家族構成:一人暮らし、実家には両親と2歳下の妹 恋愛事情:独身。彼女は2年いない(本人は「忙しいだけ」と言い張る)


はじめに

このページでは「cjs」とは何かを、初心者にも分かるように丁寧に解説します。キーワードはCommonJSという古くからあるモジュールの仕組みです。プログラミングの世界では「モジュール」とは、別々のファイル同士で機能を分け、必要な時に呼び出して使う部品のことを指します。ここでは、初心者の観点からcjsが何を指すのか、どう使うのか、そして最新の動向までをやさしく紹介します。

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の違いを分かりやすく比較したものです。読みやすさのため、要点だけを抜き出しています。

<th>項目
説明
読み込み方法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() からの読み込みなどに注意。

cjsのおすすめ参考サイト


インターネット・コンピュータの人気記事

awstatsとは?初心者でもわかる使い方と基本解説共起語・同意語・対義語も併せて解説!
16567viws
bing・とは?初心者のための基本ガイド:検索エンジンの仕組みと使い方共起語・同意語・対義語も併せて解説!
2947viws
差し込み印刷・とは?初心者でもすぐわかる使い方と仕組みガイド共起語・同意語・対義語も併せて解説!
1193viws
着信転送とは?初心者向けガイドで分かる使い方と設定のコツ共起語・同意語・対義語も併せて解説!
1180viws
com端子・とは?初心者にも分かる基礎ガイド|シリアルポートの使い方と歴史を解説共起語・同意語・対義語も併せて解説!
1052viws
7zファイル・とは?初心者でもわかる使い方と特徴を解説共起語・同意語・対義語も併せて解説!
1043viws
全角文字とは?初心者向け解説|全角と半角の違いをやさしく学ぶ共起語・同意語・対義語も併せて解説!
1030viws
充電アダプターとは何かを徹底解説|初心者でも分かる基本と選び方のコツ共起語・同意語・対義語も併せて解説!
984viws
リマインドメールとは?初心者にもわかる基本ガイドと使い方のコツ共起語・同意語・対義語も併せて解説!
874viws
pinロックとは?初心者が知っておくべき基本と使い方ガイド共起語・同意語・対義語も併せて解説!
872viws
16進数カラーコード・とは?初心者でもつまずかない基礎と使い方ガイド共起語・同意語・対義語も併せて解説!
816viws
none とは?初心者にもやさしく解説する意味と使い方ガイド共起語・同意語・対義語も併せて解説!
815viws
asp・とは?初心者向けに徹底解説する基本と使い方ガイド共起語・同意語・対義語も併せて解説!
809viws
xlsmとは?初心者でも分かるExcelのマクロ付きファイルの基本共起語・同意語・対義語も併せて解説!
744viws
ローカルポート・とは?初心者にも分かる基本と使い方ガイド共起語・同意語・対義語も併せて解説!
723viws
sha256とは?初心者が知るべき暗号ハッシュの基礎と使い道共起語・同意語・対義語も併せて解説!
698viws
csvダウンロードとは?初心者が今すぐ使える基本ガイド共起語・同意語・対義語も併せて解説!
627viws
countifとは?初心者でもすぐ使える基本と応用ガイド共起語・同意語・対義語も併せて解説!
613viws
ワンタイムコード・とは?初心者でも分かる基本と使い方ガイド共起語・同意語・対義語も併せて解説!
605viws
googleドキュメントとは?初心者が今日から使いこなす基本ガイド共起語・同意語・対義語も併せて解説!
547viws

新着記事

インターネット・コンピュータの関連記事