# 提出手順 — 小説推敲アシスタント（依頼主の作業）

開発側でできるところ（MSIX・掲載文・スクリーンショット・プライバシーポリシー案・EPUB の仕様の自己検査）は済んでいる（DEVLOG「M3 リリース準備」）。
ここに書いたのは、Partner Center のアカウント・Java（epubcheck）・自分の原稿・投稿サイトのアカウントが要るため、依頼主にしかできない作業。
**名前はまだ予約していない**（手順 1 が最初）。

## 0. 手元にあるもの
| もの | 場所 |
|---|---|
| MSIX（未署名・Store が署名する） | `apps/novel-proof/dist/NovelProof_1.0.0.0_x64.msix`（identity は仮。手順 2 で作り直す）。2026-11-10 の M3 版：123,186,299 バイト、SHA256 `F7006A14FD4CF6612F0F3DDF64B7F0B1358CC7C0A2F00E0E9890DB69FB6FEC76`（確かめ方：PowerShell で `Get-FileHash dist\NovelProof_1.0.0.0_x64.msix`。手順 2 で作り直すと値は変わるので、そのときは DEVLOG に新しい値を書く） |
| 掲載文（日本語・英語） | `store/listing-ja.md`・`store/listing-en.md` |
| スクリーンショット 5 枚（1600×900、原稿は自作サンプル「潮見坂の灯台」だけ） | `store/screenshots/01〜05.png`（作り直し：`tools/store_shots.py`。手順 2 の下） |
| プライバシーポリシー案 | `store/privacy-policy.md` |

## 1. 名前を予約する（Partner Center）
1. Partner Center → アプリとゲーム → 新しい製品 → MSIX または PWA アプリ。
2. 名前：**小説推敲アシスタント**（2026-11-09 に空きを確認。`docs/ms-store-apps/name-availability-2026-11-09.md`。その後は再確認していない）。取られていたら別名を決め、下の差し替えをその名前で行う。
3. 英語の掲載名を別に持つなら、同じ製品に「Novel Proofreading Assistant」も予約する（任意。予約しない場合は英語の掲載にも日本語の名前を使う）。
4. 製品 → 製品 ID（Product identity）の画面で次をメモする：
   - Package/Identity/Name（例 `imoninja.1234ABCD5678`）
   - Package/Identity/Publisher（`CN=ECF78C6D-…` — transcriber と同じはず）
   - Store ID（12 文字、例 `9ABCDEFGHIJK`）

## 2. 予約した値に差し替える（開発側に頼んでもよい・5 分）
| ファイル | 項目 | 今の値（仮） | 入れる値 |
|---|---|---|---|
| `apps/novel-proof/msix.json` | `identity.name` | `imoninja.NovelProofDev` | Package/Identity/Name |
| 同 | `identity.publisher` | `CN=ECF78C6D-7A8E-415A-BEC7-4C853385A7DE` | Package/Identity/Publisher（同じなら変更なし） |
| 同 | `display_name` | `小説推敲アシスタント` | 予約した名前（完全に同じ文字。空白も） |
| 同 | `_note` | 「仮」の説明 | 消すか「予約済み（日付）」に |
| `apps/novel-proof/main.py` | `INFO.store_id` | `""`（空＝購入ボタンでストアを開けない） | Store ID |
| 同 | `INFO.name["ja"]` / `["en"]` | `小説推敲アシスタント` / `Novel Proofreading Assistant` | 予約した名前（英語名を予約しなかったら en はそのままでよい） |
| `store/listing-ja.md`・`listing-en.md`・`privacy-policy.md` | 製品名 | 小説推敲アシスタント | 予約した名前（変わったときだけ） |

名前を変えた場合は、スクリーンショットのヘッダーにアプリ名が写っているので撮り直す（アプリのフォルダで）：
```
set LOCALAPPDATA=%TEMP%\np-shots
set QT_QPA_PLATFORM=offscreen
set IMOSHELL_LICENSE=purchased
.venv\Scripts\python tools\store_shots.py %TEMP%\np-work store\screenshots
```
差し替えたら MSIX を作り直す（アプリのフォルダで）：
```
powershell -ExecutionPolicy Bypass -File ..\..\common\build\build.ps1
```
→ `dist\NovelProof_1.0.0.0_x64.msix`。古い開発版（`imoninja.NovelProofDev`）が入っていたら先に外す：`Get-AppxPackage -Name imoninja.NovelProofDev | Remove-AppxPackage`。

