【インポートマップス】

Import Maps とは?

💡 モジュール名の住所録をHTMLに書いて、ブラウザに渡す地図
📌 このページのポイント
Import Maps — モジュール名→URLのマッピング index.html <script type="importmap"> "imports": { "react": "https://cdn/.../react.js" } <script type="module" src="app.js"> ブラウザ import 'react' ↓ Import Maps参照 https://cdn/.../react.js CDN react.js モジュール配信 app.js import React from 'react' // 裸の識別子でOK バンドラー不要のメリット ・webpack/Viteなしで裸の識別子が使える ・CDNからそのままESモジュールを読み込める
Import Mapsがモジュール名をURLに解決するイメージ
ひよこ ひよこ

Import Mapsって何ができるの?

ペンギン先生 ペンギン先生

ブラウザが`import 'react'`という裸のモジュール名を見たとき、どのURLに取りに行くかを教える地図を定義できるんだよ。普通のブラウザURLでないとモジュールを読み込めないんだね。

ひよこ ひよこ

どうやって書くの?

ペンギン先生 ペンギン先生

`<script type="importmap">`タグの中にJSONで書くんだよ。たとえば`{"imports": {"react": "https://cdn.example.com/react.js"}}`と書けば、`import 'react'`がそのURLに解決されるんだね。

ひよこ ひよこ

バンドラーがなくてもいいの?

ペンギン先生 ペンギン先生

そうだよ。従来はwebpackやViteモジュールを束ねないと裸の識別子は使えなかったんだ。Import MapsがあればCDNURLを指定するだけで、バンドルなしにモジュールをそのまま使えるんだよ。

ひよこ ひよこ

どんなときに便利なの?

ペンギン先生 ペンギン先生

ビルドステップなしのシンプルなWebアプリや、Deno/ブラウザ環境でのプロトタイプ開発に向いているんだよ。Node.jsのnode_modulesの概念をブラウザに持ち込まずに済むのが便利なんだね。

ひよこ ひよこ

全部のブラウザで使えるの?

ペンギン先生 ペンギン先生

2023年以降のChrome・Firefox・Safari・Edgeすべてで標準サポートされているんだよ。Node.jsにも似た仕組みがあるし、DenoはImport Mapsを公式サポートしているんだね。

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「Import Maps」って出てきたら「モジュール名→URLマッピングHTMLに書いてバンドラー不要にする機能」と思えばだいたいOK!
📖 おまけ:英語の意味
「Import Maps」 = インポートマップ
💬 モジュールの「地図」を定義するイメージだよ。裸の識別子('lodash'など)を実際のURLに変換するマッピング表を提供するんだよ。
← 用語集にもどる