CodePenへのコード例共有をjsDelivrから自社CDNに切り替え

shoelace-style/webawesome

「Open in CodePen」機能のCDN参照先を jsDelivr から WebAwesome 自社CDN(ka-p.webawesome.com)に変更しました。これにより、CodePen で開いたコード例でもプロコンポーネントが正しく動作するようになります。

背景

WebAwesome のドキュメントには「Open in CodePen」ボタンがあり、コード例をそのまま CodePen に送信して動作確認できます。これまで送信されるコードは jsDelivr を経由して WebAwesome のアセットを読み込む構成でした。しかし jsDelivr は公開 npm パッケージのミラーであるため、プロコンポーネントを含む kit ベースの配信には対応できず、CodePen 上でプロコンポーネントが機能しないという問題がありました。

自社 CDN(ka-p.webawesome.com)は kit コードを通じた認証付き配信をサポートしており、プロコンポーネントを含むすべての機能を提供できます。

技術的な変更

packages/webawesome/docs/assets/scripts/code-examples.js において、CodePen へ送信する HTML スニペットの CDN URL が置き換えられました。

変更前:

const CDN_URL = `https://cdn.jsdelivr.net/npm/@awesome.me/webawesome@${version}/dist-cdn/`;

// ...
const html =
  `<script data-fa-kit-code="..." type="module" src="${CDN_URL}webawesome.loader.js"></script>\n` +
  `<link rel="stylesheet" href="${CDN_URL}styles/webawesome.css">\n\n` +
  `${code.textContent}`;

変更後:

// CDN_URL 変数は削除

// ...
const html =
  `<link rel="stylesheet" href="https://ka-p.webawesome.com/kit/b9bfcf2dca544e85/webawesome@${version}/styles/webawesome.css">\n` +
  `<script type="module" src="https://ka-p.webawesome.com/kit/b9bfcf2dca544e85/webawesome@${version}/webawesome.loader.js"></script>\n\n` +
  `${code.textContent}`;

変更点は次の3点です:

  • CDN_URL 変数の削除: jsDelivr のベース URL を組み立てていた定数を削除し、URL をインラインに統合
  • URL 構造の変更: cdn.jsdelivr.net/npm/@awesome.me/webawesome@{version}/dist-cdn/ から ka-p.webawesome.com/kit/b9bfcf2dca544e85/webawesome@{version}/ へ移行。パス中の b9bfcf2dca544e85 が kit 識別子にあたります
  • 要素の順序と属性の変更: <script> より <link> を先に出力する順序に変更。また旧コードにあった data-fa-kit-code 属性は新 URL に kit 識別子が含まれるため不要となり削除されました

バージョン文字列 ${version} は引き続きドキュメントの data-version 属性から取得されるため、バージョン追従の仕組みはそのまま維持されます。

設計判断

kit コードを URL パスに埋め込む方式が採用されました。旧実装では data-fa-kit-code 属性でスクリプトタグに kit コードを指定していましたが、新 CDN では kit 識別子がパス構造(/kit/{id}/)に含まれます。これにより <script> タグの属性を別途設定する必要がなくなり、CSS と JS の両タグが同一の URL パターンで統一されています。

また、CDN_URL 変数を削除してインライン URL に置き換えたことで、CSS と JS が同じ kit ベース URL を持つことが一見して明確になります。将来的に URL 構造が変更される場合は2箇所の修正が必要になりますが、現時点では可読性とシンプルさを優先した判断といえます。

まとめ

本PRは CodePen 連携における CDN を jsDelivr から自社 kit CDN へ切り替え、プロコンポーネントを含むすべての機能を CodePen 上で動作させることを実現した変更です。URL パスへの kit 識別子の統合により、認証の仕組みとアセット配信が一体化した構成となっています。

記事メタデータ

Generated by:
Claude Sonnet 4.6 for DiffDaily
LLM Trace:
91980e39

この記事はAIによって自動生成されています。内容の正確性については、必ずソースコードやPRを確認してください。

品質レビュー結果

Review Status:
リトライ後承認
Review Count:
2回 (改善を経て承認)
Reviewed by:
Gemini 2.5 Pro for DiffDaily

Review Criteria:

記事構成 ✓ PASS

Title, Context, Technical Detailの存在と明確さ

「リード文(総論)→背景・技術詳細・設計判断(各論)→まとめ(結論)」という3部構成が明確に守られています。各セクションの役割が明確で、非常に分かりやすい構成です。

カスタムMarkdown構文 ✓ PASS

シンタックスハイライト・GitHubリンク記法の正確性

ファイル名付きシンタックスハイライト(```javascript:path/to/file.js)およびPR番号のリンク記法([PR #2201](URL))がガイドライン通り正しく使用されています。

対象読者への適合性 ✓ PASS

エンジニア向けの適切な技術レベルと表現

CDN、npm、kitコードといった用語を前提としており、専門知識を持つエンジニアという対象読者に完全に適合しています。冗長な説明がなく、要点が絞られています。

パラグラフ・ライティング ✓ PASS

トピックセンテンス・1段落1トピック・段落長

各セクション、各パラグラフともに「総論→各論」の構成が徹底されています。各段落はトピックセンテンスで始まり、1段落1トピックが守られており、長さも適切です。模範的なパラグラフ・ライティングです。

Diff内容との照合 ✓ PASS

コードブロックとDiff内容の一致

Diffの内容を正確に反映しています。`CDN_URL`変数の削除、URLの変更、`<link>`と`<script>`の順序変更、`data-fa-kit-code`属性の削除など、全ての変更点が「変更前」「変更後」のコードブロックと説明文で正しく表現されています。

技術用語の正確性 ✓ PASS

技術用語の正確な使用

jsDelivr, CDN, kitコード, プロコンポーネントなどの技術用語が文脈に沿って正確に使用されています。PRの内容と一致しており、誤用は見られません。

説明の技術的正確性 ✓ PASS

技術的主張の正確性と論理性

「jsDelivrではプロコンポーネントが動作しないため、kitコードに対応した自社CDNに切り替える」という説明は、PRの目的とDiffの内容に完全に一致しており、技術的に正確です。

事実の突合 ✓ PASS

PR情報による主張の裏付け(ハルシネーション検出)

記事内のすべての主張(CDNの切り替え理由、kit識別子の役割など)は、PRのDescriptionとDiffの内容によって裏付けられています。「設計判断」セクションは、Diffから読み取れる事実に基づいた妥当な分析であり、ハルシネーションは含まれていません。

数値・固有名詞の確認 ✓ PASS

PR番号・コミットID・バージョン等の正確性

PR番号(#2201)、kit識別子(b9bfcf2dca544e85)、CDNのドメイン名など、すべての数値・固有名詞がPR情報と完全に一致しています。

タイトル・説明との一致 ✓ PASS

記事タイトル・説明とPR内容の一致

記事のタイトル「CodePenへのコード例共有をjsDelivrから自社CDNに切り替え」は、PRのTitleとDescriptionの内容を的確に要約しており、主題の齟齬はありません。

外部知識の正確性 ✓ PASS

PRに記載のない外部知識(LTS、サポート状況など)の不使用

記事はPRで提供された情報のみに基づいており、バージョンのサポート状況やリリース日程など、PR外の知識を持ち込んでいません。

時間表現の正確性 ✓ PASS

時間表現がPR情報と一致しているか

完了した変更に対して「変更しました」「実現した変更です」といった過去形・完了形の表現が使われており、PRのステータスと時間表現が一致しています。