プログラミングと株式投資のブログ

プログラミングで株式投資に役立つ何かをやってます

PythonでEDINETのXBRLを分析する その10「要素名とコンテキストから値を取得する」

はじめに

これまでの記事ではリンクベースファイルから有価証券報告書の構造を解析し、その後、各要素の値を取得していました。今回の記事では有価証券報告書の構造情報の解析することなく、要素の値を取得する方法を述べます。

というのも、会計基準などの一部の情報はリンクベースファイル上の構造データには表れないためです。こういったデータを取得するには要素の名称とコンテキストから値を取得する必要があります。

また、「沿革」や「事業の内容」といった値が細かにタグ付けされない文書データについてもこの方法を用いたほうが良いです。
 

データの要素名とコンテキストを決定する

要素名の調査方法

XBRLから値を取得するには要素名とコンテキストを決定しなければなりません。まず、要素名を知るためにタクソノミ要素リストのエクセルファイルをダウンロードし、要素名を調べる必要があります。

例えば2025年のタクソノミ要素リストであれば、このページの以下の図にあるリンクからエクセルファイルをダウンロードします。


EDINETから画面をキャプチャした

 

エクセルを開くとEDINETのXBRL中に存在する要素名やその属性が書かれています。適当な検索ワード(ここでは「会計基準」とした)で検索すると以下のように情報が見つかります(不要な情報は非表示にしてあります)。


2025年 EDINETのタクソノミ一覧エクセルから要素を抜粋して引用

 
上記から会計基準を表す要素名は「jpdei_cor_AccountingStandardsDEI」であるとわかりました。
 

コンテキストの調査方法

コンテキストはその要素がDEI*1かそれ以外かで決定のルールが異なります。DEIの場合はコンテキストは「FilingDateInstant」と決まっています。以下はDEIについての説明です。



EDINET 報告書インスタンス 作成ガイドライン p71~72より引用

 

DEI以外の要素のコンテキストは以下のルールで決定します。



EDINET 報告書インスタンス 作成ガイドライン p32~33より引用

 
例えば、「沿革」や「事業の内容」は経理の状況以外の包括タグに該当し、タクソノミ要素リストから調べたperiodTypeはinstantであるため、コンテキストはFilingDateInstantになります。コンテキストの命名規則は「EDINET 報告書インスタンス 作成ガイドラインのp31以降」に記載があるので一読することをお勧めします。

このようにXBRL中の要素名とコンテキストはEDINETのタクソノミ要素一覧と各種ドキュメントから決定可能です。


また、インラインXBRL上で表示されている要素であればhtmlタグを確認することで要素名とコンテキストを調べることが出来ます。例えば「沿革」のhtmlタグは

<ix:nonnumeric contextref="FilingDateInstant" name="jpcrp_cor:CompanyHistoryTextBlock" escape="true">
  (略)
</ix:nonnumeric>

となるため、要素名がjpcrp_cor_CompanyHistoryTextBlock、コンテキストがFilingDateInstantだとわかります。
 

今回値の取得に使用する要素名とコンテキスト

以下に今回の記事で値を取得するために用いる要素名とコンテキストをまとめました。

取得対象 要素名 コンテキスト
会計基準 jpdei_cor_AccountingStandardsDEI FilingDateInstant
連結の有無 jpdei_cor_WhetherConsolidatedFinancialStatementsArePreparedDEI FilingDateInstant
沿革 jpcrp_cor_CompanyHistoryTextBlock FilingDateInstant
事業の内容 jpcrp_cor_DescriptionOfBusinessTextBlock FilingDateInstant

 

要素の値を取得する

値を取得するのは簡単です。XBRLインスタンスファイルやインラインXBRLを読み込み、読み込み結果を要素名とコンテキストで検索すればよいだけです。やり方については以下の記事を読めばわかりますので、是非ご覧になってください。


値を取得するソース*2

#XBRLのパスを生成
xbrl_dir_path = 'C:\\Users\QUWE\\Desktop\\S1001J1V\XBRL\\PublicDoc'
xbrl_path_data = JPXXbrlPath(xbrl_dir_path)


##インラインXBRLを読み込む
xbrlInstanceFileData = XBRLInstanceFileAnalysis(xbrl_path_data)

