財務情報記述言語XBRLで記述された データを 扱う

XBRLで記述された財務データを扱う
言語処理系の提案
高尾 祐治†,松下 誠†,井上 克郎†,湯浦 克彦‡
†
大阪大学 大学院情報科学研究科
‡
株式会社日立製作所 ビジネスソリューション事業部
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
発表の流れ
財務データとXBRL
 問題点と研究の目的
 XBRL文書の構成と,そのモデル
 プログラミング言語
 サンプルプログラム
 まとめ

Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
2
財務データ
財務データとは,企業が公表する資本や借金の額などの財
務活動のデータ
 財務データが記述された表は財務諸表と呼ばれる

 貸借対照表
(資金の調達先,資金の使用先)
 損益計算書 (売上高,経常利益,純利益)
 キャッシュフロー計算書 (資金の運用先)

紙ベースの財務諸表をインターネットを通じて流通,利用す
るため,統一されたフォーマットが必要となった
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
3
財務データ記述言語 XBRL

2000年7月,米国公認会計士協会を中心に,財務データ
を記述するためのXMLベースの言語XBRL(eXtensible
Business Reporting Language)が策定された

普及するXBRL
 東京証券取引所への財務データの登録が,XBRLに対応
 上場企業のXBRL化した財務データをインターネットで提供

XBRL文書の変換,分析のニーズは高い
 XBRL文書に書かれた値を変更し,新しい文書を作成
 大量のXBRL文書から値を読み出して指標を計算
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
4
XBRLの問題点

既存のXML処理系を使ったXBRL文書操作は困難
 複雑な財務データを表現するため,XBRLの仕様は複雑
 既存のXML処理系を使うと,XBRLの解析処理を大量に記
述する必要がある
 財務データを扱う全ての人が,XMLの深い知識を持ってない
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
5
研究の目的

XML技術の細部に精通していなくても,XBRL文書を簡単
に操作することのできる,XBRL文書の操作環境の実現
XMLの初心者にも分かりやすい,XBRL文書のモデル
 大量の文書を扱うことのできる,簡単なプログラミング言語

Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
6
発表の流れ
財務データとXBRL
 問題点と研究の目的
 XBRL文書の構成と,そのモデル
 プログラミング言語
 サンプルプログラム
 まとめ

Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
7
XBRL文書の構成
インスタンス文書
語彙を定義
タクソノミ
要素間の関係を
定義
リンクベース
リンクベース
リンクベース
リンクベース
リンクベース

インスタンス文書
 財務データを記述したXML文書

タクソノミ
 インスタンス文書で使う語彙(要
素名, 属性など)を定義したXML
Schema 財務諸表で現れる項目間の関係
定義リンク

リンクベース(例,親子関係)
計算リンク
値の計算方法(重み付き加算式)
 要素間の関係や,各要素に対
プレゼンテーション 項目の表示順
リンク する追加情報を定義したXLink
ラベルリンク
項目の表示名称
リファレンスリンク
項目の参考文献
XBRL文書
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
8
インスタンス文書

グループ要素
<group …>
インスタンス文書の構成
 グループ要素
<xbrli:numericContext id="c1" precision="18" cwa="true">
(ルートノード,必須)
<xbrli:entity>
<sample:assets
<xbrli:identifier
 項目要素(財務データ,必須)
項目要素
numericContext="c1">6000</sample:assets>
schema="www.nasdaq.com">SAMP</xbrli:identifier>
<xbrli:group
<assets …>100</assets>
<xbrli:segmant/>
 コンテキスト要素
xmlns:xbrli="http://www.xbrl.org/2001/instance"
<sample:currentAssets
</xbrli:entity>
numericContext="c1">5000</sample:currentAssets>
(項目要素の補足情報,必須)
<xbrli:unit>
xmlns:xsi="http://www.w3.org/2001/XMLSchema<xbrli:operator id="divide">
instance"
 タプル要素(任意)
<xbrli:measure>ISO4217:EUR</xbrli:measure>
<sample:noncurrentAssets
xmlns:iso4217="http://www.iso.org/4217"
<xbrli:measure>xbrli:shares</xbrli:measure>
numericContext="c1">1000</sample:noncurrentAssets>
 脚注要素(任意)
xmlns:sample="http://sample"
コンテキスト要素
</xbrli:operator>
sample.xsd">
</xbrli:unit>
<numericContext> xsi:schemaLocation="http://sample
</xbrli:numericContext>
要素とその値が連続して並ぶ
…
(入れ子構造にならない)
インスタンス文書全体に関わる記述
コンテキスト属性で,
項目要素を補足する,企業コード,単位を記述
(タクソノミ,名前空間の指定)
コンテキスト要素を指定
</numericContext>
</group>
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
9
XBRL文書の特徴
財務諸表に現れる,項目とその内訳といった親子構造は,
リンクベースで定義する
 財務事実を表現する項目要素は,入れ子で記述しない

データと構造を別々に記述することで,利用場面によって表
示方法や,計算式を変えるといった,柔軟な表現が可能
 逆に,XBRL文書の解析を難しくしている

 インスタンス文書を解析するために,タクソノミとリンクベースの
解析もする必要がある
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
10
XBRL文書のモデル

インスタンス文書に記述された項目要素への読み書きを簡単に行うた
めのモデル

