よく分からないXBRLをざっくり理解したい男たち!!

# 1. 趣旨
有価証券報告書の分析をしようとすると避けては通れない「XBRL」について、最低限知っておけばよいことを備忘録として書いておきます。

内さま風のタイトルになったのは、Amazonプライムで人間ドックのやつ見ながら書いてたからです。
内さまおもしろい（語彙力）

# 2. XBRLとは
XMLを財務報告用に特化させた言語。
有価証券報告書のうち、XBRLで作成されるドキュメントは財務諸表[^1]のうち以下のもの。

- 貸借対照表
- 損益計算書
- 株主資本等変動計算書
- キャッシュフロー計算書

[^1]: 財務諸表は、連結・個別の両方を指します。なお、連結財務諸表作成会社は個別キャッシュフロー計算書は作成されません。

# 3. 基本的構造

XBRLの特徴は、その基礎となるXMLの特徴と同じです。
なので、ある程度XMLがあるほうがXBRLも理解しやすいです。

XMLの知識がある人は、「XBRLの特徴」まで飛ばしてOKです。

## 3-1. XMLの特徴
XMLは、**情報と表示ルールを分離する**点に特徴があります。
HTMLでいう、HTML（本体）とCSS（デザイン）の分離に相当すると言ってもいいでしょう。

XML本体は情報を格納し、実際の表示はXSLというファイルに従うことになります。

### 3-1-1. XMLの基本的記述ルール
#### 3-1-1-1. 要素
要素は、タグで囲われた部分（タグ自体も含む）を指します。
例えば、CASH要素は、以下の全体を指します。

```XML
<CASH> 1000 </CASH>
```

#### 3-1-1-2. 属性
属性は、要素に付加情報を提供するものです。
例えば、CASH要素に表示通貨が円であることを付加するには、以下のように書きます。


```XML
<CASH CURRENCY = "JPY"> 1000 </CASH>
```



## 3-2. XBRLの特徴
XBRLもまた、XMLのように情報と表示が分離されるように設計されています。
利用者が財務諸表情報を統一的に処理できるようにするためです。

XBRLもXMLも、基本的な記述ルールは同じです。
ただ、「**タクソノミ**」という概念が登場することで、~~ガラパゴス化~~少々複雑化するのです。

### 3-2-1. サンプルのダウンロード
以降、公式に配布されているサンプルを利用して説明します。
実際のファイルと照らし合わせながら読みたい方は、以下のリンクからダウンロードできます。

