XBRL解析が難しいので、簡易的に財務諸表を作ってみた


A-SaaSアドベントカレンダー2017
22日目です!残すところあと3日♪
本日はアカウンティング・サース・ジャパン株式会社 プロダクト開発チーム@saya38が担当させていただきます
よろしくお願いします(´∀`艸)♡

◆そもそも

【去年の】弊社のアドベントカレンダーにこんな投稿があります(私のではなく)

XBRLのほんとのほんとの基礎

XBRLとは国税庁に財務諸表を送信するときに使われているマークアップ言語
らしいです( ..)φ_

XBRL・・・(初めて聞いた)よっしゃーこのデータで財務諸表を作ってみよう!

◆簡易的に

さっそく始めたのですが・・・

複雑・・・(´;ω;`)

読み解くと項目の表示順序関係なども取り出せるのですが
完全に理解するには時間がかかりそうです
「タクソノミ」も引っ張ってこないとなりません

もし利用する科目や順序が決まっているのであれば
紐付け情報をテーブルに登録し
XBRLから金額情報などだけ抜き出しマッチングして財務諸表を作っちゃえば・・・

短時間で作った財務諸表メモです

◆ポイント

1.会計期間

            <xbrli:context id="Prior1YearNonConsolidatedInstant">     
              <xbrli:entity>
                <xbrli:identifier scheme="http://www.e-tax.nta.go.jp/">アカウンティング・サース・ジャパン株式会社</xbrli:identifier>
              </xbrli:entity>
              <xbrli:period>
                <xbrli:instant>2017-03-31</xbrli:instant>
              </xbrli:period>
              <xbrli:scenario>
                <jpfr-oe:NonConsolidated/>
              </xbrli:scenario>
            </xbrli:context>
            <xbrli:context id="CurrentYearNonConsolidatedInstant">
              <xbrli:entity>
                <xbrli:identifier scheme="http://www.e-tax.nta.go.jp/">アカウンティング・サース・ジャパン株式会社</xbrli:identifier>
              </xbrli:entity>
              <xbrli:period>
                <xbrli:instant>2018-03-31</xbrli:instant>
              </xbrli:period>
              <xbrli:scenario>
                <jpfr-oe:NonConsolidated/>
              </xbrli:scenario>
            </xbrli:context>
            <xbrli:context id="CurrentYearNonConsolidatedDuration">
              <xbrli:entity>
                <xbrli:identifier scheme="http://www.e-tax.nta.go.jp/">アカウンティング・サース・ジャパン株式会社</xbrli:identifier>
              </xbrli:entity>
              <xbrli:period>
                <xbrli:startDate>2017-04-01</xbrli:startDate>
                <xbrli:endDate>2018-03-31</xbrli:endDate>
              </xbrli:period>
              <xbrli:scenario>
                <jpfr-oe:NonConsolidated/>
              </xbrli:scenario>
            </xbrli:context>

まず会計期間に関しては以下のように設定されています

Prior1YearNonConsolidatedInstant → 会計年度の前期の期末日時点(又は当期
の期首日時点)
・・・ <xbrli:instant>2017-03-31</xbrli:instant>→期末日
CurrentYearNonConsolidatedInstant → 会計年度の期末日 時点
・・・ <xbrli:instant>2018-03-31</xbrli:instant>→期末日
CurrentYearNonConsolidatedDuration → 会計年度の期間
・・・ <xbrli:startDate>2017-04-01</xbrli:startDate>→期首日
・・・ <xbrli:endDate>2018-03-31</xbrli:endDate>→期末日

貸借対照表であれば期末日時点での状況を記載するためCurrentYearNonConsolidatedInstant
の情報を利用することになります
損益計算書などは会計期間の状況であるためCurrentYearNonConsolidatedDurationです

2.テーブル

表示科目や形式、順序が決まっているので
表示用に勝手に定義したテーブルです
この情報順にXBRLを検索し合致した情報があれば出力する~というイメージです

例えば貸借対照表・・・

elementName accountName prefixId level
CashAndDeposits 現金及び預金 jpfr-t-cte 3
NotesReceivableTrade 受取手形 jpfr-t-cte 3
AccountsReceivableTrade 売掛金 jpfr-t-cte 3
Merchandise 商品 jpfr-t-cte 3
AdvancePaymentsTrade 前渡金 jpfr-t-cte 3
DepositsPaid 預け金 jpfr-t-cte 3
CashHandGainLoss 現金過不足 jpfr-t-cte 3
OtherCA その他 jpfr-t-cte 3
CurrentAssets 流動資産合計 jpfr-t-cte 6

levelを指定しておき、組版(? インデントや罫線など)に利用します
同様に損益計算書や製造原価報告書も同様にテーブル定義すると作成可能です

株主資本等変動計算書は科目名の配下に摘要も存在するため、もう少しテーブルの情報が増えます
前期末の情報=今期首の情報
なのでXBRLのPrior1YearNonConsolidatedInstantも登録します

elementName accountName sortId contextRef summaryName prefixId level
CapitalStock 資本金 1 Prior1YearNonConsolidatedInstant 資本金 jpfr-t-cte 4
IssuanceOfNewSharesCAP 資本金 2 CurrentYearNonConsolidatedDuration 新株の発行 jpfr-t-cte 4
IssuanceOfNewSharesExerciseOfSubscriptionRightsToSharesCAP 資本金 2 CurrentYearNonConsolidatedDuration 新株予約権の行使 jpfr-t-cte 4
CapitalReductionCAP 資本金 2 CurrentYearNonConsolidatedDuration 減資 jpfr-t-cte 4
OtherChangesOfItemsDuringThePeriodCAP99 資本金 2 CurrentYearNonConsolidatedDuration その他 jpfr-t-cte 4
TotalChangesOfItemsDuringThePeriodCAP 資本金 2 CurrentYearNonConsolidatedDuration 当期変動額合計 jpfr-t-cte 4

個別注記表も同じ仕組みを使いaccountNameを情報のタイトル、データを内容として出力しました

3.マッチング

説明するまでもないですが紐付け情報をテーブルに登録し
XBRLから金額情報などだけ抜き出しマッチングして財務諸表を作成する
とはこんなイメージです

テーブルに登録してある順に上からXBRLを検索し
情報があれば印字・・・Levelが0なら大分類、3なら金額の箇所に
6なら合計金額として罫線を引く 等

金額等の情報は<XBRL2_1_INSTANCE>タグにあります

4.ちなみに

XBRLには独自科目名も登録することができます
その場合elementNameが何の項目であるのかは
XBRL内の<XBRL2_1_LINKBASE>タグ内にあります

最後に

今回は短時間で作成してしまいましたが
いつかはちゃんと解析して財務諸表を作成したいなーと思います
これじゃ、こういう場合ダメだよ
などご意見などありましたらぜひぜひよろしくお願いします

読んでいただきありがとうございました٩( ^◡^ )( ´◡` )۶