Nuxt 4 プロジェクトに GA4(G-9NMESN4QFX)を設置した。タグ自体は nuxt.config.ts の app.head.script に2行追加するだけで終わった。だが、その途中で AI(私)が「このサイトのドメインは eurekapu.com」と思い込んで書いてしまい、実態と食い違うミスを生んだ。気づいたあと、絶対URLを runtimeConfig に集約し、運営体制のルールを CLAUDE.md に書き足すところまで一気に進めた。
やったこと(時系列)
nuxt.config.tsに GA4 タグ(gtag.js 本体 + 初期化スクリプト)を追加- デプロイ先ドメインを AI が
eurekapu.comと決め打ちして書き始めた - 実際のデプロイ先は
info-accounting.comだった(指摘されて気づいた) - 関連箇所3つを
info-accounting.comに統一(i18n baseUrl・ogUrl・README) - 絶対URLの生成を
runtimeConfig.public.siteUrlに一元化 - 運営体制のルールを
CLAUDE.mdの Conventions セクションに2項目追記
GA4 タグの設置
核心は nuxt.config.ts の以下の部分だけ。
app: {
head: {
script: [
{ src: 'https://www.googletagmanager.com/gtag/js?id=G-9NMESN4QFX', async: true },
{
children: `
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'G-9NMESN4QFX');
`
}
]
}
}
ここは特に詰まらなかった。問題はこの次に起きた。
ドメインの取り違え - 根拠1行で決め打ちしたミス
GA4 設置後、関連する箇所(i18n baseUrl、OGP の絶対URL、README のサイト紹介文)にドメインを書こうとした。私はそこで https://eurekapu.com と書き始めた。
根拠は、nuxt.config.ts の i18n 設定にあった baseUrl: 'https://eurekapu.com' の1行だけ。プロジェクト名が eurekapu-nuxt4 だったことも、思い込みを補強した。
実際のデプロイ先は info-accounting.com だった。指摘されて初めて、設定ファイル1行を根拠に決め打ちした自分のミスに気づいた。
事業の立て付けはこうなっている。
- コンテンツ/ブランド: エウレカープ(個人)
- 運営主体: info-accounting 合同会社(ひとり会社)
- 個人が作ったコンテンツを合同会社が提供を受けて運営する
つまりブランド名(eurekapu)とデプロイ先ドメイン(info-accounting.com)は意図的にずれている。AI が i18n 設定の1行だけ見て「このサイト = eurekapu.com」と単純化したのは、構造を理解せずに一番手前にあった情報で穴埋めしただけだった。
runtimeConfig で絶対URLを一元化
同じミスを構造的に防ぐため、絶対URLを書く場所を1箇所に絞った。
// nuxt.config.ts
runtimeConfig: {
public: {
siteUrl: 'https://info-accounting.com'
}
}
ページ側からはこう呼ぶ。
// practice.vue
const config = useRuntimeConfig()
const ogUrl = `${config.public.siteUrl}/practice`
これでドメインを書き換えたいときに nuxt.config.ts の1箇所だけ触ればよくなり、AI が文字列を直書きする余地を減らせる。修正したのは i18n baseUrl・1ページの ogUrl・README の3箇所。
CLAUDE.md に書かないと、AI も自分も忘れる
ドメインを訂正したあと、もう1つ気づいたことがある。「コンテンツ = エウレカープ(個人)、運営 = info-accounting 合同会社」という立て付けを、私は会話の中で口頭で伝えただけだった。次のセッションで AI が git log や設定ファイルを見ても、この構造は見えてこない。
だから次に同じ作業をするとき、AI はまた同じ思い込みで eurekapu.com と書き始める可能性が高い。
CLAUDE.md の Conventions セクション(既に「外部リンクは新規タブで開く」「参考書籍の出典を明記する」が並んでいる場所)に、運営体制のルールを2項目追記した。
- デプロイ先ドメインは
info-accounting.com。絶対URL はruntimeConfig.public.siteUrl経由で参照する - コンテンツのブランド名は「エウレカープ」、運営主体は「info-accounting 合同会社」。両者を混同しない
口頭で伝えた情報は、次のセッションでは消える。AI が再現可能な形で動くためには、設定ファイルかドキュメントに書き残すしかない。今回はその当たり前を、ドメイン取り違えで思い出させられた。
学び
- 設定ファイルの1行を根拠に「このサイト = ◯◯」と決めつけるな。ブランド名とデプロイ先ドメインが一致しているとは限らない
- 絶対URLは直書きせず
runtimeConfigに集約する。書き換える場所が1箇所になり、AI の文字列直書きミスも減る - 口頭で伝えた事業の立て付けは、次のセッションでは消えている。
CLAUDE.mdに書かないと、AI も自分も同じミスを繰り返す