システムコンセプト

Sorane (空音) は、**「精密なタイポグラフィ」「耐量子暗号 (PQC)」**を組み合わせたデータ配送基盤のオープンソース・参照実装です。完成された製品ではなく、公的機関が検証可能な資格情報 (VC) を発行する際の技術的課題を解決するための「技術青写真」として設計されています。

主な2つの柱:

  1. タイポグラフィ・ファースト (Zero Layout Shift):
    • ページごとに使用キャラクターを解析し、フォントをオンザフライでサブセット化して埋め込むことで、あらゆるデバイスでの「ピクセルパーフェクト」な表示を保証。
    • IVS(異体字セレクタ)や行政外字にネイティブ対応。
  2. 暗号による真正性とプライバシー:
    • 全ての公式ドキュメントは、耐量子暗号 (ML-DSA-44) を含むハイブリッド署名で署名。
    • 選択的開示 (SD-CWT) をサポートし、プライバシーに配慮した最小限のデータ提示を実現。
    • 「組織の証拠(e-Seals)」に近い構成を採用。

ディレクトリ構成

srn/
├── shared/           # 共有アセット(フォント、スキーマ、共通CSS)
├── sites/            # 各サイトのソース(マルチテナント構成)
│   └── srn/
│       ├── config.yaml
│       ├── content/      # Markdownファイル (*.md)
│       └── static/       # 静的アセット (images, css, pdf)
├── dist/srn/         # 生成された出力(git-ignore)
├── src/              # ソースコード
│   ├── core/         # 暗号、VC、フォントエンジン、共有ユーティリティ
│   ├── ssg/          # ビルドパイプライン、レイアウト、Identity管理
│   ├── form/         # Web/A Form 実行時ロジック
│   └── bin/          # 各種 CLI エントリーポイント
└── tests/            # 統合テスト・各種ユニットテスト

開発の始め方

1. 依存関係のインストール

bun install

2. フォントの準備

プロプライエタリなフォントはリポジトリに含まれていません。.ttf または .otf ファイルを shared/fonts/ に配置してください。 (デフォルトでは Noto Sans JP 等が期待されます。設定は sites/srn/config.yaml で変更可能です)

3. ビルドと実行

bun run build:srn
bun x http-server dist/srn

主要機能と使い方

1. Web/A Documents (アーカイブ品質のWeb)

layout: article または layout: weba を使用します。標準的な記事ページも、デフォルトで Web/A ドキュメントとして署名されます。

  • HMP (Human-Machine Parity): 人間が見るHTML表示と、機械が読むJSON-LDデータを暗号的に結合。
  • 検証バッジ: ページ内に「Web/A Signed」バッジが表示され、証拠データ(VC)をダウンロード可能です。

2. Web/A Forms (対話型ドキュメント)

layout: form を使用することで、検証可能なフォームを作成できます。

---
title: "申請フォーム"
layout: form
---
- [text:name (label="氏名")] 氏名
  • Single-File Runtime: ロジック、CSS、署名をすべて含んだ単一のHTMLファイルを生成。
  • L2 Encryption (L2E): 回答内容を指定した受領者(発行者や集計者)向けに暗号化可能。
  • CLI 生成: bun src/form/cli.ts input.md > output.html

3. AI 連携と移行

  • Excel からの移行: markitdown 等で Excel を Markdown 化し、移行プロンプト を使って Web/A 構文へ変換。
  • MCP サーバー: AI エージェント(Claude/Cursor等)からフォームの解析や自動入力を行うための MCP設定 を提供。

セキュリティと監査性

  • 依存関係のベンンダリング: サプライチェーンリスク排除のため、コア暗号ライブラリを src/vendor/ に内蔵。
  • SBOM/CBOM: sbom.json により、構成コンポーネントと暗号資産を明示。
  • 耐量子ハイブリッド: 現行の Ed25519 と次世代の ML-DSA を組み合わせた二重署名。

Built with Bun and OpenType.js.