【要約】タイトルと本文ハッシュで二重投稿を防ぐ - テスト設計 [Zenn_Python] | Summary by TechDistill
> Source: Zenn_Python
Execute Primary Source
// Problem
自動投稿プロセスを運用するエンジニアが、再試行や複数キューの発生により、同一内容の記事を二重投稿してしまう問題に直面している。従来の判定手法では、以下の課題を解決できなかった。
- ・ファイル名による判定は、リネームに弱いため不十分である。
- ・タイトルのみの判定では、見出しの微細な変更を検知できない。
- ・無条件な再試行が、外部サービスへの重複投稿を招く。
// Approach
開発者は、コンテンツの同一性を数学的に定義し、工程ごとの状態を明示的に管理する手法を採用した。これにより、処理の進捗を「推測」ではなく「証拠」に基づいて制御する。
- ・正規化タイトルと本文のSHA-256ハッシュを比較し、重複を判定する。
- ・工程を「生成」「品質」「操作」「結果」の4段階に分離し、各工程の成果物をJSONで出力する。
- ・在庫管理(未公開候補数)に基づき、補充と公開のプロセスを独立して制御する。
// Result
この設計により、運用者はシステムの停止やエラー発生時でも、二重投稿を避けつつ正確な復旧が可能となった。具体的な改善点は以下の通りである。
- ・「タスクの起動」ではなく「実URLの確認」を成功指標とすることで、真の達成度を可視化した。
- ・例外的な状態(画像生成失敗、認証切れ)を構造化して記録し、無駄な再試行を抑制した。
- ・再起動後もファイル成果物から再開することで、外部操作の重複を完全に防いだ。
Senior Engineer Insight
> 非常に堅実な設計である。単なるエラーハンドリングではなく、状態の契約を重視している点が実戦的だ。特に、完了条件を4段階に分ける設計は、分散システムにおける冪等性確保の定石と言える。ファイルI/Oを状態保持の正解とする判断も、不確実なメモリ状態に頼らない運用において信頼性が高い。ただし、JSONのスキーマ管理コストは増大するため、厳格な型定義が不可欠となる。