インスタンス文書に記された要素間の関係に注目
 入れ子による親子関係
 リンクベースで定義された項目要素の親子関係
 項目要素がコンテキスト要素を参照する関係

この関係を元にXBRL文書を有向グラフで表す
 頂点:要素
辺
:要素間の関係(親子)
 頂点に,項目要素の値(財務データ)を付加する
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
11
XBRL文書の例
配付資料のインスタンス文書の例を参照
 リンクベースで次の関係(貸借対照表の関係)を定義

assets(資産の部)は
currentAsset(流動資産)と,
noncurrentAssets(固定資産)の親
liabilitiesAndStockholdersEquity(負債の部)は
liabilities (負債)と
stockholdersEquity(資本)の親
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
12
assets
currentAssets
group
noncurrentAssets
入れ子構造による
親子関係
liabilitiesAnd
StockholdersEquity
リンクベースによる
親子関係
liabilities
id属性による
参照関係
stockholdersEquity
numericContext
(子要素は省略)
13
有向グラフを使った操作
頂点間の矢印(項目要素間の関係)を使って,操作対象
の項目要素を見つける
 頂点に付加された,項目要素の値を読み書きすることで,
XBRL文書の操作を行う

有向グラフのモデルに対する操作で
インスタンス文書に記述された値の変更を実現可能
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
14
項目要素以外の操作
有向グラフのモデルは,項目要素への読み書きを簡単に行
うためのモデル
 有向グラフのモデルでは表現できない構造もある
 インスタンス文書の詳細な操作を行う場合は,有向グラフで
は不足

<P>
text1
<IMG src="image.jpg"/>
text2
</P>
P
IMG
text1text2
Src=“image.jpg”
DOMを利用することを考える
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
15
Document Object Model (DOM)

DOM はXMLを木構造で表すモデル
DOMツリーを使えば,どのような操作もできる

しかし,DOMは
 要素の値を木構造の頂点として表すので,操作が煩雑
 コメントや,処理命令も扱う(XBRL操作では不要)

DOMをそのまま提供すると,面倒な操作を強いられたり,
XBRL操作には不要なものまで考えないといけない
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
16
DOMツリーを含んだモデル

有向グラフの頂点と,DOMツリーの要素ノードを結合させた
モデルを,インスタンス文書のモデルとする
<xbrli:group>
<sample:assets numericContext="c1">6000</sample:assets>
</xbrli:group>
ルート
xbrli:group
sample:assets
6000
numericContext=“c1”
DOMのノード
有向グラフの頂点
値:6000
numericContext=“c1”
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
17
発表の流れ
財務データとXBRL
 問題点と研究の目的
 XBRL文書の構成と,そのモデル
 プログラミング言語
 サンプルプログラム
 まとめ

Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
18
プログラミング言語

構文
 習得が容易

XBRL文書処理機能
 XBRL文書のモデルを言語機能に組み込む

提供する関数
 入出力
 XML汎用処理
 XBRL専用処理
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
19
構文

構造化プログラミング
 利用者層,プログラムの規模を考慮すると妥当
宣言無しで使える変数
 演算子,制御構造

 加減乗除,文字列処理
 if-then-else,for,while

関数の定義,呼び出し
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
20
XBRL文書の操作方法
有向グラフの頂点を構造体で表す
 構造体には,要素の値,他の構造体へのリンクが含まれる
 構造体のメンバを変更することで,値の操作,属性の変更
を実現
 提供する関数を使うことで,構造の操作を実現


XBRL文書操作を簡単に行うことができる
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
21
提供する関数

XML汎用
 XML操作
 insertBefore, replaceNode, removeNode, …
 要素取得
 getElementByTagName, getElementById
 入出力
 open, save, saveAs

XBRL専用
 リンクベースで定義された関係の参照
 xbrl_getParentNode, xbrl_getChildNodes
 項目要素コンテキスト要素への参照
 xbrl_getContext
 XBRL特有の計算
 xbrl_calculateNode, xbrl_calculateAllNodes
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
22
発表の流れ
財務データとXBRL
 問題点と研究の目的
 XBRL文書の構成と,そのモデル
 プログラミング言語
 サンプルプログラム
 まとめ

Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
23
プログラムの例
貸借対照表に記述された「資産(assets)」の内訳に対して,
計算処理を行う
 内訳は,リンクベースで定義された親子関係
 既存の処理系では,リンクベースを解析して親子関係にある
要素を取得する必要がある
 本言語では,関数を使って要素を取得できる

Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
24
プログラムの例
// ファイルを開く
rootnode = open("sample_xbrl.xml");
// 要素の取得
assets = getElementByTagName(rootnode, "sample:assets");
// 子要素の配列を取得
assets_child = xbrl_getChildNodes(assets[0]);
// 子要素全てに対して,計算をする
for (i=0; i<length(assets_child); i++) {
assets_child[i].value *= rate;
}
// 同一ファイルに保存する
save(rootnode);
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
25
まとめ
有向グラフを使ったXBRL文書のモデルを導入した
 モデル通してXBRL文書の操作をするためのプログラミング言
語を提案した
 XBRL文書の無駄な解析を行うことなく,行いたい処理のみ
を端的に記述できるため,XBRL文書処理の大幅な省力化
が期待できる

Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
26