Skip to content

デプロイ後チェックリスト ​

ステージングまたは本番へデプロイしたあと、デプロイ後テスター(または同等の役割)が実施する確認項目です。正本は本ドキュメントです(一時的なチェックリスト Issue #3936 から移設)。ステージング反映後は、テスターが A〜E を実施する前に、開発担当が差分まとめを用意する。

方針 ​

  • ステージングでの記事公開は実施してよい
  • 本番での公開・破壊的な本番操作は、まっくの明示指示がある場合のみ行う

デプロイ差分まとめ(開発担当) ​

ステージングへデプロイしたあと、開発担当が差分を読み取り、テスターが確認しやすいメモを作る。クラウドエージェントは使わない(GitHub上の比較・読み取りのみ)。

流れ ​

  1. ステージングにデプロイされたら、前回の本番デプロイタグ(日付形式 YYYYMMDD)と develop の差分を GitHub で比較する
    • 前回タグは GitHub の Tags 一覧の先頭、または git fetch --tags && git tag -l '20*' --sort=-creatordate | head -1 で確認する
    • 比較 URL: https://github.com/makinokeiichi/slot-kouryaku/compare/<前回タグ>...develop
    • 入った PR と変わったファイルを確認する(書き込み・ブランチ作成はしない)
  2. 入った PR と変更ファイルから、「影響しそうなページ・管理画面」と「確認してほしい点」を短くまとめ、デプロイ後テスターに送る。運営統括にも写しを送る
  3. テスターがステージングを確認 → OK ならまっくがタグ(YYYYMMDD)を切って本番デプロイ → 本番確認でも同じまとめを使う

まとめの書き方(目安) ​

  • 比較範囲(前回タグ → develop)
  • 含めた主な PR(番号と一言)
  • 影響しそうな公開ページ / 管理画面
  • テスターに見てほしい点(チェックリスト A〜D のうち該当するものを指す)
  • 既知の非障害に触れる変更があれば一言

正本の確認項目は本ドキュメントの A〜E。差分まとめは「どこを重点的に見るか」のガイドであり、A〜E の代替ではない。

環境メモ ​

項目内容
ステージング URLhttps://www.staging.slotkouryaku.com/
管理画面ログイン/login_65228(/wp-login.php および /wp-admin/ 直アクセスは 403 が想定どおり)
テスター用ユーザー(ステージングのみ)例: makku-staging-admin

ステージングの日別記事・リンクが本番と違って確認できないときは、開発担当が 本番データの部分同期 で直近のデータを取り込む。

A. 公開ページ(ログアウト状態) ​

  • [ ] トップが開く(200)
  • [ ] 直近の日別記事を 2〜3 本開き、考察欄が表示されること。リロードしても問題ないこと
  • [ ] /gekkan-makk/ が開く
  • [ ] /member-login/ が開く(ログイン操作自体は任意)
  • [ ] (任意)/period-kishu-ranking/ が開く
  • [ ] 通常閲覧で async-warm-* が大量に 429 にならないこと(連打リロードでは 429 になり得る。少し待って 200 に戻るのは既知)

B. API(アプリケーションパスワード) ​

  • [ ] 認証ありでカスタム API が読めること。未認証は拒否されること
  • [ ] 例: ops-status / data-import / daily-article / x-announce / birthday / recommend / new-machine の読み取り
  • [ ] コアの /wp-json/wp/v2/* は HTML 403 のままであること(意図した挙動)

C. 管理画面(ログイン状態) ​

次の画面が開くこと:

  • [ ] min-repo HTML インポート
  • [ ] ana-slo 取得
  • [ ] 日別記事一覧 / 自動作成設定
  • [ ] 有料記事 AI 設定
  • [ ] 新台取得 + 機種リンク
  • [ ] 日別データ削除
  • [ ] デバッグログ

実行ボタンについて: 指示がある場合のみ、ステージングでインポート/更新の実行ボタンを押してよい。本番公開・本番操作は指示なしでは行わない。

D. インポート → 日別記事フロー ​

ステージングで 2026-10-05 に確認済み。デプロイ後も必要に応じて再確認する。

  • [ ] min-repo インポートで island + espasu が成功すること。未リンク機種はインポート前に確認が求められること
  • [ ] インポート後、日別記事にデータが出ること。「読み込み中」が張り付かないこと
  • [ ] POST /wp-json/daily-article/v1/articles/{id}/fields で考察が更新され、GET / フロントに反映されること(#3895 / #3916)
  • [ ] ヒートマップの layout-missing ログは既知。Fatal が増えていないことを見る

日別記事のメール欄(#4051) ​

日別記事キャッシュの無効化条件(世代・TTL・通知の経路)を変えたデプロイの後に行う。

  • [ ] デプロイ直後、管理画面の「キャッシュ管理 → 日付を指定してクリア」で当日と翌日をクリアする(デプロイ前に作られた空表示を残さないため)
  • [ ] P-WORLD メールの取り込みスロット(21:00 / 22:00 / 22:30)の後、GET /wp-json/ops-status/v1/pworld-mails?date=<翌日> を運用確認bot のアプリケーションパスワードで呼ぶ。items[].displayed が true のホールについて、mail_image_cache[].state が empty のまま 5 分以上残らないこと。取り込み後に cache_generation の日の値が増えていること
  • [ ] 公開 API とページでも確認する。async-mail-image は nonce なしだと 403 なので、ページ内の dailyArticleAsync.nonce を X-WP-Nonce に付け、Cookie も引き継ぐ
bash
D=2026-10-08 # 翌日(Y-m-d)
URL="https://www.slotkouryaku.com/daily-article/2026-10-8/" # 翌日の日別記事の URL
curl -s -c /tmp/cj.txt -A "Mozilla/5.0" "$URL" -o /tmp/p.html
N=$(grep -oE 'dailyArticleAsync=\{"restUrl":"[^"]+","nonce":"[0-9a-f]+"' /tmp/p.html | grep -oE '[0-9a-f]{10}"$' | tr -d '"')
curl -s -b /tmp/cj.txt -A "Mozilla/5.0" -H "X-WP-Nonce: $N" \
  "https://www.slotkouryaku.com/wp-json/daily-article/v1/async-mail-image?hall=island&date=$D"
grep -c 'mail-image--empty' /tmp/p.html
  • [ ] メールのあるホールで API が画像付きの HTML を返し、ページ HTML の mail-image--empty の数がメールのないホールの数以下であること
  • [ ] 直らないときは、日付を指定してクリアで暫定対応し、pworld-mails の結果(cache_generation と state)を #4051 に貼る

E. 既知の非障害・観察事項 ​

次は失敗扱いしない。様子を見て、悪化や Fatal 増加があれば報告する。

  • [ ] 連打リロードで async-warm-* が 429 になり得る(既知)
  • [ ] 一部日で warm は 200 でも「読み込み中」が残る場合がある(例: ステージング 10/2)。関連の自動テスト要望は #3931
  • [ ] インポート画面のラベルなしボタン(軽微)

関連 Issue ​

  • #3931(「読み込み中」残留などに関する自動テスト要望)
  • #3935
  • #3921
  • #3928
  • #3929
  • #3930
  • #3936(本チェックリストの一時置き場。本ドキュメントへ移設済み)
  • #4051(日別記事のメール欄が取り込み後も空表示のまま残る)

関連ドキュメント ​