背景
#1142 の「あわせて検討」に挙がっていた項目を切り出したもの。#1142 本体(securityLevel の loose 解消)とは独立して判断できる。
生成HTMLは jig-core/src/main/resources/templates/partials/cdn-scripts.html で、3つのライブラリを jsDelivr からバージョン固定で読み込んでいる。
| ライブラリ |
バージョン |
サイズ(min) |
| DOMPurify |
3.4.12 |
28 KB |
| marked |
15.0.7 |
38 KB |
| Mermaid |
11.12.0 |
2,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.gradle の bundleJs タスクが既に assets/*.js を結合しているので、その周辺との整合も要る。
- ADRの更新。
docs/adr/browser_support_policy.md に「CDNから読み込む外部ライブラリはバージョンを固定し、実CDNとの結線確認はリリース候補の検証に分離する」と記述している。同梱する決定をした場合はこの節を書き換える。
決めること
- 同梱するか、CDNのままにするか
- 同梱する場合の対象(3つ全部 / Mermaid以外)
- 同梱方法(ビルド時取得 / リポジトリへコミット)
🤖 この issue は Claude Code による #1142 対応の際に、本体と分離できる検討事項として切り出したものです。
背景
#1142 の「あわせて検討」に挙がっていた項目を切り出したもの。#1142 本体(securityLevel の loose 解消)とは独立して判断できる。
生成HTMLは
jig-core/src/main/resources/templates/partials/cdn-scripts.htmlで、3つのライブラリを jsDelivr からバージョン固定で読み込んでいる。動機
file://で直接開くことを主要なユースケースとしている(docs/adr/browser_storage_policy.md)が、その経路でもネットワーク接続が必要になっている。docs/test-architecture.mdのWeb資産の節)。検討事項
jig-cli.jarは約 17 MB なので 16% 程度の増加になる。増加分のほぼ全てが Mermaid。cdn-scripts.htmlのバージョンとpackage.jsonの devDependencies を揃える運用(DOMPurifyのずれは 514efac で解消済み)。同梱する場合は取得と配置をビルドタスクに載せるか、リポジトリへコミットするかを決める必要がある。jig-core/build.gradleのbundleJsタスクが既にassets/*.jsを結合しているので、その周辺との整合も要る。docs/adr/browser_support_policy.mdに「CDNから読み込む外部ライブラリはバージョンを固定し、実CDNとの結線確認はリリース候補の検証に分離する」と記述している。同梱する決定をした場合はこの節を書き換える。決めること
🤖 この issue は Claude Code による #1142 対応の際に、本体と分離できる検討事項として切り出したものです。