## 3. EPUB を epubcheck で検証する（提出前・30 分）
開発側では外部ツールを使わず、EPUB 3.3 の仕様の範囲を標準ライブラリで検査した（`tests/test_epub_spec.py`：mimetype・container.xml・必須メタデータ・manifest と spine・nav・XHTML の整形式・NCX・縦書きの CSS）。**W3C の公式の検証ツール epubcheck ではまだ通していない。**
1. Java 17 以降を入れる（例：Eclipse Temurin の JRE。`java -version` で確かめる）。
2. https://github.com/w3c/epubcheck/releases から最新の epubcheck（5.x）の zip を取り、好きなフォルダーに展開する。
3. 検証用の EPUB を作る（アプリのフォルダで。サンプル原稿の縦書き・横書きと、自分の原稿 1 本）：
   ```
   .venv\Scripts\python cli.py export tests\data\sample\clean.txt --format epub -o %TEMP%\np-epub\縦.epub --title 潮見坂の灯台 --author テスト
   .venv\Scripts\python cli.py export tests\data\sample\clean.txt --format epub --horizontal -o %TEMP%\np-epub\横.epub --title 潮見坂の灯台 --author テスト
   ```
   自分の原稿はアプリの「書き出し」→「EPUB（縦書き・右綴じ）」でも作る（字下げ・空行の整形が入る経路）。
4. 検証：`java -jar <展開先>\epubcheck.jar %TEMP%\np-epub\縦.epub`（横・自分の原稿も同じ）。
5. 見るところ：最後の行が `No errors or warnings detected.`、または **ERROR / FATAL が 0 件**であること。WARNING・INFO は内容を控える。
6. ERROR が出たら、その行（`ERROR(RSC-005): ...chap003.xhtml(12,5): ...` のような形）をそのまま開発側へ。直す場所は `engine/export.py` の `write_epub`、検査を足す場所は `tests/test_epub_spec.py`。
7. （任意）Kindle Previewer・Apple Books・Windows の EPUB リーダー（Thorium Reader など）で縦書き・ルビ・傍点・縦中横（「12時」の 12）・目次の見え方を一度見る。

## 4. 自分の原稿でドッグフーディング（提出前・半日。仕様 §10 のリリース基準）
合成サンプル（自作の誤り埋め込み）でしか測っていない（DEVLOG M1・M3）。**仕様のリリース基準「日隈自身の小説原稿で、実在のゆれを検出できること」を提出前に必ず確かめる。**
1. 開発者モードで入れる：`powershell -ExecutionPolicy Bypass -File ..\..\common\build\build.ps1 -DevInstall`（スタートメニューに出る）。試用の 3 万字を超える原稿なら、開発版（未パッケージ）で `set IMOSHELL_LICENSE=purchased` → `.venv\Scripts\python main.py` でもよい。
2. 長編 1 本（できれば 10 万字以上）を開いて「チェック開始」。登場人物を「表記辞書」に登録してからもう一度。
3. 記録してほしいこと（DEVLOG に追記するか、開発側に渡す。原稿そのものは渡さなくてよい）：
   - 本物のゆれ・誤変換として役に立った候補の数と例
   - 誤検出（直す必要のない候補）の数と、多かった種類（「〜といった」「補助動詞」「日記・作中作の書き分け」など）
   - 見逃しに気づいたもの（あれば）
   - チェックにかかった秒数（画面の完了表示）、固まった・落ちた操作
4. カクヨム・なろうへの書き出しを、実際の投稿画面の「プレビュー」に貼って見る（**公開はしない**。下書き保存もしなくてよい）：
   - ルビ（｜親《ルビ》）・傍点（カクヨム《《 》》／なろうは 1 文字ずつの「・」ルビ）・本文の「漢字（かな）」が勝手にルビにならないか（なろう）
   - 字下げ・空行・「！？」の後の全角空白
   - 公式ヘルプで確認した記法・字数制限は DEVLOG M3「投稿サイトの記法」。なろうの傍点は公式に「傍点の挿入」機能があるが、挿入されるタグの書き方がヘルプに無いため、従来の「・」ルビのままにしている。入力補助で入るタグを見て、変えた方がよければ開発側へ
5. 終わったら登録を外す：`Get-AppxPackage -Name imoninja.NovelProofDev | Remove-AppxPackage`（データも消える）。自分の原稿は開発用のフォルダー（tests/ など）に入れない。

## 5. プライバシーポリシーを公開する
1. `store/privacy-policy.md` の「最終更新日」を入れ、内容を確認する。
2. transcriber・receipt-prep と同じ置き場所（note の固定記事・GitHub Pages など）に置き、URL を控える。

