記述言語XBRLで定義された財務諸表を計算・書式変換す

記述言語XBRLで定義された財務諸表を
計算・書式変換する言語処理系の提案と実現
井上研究室
高尾 祐治
2004/2/20
CS専攻修士論文発表会
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
1
財務諸表とは

財務諸表とは,企業が財務情報を公表するために使う表
 貸借対照表
(資金の調達先,資金の使用先)
 損益計算書 (売上高,経常利益,純利益)
 キャッシュフロー計算書 (資金の運用先)
企業・法人
投資家
作成
投資
会計士
証券・銀行
監査
2004/2/20
財務諸表を分析し,
資金が供給される
経済の要
分析
CS専攻修士論文発表会
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
2
貸借対照表の例
ある項目がサブ項目から構成されるとき,
項目間に親子関係があるという
2004/2/20
CS専攻修士論文発表会
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
3
財務諸表記述言語 XBRL

財務諸表をインターネットを通じて流通されるようになった
 PDF形式やHTML形式など,形式が各社ばらばら
 手作業で再入力の必要

統一されたフォーマットが必要となった

財務諸表を記述するための,XMLの構文を使った言語
XBRL(eXtensible Business Reporting Language)が,米国
公認会計士協会を中心に策定された


2000年 7月 XBRL 1.0
2001年12月 XBRL 2.0
2004/2/20
CS専攻修士論文発表会
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
4
XBRLのメリット

従来は,紙の授受や,再入力が必要
共通のフォーマットで情報を受け取れるため,
業務の短期化とコスト削減を実現

XBRLは徐々に普及している
2004年2月
2003年10月
2003年4月
東京証券取引所への
財務情報の登録が
XBRLに対応
2004/2/20
上場企業の
XBRL化した財務情報を
インターネットで提供
国税庁の電子申告に
XBRLを採用
CS専攻修士論文発表会
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
5
XBRL文書処理における問題点

XBRL文書の計算・変換のニーズは非常に高い
 XBRL文書に記述された値の計算処理
 XBRLから,他の形式の文書への書式変換

既存のXML処理系を使ったXBRL文書操作は困難
 複雑な財務情報を表現するため,XBRLの仕様は複雑
 既存のXML処理系を使うと,XBRLの解析処理を大量に記
述する必要がある
 財務情報を扱う人全てが,XMLの深い知識を持っているわけ
ではない
2004/2/20
CS専攻修士論文発表会
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
6
研究の目的

XML技術の細部に精通していなくても,XBRL文書の計
算・書式変換を簡単に行うことができる,操作環境の実現
扱いやすいXBRL文書のモデル
容易に習得可能な,簡単なプログラミング言語
2004/2/20
CS専攻修士論文発表会
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
7
XBRL文書の構成
インスタンス文書
語彙を定義
タクソノミ
要素間の関係を
定義
リンクベース
リンクベース
リンクベース
リンクベース
リンクベース
XBRL文書
2004/2/20

インスタンス文書
 財務情報を記述したXML文書

タクソノミ
 インスタンス文書で使う語彙(要
素名, 属性など)を定義した
XML Schema
定義リンク
リンクベース財務諸表で現れる項目間の関係
(例,親子関係)
 要素間の関係や,各要素に対
計算リンク
値の計算方法(重み付き加算式)
する追加情報を定義したXLink
表示リンク
項目の表示順
名称リンク
項目の表示名称
参照リンク
項目の参考文献
CS専攻修士論文発表会
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
8
インスタンス文書

グループ要素
<group …>
項目要素
<Assets …>6000</Assets>
コンテキスト要素
<numericContext>
…
</numericContext>
インスタンス文書の構成
 グループ要素
(ルートノード,必須)
 項目要素(財務情報,必須)
 コンテキスト要素
(項目要素の補足情報,必須)
 タプル要素(任意)
 脚注要素(任意)
