【要約】skip ログに 1 列足したら 17 日連続見送りの本当の原因が即時に見えた話 [Zenn_Python] | Summary by TechDistill
> Source: Zenn_Python
Execute Primary Source
// Problem
開発者が、自身のデイトレードシステムにおいて、17営業日連続で取引がスキップされる事象に直面した。個別の拒絶理由はログに記録されていたが、全体的な傾向を把握できず、原因の特定に至らなかった。
- ・ログが自由記述の文字列のみで構成されていた。
- ・個別の事象は読めるが、構造的な問題が見えなかった。
- ・集計時に表記揺れが発生し、grepによる分析が困難だった。
// Approach
開発者は、ログの解像度を「読むための詳細」と「見るための集計」に分離する設計を採用した。これにより、個別の詳細を維持しつつ、全体傾向の可視化を可能にした。
- ・
RejectCategoryという列挙型(Enum)を導入した。 - ・カテゴリを
PHYSICAL,STRATEGY,RISK,MANUALの4値に限定した。 - ・「物理的制約」を最優先する階層構造を定義した。
- ・既存の自由記述(reason)は調査用にそのまま残した。
// Result
設計変更により、大量のログから問題の所在を即座に特定できた。これにより、場当たり的な修正を避け、根本原因への対策が可能となった。
- ・積み上げ棒グラフにより、原因が「資金制約(PHYSICAL)」に集中していることが判明した。
- ・戦略の調整ではなく、資金管理や商品選定の見直しという正しいアクションへ繋がった。
- ・実装コストは、列の追加と関数への引数追加のみで、極めて低かった。
Senior Engineer Insight
> ログ設計における「解像度の分離」は、運用フェーズのROIを決定づける。自由記述は「点」の調査には適すが、「線」の傾向把握には不向きである。カテゴリを3〜5値の低カーディナリティに抑える設計は、スケーラビリティと分析の容易さを両立させる。これはエラーハンドリングやAPIレスポンスの分析にも転用可能な、極めて実践的なパターンである。