[2020年版EDINETタクソノミの公表について：金融庁](https://www.fsa.go.jp/search/20191101.html)

- `3. 公表資料 > (1)EDINETタクソノミ関連 > (h)サンプルインスタンス(ZIP)`をダウンロード・展開。
- `サンプルインスタンス\ダウンロードデータ\02_開示府令-有価証券報告書\S002XXXX\XBRL\PublicDoc\jpcrp030000-asr-001_X99001-000_2020-03-31_01_2020-06-28.xbrl`をUTF-8対応のエディタで開く。<BR>（筆者はNotepad++を使ってます。）

### 3-2-2. タクソノミ
タクソノミは、XBRLファイル本体（「**インスタンス**」といいます）に記述された要素の統一的な解釈ルールを定義する枠組みです。
「電子的タグの集合[^2]」とも説明されます。
**細かい仕組みは死ぬほど複雑なので、理解する必要は全くないです。**

[^2]: https://www.fsa.go.jp/search/20191101.html

#### 3-2-2-1. 例示
例えば、実際に連結上の現金及び預金高をインスタンスに記述すると、このようなコードとなります。

```XML:4301行目
  <jppfs_cor:CashAndDeposits contextRef="CurrentYearInstant" unitRef="JPY" decimals="-6">95111000000</jppfs_cor:CashAndDeposits>
```

それぞれの要素・属性・引数の意味は、次のようになります。

|要素・属性・引数|意味|
|---|---|
| jppfs_cor:CashAndDeposits | CashAndDeposits (現金及び預金[^3]) 要素。<br>接頭辞`jpcrp_cor`は、XMLでいう名前空間[^4]を指す。|
|contextRef="CurrentYearInstant"|環境属性`contextRef`。<br>当年度の情報は、引数に`CurrentYearInstant`と設定する。|
|unitRef="JPY"|通貨属性。<br>日本円であることを、引数`JPN`で設定する。|
|decimals="-6"|精度属性。<br>`-6`であれば、「6桁省略する＝百万円単位」で表示する。<br>仮に`-3`であれば、「3桁省略する＝千円単位」で表示される。|

今回重要になるのは、一番上の`jppfs_cor:CashAndDeposits`です。
例えば、同じ現金預金について、ある企業では`Cash`要素、別の企業では`Money`要素として記述していると、情報利用者は機械的に情報を処理できないので不便です。
そのため、**各要素の定義と要素間の関係性を定義した「タクソノミ」**[^5]を統一的なルールとして利用させることで、分析を容易にするわけですね。`CashAndDeposits`要素が基本的にどのように動作するかは（例えば、貸借対照表のどこに記載されるか）、XBRLファイル本体（インスタンス）ではなく、タクソノミという外部辞書によって定義・制御されているわけです。

ところで、タクソノミは1つのインスタンスのなかに複数存在することがあります。

```XML:1～2行目
<?xml version="1.0" encoding="UTF-8"?>
<xbrli:xbrl xmlns:link="http://www.xbrl.org/2003/linkbase" xmlns:jpcrp030000-asr_X99001-000="http://disclosure.edinet-fsa.go.jp/jpcrp030000/asr/001/X99001-000/2020-03-31/01/2020-06-28" xmlns:jpdei_cor="http://disclosure.edinet-fsa.go.jp/taxonomy/jpdei/2013-08-31/jpdei_cor" xmlns:xbrldi="http://xbrl.org/2006/xbrldi" xmlns:jpcrp_cor="	" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xbrli="http://www.xbrl.org/2003/instance" xmlns:jppfs_cor="http://disclosure.edinet-fsa.go.jp/taxonomy/jppfs/2019-11-01/jppfs_cor" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:iso4217="http://www.xbrl.org/2003/iso4217">
```

`xmlns:`は、インスタンス内の名前空間を1つずつ定義するものですが、逆説的には、1つの有価証券報告書の中にこれだけの辞書 (≒名前空間) が使われているということです。すると、ある要素に対してどの辞書を使わないといけないのか、分からなくなってしまいます。
そこで、要素の前に`jppfs_cor:`と記述することで、`jppfs_cor`という名前空間としてインスタントに関連付けたタクソノミ（辞書）を使用することを明示きるわけです。

### 3-2-3. 欲しい要素はどこにある？
まあ正直、今までの話は最悪知らなくてもいいので、**ココだけは押さえておいてください**。
つまり、**売上、現金預金といった各財務諸表項目等が、どの要素に含まれているのかを特定する**方法です。

サンプル配布ページと同じところに、要素と表示科目名等との対応表が公開されています。


[2020年版EDINETタクソノミの公表について：金融庁](https://www.fsa.go.jp/search/20191101.html)

- `3. 公表資料 > (1)EDINETタクソノミ関連 > (e)タクソノミ要素リスト（EXCEL）`と`(f)勘定科目リスト（EXCEL）`[^6]をダウンロード・開く。
- 財務諸表項目（注記除く）については、(f)を参照。
    - 分析対象のカテゴリーに合うタブを開き、必要情報を参照する。（基本的には一般商工業でよい）
    - 表示科目名はB列（標準ラベル）、名前空間はH列、要素名はI列に記載されている。
    - 例えば、一般企業の現金及び預金の名前空間は`H8`、要素名は`I8`セルに記載されている。
- 財務諸表項目以外および注記については、(e)を参照。
    - 分析対象に対応した要素リストを開く。（一般的な分析対象である有価証券報告書は、9番目にある「第三号様式[^7]」です）
    - 列名等については上記とほぼ一緒なので割愛。


こんな感じで、エクセルファイルから、**「名前空間」と「要素名」を把握できれば、ほぼほぼ特定できます**。
例えば、現金預金の名前空間は`jppfs_cor`、要素名は`CashAndDeposits`なので、これを`jppfs_cor:CashAndDeposits`とコロンで繋げれば完成。この`jppfs_cor:CashAndDeposits`という要素（タグ）内に現金預金のコンテンツがあります。

#### 3-2-3-1. もっと知りたい！
......厳密にはあとワンステップ必要です。
これだけだと、「単体 / 連結」、「前期末 / 当期末」のどの情報が欲しいかを特定できていないので、これは**環境属性**`contextRef`**という別の概念を使って改めて特定する必要があります**。詳しくは、[続編の記事](https://qiita.com/zakkiiii/items/21ac1bac9ec76142a7bd#4-3-1-2-2-contextref%E5%B1%9E%E6%80%A7)をご覧ください。


# 4. おわりに
~~一般投資家がこんなの理解できるのかまあまあ疑問ではありますが、~~とりあえず大きな構造さえ分かってしまえばこっちのもんですよ。
基本的にXMLと同様に扱えるので、スクレイピングした上でPython、R等の各種言語で数値データを取得できるようになるはずです。


おしまい。

# 5. 続編

- [xml2パッケージを使ってXBRLから財務情報をRで吸い上げる](https://qiita.com/zakkiiii/items/21ac1bac9ec76142a7bd)

XBRLファイルから財務諸表項目をR上で抽出してみました。

# 6. 参考文献
- 坂上 学, 石綿 勇 (2008) 『XBRLの実務―会計実務のためのXBRL入門』
- 山田 祥寛 (2004) 『10日でおぼえるXML入門教室』翔泳社
- [2020年版EDINETタクソノミの公表について：金融庁](https://www.fsa.go.jp/search/20191101.html)
- [XBRLでは、リンクベースを使うと言われていますが、リンクベースとは何ですか？](https://faq.jp.fujitsu.com/app/answers/detail/a_id/3888/~/xbrl%E3%81%A7%E3%81%AF%E3%80%81%E3%83%AA%E3%83%B3%E3%82%AF%E3%83%99%E3%83%BC%E3%82%B9%E3%82%92%E4%BD%BF%E3%81%86%E3%81%A8%E8%A8%80%E3%82%8F%E3%82%8C%E3%81%A6%E3%81%84%E3%81%BE%E3%81%99%E3%81%8C%E3%80%81%E3%83%AA%E3%83%B3%E3%82%AF%E3%83%99%E3%83%BC%E3%82%B9%E3%81%A8%E3%81%AF%E4%BD%95%E3%81%A7%E3%81%99%E3%81%8B%EF%BC%9)
- [Xbrlについて調べてみた - Qiita](https://qiita.com/MAIMAI816/items/c9baf4a4e27c146df7c6)
- [XBRLのほんとのほんとの基礎 - Qiita](https://qiita.com/MAIMAI816/items/c9baf4a4e27c146df7c6)


[^3]: ここでいう現金及び預金は連結上の数値です。単体の場合の引数は、「CurrentYearInstant_NonConsolidatedMember」です。

[^4]: 名前空間とは、要素間の衝突を防ぐ仕組みです。<br>R上で関数の衝突を防ぐためにパッケージ名を接頭辞として使うのと意義は同じです。<br>例えば、同じ現金要素でも、「連結会計上の現金」と「個別会計上の現金」、「税務上の現金」など様々な意味で使われる可能性があるので、どの意味で使われているかを明らかにするために、接頭辞を付けます。`jppfs_cor:`は、現金要素が「連結会計上の用語」として使われていることを明示します。

[^5]: タクソノミは、「**スキーマファイル**（または、**タクソノミ・スキーマ**）」と「**リンクベース**」という、2つの辞書によって構成されています。<br>スキーマファイルは要素の概念を定義した辞書です。例えば、CashAndDepositsといった要素名や、contextRefといった属性を定義します。拡張子は.XSD。<br>リンクベースは、要素間の関係の定義した辞書です。例えば、「売上総利益＝売上高 - 売上原価」という計算関係、上から「売上高→売上原価」という表示順番、「資産の部 > 流動資産 > 現金預金」という親子関係、「現金及び預金」という表示科目名などを定義します。拡張子は.XML。

[^6]: IFRSの場合は、「**(g)Excel国際会計基準タクソノミ要素リスト**」を参照。

[^7]: 同じ有価証券報告書でも、少額募集等についての開示は、10番の「第三号の二様式」になります。その他、企業と開示様式の対応関係は、[EDINETの公表資料 (https://disclosure.edinet-fsa.go.jp/E01NW/yousikiLink.pdf)](https://disclosure.edinet-fsa.go.jp/E01NW/yousikiLink.pdf)を参照してください。