## 6. Partner Center で提出する
1. **価格と使用可能状況**：市場＝日本（任意で全市場）、価格 ¥1,980（仕様 §4）、無料試用＝「試用版あり・期限なし」（アプリ側で累計 3 万字に制限している）。
2. **プロパティ**：カテゴリ＝ブック＆参考書（または仕事効率化）。プライバシーポリシーの URL。サポート連絡先 imoninja@gmail.com。
   「このアプリは個人情報にアクセス・収集・送信しますか？」→ いいえ（外部送信しない。原稿は端末内で処理）。
3. **年齢区分**：IARC の質問票（ユーザー間のやり取りなし・位置情報なし・購入はストアのみ）→ 全年齢になるはず。
4. **パッケージ**：手順 2 で作り直した `.msix` をアップロード。対象：Windows 10/11 デスクトップ。
   エラーが出たら：identity・publisher・display_name の不一致がほとんど（予約情報と 1 文字でも違うと弾かれる）。
5. **ストア掲載情報（日本語）**：`listing-ja.md` を貼る。スクリーンショット 5 枚（キャプションも）。アイコンはパッケージのもの。
   **英語**：`listing-en.md`。日本語の文章専用のアプリなので、英語の掲載を出さず「日本語のみ」でもよい。
6. **審査担当へのメモ（Notes for certification）**：
   「Japanese novel proofreading app. Works offline; bundles the SudachiPy morphological analyzer and dictionary (about 190 MB unpacked). Test: Open (開く…) any Japanese .txt or paste Japanese text (貼り付け) → Check (チェック開始) → candidates appear on the right → Export (書き出し) → EPUB. Free trial: 30,000 characters in total. No network access.」
7. 制限付き機能 `runFullTrust` の理由欄：「Desktop (Win32) app packaged with MSIX; runs a PySide6 GUI. No other restricted capabilities.」

## 7. 公開後すぐ（2 週間は夜間チェック：ロードマップの共通基準 4）
- 実際に Store から入れて：購入前に試用表示 → 購入後に「製品版」、購入ボタンでストアのページが開く（store_id が入っているか）。
- オフラインでの判定（common TODO-M2 §18.2）：一度ネットありで起動 → 機内モードで起動してヘッダーが「製品版」のままか。
- 評価・レビューと imoninja@gmail.com を毎晩見る。誤検出の報告には「どの候補（種類と前後の数語）か」を聞く（原稿を丸ごと送ってもらわなくてよい、と掲載文に書いてある）。

## 未確認のまま提出することになる点（知っておいてほしいこと）
- epubcheck での検証（手順 3）と、実際のリーダーでの縦書きの見え方。
- 自分の長編原稿での誤検出の多さ（手順 4）。精度は自作サンプル 3 本でしか測っていない（DEVLOG M3「誤検出の見直し」）。
- カクヨム・なろうの投稿画面での実際の表示（手順 4-4）。
- Windows 10 での動作（開発機は Windows 11 のみ。マニフェストの最小は 10.0.17763）。
- Store 経由の購入・試用の実反映（公開後にしか確かめられない）。
- バージョン情報の画面のライセンス表示（一覧の上の「SudachiDict」「SudachiPy に組み込まれた Rust ライブラリ」「Qt 6 / PySide6 / Shiboken6」「PyInstaller（起動部）」）は、パッケージ版で一度開いて目で読む（中身の index.json と本文ファイルは確認済み）。表示文の法的な最終確認は人が読むこと（common §17.3 の注）。

## プライバシーポリシーの URL（2026-11-10 公開済み）
https://novel-proofreading-assistant.pages.dev/ （Cloudflare Pages。更新手順は ms-store-apps/privacy-site/README.md）。Partner Center の「プライバシー ポリシーの URL」にこれを入れる。

## 提出用の最終 MSIX（2026-11-10、名前の予約後）

**これより前に書いた MSIX の大きさ・SHA256 は古い。提出にはこれを使う。**

- `apps/novel-proof/dist/NovelProof_1.0.0.0_x64.msix`：123197124 バイト
- SHA256 `37096F44817CC3E9F09209E3EAB4169A735AB78EE73C4FEF4A32011F5F352B8A`
- Identity/Name `imoninja.20381909A5841`、Store ID `9P2DGHRN5P80`、Publisher `CN=ECF78C6D-7A8E-415A-BEC7-4C853385A7DE`
- 含むもの：BOM 付き JSON の読み込み（common §22・アプリ側 utf-8-sig）、ライセンス収集の改善（§23）、左メニューの UIA（§23）、ビルド時の PATH 固定（§24：Git の OpenSSL DLL 混入なし）
- この PC にも同じレイアウトを開発者モードで登録済み（動作確認用）