</group>
2004/2/20
CS専攻修士論文発表会
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
9
インスタンス文書の例
<xbrli:group>
•要素が連続して並ぶ
•コンテキスト属性で,コンテキスト要素を指定
<jp-bs:Assets numericContext="c1">6000</jp-bs:Assets>
<jp-bs:CurrentAssets numericContext="c1">5000</jp-bs:CurrentAssets>
<jp-bs:FixedAssets numericContext="c1">1000</jp-bs:FixedAssets>
<jp-bs:LiabilitiesStockholdersEquity numericContext="c1">6000
</jp-bs:LiabilitiesStockholdersEquity>
<jp-bs:Liabilities numericContext="c1">2500</jp-bs:Liabilities>
<jp-bs:Equity numericContext="c1">3500</jp-bs:Equity>
<xbrli:numericContext id="c1" precision="18" cwa="true">
…
</xbrli:numericContext>
</xbrli:group>
2004/2/20
CS専攻修士論文発表会
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
10
XBRL文書のモデル

XBRL文書の計算,書式変換を簡単に扱うことのできる,
理解しやすいモデルを提案する

XML文書のモデルとしては,DOM(Document Object
Model)が広く使われている
 XBRL文書の特徴を利用し,DOMを簡略化したモデルを
考える
2004/2/20
CS専攻修士論文発表会
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
11
DOM (Document Object Model)

DOM はXMLを木構造で表すモデル
document
<group>
<Assets>6000</Assets>
<CurrentAssets>5000</CurrentAssets>
…
group
“6000”
Assets
CurrentAssets
“5000”
○ あらゆるXML文書を正確に表現できる
× 要素や,その値を木構造の頂点として同じように表す
操作が煩雑
2004/2/20
CS専攻修士論文発表会
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
12
XBRL文書の特徴

財務事実を表現する項目要素と,
その値をまとめて扱うことができる

入れ子による親子関係以外の関係が存在する
 リンクベースで定義された項目要素の親子関係
 項目要素がコンテキスト要素を参照する関係
2004/2/20
CS専攻修士論文発表会
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
13
XBRL文書のモデル

有向グラフをXBRL文書のモデルとする
XMLの親子関係
 頂点:要素に項目要素の値(財務情報)を付加
リンクベースによる
辺
親子関係
:要素間の関係
コンテキスト要素への
参照関係
<group>
<Assets>6000</Assets>
<CurrentAssets>5000</CurrentAssets>
<numericContext>
…
Assets
値: 6000
group
値:
CurrentAssets
値: 5000
numericContext
値:
2004/2/20
CS専攻修士論文発表会
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
14
メリット

XBRL文書が持つ構造を使って,頂点にアクセスできる
 頂点が値を持つので,値の読み書きの際に解析しなくてよい
XBRL文書に記された値の
読み書きにかかる手間を軽減することができる
<group>
<Assets>6000</Assets>
<CurrentAssets>5000</CurrentAssets>
<numericContext>
…
Assets
値: 6000
group
値:
CurrentAssets
値: 5000
numericContext
値:
2004/2/20
CS専攻修士論文発表会
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
15
プログラミング言語

有向グラフのモデルに基づいた,XBRL文書操作を行うための言語
LMX (A Tiny Language for Manipulating XBRL Documents ) を設計した

特徴
 構造化プログラミング
 利用者層,プログラムの規模を考慮すると妥当
 宣言無しで使える変数
 C言語に似た,演算子,制御構造
 加減乗除,文字列処理
 if-then-else,for,while
 XBRL文書解析,入出力のためのライブラリ関数を提供
2004/2/20
CS専攻修士論文発表会
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
16
XBRL文書の操作方法





有向グラフの頂点を構造体で表現
構造体は,要素の値,他の構造体
への参照を持つ
構造体のメンバを変更することで,
値の操作,文書構造の変更を実現
LMXでは,有向グラフのモデルを
DOMツリーを元に実現
DOMのノードを構造体で表すことで
DOMツリーの操作による,汎用の
XML文書処理も可能
2004/2/20
名前
意味
name
要素名
localname
ローカル名
uri
名前空間URI
value
要素の値
attribute
属性
parent
親要素
children
子要素の配列
メンバ一覧
CS専攻修士論文発表会
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
17
実装

LMXのインタープリタ
 XBRL解析ライブラリ
 開発環境 (GUI)

実装を行った環境・ライブラリ
 Java
2 SDK (version 1.4.2)
 コンパイラ・コンパイラ: JavaCC
 XMLパーサ:
