Skip to content

feat: <meta> タグによる API キーのフォールバック解決を追加#473

Closed
yuiseki wants to merge 1 commit into
masterfrom
feature/meta-tag-api-key-fallback
Closed

feat: <meta> タグによる API キーのフォールバック解決を追加#473
yuiseki wants to merge 1 commit into
masterfrom
feature/meta-tag-api-key-fallback

Conversation

@yuiseki

@yuiseki yuiseki commented Mar 16, 2026

Copy link
Copy Markdown
Member

Summary

  • keyring.tsparse()<meta name="geolonia-api-key"> によるフォールバックを追加
  • 既存の <script src> パース方式は一切変更なし。スクリプトタグで API キーが見つからなかった場合のみ <meta> タグを検索する
  • E2E テスト(3ブラウザ × 2ケース = 6テスト)とユニットテスト(5ケース)を追加

Background

モダン Web フレームワーク(Next.js, Astro, SvelteKit 等)では <script> タグがバンドラに加工されるため、現行の API キー解決方式(document.currentScript / getElementsByTagName('script') で自身のスクリプトタグを探す)が動作しません。

3つの PoC(Vercel + Next.js / Netlify + Astro / Cloudflare + React Router)で検証し、いずれもそのままでは Cannot load API key エラーが発生することを確認しました。

<meta> タグはどのフレームワークでもバンドル加工の対象にならないため、最も安全なフォールバック手段です。

使い方

<meta name="geolonia-api-key" content="YOUR-API-KEY" />
<script src="https://cdn.geolonia.com/v1/embed"></script>

後方互換性

  • <script src="...?geolonia-api-key=XXX"> による既存の解決パスは一切変更なし
  • <script> で API キーが見つかった場合、<meta> フォールバックは実行されない
  • <meta> タグがない既存ページの動作に影響なし(既存 21 テスト全パスで確認)

Test plan

  • npm run build でビルド成功
  • npx playwright test で 27 テスト全パス(既存 21 + 新規 6)
  • ユニットテスト 5ケース追加(<meta> 優先度、空 content、<script> との優先順位)

🤖 Generated with Claude Code

Memo

Summary by CodeRabbit

リリースノート

  • 新機能

    • メタタグを使用したAPI キー設定のサポートを追加しました。スクリプトタグで API キーが見つからない場合、メタタグからのフォールバック取得に対応します。
  • テスト

    • メタタグ API キー機能の E2E テストおよびユニットテストを追加しました。

keyring.ts の parse() に <meta name="geolonia-api-key"> によるフォールバックを追加。
既存の <script src> パース方式は一切変更せず、スクリプトタグで API キーが
見つからなかった場合のみ <meta> タグを検索する。

モダン Web フレームワーク(Next.js, Astro, SvelteKit 等)では <script> タグが
バンドラに加工されるため、従来の方式で API キーを解決できない問題への対策。
<meta> タグはどのフレームワークでもバンドル加工の対象にならない。

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@coderabbitai

coderabbitai Bot commented Mar 16, 2026

Copy link
Copy Markdown
📝 Walkthrough

Walkthrough

Geolonia ライブラリに、スクリプト URL から API キーが見つからない場合にメタタグから API キーを読み込むフォールバック機能を追加しました。この機能をカバーする E2E テストとユニットテストも新たに追加されています。

Changes

コホート / ファイル(s) 概要
E2E テストとドキュメント
docs/e2e/meta-tag.html, e2e/meta-tag.spec.ts
メタタグによる API キー統合のデモンストレーションと E2E テストを追加。メタタグ指定時のマップレンダリングとコンソールエラーの不在を検証。
ユニットテスト
src/lib/keyring.test.ts
メタタグからの API キー解析のテストスイートを追加。スクリプトタグとメタタグの優先順位、フォールバック動作、環境変数との相互作用を検証。
コア実装
src/lib/keyring.ts
スクリプト URL 解析後の処理として、メタタグからの API キー読み込みと stage 設定のロジックを実装。

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~12 minutes

Poem

🐰 メタタグから API キーが、
スッと現れてくるよ、
スクリプトがなくても、
地図はちゃんと映るね。
フォールバック、いいね!

🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check name Status Explanation
Title check ✅ Passed タイトルはプルリクエストの主要な変更内容を明確に要約しており、メタタグによるAPI キーのフォールバック機能追加について正確に描写している。
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
  • 📝 Generate docstrings (stacked PR)
  • 📝 Generate docstrings (commit on current branch)
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch feature/meta-tag-api-key-fallback
📝 Coding Plan
  • Generate coding plan for human review comments

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@yuiseki yuiseki self-assigned this Mar 16, 2026
@yuiseki yuiseki added enhancement New feature or request Priority: Low The issue has low priority labels Mar 16, 2026
@yuiseki

yuiseki commented Mar 16, 2026

Copy link
Copy Markdown
Member Author

v5.1.0 のリリースによって不要になったので閉じます

@yuiseki yuiseki closed this Mar 16, 2026
@yuiseki
yuiseki deleted the feature/meta-tag-api-key-fallback branch March 25, 2026 01:55
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request Priority: Low The issue has low priority

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant