【EDINET XBRL】『連結経営指標等』の Fact だけを取得する方法【Arelle】

決算書(有価証券報告書ゆうかしょうけんほうこくしょ四半期報告書しはんきほうこくしょ)の XBRL から、

  • 連結経営指標等れんけつけいえいしひょうとう』の Fact だけを取得したい。
  • 『連結貸借貸借対照表』の Fact だけを取得したい。
  • 『連結損益計算書』の Fact だけを取得したい。
  • 『連結キャッシュ・フロー計算書』の Fact だけを取得したい。
  • 『提出会社の経営指標等(個別)』の Fact だけを取得したい。
  • 『貸借貸借対照表(個別)』の Fact だけを取得したい。
  • 『損益計算書(個別)』の Fact だけを取得したい。

といった目的を果たす方法です。

基本的には、表示リンクの内容を、linkRoleUri ごとに再帰的さいきてきにたどって、Fact を拾っていけばいいのですが、表示リンクの内容だけではうまくいきませんでした。

定義リンクarcroleアークロール

http://xbrl.org/int/dim/arcrole/dimension-default

をたどってから、表示リンクの arcrole

http://www.xbrl.org/2003/arcrole/parent-child

をたどったら、うまくいきました。

※ arcrole の文字列の定義は、それぞれ Arelle の XbrlConst.dimensionDefault と XbrlConst.parentChild から取得することもできました(XbrlConst を import したら使用できました)。

なぜ、『表示リンク』に加えて『定義リンク』の内容が必要だったのか?

理由は、表示リンクの parent-childペアレントチャイルド の内容だけだと、XBRL 報告書インスタンス (.xbrl) から Factファクト を拾っていくときに、Fact のコンテキストの scenarioシナリオ 要素を、うまく見分けることができなかったからです。

たとえば、表示リンクでは、連結を表す ConsolidatedMember の記載がありましたが、Fact の scenario 要素では、省略されていました。

そういったところで、Fact の取りこぼしが発生してしまいました。

省略されていた scenario 要素は、dimension-defaultディメンションデフォルト というものでした。

『EDINETタクソノミの概要説明 (PDF)』を見たら、コンテキストの scenario 要素には、『ディメンションデフォルト以外のメンバー』を設定しているというむねが書かれていました。

そして、dimension-default の内容は、定義リンクにありました。

そういうわけで、表示リンクから Fact を取得していくときに、定義リンクの内容が必要になりました。

定義リンクにあった、dimension-default の definitionArc タグの例です。

<link:definitionArc
    xlink:type="arc"
    xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default"
    xlink:from="ConsolidatedOrNonConsolidatedAxis"
    xlink:to="ConsolidatedMember"
    order="1.0" />

これを見ると分かりますが、from 属性と to 属性に、scenario 要素の explicitMemberエクスプリシットメンバー タグに入っていそうな文字列が入っていました。

~Axis とか、~Member みたいな接尾辞せつびじのついた文字列です。

これが、表示リンクから Fact をたどるときに、Fact の scenario 要素を見分けるヒントになりました。

表示リンクからの Fact の取りこぼしが、ほぼ、なくなりました。

Fact を、決算書の報告内容ごとに取得できるようになったのは、よかったです。

サマリや財務諸表ごとに、長期的な金額の推移を機械的に集計できるようになって、さらに便利になりました。

ところで、表示リンクの内容だけでは情報が足りなかったというのは、ほかにもありました。

様式ようしきツリー(報告書全体構造)』と『詳細しょうさいツリー』の linkroleリンクロール の区別です。

表示リンクの内容だけでは、どれが様式ツリーのリンクロールなのかがわかりませんでした。

EDINET の『タクソノミ要素リスト (xlsx)』にはリンクロールの定義が載っていましたが、どうせなら XBRL の zip ファイルだけで済ませたいところです。

様式ツリーのリンクロールは、表示リンクではなくて、XBRL の zip に同梱されている『マニフェストファイル (manifest_PublicDoc.xml)』に載っていました。

表示リンクの様式ようしきツリーのリンクロールの場所です。

『報告書インスタンス作成ガイドライン (PDF)』の『マニフェストファイルで使用する要素の一覧』に、説明がありました。

manifest タグ ⇒ tocComposition タグ ⇒ item タグの extrole 属性にありました。

マニフェストファイルの extrole 属性の例です。

<item
    in="presentation"
    ref="jpcrp030000"
    extrole="http://disclosure.edinet-fsa.go.jp/role/jpcrp/rol_CabinetOfficeOrdinanceOnDisclosureOfCorporateInformationEtcFormNo3AnnualSecuritiesReport" />

これで、様式ツリーのリンクロールを取得することができました。

今のところ活用していませんが、やり方がわかったのですっきりしました。

それにしても、XBRL ファイルを仕様にそって読み込んでいくのは、なかなか大変な作業でした。

自分は『都度、必要になったときだけ仕様書を見て、実験コードを書いて、目的が果たせたら採用する』といった感じで、少しずつ作っています。

仕様を全部把握するには時間が足りなかったですし、Python コードを書く時間も足りなかったです。

個人の限界ですね。

あと、うまく処理できなかった XBRL ファイルが『本当に XBRL のミスなのか?』それとも『自分の理解が間違っているのか?』を判断するのにも、たくさん時間を取られました。

(XBRL の内容が間違っていた場合もありましたし、自分の理解が間違っていた場合もありました。)

自分は、『長期的な業績の推移が見たい』とか、『勘定科目を自動的に集約したい』といった目的が果たせれば、なんでもいいかなって思っています。

XBRL と XML の技術は複雑でしたが、目的を限定すれば、なんとかなりました。

上場企業の決算情報を、自在に集計できるというのは、やはり良かったです。

タイトルとURLをコピーしました