Skip to content

CDN依存(Mermaid / marked / DOMPurify)のアセット同梱を検討する #1159

Description

@irof

背景

#1142 の「あわせて検討」に挙がっていた項目を切り出したもの。#1142 本体(securityLevel の loose 解消)とは独立して判断できる。

生成HTMLは jig-core/src/main/resources/templates/partials/cdn-scripts.html で、3つのライブラリを jsDelivr からバージョン固定で読み込んでいる。

ライブラリバージョンサイズ(min)
DOMPurify3.4.1228 KB
marked15.0.738 KB
Mermaid11.12.02,684 KB

動機

  • オフライン環境で図とMarkdownが描画されない。JIGドキュメントは file:// で直接開くことを主要なユースケースとしている(docs/adr/browser_storage_policy.md)が、その経路でもネットワーク接続が必要になっている。
  • 供給網リスク。CDN側の停止や配信内容の差し替えが、生成物の閲覧に直接影響する。
  • 通常のCIをネットワークに依存させずにブラウザ検証を行いたい、というテスト側の要求もある(docs/test-architecture.md のWeb資産の節)。

検討事項

  • 配布サイズ。3つ合計で約 2.75 MB。現在の jig-cli.jar は約 17 MB なので 16% 程度の増加になる。増加分のほぼ全てが Mermaid。
  • Mermaidだけ CDN のままにする折衷案もありうる。DOMPurify と marked(合計 66 KB)はサニタイズとMarkdown描画という基本機能で、欠けるとページの内容自体が出ない。Mermaid は図が出ないだけで一覧やリンクは機能する。
  • ライセンス表記。同梱するライブラリのライセンスを配布物へ含める必要がある。
  • 更新手順。現在は cdn-scripts.html のバージョンと package.json の devDependencies を揃える運用(DOMPurifyのずれは 514efac で解消済み)。同梱する場合は取得と配置をビルドタスクに載せるか、リポジトリへコミットするかを決める必要がある。jig-core/build.gradlebundleJs タスクが既に assets/*.js を結合しているので、その周辺との整合も要る。
  • ADRの更新docs/adr/browser_support_policy.md に「CDNから読み込む外部ライブラリはバージョンを固定し、実CDNとの結線確認はリリース候補の検証に分離する」と記述している。同梱する決定をした場合はこの節を書き換える。

決めること

  1. 同梱するか、CDNのままにするか
  2. 同梱する場合の対象(3つ全部 / Mermaid以外)
  3. 同梱方法(ビルド時取得 / リポジトリへコミット)

🤖 この issue は Claude Code による #1142 対応の際に、本体と分離できる検討事項として切り出したものです。

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions