【Python】Arelle のインストール方法【XBRL 読み込みライブラリ】

XBRL からデータを取得して決算分析をするときは、Arelleアレル という Python モジュールが便利でした。

公式サイト (Arelle) の説明を読んだところ、Arelle とは、『XBRL ファイルの正しさをチェックするためのソフト(検証ツール)』のようでした。

ですが、XBRL ファイルから『データを取得するためのツール』としても、使うことができました。

Arelle の開発に関わっているすべての方々に感謝申し上げます。

ありがとうございます。

自分が Arelle を使った時の『インストール方法』を紹介します。

『アンインストール方法』と、XBRL ファイルを読み込む『簡単なコード例』も書きました。

Python のバージョン

自分は、Python 3.8.6 の 64 bit 版を使いました。

OS は Windows 10 の 64 bit 版です。

Arelle のインストール方法

Arelle の本体は、GitHub からダウンロードして使いました。

公式サイトにはインストーラー版もありましたが、Python ライブラリとして使う場合には不向きでした。

Arelle の Python コードがコンパイル済みの .pyc になっていたので、中身を見るときに不便でした。

なので、Python ライブラリとして使うときは、GitHub から zip で取得したものが便利でした。

Python ファイルが普通の .py でしたので、簡単に読むことができました。

Arelle の GUI 版 (arelle.pyw) についても、起動して使うことができました。

Arelle のインストールの手順です。

GitHub から Arelle の zip を取得します

2020年10月の時点で、Python の pip からインストールできる『公式』の Arelle ライブラリは無いようでした。

ですが、大丈夫でした。

GitHub から取得できる zip ファイルが、そのまま Python ライブラリとして使用できました。

ファイル名は、『Arelle-master.zip』でした。

Arelle の公式サイトに、GitHub へのリンクがありました。

arelle®DownloadGitHub – Arelle/Arelle: Arelle open source XBRL platform

GitHub のページあった緑色のボタン『↓Code▽』を押して、『Download ZIP』を押しました。

すると、『Arelle-master.zip』の保存場所を聞かれたので、自分の好き場所に保存しました。

(保存した場所の例)F:\project\kabu\download\Arelle-master.zip

自分がダウンロードしたときは、2020年10月26日にリリースされた Arelle でした。

これで、『Arelle-master.zip』のダウンロードができました。

Arelle の zip を解凍します

まず、開発用のフォルダを、どこか好き場所に用意します。

(自分が用意した場所の例)F:\project\kabu

その場所に、『Arelle-master.zip』を解凍しました。

(解凍後の例)F:\project\kabu\Arelle-master

ところで、kabu は『かぶ』の意味です。

『株式銘柄の分析用フォルダ』ということで名付けました。

フォルダ名を変更します

さて、フォルダ名に『ハイフン -』が付いたままだと、Python から import したときに SyntaxError: invalid syntax が出ました。

なので、自分はフォルダ名を変更して、『ハイフン無しの名前』にしました。

具体的には、『Arelle-master ⇒ Arelle』に変更しました。

(変更したあとのフォルダ名)F:\project\kabu\Arelle

もう『Arelle-master.zip』は使わないので、削除して OK でした。

インストールした『Arelle フォルダ』のスクリーンショットです。

Arelle に必要なライブラリをインストールします

Arelle には、追加で外部ライブラリが必要でした。

Arelle のモジュールを import したら、途中で ModuleNotFoundError: No module named 'lxml' などのエラーが出ました。

そういったエラーが出なくなるまで、pip でモジュールをインストールしていきました。

テストに使ったコードを紹介します。

最初は『lxml が見つからない』と表示されました。

"""
F:\\project\\kabu\\main_import_test.py
(Arelle インポートテスト)
"""

import sys
sys.path.append(r'F:\project\kabu\Arelle')

from Arelle.arelle import Cntlr
ModuleNotFoundError: No module named 'lxml'

pip で lxml をインストールしました。

pip install lxml

Successfully installed lxml-4.6.1

次は『isodate が見つからない』と表示されました。

ModuleNotFoundError: No module named 'isodate'

pip で isodate をインストールしました。

pip install isodate

Successfully installed isodate-0.6.0

これで、自分は Arelle を import して使える状態になりました。

Arelle の GUI 版 (arelle.pyw) についても、使える状態になっていました。

インストール完了です。

Arelle の削除方法(アンインストール方法)

GitHub の zip からインストールした場合の Arelle の削除方法です。

自分は、『zip を解凍してできたファイル群』を、フォルダごと削除しました。

インストールといっても、zip を解凍しただけなので、フォルダごと削除で問題ないと思います。

次に、Arelle が XBRL を読み込んだ時の 『webCache』 が残っていましたので、それも削除しました。

デフォルトでは、以下のフォルダにありました。

(キャッシュフォルダ)C:\Users\%USERNAME%\AppData\Local\Arelle

自分は、キャッシュについても、Arelle のフォルダごと削除しました。

あとは、もし手作業で『XDG_CONFIG_HOME』という名前の環境変数を追加した場合は、それも削除します。

自分は、Windows の環境変数は使わなかったので、何もしませんでした。

