Skip to content

キャッシュの活用

CLI の kabu get コマンドで取得された各種情報は、キャッシュとしてローカルストレージに保存されます。ノートブックなどからは、これらのキャッシュを直接読み込むことができます。

キャッシュの目的とメリット

  • APIリクエストの削減: 同じデータを何度も取得する際に、API への不要なリクエストを減らし、利用制限に達するリスクを低減します。
  • 高速なデータアクセス: ローカルストレージから直接データを読み込むため、ネットワーク経由での取得よりも格段に速くデータにアクセスできます。
  • オフラインでの利用: 一度キャッシュされたデータは、オフライン環境でも利用可能です。

キャッシュの保存先

キャッシュディレクトリの場所は、OSによって異なります。各 OS の標準的なディレクトリにキャッシュを保存します。

OS キャッシュディレクトリの場所
Linux ~/.cache/kabukit
macOS ~/Library/Caches/kabukit
Windows C:\Users\<ユーザー名>\AppData\Local\kabukit\Cache

CLI でのキャッシュ管理

kabu cache コマンドを使って、キャッシュの管理ができます。

ツリー表示 (tree)

kabu cache tree コマンドを使うと、キャッシュディレクトリの構造をツリー形式で表示できます。

$ kabu cache tree
/home/runner/.cache/kabukit
├── jquants
│   ├── statements
│   │   └── 20251213.parquet 2025-12-13 15:07 12.5MiB
│   ├── prices
│   │   └── 20251213.parquet 2025-12-13 15:20 176.2MiB
│   └── info
│       └── 20251213.parquet 2025-12-13 15:21 49.1KiB
└── edinet
    └── list
        └── 20251213.parquet 2025-12-13 15:21 3.1MiB

取得した日付とファイルサイズが表示されます。不要になったキャッシュは、このツリー表示をもとに手動で削除することもできます。

消去 (clean)

kabu cache clean コマンドを使うと、キャッシュの一部または全部を消去します。

サブディレクトリを指定すると、キャッシュの一部を消去できます。

$ kabu cache clean jquants
キャッシュディレクトリ '/home/my_name/.cache/kabukit/jquants' を正常にクリーンアップしました。

--all オプションを指定すると、キャッシュの全部を消去できます。

$ kabu cache clean --all
キャッシュディレクトリ '/home/my_name/.cache/kabukit' を正常にクリーンアップしました。

Info

J-Quants API は、データ販売ではなく、データを利用するサービスです。取得したデータを継続して利用することは許可されていません。不要になったキャッシュは削除してください。詳しくは、以下に示す J-Quants API の FAQ を参照してください。

Pythonでのキャッシュ利用

kabukit.cache モジュールは、Pythonからキャッシュを操作するための関数を提供します。

読み込み (read)

cache.read 関数を使って、キャッシュを読み込みます。sourcegroup 引数でキャッシュのグループを指定し、name 引数で特定のファイルを指定します。name には拡張子 .parquet は含めません。name を省略すると、その group の最新のキャッシュファイルが読み込まれます。

まず、現在のキャッシュの状態を確認しておきます。

$ kabu cache tree
/home/runner/.cache/kabukit
├── jquants
│   ├── statements
│   │   └── 20251213.parquet 2025-12-13 15:07 12.5MiB
│   ├── prices
│   │   └── 20251213.parquet 2025-12-13 15:20 176.2MiB
│   └── info
│       └── 20251213.parquet 2025-12-13 15:21 49.1KiB
└── edinet
    └── list
        └── 20251213.parquet 2025-12-13 15:21 3.1MiB

キャッシュファイル (*.parquet) がソースとグループごとにディレクトリに分割されています。sourcegroup 引数には、このディレクリ名を指定します。また、最新のキャッシュを使うことが多いので、ほとんどの場合、name 引数は省略されます。

以下では、銘柄情報 ("info") の最新データを読み込みます。

from kabukit import cache

cache.read("jquants", "info")
shape: (3_780, 8)
DateCodeCompanySector17Sector33ScaleCategoryMarketMargin
datestrstrcatcatcatcatcat
2025-12-15"13010""極洋""食品""水産・農林業""TOPIX Small 1""プライム""貸借"
2025-12-15"130A0""Veritas In Silico""医薬品""医薬品""-""グロース""信用"
2025-12-15"13320""ニッスイ""食品""水産・農林業""TOPIX Mid400""プライム""貸借"
2025-12-15"13330""マルハニチロ""食品""水産・農林業""TOPIX Mid400""プライム""貸借"
2025-12-15"135A0""VRAIN Solution""情報通信・サービスその他""情報・通信業""-""グロース""貸借"
2025-12-15"99910""ジェコス""商社・卸売""卸売業""TOPIX Small 2""プライム""貸借"
2025-12-15"99930""ヤマザワ""小売""小売業""-""スタンダード""信用"
2025-12-15"99940""やまや""小売""小売業""-""スタンダード""貸借"
2025-12-15"99960""サトー商会""商社・卸売""卸売業""-""スタンダード""貸借"
2025-12-15"99970""ベルーナ""小売""小売業""TOPIX Small 1""プライム""貸借"

書き込み (write)

cache.write 関数を使って、キャッシュを書き込みます。CLI コマンドでは、実行した日付でファイル名が自動で設定されるのに対し、Python コードでは、ユーザーがファイル名を指定することができます。

以下では、トヨタ自動車 (銘柄コード 7203) の銘柄情報を toyota.parquet というファイル名で保存します。

from kabukit import get_info

df = await get_info("7203")
cache.write("jquants", "info", df, "toyota")
PosixPath('/home/runner/.cache/kabukit/jquants/info/toyota.parquet')

一覧の取得 (glob)

cache.glob 関数を使ってキャッシュファイルのパス一覧を取得することができます。

引数にはsourcegroupを指定します。

for path in cache.glob("jquants", "info"):
    print(path)
/home/runner/.cache/kabukit/jquants/info/20251213.parquet
/home/runner/.cache/kabukit/jquants/info/toyota.parquet

ここで、cache.glob 関数の戻り値は、ファイルの更新日時順でソートされています。先ほど作成した toyota.parquet が末尾に追加されていることが分かります。

引数を省略すると、全てのキャッシュファイルのパスを取得できます。

for path in cache.glob():
    print(path)
/home/runner/.cache/kabukit/jquants/statements/20251213.parquet
/home/runner/.cache/kabukit/jquants/prices/20251213.parquet
/home/runner/.cache/kabukit/edinet/list/20251213.parquet
/home/runner/.cache/kabukit/jquants/info/20251213.parquet
/home/runner/.cache/kabukit/jquants/info/toyota.parquet