JAXP
2004/2/20
CS専攻修士論文発表会
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
18
事例研究
事例
100万円単位で値が記述された
XBRL文書を,1000円単位に直す
全ての項目を1000倍する
 金融機関でしばしば行われる処理
 既存の言語ECMAScript (JavaScript) と比較

 XML解析にはDOMを利用
 DOMを利用する言語で,手軽に扱える

ECMAScript版のプログラムでも,XBRL文書解析関数が
利用できることを仮定
2004/2/20
CS専攻修士論文発表会
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
19
インスタンス文書の例
<xbrli:group>
<jp-bs:Assets numericContext="c1">6000</jp-bs:Assets>
<jp-bs:CurrentAssets numericContext="c1">5000</jp-bs:CurrentAssets>
<jp-bs:FixedAssets numericContext="c1">1000</jp-bs:FixedAssets>
<jp-bs:LiabilitiesStockholdersEquity numericContext="c1">6000
</jp-bs:LiabilitiesStockholdersEquity>
<jp-bs:Liabilities numericContext="c1">2500</jp-bs:Liabilities>
<jp-bs:Equity numericContext="c1">3500</jp-bs:Equity>
<xbrli:numericContext id="c1" precision="18" cwa="true">
…
</xbrli:numericContext>
</xbrli:group>
有向グラフによる表現
Assets
値: 6000
処理対象の
項目要素
CurrentAssets
値: 5000
group
値:
FixedAssets
値: 1000
numericContext
値:
・・・・・・・
2004/2/20
CS専攻修士論文発表会
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
21
LMXによる記述
balanceSheet = openInstance("A2003BS.xml");
itemnodes = balanceSheet.children;
for (i=0; i<length(itemnodes); i++) {
if (getItemElementType(itemnodes[i]) == MONETARY_TYPE) {
itemnodes[i].value *= 1000;
}
}
save("output.xml");
2004/2/20
ルート要素の
子要素を取得
子要素の数だけ
繰り返す
項目要素ならば,
値の計算を行う
CS専攻修士論文発表会
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
22
DOMによる表現
document
group
処理対象の値
Assets
“6000”
CurrentAssets
“5000”
FixedAssets
“1000”
・・・・・・・
2004/2/20
CS専攻修士論文発表会
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
23
ECMAScriptによる記述
objXML = WScript.CreateObject("MSXML.DOMDocument");
objXML.load("A2003BS.xml");
groupnode = objXML.getElementsByTagName("xbrli:group");
itemnodes = groupnode[0].childNodes;
for (i=0; i<itemnodes.length; i++) {
if (itemnodes[i].nodeType == 1) { // Node.ELEMENT_NODE
if (getItemElementType(itemnodes[i]) != MONETARY_ITEM_TYPE) {
continue
}
itemchildren = itemnodes[i].childNodes;
for (j=0; j<itemchildren.length; j++) {
if (itemchildren[j].nodeType == 3) { // Node.TEXT_NODE
itemchildren[j].nodeValue *= 1000;
break;
}
}
}
ルート要素の
子要素を取得
要素ノードを探す
要素ノードの
子ノードを取得
テキストノードを探す
値の計算
}
objXML.save("output.xml");
2004/2/20
CS専攻修士論文発表会
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
24
考察

for文,if文の数に大きな差が現れた
 DOMと有向グラフのモデルの差
 DOMでは要素ノード,テキストノードが子ノードとして現れる
 ノードの種類の判定作業が必要

LMXでは,この作業が必要ではないため,平易なプログラム
を書くことができる
論文では,XSLTとの比較検討も行った
 その結果,多くの前提知識を必要とするXSLTよりも,言語
習得にかかるコストが小さい

2004/2/20
CS専攻修士論文発表会
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
25
まとめと今後の課題

まとめ
 XBRL文書を表現するための扱いやすいモデルを提案した
 モデルに基づいた,XBRL文書変換を行うためのプログラミング
言語 LMX を設計した
 LMXのインタープリタを実装し,LMXを使うと,既存の処理系
よりもプログラムが簡単になることを確かめた

今後の課題
 XBRL文書のデータ型を利用した,検証機能
2004/2/20
CS専攻修士論文発表会
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
26