ランニング年齢グレード計算ツール
この年齢グレード計算ツールは、レース結果を年齢、性別区分、一般的なロード距離を越えて比較できるパーセンテージに換算します。固定された競技基準と年齢係数表を使用し、適用した係数、基準タイム、分かりやすい評価を表示します。計算は決定論的で、完全にオフラインで動作し、キロメートル、マイル、一般的な時刻表記に対応しています。実際の完走タイムを変更せず表示したまま、成績を適切な文脈で把握できます。
無料で実行
年齢グレードのパーセンテージが示すもの
年齢グレードは、完走タイムを、同じ年齢および性別区分の走者が同じ距離を走る場合の基準成績と比較します。一般に、60パーセント前後は地域の大会で堅実な水準、70パーセントは広域水準、80パーセントは国内水準、90パーセント以上は世界水準の目安です。ただし、これらは大まかな案内であり、選考基準や医学的評価ではありません。入力した結果が表から導いた年齢別基準より速い場合、値が100を超えることもあります。その場合も入力が無効なのではなく、このツールで採用した固定基準を上回ったことを表します。年齢による条件差をならすため、数年離れた成績や異なる年齢の走者を比較するときに役立ちます。一方で、実タイム、コース条件、標高差、天候、公認状況に代わるものではありません。体力や競技順位を断定する指標ではなく、成績を見るための一貫した視点としてご利用ください。
計算表を使用する仕組み
まず、入力距離をキロメートルに、完走タイムを秒に変換します。次に、1マイルから100キロメートルまでの主要ロード距離について固定基準タイムを収録した、男性または女性のオープン基準表を選択します。入力距離が2つの掲載距離の間にある場合は、距離と時間の対数空間で補間し、通信を行わずに滑らかなペース曲線を求めます。その後、選択した性別区分の年齢係数表を参照します。係数は所定の年齢ごとに登録され、その間は線形補間されます。オープン基準タイムを係数で割ると年齢別基準タイムとなり、さらに実タイムで割るとパーセンテージが得られます。すべての表は機能内に組み込まれているため、同じ入力からは必ず同じ結果が返ります。団体、表の版、競技面、別の計算ツールによって基準が多少異なる場合があります。異なるシステムの結果を比べる際は、計算方式も記録してください。
結果の入力と適切な読み取り方
大会当日の満年齢を入力し、該当する性別区分を選び、正の距離を指定して、キロメートルまたはマイルを選択してください。完走タイムは、時・分・秒、分・秒、または秒数のみで入力できます。たとえば、48:30は48分30秒、1:42:15は1時間42分15秒を表します。対応範囲は1マイルから100キロメートルまでです。内蔵基準の範囲外へ外挿すると、誤解を招くためです。結果には、正規化した距離、解析したタイム、年齢係数、オープン基準、年齢別基準、パーセンテージ、評価区分が含まれます。評価名だけでなく、詳細項目もご確認ください。長期的に追跡する場合は、性別区分、距離、計算方式をそろえてください。コースの難度、風、暑さ、高地、トレイル路面、測定誤差は補正されません。同様の条件で正確に計測されたレース同士の比較に適しています。APIは1回あたり$0.002で、ブラウザーでは同じ純粋なロジックがオフラインで動作します。
活用例
シーズンを公平に比較
異なる年齢でのレース成績を標準化し、競技水準が維持されているか確認できます。
クラブの結果を確認
実際の完走タイムを隠さず、年齢が混在する結果に統一的な指標を加えられます。
基準目標を設定
返された年齢別基準とパーセンテージから、目標区分に必要な向上幅を見積もれます。
よくある質問
パーセンテージは何を比較していますか?
入力した完走タイムを、同じ年齢、性別区分、距離について表から導いた基準と比較しています。
年齢グレードが100パーセントを超えることはありますか?
はい。入力タイムが、固定表から導いた年齢別基準より速いことを示します。
別の計算ツールと結果が異なるのはなぜですか?
表の版、基準資料、補間方法、種目区分、丸め方が異なる場合があります。同じ方式の結果を比較してください。
坂道や天候は補正されますか?
いいえ。距離とタイムだけを使用し、コース形状、路面、標高、風、気温は補正しません。
どの時間形式を使用できますか?
H:MM:SS、MM:SS、または正の秒数を使用できます。秒には小数も指定できます。
APIリクエストの料金はいくらですか?
APIは1回あたり$0.002です。ブラウザー版では同じ決定論的ロジックをオフラインで実行します。
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/health/age-grade-running \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"age":52,"sex":"female","distance":10,"finishing_time":"48:30"}'const res = await fetch("https://api.kit.forhosting.com/health/age-grade-running", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"age": 52,
"sex": "female",
"distance": 10,
"finishing_time": "48:30"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/health/age-grade-running",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"age": 52,
"sex": "female",
"distance": 10,
"finishing_time": "48:30"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/health/age-grade-running", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"age":52,"sex":"female","distance":10,"finishing_time":"48:30"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"age":52,"sex":"female","distance":10,"finishing_time":"48:30"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/health/age-grade-running", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"age": 52,
"sex": "female",
"distance": 10,
"finishing_time": "48:30"
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "health.age_grade_running",
"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 | リクエストが多すぎます。しばらく待ってから再度お試しください。 |