【そーすまっぷ】

ソースマップ とは?

公開:
💡 変換後のコードから元のコードへ、デバッグの道しるべ
📌 このページのポイント
ソースマップのしくみ 元のコード app.ts (TypeScript) 行番号・変数名が そのまま残っている 読みやすい ✓ 変換 変換後のコード app.js (minified) 変数名は短縮 改行も削除 読みにくい ✗ ソースマップ app.js.map 変換前 ↔ 変換後 の行・列の 対応表 ブラウザ DevTools ソースマップを読み込んで、元のTypeScriptコードを表示 ブレークポイントも元のコードの行番号で設定可能
ソースマップのイメージ
ひよこ ひよこ
ソースマップって何のためにあるの?
ペンギン先生 ペンギン先生
TypeScriptやミニファイしたJavaScriptデバッグするとき、変換後のコードだと読みにくいよね。ソースマップがあれば、ブラウザDevToolsで元のコードを見ながらデバッグできるんだよ
ひよこ ひよこ
どうやって対応関係を記録してるの?
ペンギン先生 ペンギン先生
.mapファイルの中にBase64 VLQエンコードされた対応表が入ってるんだ。変換後のコードの何行目何列目が、元のコードの何行目何列目に対応するかを記録してるよ
ひよこ ひよこ
本番環境でも使って大丈夫なの?
ペンギン先生 ペンギン先生
ソースマップを公開すると元のコードが見えてしまうから、本番では非公開にするのが一般的だね。Sentryのようなエラー監視ツールにだけアップロードして、エラー発生時に元のコードの行番号を特定する使い方が多いよ
ひよこ ひよこ
ソースマップが壊れたらどうなるの?
ペンギン先生 ペンギン先生
DevToolsで表示される行番号がズレたり、ブレークポイントが効かなくなったりする。ビルドツールのバージョンアップで壊れることもあるから、CIでソースマップの有効性をチェックするのも大事だよ
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「ソースマップ」って出てきたら「変換後のコードを元のコードに紐づける地図」と思えればだいたいOK!
📖 おまけ:英語の意味
「Source Map」 = ソースの地図
💬 変換後のコードから元のソースコードへの地図(マップ)という意味だよ
← 用語集にもどる