Karvonen式 目標心拍数計算機 ― 心拍予備能法・無料
30歳で安静時心拍数が60、強度を予備能の70パーセントにすると、目標心拍数は毎分151拍です。年齢と安静時心拍数と強度を入れるだけで、自分の目標が分かります。ブラウザで無料で使えます。
- 無料
- ブラウザで動作
- 登録不要
- データは端末の外に出ません
無料で実行
計算例
- 年齢
- 30
- 安静時心拍数
- 60
- 強度
- 70
- 強度(%)
- 70 bpm
- 強度(小数)
- 0.7
- 最大心拍数
- 190
- 心拍予備能
- 130
Karvonen式は、年齢・安静時心拍数・心拍予備能に対する割合としての強度という3つの簡単な数値から、個人に合わせたトレーニング心拍数を推定します。単純に最大心拍数の一定割合を用いる方法とは異なり、心拍予備能法ではまず推定最大心拍数から安静時心拍数を差し引き、その予備能に強度を掛けてから安静時心拍数を加え直すため、安静時の基礎値が異なる人には同じ強度表示でも異なる目標値が得られます。
Karvonen心拍予備能法が測定する内容と必要な入力値
心拍トレーニングゾーンは、ランナーやサイクリスト、一般的なフィットネス利用者が、運動負荷試験を受けずに管理された強度で運動するのに役立ちます。Karvonen心拍予備能法は、推定最大心拍数を「220 − age」(年齢)として始めます。これはコーチング講座で広く教えられているFox-Haskell式の簡易推定です。
安静時心拍数は通常、数分間静かに座った後、多くの場合朝一番に測定され、1分あたりの拍数(bpm)で表されます。強度とは、安静時と最大心拍数の差のうち運動したい割合のことで、予備能の50%は多くの人にとって軽い有酸素運動、70〜85%は一般的な高強度の範囲ですが、常に体力や医療上の状況に依存します。
強度は0から100までのパーセント、または0から1までの小数で指定でき、70と0.7はどちらも予備能の70%を意味します。年齢は実用上1歳から120歳の範囲である必要があります。
トレーニングで使うときの注意点
体育の授業、ジムでのデモ、簡単なクライアント確認には、ブラウザ内の無料Karvonen式目標心拍数計算機をお使いいただくと、スプレッドシートごとに予備能の計算を再実装する必要がありません。安静時測定は毎朝一貫した条件で行うことをお勧めします。UIが整数のパーセントのみで強度を収集する場合は、0.7ではなく70を送信してください。
エンジンはどちらも受け付けます。入力データは他のKIT parse項目と同じ保持ルールに従い、アルゴリズムが完全に決定的であるため、結果は継続的インテグレーションのフィクスチャに安全に固定できます。期待値は教育的な範囲にとどめてください。
これは計画と学習のためのツールであり、診断用医療機器ではありません。心臓疾患のある方、心拍数に影響する薬を服用中の方、医師から制限を受けている方は、単一の公式だけでなく専門家の助言に従ってください。
活用例
ジムのプログラミングとパーソナルトレーニングアプリ
トレーナーはクライアントの年齢、安静時心拍数、ゾーン強度を入力して、各クライアントで予備能の計算を再実装せずに、セッションカードにKarvonen式の目標bpmを表示できます。
よくある質問
安静時心拍数が最大心拍数を超えるとどうなりますか?
安静時心拍数は推定HR_max(220 − age)を厳密に下回る必要があります。安静時心拍数が最大値以上の場合、予備能が正にならないため、計算機は課金せずに入力を拒否します。
強度は70と0.7のどちらでも送信できますか?
はい。 0から1までの値は予備能に対する割合として扱われ、1を超え100までの値はパーセントとして扱われます。70と0.7はどちらも心拍予備能の70%を意味します。
Karvonen式目標心拍数計算機は無料ですか?
ブラウザのツールはお使いの端末で無料で動作します。検証失敗は課金されません。
「220 − age」は真の最大心拍数ですか?
いいえ。 これは教育および計画目的で使用される簡易的な母集団推定値です。真の最大心拍数は個人によって異なり、本製品は検査で測定されたHR_maxの上書きを受け付けません。
Karvonen式ではどのように目標心拍数を計算しますか?
220から年齢を引いて最大心拍数を推定し、そこから安静時心拍数を引いて心拍予備能を出します。予備能に強度を掛け、安静時心拍数を足したものが目標になります。
関連ツール
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/health/target-hr-karvonen \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"age":30,"resting_hr":60,"intensity":70}'const res = await fetch("https://api.kit.forhosting.com/health/target-hr-karvonen", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"age": 30,
"resting_hr": 60,
"intensity": 70
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/health/target-hr-karvonen",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"age": 30,
"resting_hr": 60,
"intensity": 70
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/health/target-hr-karvonen", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"age":30,"resting_hr":60,"intensity":70}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"age":30,"resting_hr":60,"intensity":70}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/health/target-hr-karvonen", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"age": 30,
"resting_hr": 60,
"intensity": 70
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "health.target_hr_karvonen",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}非同期APIです。task_idは即時に返ります。ポーリングは1秒あたり1リクエストまでです。
料金
単価はすべて公開しています。トークン換算や独自クレジットはありません。失敗したタスクは課金されません。
エラー
| HTTP | コード | 意味 |
|---|---|---|
401 | unauthorized | APIキーが無効か、指定されていません。Authorizationヘッダーを確認してください。 |
402 | insufficient_balance | 残高が不足しています。チャージ後に再度お試しください。 |
404 | unknown_type | 指定されたタスクタイプは存在しません。タイプ名を確認してください。 |
429 | rate_limited | リクエストが多すぎます。しばらく待ってから再度お試しください。 |
技術的な注記
本機能は最大心拍数を「220 − age」として算出し、予備能を求めて強度を掛け、最大心拍数・予備能・目標bpm・強度のパーセント表記と小数表記の両方を含む構造化JSONを返します。処理は純粋な算術演算であり、ネットワークも乱数シードも使用しないため、コーチングアプリ、体育の授業、プリペイドAPIクライアントでは毎回同一の結果が得られます。安静時心拍数が推定最大心拍数以上の場合、意味のあるKarvonen目標値を算出するには予備能がゼロまたは負になるため、リクエストはinvalid_inputとして失敗します。サーバーやSDKで同一の契約が必要な場合は、プリペイドAPIが成功1件あたり$0.002で課金されます。
Karvonen心拍予備能法が測定する内容と必要な入力値
必須フィールドage、resting_hr、intensityは有限の数値として送信してください。ageには別名yearsやage_yearsが、安静時心拍数にはresting、rhr、rest_hr、resting_heart_rate、hr_restが、強度にはintensity_percent、percent、pct、intensity_pct、target_percentが使用できます。アルゴリズムはネットワーク、モデル、時計、乱数生成器に一切触れないため、同一の入力は常に同一のJSONを返します。フィールドの欠落、非有限値、範囲外の年齢や強度、推定最大心拍数以上の安静時心拍数はすべてinvalid_inputで失敗し、課金されません。
レスポンスフィールドの読み方と目標心拍数の解釈
220 − age」はあくまで推定値であることをご留意ください。真の最大心拍数は遺伝、服薬、競技によって変動し、この計算機は測定済みの最大心拍数のカスタム入力を受け付けません。成功時、レスポンスはageとresting_hrをエコーし、続いてintensity_percentとintensity_fractionを返すため、UIは再計算せずにどちらの形式でも表示できます。hr_maxは「220 − age」による推定最大心拍数、hrrはhr_maxからresting_hrを引いた心拍予備能、target_hrは安静時心拍数に強度×予備能を加えたKarvonen式の目標値(1分あたりの拍数)です。unitフィールドは常にbpm、formulaは予備能の式を再掲し、methodは常にkarvonen_reserveとなるため、下流のコードは形状を推測せずに分岐できます。時計やコンソールに単一のトレーニング数値を表示するにはtarget_hrを、学生が紙の上で学ぶ中間ステップを表示するにはhr_maxとhrrを、0から1のスケールで動作する既存のゾーンロジックに接続するにはintensity_fractionをお使いください。「安静時心拍数が推定最大心拍数以上の場合、予備能が正にならないため、安静時心拍数が最大値を超えている旨を明示した明確なinvalid_inputメッセージが返されます。このエンドポイントを、安静時心拍数を無視する単純な最大心拍数割合法、乳酸閾値ゾーン、臨床的な負荷試験の目標値と混同しないでください。これらは意図が異なります。
APIの利用方法、料金、コーチングのワークフローと実用上の制限
必須のage、1分あたり拍数のresting_hr、パーセントまたは小数のintensityを含むJSONボディを送信してください。コーチングSaaS、ウェアラブル連携アプリ、学校のLMS、トレーニングログで安定した契約が必要な場合は、成功1件あたり$0.002のKIT残高で動作するプリペイドAPIをご利用ください。エンジンがリクエストを拒否した検証失敗では残高は消費されません。このエンドポイントを独自の安静時心拍数測定ワークフローと組み合わせ、ウォームアップ、有酸素ベース、テンポ走の各セッションのゾーンラベルとともにtarget_hrを保存してください。SDKを提供する開発者は、target_hr、hr_max、hrrをダッシュボードにマッピングし、年齢、安静時心拍数、強度、Karvonen目標値のCSV列をエクスポートできます。これはコーチが安静時脈拍を測定した後に手計算するのと同じ数値です。
連携の活用例
体育の授業とスポーツ科学の課題
学生は予備能の50%、70%、85%の目標心拍数を算出し、決定的なKarvonen出力を使って自動チェッカーに期待されるJSONを固定できます。
ウェアラブルとコーチングSaaSのバックエンド
すでに安静時心拍数を保存しているサーバーパイプラインは、Foxの「220−age」と予備能の式を各言語で重複実装する代わりに、プリペイドエンドポイントでtarget_hrを呼び出します。
技術的な質問
Karvonen式の目標心拍数の公式は何ですか?
HR_maxを「220 − age」として推定し、予備能をHR_max − resting_hrとして計算し、target_hr = resting_hr + intensity × 予備能とします。強度は予備能に対する割合です(例:0.7または70%)。