【要約】"XBRL の『売上高』タグは20種類以上ある — 日本の有報を10年分正規化した話" [Zenn_Python] | Summary by TechDistill
> Source: Zenn_Python
Execute Primary Source
// Problem
開発者が大量のXBRLデータを横断検索しようとした際、データの不整合という課題に直面した。\n・会計基準や業種により、同一概念のタグが20種類以上存在する。\n・保険業の経常収益を売上と誤認する「罠タグ」が存在する。\n・BSの細目データがXBRLタグではなく、HTML形式のテキストブロックに埋め込まれている。\n・訂正有報の存在により、同一年度のデータが二重計上されるリスクがある。
// Approach
開発者は、データの整合性と網羅性を担保するため、3段構成のパイプラインを構築した。\n・優先度付き正規化マスタ:正規名に対し、候補タグと優先度を紐付け、最適なタグを自動選別する。\n・HTML TextBlockパーサ:HTML内の表から、表記揺れや単位、列数の違いを吸収して数値を抽出する。\n・訂正報告書フィルタリング:
doc_idに基づき、訂正版が出ている場合は原本を排除して二重計上を防ぐ。\n・サーバーレス配信構成:SQLiteとCloudflare R2、静的JSONを組み合わせ、DBレスで高速なスクリーニングを実現する。// Result
開発者は、4135社・10年分のデータを正規化し、約690MBのSQLite DBとして集約した。\n・edinetty.comにて、全社のスクリーニングや決算ランキング機能として実用化。\n・タグの優先度管理と監査用カラムにより、データの追跡可能性を確保。\n・R2経由の静的JSON配信により、低コストかつ低レイテンシな構成を実現。
Senior Engineer Insight
> XBRL正規化における実務的な課題が凝縮されている。特に、優先度を用いたタグ選別や、HTMLパースによる網羅性の確保は、非構造化データを扱う際の定石だ。設計面では、SQLiteとR2を組み合わせた配信構成が、読み取り特化型サービスとして極めて合理的である。ただし、訂正報による上書き問題や、運用に伴うマスタ更新の継続性は、長期運用における技術負債になり得るため、注意が必要である。