identifiers-and-mjs.mdupdated 2026-08-011,348 chars

識別子・拡張子、​そして​ .mjs ファイルの​正体

識別子​(=identifier、​ある​ものを​他と​区別して​指し示す名前)は、​人の​名前や​車の​ナンバープレートと​まったく​同じ​発想である。​プログラムの​中では​変数や​関数に​名前を​付け、​ファイルの​世界では​拡張子が​ファイルの​種類を​指し示す。​.mjs は​その​一例であり、​Node.js​(=サーバー側などで​JavaScriptを​動かす実行環境)が​「ESモジュールと​して​扱え」と​判定する​ための​JavaScriptファイルである。

識別子とは​何か

識別子とは、​ある​ものを​一意に​指すための​ラベルであり、​後から​それを​呼び出せるように​する​ための​名前である。​プログラムでは、​変数​(=データを​入れておく​名前​付きの​箱)や​関数​(=処理のかたまり)に​名前を​付ける。let price = 100 と​いう​記述で​あれば、price が​識別子に​あたる。​コンピュータは​「100」と​いう​値を​漠然と​覚えるのではなく、​「price と​いう​名前の​箱に​100が​入っている」と​いう​形で​管理する。price と​書けば、​後から​再び​その値を​取り出せる。

拡張子も​識別子の​一種

拡張子​(=extension)とは、​ファイル名の​末尾に​付く​「.○○」の​部分であり、​その​ファイルが​何の​種類かを​指し示す。​.jpg​(画像)​・.pdf​(文書)​・.js​(JavaScript)が​その例である。​厳密には、​プログラミング用語と​しての​「識別子」は​変数名・関数名を​指し、​拡張子は​別の​カテゴリに​分類される。​ただし​「何かを​他と​区別して​指す名前」と​いう​根っこの​発想は​両者に​共通している。​OS​(=基本ソフト)や​他の​プログラムは、​この​拡張子を​読み取って​「どう​開くか・どう​実行するか」を​判断する。

では​ .mjs とは​何か

.js は​ JavaScript​(=Webサイトや​ツールを​動かすプログラミング言語)の​ファイルを​表す。​.mjs は、​Node.js が​必ず​「ESモジュール」と​して​扱う​ことを​要求される​JavaScriptファイルである。​モジュール​(module)とは、​プログラムを​機能ごとに​分けた​再利用​可能な​部品を​指す。​大きな​ソフトウェアを​部品A・B・C…に​分割し、​import / export​(=部品を​他の​ファイルと​やり取りする​命令)で​組み合わせて​使う。​Node.js は​通常、​package.json の​「type」欄で​モジュールか​スクリプトかを​推測するが、​.mjs と​いう​拡張子は​その​推測を​上書きし、​設定の​内容に​かかわらずESモジュールと​しての​扱いを​強制する。​この​リポジトリでは​ gen-notes-manifest.mjs のような​ファイルで​ノート一覧を​自動生成しており、​.mjs に​する​ことで​追加設定なしに​ import/export が​使える。

まとめ

識別子とは​「ある​ものを​他と​区別して​指す名前」であり、​この​根っこの​発想は​変数名にも​拡張子にも​等しく​貫かれている。​.mjs は​ Node.js に​対して​「この​JavaScriptを​ESモジュールと​して​扱え」と​伝える​拡張子である。

出典・参考

148 notestil