#インラインXBRLの読み込み結果から値を検索する
print(xbrlInstanceFileData.get_data_from_instance_file('jpdei_cor_AccountingStandardsDEI', 'FilingDateInstant'))
print(xbrlInstanceFileData.get_data_from_instance_file('jpdei_cor_WhetherConsolidatedFinancialStatementsArePreparedDEI', 'FilingDateInstant'))
print(xbrlInstanceFileData.get_data_from_instance_file('jpcrp_cor_CompanyHistoryTextBlock', 'FilingDateInstant'))
print(xbrlInstanceFileData.get_data_from_instance_file('jpcrp_cor_DescriptionOfBusinessTextBlock', 'FilingDateInstant'))

 
実行結果

Japan GAAP
true
(沿革のhtmlタグが表示されるが長いので略)
(事業の内容のhtmlタグが表示されるが長いので略)

 
沿革や事業の内容はhtmlテキストであるため適当なブラウザで読み込むことが可能です。また、htmlテキストであるため外部ライブラリを用いて特定のデータを取得することも可能です。
 
pandasでhtmlテキストから表データをデータフレームで取得するソース

import pandas as pd
import io

#pandasでhtmlテキスト中のtableデータを取得する
parseTargetStr = xbrlInstanceFileData.get_data_from_instance_file('jpcrp_cor_CompanyHistoryTextBlock', 'FilingDateInstant')
dfs = pd.read_html(io.StringIO(parseTargetStr))
print(dfs[0])

 
実行結果

           0                                                  1
0         年月                                                 事項
1    平成16年2月  「IT」と「人」をキーワードに店舗店頭に特化したマーケティング支援を目的とした、株式会社メデ...
2   平成16年10月                                          ASP事業を開始。
3   平成16年12月                                   本社を東京都渋谷区円山町に移転。
4    平成17年3月                                  営業支援事業、流通支援事業を開始。
5    平成17年4月           フィールドマーケティングシステム「Market Watcher」のリニューアル。
6    平成18年9月                                   本社を東京都渋谷区道玄坂に移転。
7    平成19年7月       株式会社ファミリーマートとファミリーマート・フランチャイズ契約を締結。ストア事業を開始。
8   平成19年12月                   住友商事株式会社、株式会社博報堂DYホールディングスの資本参画。
9    平成20年8月                     プライバシーマーク(JISQ15001:2006準拠)取得。
10  平成21年12月                                    本社を東京都渋谷区渋谷に移転。
11   平成23年4月         フィールドマーケティングシステム「Market Watcher」中国語版の販売開始。
12   平成23年5月      フィールドマーケティングシステム「Market Watcher」スマートフォン対応の開始。
13   平成24年9月                               東京証券取引所マザーズ市場に株式を上場。
14  平成24年10月                          株式会社メディアフラッグ沖縄(連結子会社)を設立。
15       NaN                        梅地亜福(上海)管理咨詢有限公司(連結子会社)を設立。
16   平成25年2月                             株式会社ラウンドパワー(連結子会社)を設立。
17   平成25年8月                       キャビック株式会社(連結子会社)の第三者割当増資を引受。
18  平成25年10月                                  K9株式会社(連結子会社)を設立。
19  平成25年11月                                 O&H株式会社(連結子会社)を設立。
20  平成25年11月  株式会社十勝(連結子会社)の株式取得により、同社及び同社の子会社である株式会社たちばな(連結...

 
沿革の表をデータフレームで取得できました。このように手を加えればhtmlテキストから特定のデータだけを取得することが可能です。

おわりに

今回は有価証券報告書のXBRLの構造を取得するのではなく、要素名とコンテキストから直接値を取得しました。リンクベースファイルの解析が不要であり、とても簡単です。

「沿革」や「事業の内容」のように詳細なタグ付けがされていないデータ(EDINETでは包括タグと呼んでいる)はhtmlテキストデータなのでpandasやbeautifulsoupといった外部ライブラリや正規表現によってほしいデータを取得することが可能です。ただし、包括タグの書き方は提出会社によってかなり幅があると予想されるため、その幅を吸収するのは相当難しいでしょう。今後、チャレンジすることがあれば記事にしたいとは思っています。


今回はここまでです。

*1:Document and Entity Informationの略、提出書類および開示書類等提出者の基本情報のこと

*2:この記事のソースコードに以下を記載すればそのまま動きます。