2026年4月16日
JavaScript テンプレートリテラルとは?
文字列に変数を埋め込むとき、こんな書き方をしていませんか?
const name = '田中';
const age = 15;
// 従来の書き方(+で連結)
console.log('こんにちは、' + name + 'さん。' + age + '歳ですね。');
// → こんにちは、田中さん。15歳ですね。 + で文字列をつなぐのは、変数が増えると読みにくくなります。
テンプレートリテラルを使うと、もっとスッキリ書けます。
// テンプレートリテラル(読みやすい!)
console.log(`こんにちは、${name}さん。${age}歳ですね。`);
// → こんにちは、田中さん。15歳ですね。 テンプレートリテラルはバッククォート(`)で文字列を囲み、${変数名} の形で変数や式を埋め込みます。
⌨️ バッククォートの位置
日本語キーボード:「@」キーの左隣(Shiftなしで押す)
英語キーボード:「1」キーの左隣
🔥 イベント処理入門で実践してみましょう。
基本の使い方
従来の書き方(+連結)とテンプレートリテラルを比べてみましょう。
const name = '田中';
const age = 15;
const score = 85;
// ❌ 従来の書き方(読みにくい)
const msg1 = 'こんにちは、' + name + 'さん。点数は' + score + '点でした。';
// ✅ テンプレートリテラル(読みやすい)
const msg2 = `こんにちは、${name}さん。点数は${score}点でした。`;
console.log(msg1); // こんにちは、田中さん。点数は85点でした。
console.log(msg2); // こんにちは、田中さん。点数は85点でした。 変数が増えるほど、テンプレートリテラルの「見やすさ」が際立ちます。
💡 変数入門で基礎を確認できます。
式を埋め込む
${} の中には変数だけでなく、計算式や関数呼び出しも書けます。
const price = 1000;
const tax = 0.1;
// 計算式を埋め込む
console.log(`税込価格:${price * (1 + tax)}円`);
// → 税込価格:1100円
// 配列の操作
const arr = [1, 2, 3];
console.log(`配列の長さ:${arr.length}`);
// → 配列の長さ:3
// 三項演算子(条件分岐)
const point = 75;
const result = `判定:${point >= 60 ? '合格' : '不合格'}`;
console.log(result); // → 判定:合格
// 関数の呼び出し
const toUpper = (str) => str.toUpperCase();
console.log(`大文字:${toUpper('hello')}`);
// → 大文字:HELLO 複数行の文字列
テンプレートリテラルは改行をそのまま含められます。\n を書かなくていいので便利です。
// ❌ 従来の書き方(\nで改行)
const msg1 = '1行目\n2行目\n3行目';
// ✅ テンプレートリテラル(そのまま改行できる)
const msg2 = `1行目
2行目
3行目`;
console.log(msg2);
// 1行目
// 2行目
// 3行目 HTMLを動的に生成する
テンプレートリテラルの最もよく使われる活用例が「JavaScriptでHTMLを生成する」です。
const fruits = ['りんご', 'バナナ', 'みかん'];
// 配列からHTMLのリストを生成
const html = `
<ul>
${fruits.map(fruit => `<li>${fruit}</li>`).join('')}
</ul>
`;
document.getElementById('list').innerHTML = html;
// → <ul><li>りんご</li><li>バナナ</li><li>みかん</li></ul> map() と組み合わせると、配列データを一気にHTMLに変換できます。
実践例:商品カードを動的に表示
実際の開発でよく使われる「データからHTMLカードを生成する」例を見てみましょう。
const products = [
{ name: 'Tシャツ', price: 2000, tag: 'セール' },
{ name: 'ジーンズ', price: 5000, tag: '新着' },
{ name: 'スニーカー', price: 8000, tag: '人気' },
];
const container = document.getElementById('products');
products.forEach(product => {
const card = document.createElement('div');
card.className = 'product-card';
// テンプレートリテラルでHTMLを生成
card.innerHTML = `
<span class="tag">${product.tag}</span>
<h3 class="product-name">${product.name}</h3>
<p class="price">¥${product.price.toLocaleString()}</p>
<button class="btn-add">カートに追加</button>
`;
container.appendChild(card);
}); + を使って書くのと比べると、テンプレートリテラルがいかに読みやすいかがわかります。
タグ付きテンプレートリテラル(応用)
テンプレートリテラルの応用として「タグ付きテンプレートリテラル(Tagged Template Literals)」があります。初心者にはまだ使う機会は少ないですが、知っておくと便利です。
// タグ付きテンプレートの基本形
function tag(strings, ...values) {
let result = '';
strings.forEach((str, i) => {
result += str;
if (i < values.length) {
result += values[i].toString().toUpperCase(); // 埋め込み値を大文字に
}
});
return result;
}
const name = 'taro';
console.log(tag`こんにちは、${name}さん!`);
// → こんにちは、TAROさん! タグ付きテンプレートはReactの styled-components(スタイルドコンポーネント)などのライブラリでよく使われています。
よくある間違いと注意点
間違い1:バッククォートとシングルクォートを混同する
`(バッククォート)と '(シングルクォート)は別物です。テンプレートリテラルにはバッククォートを使います。間違えると「Uncaught SyntaxError」が出ます。
間違い2:$の波括弧を忘れる
const name = '田中';
// ❌ 間違い:波括弧なし($nameが文字列として表示されてしまう)
console.log(`こんにちは、$name さん`); // → こんにちは、$name さん
// ✅ 正しい:波括弧あり
console.log(`こんにちは、${name}さん`); // → こんにちは、田中さん 間違い3:意図しない改行が入る
// テンプレートリテラルの中の改行はそのままHTMLに入る
const html = `
<p>テキスト</p>
`;
// htmlの先頭と末尾に改行が含まれる
// trim()で除去できる
const cleanHtml = html.trim(); まとめ
- ✅ バッククォート(
`)で文字列を囲む - ✅
${変数名}で変数や式を埋め込める - ✅ 改行をそのまま含められる(
\n不要) - ✅
+での連結より読みやすく書ける - ✅ 計算式・関数呼び出しも
${}の中に書ける - ✅ HTMLを動的に生成するときに特に便利
テンプレートリテラルを使うと、文字列操作がシンプルになります。レッスンでさらに実践的な使い方を学んでみましょう。
あわせて読みたい記事
- JavaScriptとは?初心者向け解説 — JS基礎に戻る
- 変数入門(let・const・var) — 変数の使い方
- JavaScript文字列操作入門 — 文字列のメソッド
- JavaScript DOM操作入門 — HTMLを動的に変更
- アロー関数入門 — 現代的な関数の書き方
🚀 JavaScriptをレッスンで学ぼう!
このサイトのJavaScriptコースでは、テンプレートリテラルを使った実践的なプログラムをブラウザだけで学べます。無料・登録不要です。
JavaScriptコースを見る →