これで、Arelle のアンインストールが完了しました。

Arelle のキャッシュフォルダの場所

Arelle は、XBRL を読み込む時に、自動でタクソノミを取得してくれました。

取得したタクソノミのファイルは、デフォルトだと、以下のフォルダに保存されました。

(キャッシュフォルダ)C:\Users\%USERNAME%\AppData\Local\Arelle

このキャッシュフォルダの場所は、変更することもできました。

『XDG_CONFIG_HOME ファイル』を設置して変更する方法や、『Windows の環境変数』を使用して変更する方法などがありました。

具体的な処理は『arelle\Cntlr.py』に書かれていました。

ところで、Arelle の動作がおかしくなったことがあって、キャッシュフォルダの内容を全部消したら、直ったことがありました。

ある時、いままで読めていた XBRL が、なぜか読み込みに失敗するようになったのですが、試しに Arelle のキャッシュフォルダを削除してみたら直りました。

想像ですが、もしかしたら、途中でダウンロードに失敗したファイルがあって、壊れたファイルが出来ていたのかもしれません。

Arelle で XBRL を読み込む

試しに、EDINETエディネット から取得した XBRL を、Arelle で読み込んでみました。

使用した XBRL データは、令和 2 年の 2020 年 8 月 28 日に開示された、『カネコ種苗しゅびょう株式会社』の有報ゆうほうです。

開示日:2020/8/28 12:55

会社名:カネコ種苗株式会社

証券コード:1376

EDINET コード:E00004

表題:有価証券報告書-第73期(令和1年6月1日-令和2年5月31日)

書類管理番号:S100JKNH

コード例

Arelle で XBRL を読み込む Python コード例です。

XBRL を読み込むだけの簡単なコードです。

"""F:\\project\\kabu\\main_sample.py"""

import sys
sys.path.append(r'F:\project\kabu\Arelle')
from Arelle.arelle import Cntlr

def main():
    # (1/4) XBRL の zip ファイルを決めます。
    xbrl_zip = r'F:\project\kabu\download\S100JKNH.zip'

    # (2/4) zip の中にある『報告書インスタンス』のパスをくっつけます。
    xbrl_file = xbrl_zip + r'\S100JKNH\XBRL\PublicDoc\jpcrp030000-asr-001_E00004-000_2020-05-31_01_2020-08-28.xbrl'
    print('(デバッグ 1) Arelle に渡したファイルパスを表示')
    print(f'xbrl_file\n"{xbrl_file}"\n')

    # (3/4) Arelle のコントローラーを作ります。
    # 'logToPrint' とは、Arelle のログを標準出力(stdout)に出す、という意味でした。
    # (出典) Cntlr.py にある class LogToPrintHandler(logging.Handler) の docstring。
    ctrl = Cntlr.Cntlr(logFileName='logToPrint')
    try:
        print('(デバッグ 2) webCache フォルダの場所を表示')
        print(f'ctrl.webCache.cacheDir\n"{ctrl.webCache.cacheDir}"\n')

        # (4/4) XBRL を読み込みます。
        model_xbrl = ctrl.modelManager.load(xbrl_file)
        try:

            print('(デバッグ 3) 戻り値の型を表示')
            print(f'model_xbrl\n{type(model_xbrl)}\n')

            print('(デバッグ 4) fact の数を表示 (勘定科目の金額や文章の数)')
            print(f'len(model_xbrl.facts)\n{len(model_xbrl.facts)} 個\n')

            # model_xbrl.facts からの
            # データ取得処理なども
            # ここに書きます。

        finally:
            # modelXbrl を閉じます。
            # (出典) ModelManager.py
            ctrl.modelManager.close()
    finally:
        # Arelle のコントローラーを閉じます。
        # (出典) Cntlr.py
        ctrl.close()

    # 以上です。
    return

if __name__ == '__main__':
    main()

実行結果

実行結果です。

(デバッグ 1) Arelle に渡したファイルパスを表示
xbrl_file
"F:\project\kabu\download\S100JKNH.zip\S100JKNH\XBRL\PublicDoc\jpcrp030000-asr-001_E00004-000_2020-05-31_01_2020-08-28.xbrl"

(デバッグ 2) webCache フォルダの場所を表示
ctrl.webCache.cacheDir
"C:\Users\*****\AppData\local\Arelle\cache"

(デバッグ 3) 戻り値の型を表示
model_xbrl
<class 'arelle.ModelXbrl.ModelXbrl'>

(デバッグ 4) fact の数を表示 (勘定科目の金額や文章の数)
len(model_xbrl.facts)
1567 個

スクリーンショット

Arelle のもど (model_xbrl) を、VisualStudioCode のウォッチ式で見た時のスクリーンショットです(全体の中の一部です)。

実際に決算分析をするときは、この戻り値の内容を駆使して、自身のほしいと思う形式に整える必要がありました。

以上です。

実際に XBRL からデータを取得するコード例も書きました。

XBRL から『勘定科目の金額や文章』を取得するコード例【Arelle】

XBRL から『勘定科目』と『リンクベース』の内容を取得するコード例【Arelle】

タイトルとURLをコピーしました