🎯 この記事の範囲
第 4 回 で機械に落とせないとした項目が、切替の本体です。AI は調査と移植とテストまで出せます。切替日を決めること、切戻しを残すこと、旧自動印刷と新自動印刷が同じ出荷を二重に刷らないことは出せません。
| 本記事 | 隣接 | |
|---|---|---|
| 本記事(第 6 回) | 実紙 / 実機 / 送り状契約 / 並行稼働 / 切戻し / 配布 | クロスマシン TDD、ハーネス |
📄 実紙は、PDF の次の原典
現行 ActiveReports の紙と、新 PDF を重ねます。長い住所、複数口、セット品、代引、日本語 QR。Linux で綺麗でも、Windows の游ゴシックで「納品書」が折り返す、という差は実紙の前に一度出ています。見出し幅 1mm の修正は、重ね合わせの予行です。
プリンターは余白と倍率を持ちます。ミシン目のある納品書は、ブラウザの mm と物理原点がずれます。Canon への CUPS 出力で挨拶文の濃度を見たのは、濃度の確認です。ミシン目の確認ではありません。
感熱はさらに原点が機種依存です。PW208 と CT4-LX はどちらも 203 dpi でも、用紙とコマンドが違います。SBPL バイトが旧コードと一致しても、今のロールの左上が同じとは限りません。実送信の前に、IP・ポート・プロトコル・用紙を確認する。確認していないのに送らない。
📱 実機は、シミュレーターの次の原典
iOS シミュレーターで会社ログインまで出た、Android の APK が署名できた、は配布の手前です。切替に必要なのは、店舗の手で次が通ることです。
- 起動前・ログアウト後に業務アイコンが無い
- 店舗ログイン後に出荷だけが出る。倉庫権限が付かない
- カメラの開閉が、今現場で通っている動作を維持する
- 同一 JAN の複数明細、マルチスキャンが現場の速度で通る
- 担当者・拠点を切ったあと、前の検品を続行できない
- 小型端末でアイコンとラベルが欠けない
Linux に MAUI workload が無い、エミュレーターの OS サービスが止まる、は開発機の制約です。制約を切替未了の理由にしない。実機の台帳を別に持ちます。
SATO の非同期化と二重送信抑止はテストダブルで通しています。ACK とページ完了を実機で見るまでは、ラベル印刷は切替対象に入れません。
🚚 送り状は、社内バーコードではない
社内出荷番号の Code128 と加工 QR は、エンジン側で復号まで見ています。運送会社の送り状バーコード、仕分コード、発送データ発行は別契約です。紙面の左余白を「配送ラベル実装済み」と読んではいけません。
採番はテナント・配送会社・契約単位です。旧 identity やプロセス内カウンターを、ダウンロード設定に載せません。発行履歴と印刷状態を分けます。再発行は権限付きの新しいジョブです。
ヤマトの既存業務を基準に佐川・日本郵便へ広げる、は設定項目の追加ではありません。各社の連携形式、番号、帳票、必要なバーコードの実装と実機検証が付きます。対応状況は「配送会社 × サービス × プリンター / 用紙」の一覧で持ちます。未配線の種別を、メニューに出さない。
🔄 並行稼働で、同じ出荷を二度刷らない
旧 WPF が 10 分間隔で取りに行き、新エージェントも claim する期間が必ずあります。切替境界が無いと、同じ納品書が二系統から出ます。
切替は機能単位でも、印刷ジョブ単位でもよい。両方から取れる状態を「様子見」にしない。旧の自動印刷を止めた記録と、新の claim を始めた記録を、同じ日の台帳に残します。
複数 PC の排他は、ローカル履歴では足りません。サーバーのリースが正本です。端末交換・再インストールのあとに、古い履歴が残っていても、同じジョブを再送しない。
切戻しは、新を止めて旧を戻す手順です。帳票版と端末設定版が食い違ったら、新は要確認へ落ち、旧を一時的に戻せる必要があります。戻せない切替は、切替ではありません。
📦 配布は、ソースの push ではない
ソースが main にあることと、店舗の端末が新しいアプリを使うことは別です。
- WPF: 署名付きの配布と自動更新。Windows キュー名は端末ローカル
- Android: ストア、管理端末、署名済み APK のいずれか。運用で選ぶ
- iPhone: App Store または顧客組織向け Custom Apps。自社従業員向け Enterprise と同じ条件にしない
- 帳票テンプレートとテナント設定: API で版付き配信。本体更新とは別互換
本番デプロイ、プリンターへの実送信、顧客テナントへの iPhone 配布は、確認が無い限り進めない、という止め方を残します。進めないことを、実装が無いことと混同しない。実装済みで未配布、は正当な状態です。
✅ 第 6 回まとめ
- 実紙・実機・送り状契約は、テストの外側の原典である
- 社内バーコードの成功を、配送ラベルの成功にしない
- 並行稼働中に旧と新が同じ出荷を取らない。境界を台帳に残す
- 切戻しが書けない切替はしない
- push 済みと配布済みを分け、確認が無い実送信はしない
次回「再現装置としてのハーネス」では、ここまでの台帳・禁止・テスト・停止を、次の置換でも同じ優先度で読ませる装置を書きます。
📚 シリーズ記事
| 回 | タイトル | 主題 |
|---|---|---|
| 1 | レガシー置換とは | 旧実装を原典にし、先にテストへ落とす |
| 2 | 旧コードの読み方 | 地図が無い状態から四分類 |
| 3 | 寄せる境界・寄せない境界 | DTO、PDF と SBPL、店舗と別拠点 |
| 4 | 受入の機械化 | ユニットと Moq・フェイクで先に落とす |
| 5 | Linux から Mac / Windows へ出して TDD する | SSH 先で閉じる不足分、キャプチャまで AI |
| 6 | 人が残る切替(本記事) | 実機・実紙・契約・並行稼働 |
| 7 | 再現装置としてのハーネス | 台帳・禁止・ゲート・停止条件 |
🔗 関連リソース
- JAN出荷検品の端末選定 — BT-W85から.NET MAUIへ — 中古スマホと専用ハンディの比較、検品・印刷の実機受入
- レガシー置換とは — 切替を人に残す理由
- ActiveReports → Playwright + Scriban 移行 — 現行紙との重ね合わせが残作業であることの実例
- SBPL — 実機原点が別受入になる印字言語