Skip to content

docs: tools.md コード・バーコードカテゴリの本文を追記 - #526

Merged
fumtas1k merged 1 commit into
developfrom
docs/tools-md-barcode
May 29, 2026
Merged

docs: tools.md コード・バーコードカテゴリの本文を追記#526
fumtas1k merged 1 commit into
developfrom
docs/tools-md-barcode

Conversation

@fumtas1k

Copy link
Copy Markdown
Owner

概要

docs/tools.md(ツール技術リファレンス)の残ツール本文をカテゴリ単位で追記する第 2 弾。本 PR は「コード・バーコード」カテゴリの未記述 4 ツールを埋める(QRチケットは #523 で記述済み)。

変更内容

  • QRコード生成: qrcode-generator の UTF-8 パッチ(stringToBytes 上書きで日本語対応)、誤り訂正 L/M/Q/H、SVG の role="img" + <title> 注入(aria-label を付けない理由含む)・escapeXml
  • JANコード生成: モジュラス 10 ウェイト 3-1 のチェックディジット計算(JAN-13/JAN-8 の重み配置)、計算過程表示、jsbarcode 描画
  • GS1 DataBar 生成: GTIN-14 チェックディジット、bwip-jsdatabarlimitedcomposite、AI(17/10/11/15/21)と FNC1 自動挿入(gs1process())、AI テキストの SVG <text> 手動注入、PNG 白背景必須・経緯は decisions [067]/[082]/[083] へリンク
  • QRリーダー: jsQR、画像の canvas 経由デコード・長辺 1600px ダウンスケール・AbortSignal 対応、URL/text 判定、カメラは useQrCamera

いずれも実ソース(QrCode.tsx / jan-code.ts / gs1-databar.ts / qr-reader.ts 等)を読んで記述。

進捗

コード・バーコード完了で 残り 10 ツール / 2 カテゴリ(エンコード・デコード3 / 変換・解析7)。

検証

  • prettier --check ✅ / astro check ✅(pre-commit hook)

🤖 Generated with Claude Code

QRコード(qrcode-generator UTF-8パッチ/a11y title)、JAN(モジュラス10ウェイト3-1/
jsbarcode)、GS1 DataBar(bwip-js合成シンボル/AI/FNC1自動/テキスト注入)、
QRリーダー(jsQR/canvas/ダウンスケール/AbortSignal)の仕組み・準拠・制限を記述。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@fumtas1k fumtas1k self-assigned this May 29, 2026
@github-actions

Copy link
Copy Markdown
Contributor

🖼️ Visual Regression Test 結果

  • Status: ✅ 全 46 件 pass
  • Workflow run: 26650385191
  • Artifact (diff 画像 / playwright-report): 上記 workflow run の Artifacts セクションから download

diff が 意図的な visual 変更の場合: Update Visual Regression Baseline workflow を本 PR ブランチで workflow_dispatch trigger して baseline を更新。
diff が 意図しない regression の場合: 該当変更を fix。
本 check は required ではないため fail のままでも merge は可能(reviewer 判断)。

@fumtas1k fumtas1k left a comment

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

レビュー: tools.md コード・バーコードカテゴリ本文追記(4 ツール)

最重要の「記述が実装と一致しているか」を軸に、4 ツールのソースを実際に読んで突き合わせました。検証したすべての技術的主張が実装どおりで、merge 可能です。以下、依頼の観点別に評価します。

✅ ロジック・記述精度(ソースと一致)

  • QRコード生成QrCode.tsx / utils/qrcode.ts): qrcode.stringToBytesTextEncoder で上書きする UTF-8 パッチ ✓、型番 0 で自動決定(qrcode(0, errorLevel))✓、誤り訂正 L7/M15/Q25/H30% ✓、エラー文言「テキストが長すぎる可能性があります」も実装どおり ✓。
  • JANコード生成jan-code.ts): mod10 ウェイト3-1(calcJan)、JAN-13=12桁(奇数×1/偶数×3)、JAN-8=7桁(奇数×3/偶数×1)、(10 − 合計 mod 10) mod 10、サンプル先頭「49」固定— すべて一致 ✓。
  • GS1 DataBargs1-databar.ts): calcGtin14CheckDigit(左端=奇数位×3)✓、先頭桁 0/1 のみ(DATABAR_LIMITED_FIRST_DIGITS)✓、bwip-js databarlimitedcomposite ✓、対応 AI 17/10/11/15/21 が AI_DEFS と完全一致 ✓、FNC1 は gs1process() 自動挿入 ✓、includetext がリニア部のみ→AI テキストを injectCompositeText で手動注入 ✓、decisions [067]/[082]/[083] 参照も正確 ✓。
  • QRリーダーqr-reader.ts): jsQRcreateObjectURL→Image→canvas→getImageData→jsQRmaxDim 既定 1600px(DEFAULT_QR_MAX_DIM)、各 await で AbortSignal 確認、detectQrContent の http/https 判定— すべて一致 ✓。

✅ セキュリティ観点

dangerouslySetInnerHTML を使う QR 描画・SVG <text> 注入の両経路について、escapeXml/escapeHtml を XSS 二次防衛線として明記できており実装の意図と整合。GS1 で「呼出側で二重 escape しない」契約も injectCompositeText の JSDoc どおり。QRリーダーの「画像・映像はサーバー送信しない」「カメラはセキュアコンテキスト前提」も実装・ブラウザ制約と一致。

✅ フロントエンド/a11y 観点

QR の role="img" は付けるが aria-label は意図的に付けない(ARIA 名前計算で <title> が除外され URL 本文が読まれなくなる)という a11y 上の微妙な判断が、QrCode.tsx のコメント(issue #386 / PR #434)どおり正確に記述されています。👍

✅ アーキテクチャ観点

カテゴリ単位の段階追記(#523 設計)に沿った第 2 弾で一貫。qrcode-generator を直接 import せず @/utils/qrcode 経由に統一する方針も正しく記述。decisions.md への経緯リンク誘導も住み分けどおり。

✅ テスト・検証

ローカル再確認: prettier --check ✅ / docs-section-references meta テスト ✅(7 passed)。ガード追加なしのため test-gates 対象外。

指摘事項なし、approve 相当です。残り 7 ツール(エンコード3 / 変換・解析4… 変換・解析は7)も同じ品質で続けば理想的です。

備考: PR の mergeable_stateblocked ですが docs 単独変更のため機能的リスクはありません。必須チェック/ベース追従の保留であれば追従後に解消するはずです。


Generated by Claude Code

@fumtas1k
fumtas1k merged commit 2af9f1b into develop May 29, 2026
3 checks passed
@fumtas1k
fumtas1k deleted the docs/tools-md-barcode branch May 29, 2026 16:57
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant