[{"data":1,"prerenderedAt":445},["ShallowReactive",2],{"content-/cf-standards-phase-f-resolution":3,"all-pages-for-dir":443,"og-image-/cf-standards-phase-f-resolution":444},{"id":4,"title":5,"body":6,"category":423,"description":424,"extension":425,"meta":426,"navigation":108,"path":427,"project_name":428,"published":429,"publishedAt":430,"seo":431,"stem":432,"tags":433,"todo":440,"unpublished":429,"updatedAt":441,"__hash__":442},"pages/2026-04/2026-04-18/cf-standards-phase-f-resolution.md","会計基準条文取得 Phase F -- 解決率90%達成までの試行錯誤",{"type":7,"value":8,"toc":413},"minimark",[9,13,17,30,33,36,40,43,59,61,64,67,128,131,133,136,139,149,151,154,161,164,166,169,180,187,193,327,330,332,335,391,398,400,403,406,409],[10,11,12],"h2",{"id":12},"この日やったこと",[14,15,16],"p",{},"会計基準条文取得の残り31件を潰しにかかった。前日Phase Eまでで223件が解決済み（87.8%）、残りは3カテゴリに分かれていた。",[18,19,20,24,27],"ul",{},[21,22,23],"li",{},"ガイドライン条文 3件",[21,25,26],{},"連結財務諸表規則 4条文",[21,28,29],{},"実務指針の条文番号ずれ 2件（18-2項、36-4項）",[14,31,32],{},"1つずつ片付けて、最終的にresolved 235件・解決率90.0%に到達した。条文番号付き引用は100%解決。残り26件は条文番号なしの一般参照（「連結C/F作成基準では...」のような言及）だけになった。",[34,35],"hr",{},[10,37,39],{"id":38},"ガイドライン条文の取得-e-govに載っていない","ガイドライン条文の取得 -- e-Govに載っていない",[14,41,42],{},"最初にガイドライン3件に手をつけた。いつものようにe-Gov法令APIから取得しようとしたが、ガイドラインはe-Govに収録されていなかった。法令ではなく、金融庁が独自に出している文書だからだ。",[14,44,45,46,50,51,54,55,58],{},"金融庁のWebサイトからHTMLを直接取得する方向に切り替えた。リダイレクトが入っていたので追跡して、3件分の条文テキストを抜き出した。",[47,48,49],"code",{},"standards.json","には",[47,52,53],{},"zaimu-guideline","と",[47,56,57],{},"renketsu-zaimu-guideline","が登録済みだったので、provisionsファイルの作成だけで済んだ。",[34,60],{},[10,62,63],{"id":63},"正規表現のalternation順序バグ",[14,65,66],{},"ガイドラインのprovisionsを作ってビルドし直したところ、resolved数が思ったより伸びない。調査すると、正規表現のalternationで「連結財務諸表規則」が「連結財務諸表規則ガイドライン」より先にマッチしていた。",[68,69,74],"pre",{"className":70,"code":71,"language":72,"meta":73,"style":73},"language-python shiki shiki-themes vitesse-light vitesse-light","# NG: 短い方が先にマッチして、ガイドラインが拾えない\nr'連結財務諸表規則|連結財務諸表規則ガイドライン'\n\n# OK: 長い文字列を先に置く\nr'連結財務諸表規則ガイドライン|連結財務諸表規則'\n","python","",[47,75,76,85,103,110,116],{"__ignoreMap":73},[77,78,81],"span",{"class":79,"line":80},"line",1,[77,82,84],{"class":83},"sxvE3","# NG: 短い方が先にマッチして、ガイドラインが拾えない\n",[77,86,88,92,96,100],{"class":79,"line":87},2,[77,89,91],{"class":90},"stQ0i","r",[77,93,95],{"class":94},"sMJiu","'",[77,97,99],{"class":98},"sdGka","連結財務諸表規則|連結財務諸表規則ガイドライン",[77,101,102],{"class":94},"'\n",[77,104,106],{"class":79,"line":105},3,[77,107,109],{"emptyLinePlaceholder":108},true,"\n",[77,111,113],{"class":79,"line":112},4,[77,114,115],{"class":83},"# OK: 長い文字列を先に置く\n",[77,117,119,121,123,126],{"class":79,"line":118},5,[77,120,91],{"class":90},[77,122,95],{"class":94},[77,124,125],{"class":98},"連結財務諸表規則ガイドライン|連結財務諸表規則",[77,127,102],{"class":94},[14,129,130],{},"正規表現のalternationは左から順に評価されるので、部分文字列を含む選択肢は長い方を先に書く必要がある。基本的なことだが、パターンが増えると見落とす。",[34,132],{},[10,134,135],{"id":135},"文字化けの一括修正",[14,137,138],{},"alternation順序を直す最中に、ファイル全体にU+FFFD（置換文字）が散在していることに気づいた。「連結財務諸表規則」の「規」が壊れていて、正規表現がそもそもマッチしない状態だった。",[14,140,141,144,145,148],{},[47,142,143],{},"ABBREV_TO_ID","辞書やパターン定義など5箇所で文字化けを発見し、一括修正した。修正後にビルドし直すと、今まで検出できなかった",[47,146,147],{},"連結財務諸表規則","への条文参照が新たに拾えるようになり、unresolved件数が一時的に増えた。隠れていた引用が表面化した形だ。",[34,150],{},[10,152,153],{"id":153},"連結財務諸表規則の条文取得",[14,155,156,157,160],{},"文字化け修正で新たに検出された",[47,158,159],{},"renketsu-zaimu-kisoku","の条文（3条、14条、84条、90条）をe-Govから取得した。XMLが途中で切れるトラブルがあり、HTMLページから直接取得に切り替えた場面もあった。第3条は附則（改正経過措置）が先に引っかかり、本則の第3条を取り直す一幕もあった。",[14,162,163],{},"4条文を登録して再ビルド。resolved 235件（+9）に伸びた。",[34,165],{},[10,167,168],{"id":168},"フォールバック再分類ロジック",[14,170,171,172,175,176,179],{},"残り2件の実務指針18-2項と36-4項。書籍には「実務指針18-2項」とだけ書かれているが、extractorは文脈からCF実務指針（",[47,173,174],{},"cf-jitsumu-shishin","）に振り分けてしまう。実際には持分法実務指針（",[47,177,178],{},"jicpa-09-mochibuhou-jitsumu","）の条文だった。",[14,181,182,183,186],{},"既存の再分類ロジックは",[47,184,185],{},"base_num > 49","で金融商品実務指針に振り分けるルールだけだった。これでは18-2や36-4は対象外になる。",[14,188,189,192],{},[47,190,191],{},"provisions_index","を使ったフォールバックを追加した。CF実務指針に該当条文が存在しない場合、他の実務指針系provisionsファイルを順番に探す方式だ。",[68,194,196],{"className":70,"code":195,"language":72,"meta":73,"style":73},"# CF実務指針に条文が見つからない場合、他の実務指針を探す\nif standard_id == 'cf-jitsumu-shishin' and num not in provisions_index.get('cf-jitsumu-shishin', {}):\n    for alt_id in provisions_index:\n        if 'jitsumu' in alt_id and num in provisions_index[alt_id]:\n            standard_id = alt_id\n            break\n",[47,197,198,203,260,276,310,321],{"__ignoreMap":73},[77,199,200],{"class":79,"line":80},[77,201,202],{"class":83},"# CF実務指針に条文が見つからない場合、他の実務指針を探す\n",[77,204,205,209,213,216,219,221,223,226,229,232,235,238,242,245,248,250,252,254,257],{"class":79,"line":87},[77,206,208],{"class":207},"sHkkW","if",[77,210,212],{"class":211},"sG7-3"," standard_id ",[77,214,215],{"class":90},"==",[77,217,218],{"class":94}," '",[77,220,174],{"class":98},[77,222,95],{"class":94},[77,224,225],{"class":90}," and",[77,227,228],{"class":211}," num ",[77,230,231],{"class":90},"not",[77,233,234],{"class":90}," in",[77,236,237],{"class":211}," provisions_index",[77,239,241],{"class":240},"shFtX",".",[77,243,244],{"class":211},"get",[77,246,247],{"class":240},"(",[77,249,95],{"class":94},[77,251,174],{"class":98},[77,253,95],{"class":94},[77,255,256],{"class":240},",",[77,258,259],{"class":240}," {}):\n",[77,261,262,265,268,271,273],{"class":79,"line":105},[77,263,264],{"class":207},"    for",[77,266,267],{"class":211}," alt_id ",[77,269,270],{"class":207},"in",[77,272,237],{"class":211},[77,274,275],{"class":240},":\n",[77,277,278,281,283,286,288,290,292,295,297,299,301,304,307],{"class":79,"line":112},[77,279,280],{"class":207},"        if",[77,282,218],{"class":94},[77,284,285],{"class":98},"jitsumu",[77,287,95],{"class":94},[77,289,234],{"class":90},[77,291,267],{"class":211},[77,293,294],{"class":90},"and",[77,296,228],{"class":211},[77,298,270],{"class":90},[77,300,237],{"class":211},[77,302,303],{"class":240},"[",[77,305,306],{"class":211},"alt_id",[77,308,309],{"class":240},"]:\n",[77,311,312,315,318],{"class":79,"line":118},[77,313,314],{"class":211},"            standard_id ",[77,316,317],{"class":240},"=",[77,319,320],{"class":211}," alt_id\n",[77,322,324],{"class":79,"line":323},6,[77,325,326],{"class":207},"            break\n",[14,328,329],{},"再ビルドで18-2と36-4の2件が解決。dedup処理で引用の重複も整理され、total 261件。",[34,331],{},[10,333,334],{"id":334},"最終結果",[336,337,338,354],"table",{},[339,340,341],"thead",{},[342,343,344,348,351],"tr",{},[345,346,347],"th",{},"指標",[345,349,350],{},"Before",[345,352,353],{},"After",[355,356,357,369,380],"tbody",{},[342,358,359,363,366],{},[360,361,362],"td",{},"resolved",[360,364,365],{},"223",[360,367,368],{},"235",[342,370,371,374,377],{},[360,372,373],{},"unresolved",[360,375,376],{},"31",[360,378,379],{},"26",[342,381,382,385,388],{},[360,383,384],{},"解決率",[360,386,387],{},"87.8%",[360,389,390],{},"90.0%",[14,392,393,394,397],{},"条文番号付き引用は全て解決済み。残り26件は",[47,395,396],{},"cf-sakusei-kijun","への一般参照で、条文番号が付いていない「連結C/F作成基準では...」のような言及だ。これらは基準全体への参照なので、個別条文のマッチングとは性質が異なる。対応方針は次回判断する。",[34,399],{},[10,401,402],{"id":402},"振り返り",[14,404,405],{},"e-Govで取得 → ガイドラインはFSAサイト → 文字化け発見 → 一括修正 → 正規表現バグ → 連結財規取得 → 再分類ロジック追加、と作業が連鎖的に展開した。1つ直すと次の問題が見える。文字化けを直したら隠れていた引用が出てきて、そこから連結財務諸表規則の条文取得が必要になり、さらに実務指針の再分類ロジックも書き直す流れになった。",[14,407,408],{},"正規表現のalternation順序は初歩的なミスだが、パターンが40件以上あると目視では見落とす。長い文字列を先に並べるソート処理を入れておくべきだった。",[410,411,412],"style",{},"html pre.shiki code .sxvE3, html code.shiki .sxvE3{--shiki-default:#A0ADA0;--shiki-dark:#A0ADA0}html pre.shiki code .stQ0i, html code.shiki .stQ0i{--shiki-default:#AB5959;--shiki-dark:#AB5959}html pre.shiki code .sMJiu, html code.shiki .sMJiu{--shiki-default:#B5695977;--shiki-dark:#B5695977}html pre.shiki code .sdGka, html code.shiki .sdGka{--shiki-default:#B56959;--shiki-dark:#B56959}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sHkkW, html code.shiki .sHkkW{--shiki-default:#1E754F;--shiki-dark:#1E754F}html pre.shiki code .sG7-3, html code.shiki .sG7-3{--shiki-default:#393A34;--shiki-dark:#393A34}html pre.shiki code .shFtX, html code.shiki .shFtX{--shiki-default:#999999;--shiki-dark:#999999}",{"title":73,"searchDepth":87,"depth":87,"links":414},[415,416,417,418,419,420,421,422],{"id":12,"depth":87,"text":12},{"id":38,"depth":87,"text":39},{"id":63,"depth":87,"text":63},{"id":135,"depth":87,"text":135},{"id":153,"depth":87,"text":153},{"id":168,"depth":87,"text":168},{"id":334,"depth":87,"text":334},{"id":402,"depth":87,"text":402},"dev","CF計算書の会計基準引用261件のうち、残り31件の条文取得に着手。ガイドライン条文のFSAサイト取得、正規表現バグ修正、文字化け一括修正、provisions_indexフォールバック再分類を経て解決率87.8%から90.0%に到達した記録","md",{},"/cf-standards-phase-f-resolution","eurekapu-nuxt4",false,"2026-04-18T00:00:00.000Z",{"title":5,"description":424},"2026-04/2026-04-18/cf-standards-phase-f-resolution",[434,435,436,437,438,439],"会計基準","CF計算書","正規表現","Python","e-Gov","パーサ","memo",null,"gWSGBA8U_iyfTYs89AEUqZNIQ3ZDTPEL4tjA8_z9KRg",[],"https://log.eurekapu.com/og/blog/cf-standards-phase-f-resolution.png?v=2026-04-18T00%3A00%3A00.000Z&title=%E4%BC%9A%E8%A8%88%E5%9F%BA%E6%BA%96%E6%9D%A1%E6%96%87%E5%8F%96%E5%BE%97%20Phase%20F%20--%20%E8%A7%A3%E6%B1%BA%E7%8E%8790%25%E9%81%94%E6%88%90%E3%81%BE%E3%81%A7%E3%81%AE%E8%A9%A6%E8%A1%8C%E9%8C%AF%E8%AA%A4&author=Kei%20Komatsu&sig=d17cfb4c31ab9054",1780786052813]