# 提出手順 — 領収書・請求書 整理（依頼主の作業）

開発側でできるところ（MSIX・掲載文・スクリーンショット・プライバシーポリシー案）は済んでいる（DEVLOG「M3 リリース準備」）。
ここに書いたのは、Partner Center のアカウント・本物のレシート・会計ソフトの契約が要るため、依頼主にしかできない作業。
目安：確定申告シーズン（1〜3 月）の前、12 月中の公開。審査は通常 1〜3 営業日（初回は長めに見る）。

## 0. 手元にあるもの
| もの | 場所 |
|---|---|
| MSIX（未署名・Store が署名する） | `apps/receipt-prep/dist/ReceiptPrep_1.0.0.0_x64.msix`（identity は仮。手順 2 で作り直す）。2026-11-10 の M3 仕上げ版：52,756,618 バイト、SHA256 `EB1CD0255E26883FB681107042D06C24E83943179C8F62713E984C3EBB8E31F2`（確かめ方：PowerShell で `Get-FileHash dist\ReceiptPrep_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`） |
| プライバシーポリシー案 | `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. 英語の掲載名を別に持つなら、同じ製品に「Receipt & Invoice Organizer」も予約する（任意。予約しない場合は英語の掲載にも日本語の名前を使う）。
4. 製品 → 製品 ID（Product identity）の画面で次をメモする：
   - Package/Identity/Name（例 `imoninja.1234ABCD5678`）
   - Package/Identity/Publisher（`CN=ECF78C6D-…` — transcriber と同じはず）
   - Store ID（12 文字、例 `9ABCDEFGHIJK`）

## 2. 予約した値に差し替える（開発側に頼んでもよい・5 分）
| ファイル | 項目 | 今の値（仮） | 入れる値 |
|---|---|---|---|
| `apps/receipt-prep/msix.json` | `identity.name` | `imoninja.ReceiptPrep.Provisional` | Package/Identity/Name |
| 同 | `identity.publisher` | `CN=ECF78C6D-7A8E-415A-BEC7-4C853385A7DE` | Package/Identity/Publisher（同じなら変更なし） |
| 同 | `display_name` | `領収書・請求書 整理` | 予約した名前（完全に同じ文字。空白も） |
| 同 | `_note` | 「仮」の説明 | 消すか「予約済み（日付）」に |
| `apps/receipt-prep/main.py` | `INFO.store_id` | `""`（空＝購入ボタンで案内文を出す） | Store ID |
| 同 | `INFO.name["ja"]` / `["en"]` | `領収書・請求書 整理` / `Receipt & Invoice Organizer` | 予約した名前（英語名を予約しなかったら en はそのままでよい） |

名前を変えた場合は、スクリーンショットのヘッダーにアプリ名が写っているので撮り直す：
```
set LOCALAPPDATA=%TEMP%\rp-shots
set QT_QPA_PLATFORM=offscreen
apps\receipt-prep\.venv\Scripts\python apps\receipt-prep\tools\store_shots.py %TEMP%\rp-work apps\receipt-prep\store\screenshots
```
差し替えたら MSIX を作り直す（アプリのフォルダで）：
```
powershell -ExecutionPolicy Bypass -File ..\..\common\build\build.ps1
```
→ `dist\ReceiptPrep_1.0.0.0_x64.msix`。

## 3. 本物のレシートでドッグフーディング（提出前・半日）
合成画像でしか測っていない（DEVLOG M1・M3）。**提出前に必ず実物で一度通す。**
1. 開発者モードで入れる：`powershell -ExecutionPolicy Bypass -File ..\..\common\build\build.ps1 -DevInstall`（スタートメニューに出る）。
2. 用意：手持ちの領収書・レシート 30 枚前後（A8・開発経費など）。混ぜたいもの：
   - コンビニ・スーパー・ドラッグストア・家電量販のレシート（感熱紙）、カフェ、タクシー・交通系、ガソリン
   - 手書きの領収書 2〜3 枚、Amazon などの電子 PDF の領収書・請求書 2〜3 枚
   - スマホで撮った写真（明るい所・真上から）と、スキャナー（300dpi）の両方
3. 「書類を追加」→ フォルダーごと入れる。1 枚ずつ「確認・修正」で直し、**直した項目の数**を数える（日付・取引先・金額・登録番号の別に）。
4. 記録してほしいこと（DEVLOG に追記するか、開発側に渡す）：
   - 日付・金額の正解率（仕様のリリース基準：日付・金額 90% 以上）
   - 「高（緑）」なのに間違っていた項目（いちばん危ない。あれば画像の特徴も）
   - チェーン店の名前が辞書の表記で出たか／辞書に無い主要チェーンの名前
   - 登録番号が読めなかった枚数、誤って読んだ枚数（誤読は 0 のはず）
   - 1 枚あたりの時間、固まった・落ちた操作
5. 終わったら登録を外す：`Get-AppxPackage -Name <identity.name> | Remove-AppxPackage`（データも消える）。本物のレシートの画像は自分のフォルダーにだけ置き、開発用のフォルダー（tests/ など）には入れない。

## 4. 会計ソフトへの取り込み確認（契約している／無料期間のあるソフトで）
各社のヘルプ（DEVLOG「M3：会計ソフトの CSV 形式の調査」）に合わせたが、**実際の取り込みは未確認**。手順 3 の CSV を使う。
最初は**練習用の事業所・テスト用の年度**で行う（弥生はインポートを取り消せない。必ずバックアップ）。

**共通**：アプリの「出力」で形式を選び、科目を割り当ててから「CSV を保存」。文字コードは既定の Shift_JIS。

### freee 会計
1. 取引 → 取引の一覧・登録 → 「インポート」（取引・口座振替のインポート）→ 作った CSV を選ぶ。
2. 見るところ：
   - 列の対応付けの画面が出たら、列名が自動で合うか（`取引先コード`・`セグメント1〜3` の列名が違うと言われたら、その列を「取り込まない」にして進め、結果を開発側へ）
   - 税区分「課対仕入10%」「課対仕入8%（軽）」がそのまま入るか（「（軽）」の括弧が全角か半角かで止まらないか）
   - 税額を空欄にしているので freee が計算するか（内税）
   - 決済口座「現金」がそのまま決済済みになるか（口座名が違う人は「支払手段」をその名前に）
   - UTF-8 にしても入るか（任意）
3. 登録番号なしの書類は備考に「登録番号なし」と出る。経過措置の区分（課対仕入（控80）など）は freee 側で選び直す（アプリは freee では切り替えない）。

### 弥生会計（デスクトップ版・弥生会計 オンライン／やよいの青色申告 オンライン）
1. 事前にバックアップ。帳簿・伝票 → 仕訳日記帳 → ファイル → インポート（オンライン版は「スマート取引取込」ではなく「仕訳のインポート」）。
2. 見るところ：
   - 25 項目・見出し行なしの形式がそのまま通るか
   - 税区分「課対仕入内10%」「課対仕入内軽減8%」、貸方「対象外」
   - 「出力」の「登録番号の無い書類を経過措置の税区分で出す」を入れた CSV で「課対仕入内10%区分80%」（2026/9/30 まで）・「…区分70%」（2026/10/1 から）・「…適格」が通るか（本則課税の事業所で）
   - 科目名が事業所の科目と違うときの「マッチングリスト」の出方

### マネーフォワード クラウド会計／確定申告
1. 会計帳簿 → 仕訳帳 → インポート → 仕訳帳。
2. 見るところ：
   - 27 列（作成日時〜最終更新者は空欄）がサンプルフォーマットとして通るか
   - 税区分「課仕 10%」「課仕 (軽)8%」、貸方「対象外」が通るか（「対象外」が通らなければ、税区分画面の名前を開発側へ）
   - 税額を空欄にしているので貸借が一致するか
   - 「借方インボイス」：登録番号ありは「適格」、経過措置を入れたときの登録番号なしは「適格以外」
   - 取引 No（1, 2, 3…）が既存の仕訳と重なったとき、自動で振り直されるか

通らなかったら：エラーの画面（文言）と、CSV の 1〜2 行を開発側へ。直す場所は `engine/csv_export.py`（`TAX_CODES` と各形式の関数）。

## 5. プライバシーポリシーを公開する
1. `store/privacy-policy.md` の「最終更新日」を入れ、内容を確認する。
2. 公開場所（例：note の固定記事、GitHub Pages、既存の imoninja のサイト）に置き、URL を控える。transcriber と同じ置き場所に並べると管理が楽。

## 6. Partner Center で提出する
1. **価格と使用可能状況**：市場＝日本（任意で全市場）、価格 ¥3,980、無料試用＝「試用版あり・期限なし」（アプリ側で 20 枚に制限している）。
   セール（1〜3 月 ¥2,980 を検討）は「価格と使用可能状況 → セール価格」で期間を指定。
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 receipt OCR app. Uses Windows built-in Japanese OCR (Windows.Media.Ocr); if the Japanese OCR component is missing, the app shows how to install it. No network access. Test: add any printed Japanese receipt image (JPG/PNG/PDF) → values appear in the list → Export → Save CSV. Free trial: 20 documents.」
7. 制限付き機能 `runFullTrust` の理由欄：「Desktop (Win32) app packaged with MSIX; runs a PySide6 GUI and calls Windows.Media.Ocr. No other restricted capabilities.」

## 7. 公開後すぐ（2 週間は夜間チェック：ロードマップの共通基準 4）
- 実際に Store から入れて：購入前に試用表示「試用 残り 20 枚」→ 購入後に「製品版」、購入ボタンでストアのページが開く（store_id が入っているか）。
- 評価・レビューと imoninja@gmail.com を毎晩見る。読み取りの不具合の報告には「どの種類の書類か（感熱紙・手書き・PDF）」「撮り方」を聞く（画像は送ってもらわなくてよい、と掲載文に書いてある）。

## 未確認のまま提出することになる点（知っておいてほしいこと）
- 本物のレシートでの精度（手順 3 で確認）。
- 3 社の会計ソフトへの実際の取り込み（手順 4 で確認）。
- Windows 10 での動作（開発機は Windows 11 のみ。マニフェストの最小は 10.0.17763）。
- 英語版 Windows に日本語 OCR を後から足した環境での動作。
- Store 経由の購入・試用の実反映（公開後にしか確かめられない）。
- バージョン情報の画面のライセンス表示（一覧の上の「Qt 6 / PySide6 / Shiboken6」の表示文と「PyInstaller（起動部）」、一覧で pypdfium2 を選ぶと本文が出るか）は画面では見ていない（中身の index.json は確認済み）。手順 3 のついでに「ヘルプ」→「バージョン情報」を開いて一度読む。
- エクスプローラーで複数の書類を選んで「プログラムから開く」と、ファイルごとに窓が開く（1 つずつなら問題なし）。

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

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

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

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