キャッシュの活用
CLI の kabu get
コマンドで取得された各種情報は、キャッシュとしてローカルストレージに保存されます。ノートブックなどからは、これらのキャッシュを直接読み込むことができます。
キャッシュの目的とメリット
- APIリクエストの削減: 同じデータを何度も取得する際に、API への不要なリクエストを減らし、利用制限に達するリスクを低減します。
- 高速なデータアクセス: ローカルストレージから直接データを読み込むため、ネットワーク経由での取得よりも格段に速くデータにアクセスできます。
- オフラインでの利用: 一度キャッシュされたデータは、オフライン環境でも利用可能です。
キャッシュの保存先
キャッシュディレクトリの場所は、OSによって異なります。kabukit は platformdirs ライブラリを使用しており、各 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
│ │ └── 20251020.parquet 2025-10-20 23:29, 12.5 MB
│ ├── prices
│ │ └── 20251020.parquet 2025-10-20 23:42, 175.6 MB
│ └── info
│ └── 20251020.parquet 2025-10-20 23:27, 64.7 KB
└── edinet
└── entries
└── 20251020.parquet 2025-10-20 23:43, 9.5 MB
取得した日付とファイルサイズが表示されます。不要になったキャッシュは、このツリー表示をもとに手動で削除することもできます。
消去 (clean
)
kabu cache clean
コマンドを使うと、キャッシュ情報をすべて消去できます。
$ kabu cache clean
キャッシュディレクトリ '/home/my_name/.cache/kabukit' を正常にクリーンアップしました。
Warning
cache clean
コマンドを実行すると、ユーザーの意思を確認することなく、キャッシュがすべて消去されます。ご注意ください。
Info
J-Quants API は、データ販売ではなく、データを利用するサービスです。取得したデータを蓄積して利用することは許可されていません。不要になったキャッシュは削除するようお願いします。詳しくは以下に示す J-Quants API の公式 FAQ を参照してください。
Pythonでのキャッシュ利用
kabukit.cache
モジュールは、Pythonからキャッシュを操作するための関数を提供します。
読み込み (read
)
cache.read
関数を使って、キャッシュを読み込めます。source
と group
引数でキャッシュのグループを指定し、name
引数で特定のファイルを指定します。name
には拡張子 .parquet
は含めません。name
を省略すると、その group
の最新のキャッシュファイルが読み込まれます。
まず、現在のキャッシュの状態を確認しておきます。
$ kabu cache tree
/home/runner/.cache/kabukit
├── jquants
│ ├── statements
│ │ └── 20251020.parquet 2025-10-20 23:29, 12.5 MB
│ ├── prices
│ │ └── 20251020.parquet 2025-10-20 23:42, 175.6 MB
│ └── info
│ └── 20251020.parquet 2025-10-20 23:27, 64.7 KB
└── edinet
└── entries
└── 20251020.parquet 2025-10-20 23:43, 9.5 MB
キャッシュファイル (*.parquet
) がソースとグループごとにディレクトリに分割されています。source
と group
引数には、このディレクリ名を指定します。また、最新のキャッシュを使うことが多いので、ほとんどの場合、name
引数は省略されます。
以下では、上場銘柄一覧 ("info") の最新データを読み込み、最後の 3 行を表示します。
from kabukit import cache
cache.read("jquants", "info").tail(3)
Date | Code | CompanyName | … | ScaleCategory | MarketCodeName | MarginCodeName |
---|---|---|---|---|---|---|
date | str | str | … | cat | cat | cat |
2025-10-20 | "99940" | "やまや" | … | "-" | "スタンダード" | "貸借" |
2025-10-20 | "99960" | "サトー商会" | … | "-" | "スタンダード" | "貸借" |
2025-10-20 | "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
関数を使ってキャッシュファイルのパス一覧を取得することができます。
引数にはsource
とgroup
を指定します。
for path in cache.glob("jquants", "info"):
print(path)
/home/runner/.cache/kabukit/jquants/info/20251020.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/info/20251020.parquet
/home/runner/.cache/kabukit/jquants/statements/20251020.parquet
/home/runner/.cache/kabukit/jquants/prices/20251020.parquet
/home/runner/.cache/kabukit/edinet/entries/20251020.parquet
/home/runner/.cache/kabukit/jquants/info/toyota.parquet