旅程の時間予算計算機
14時間の一日から移動2時間と休憩2時間を引くと、観光に使えるのは10時間です。博物館、市場、公園、夕食前の散歩で計7.5時間なら、2.5時間の余裕を残して収まります。ブラウザで無料で使えます。
- 無料
- ブラウザで動作
- 登録不要
- データは端末の外に出ません
無料で実行
計算例
- 利用可能な時間
- 14
- 移動時間
- 2
- 休息時間
- 2
- 確保済みの時間
- 4
- アクティビティに使える残り時間
- 10
- 予定アクティビティの時間
- 7.5
- 推奨アクティビティの時間
- 7.5
地図が気前よく見えて時計がそうでないとき、旅の一日は破綻します。美術館、市場、展望台、夕食の予約はそれぞれ妥当でも、徒歩、地下鉄の乗換、きちんとした食事を足し戻すと崩れます。この旅程時間予算計算機は、正の1日あたり時間予算、予約済みの移動時間、予約済みの休憩時間、予定時間つきの名前付き活動の順序付き一覧を受け取り、その日がまだ収まるかを返します。移動と休憩は固定の第一コストとして扱い、残り時間が活動の枠になります。予定停留が枠を溢れると、推奨計画が残りの窓に合計されるよう、同じ係数で各活動を縮小します。
一日の旅程時間予算が効く場所
ツアー事業者は、冬季の短い日照窓でも都市短期滞在のひな型が生き残るよう旅程時間予算計算機を使います。超過経路は黙った過剰予約ではなく縮小済みの推奨を返し、時刻表を刷る前に客向け日程が必要とするものです。バックパッカーの周回を組む学生は、すでに列車に三時間を使った日に六つの名所を積む古典的な誤りを捉えます。
ピン間の分が既知で、一日が足し算できればよいときは、徒歩時間や複数停留の距離ヘルパーとこの割当器を組んでください。余暇の旅行者は土曜の下書きを貼り付け、余裕や超過を一目で読み、届かない時間指定券を買う前に停留を一つ落とせます。
活用例
都市短期滞在の一日計画
徒歩と食事の時間を先に確保し、美術館・市場・展望台が残りの観光窓にまだ収まるかを確認します。
ツアーと団体の時刻表下書き
過密なバスの一日を縮小し、印刷する停留時刻が案内人が実際に持つ移動と休憩の枠の内側に残るようにします。
よくある質問
一日の旅程時間予算はどのように割り振られますか?
移動と休憩を先に確保します。残り時間が活動の枠です。予定停留が収まれば時間はそのまま、余りが余裕です。溢れると各活動は remaining / 予定合計 で縮小されます。
溢れる日は失敗しますか、それとも計画を返しますか?
status は overflow、fits は偽、推奨時間は残りの枠へ縮小された状態で成功します。
status が tight とは何ですか?
美術館の遅い退館や乗り逃した路面電車の余地が少ない、満杯の一日として扱ってください。
移動と休憩には何を含めればよいですか?
移動には立ち寄り先の間の徒歩、地下鉄、タクシー、チケット売り場の行列で失う時間を含めます。休憩には食事やカフェ、ホテルのチェックイン、本当に必要な小休止を入れます。どちらも観光より先に差し引かれます。
予定が多すぎる日を縮めると、優先順位は保たれますか?
比率は保たれます。すべての予定が同じ割合で短くなるため、4時間の大聖堂と2時間の博物館なら、縮めたあとも大聖堂に2倍の時間が残ります。大事な予定があるなら、ほかの立ち寄り先をご自身で外してください。
関連ツール
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/travel/itinerary-time-budget \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"available_hours":14,"transit_hours":2,"rest_hours":2,"activities":[{"name":"Museum","hours":3},{"name":"Market","hours":1.5},{"name":"Park","hours":2},{"name":"Dinner walk","hours":1}]}'const res = await fetch("https://api.kit.forhosting.com/travel/itinerary-time-budget", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"available_hours": 14,
"transit_hours": 2,
"rest_hours": 2,
"activities": [
{
"name": "Museum",
"hours": 3
},
{
"name": "Market",
"hours": 1.5
},
{
"name": "Park",
"hours": 2
},
{
"name": "Dinner walk",
"hours": 1
}
]
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/travel/itinerary-time-budget",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"available_hours": 14,
"transit_hours": 2,
"rest_hours": 2,
"activities": [
{
"name": "Museum",
"hours": 3
},
{
"name": "Market",
"hours": 1.5
},
{
"name": "Park",
"hours": 2
},
{
"name": "Dinner walk",
"hours": 1
}
]
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/travel/itinerary-time-budget", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"available_hours":14,"transit_hours":2,"rest_hours":2,"activities":[{"name":"Museum","hours":3},{"name":"Market","hours":1.5},{"name":"Park","hours":2},{"name":"Dinner walk","hours":1}]}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"available_hours":14,"transit_hours":2,"rest_hours":2,"activities":[{"name":"Museum","hours":3},{"name":"Market","hours":1.5},{"name":"Park","hours":2},{"name":"Dinner walk","hours":1}]}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/travel/itinerary-time-budget", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"available_hours": 14,
"transit_hours": 2,
"rest_hours": 2,
"activities": [
{
"name": "Museum",
"hours": 3
},
{
"name": "Market",
"hours": 1.5
},
{
"name": "Park",
"hours": 2
},
{
"name": "Dinner walk",
"hours": 1
}
]
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "travel.itinerary_time_budget",
"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 | リクエストが多すぎます。しばらく待ってから再度お試しください。 |
技術的な注記
余裕、超過、稼働率、fits 旗が行ごとの推奨時間とともに戻り、人間の計画者と API クライアントが一つの算術を共有します。ゼロまたは負の予算、負の移動や休憩、すでに一日を超える予約対は、架空の時間割を作らず invalid_input で失敗します。
予約した移動と休憩が活動枠をどう縮めるか
旅程の時間予算は、起きている時間帯を願い事の一覧ではなく硬い枠として扱います。朝食からホテルまでの十四時間、あるいは遅い出発と夕食予約のあいだの十時間です。現実的な一日では省略できないため、移動と休憩を先に引きます。各活動は名前と予定時間を保ち、ルーヴルの一枠、市場、川沿いの散歩が区別されたままになります。等しい予定時間は縮小後も等しく、四時間の大聖堂の隣の二時間の美術館は二対一の比を保ちます。浮動小数点の塵は最後の正の予定活動に吸収され、超過日の推奨時間は残りの池にぴったり合います。フィールド available_hours がその枠です。美術館のあいだの徒歩、地下鉄のひと駅、展望台へのタクシー、窓口で失う分は transit_hours に入ります。食事、腰を下ろしたコーヒー、ホテルのチェックイン、旅人が本当に必要な休みは rest_hours に入ります。その和が reserved_hours です。残りが remaining_for_activities であり、予定停留が使える唯一の池です。予定合計が残りの池以下なら、推奨時間は予定時間に等しく、slack_hours は未使用の余りです。予定合計が大きいときは remaining_for_activities を予定合計で割った係数で各活動を縮小し、推奨日が閉じるようにします。計画どおりの committed_hours が予算を超えると稼働率は百パーセントを超え得ます。それは時計が伸びると装うのではなく、削る合図です。
入力契約、応答の形、誤り時の振る舞い
長い一日でも短い複数日の枠でも足ります。無料のブラウザフォームを人の計画に繋ぎ、自動化が同じ数字を必要とするときは旅行ビルダーから同じ契約を呼んでください。必須フィールド四つを持つ JSON 本体を POST してください。フィールド available_hours はゼロより真に大きい有限数で、上限は百六十八です。transit_hours と rest_hours は有限かつ非負で、それぞれも百六十八が上限です。和は available_hours を超えてはなりません。予算全体とそれ以上をすでに食う予約対は、割り当てる誠実な活動枠が残らないため invalid_input で失敗します。フィールド activities は空でないオブジェクト配列で、各要素は空でない name と有限非負の hours を持ち、この無料 parse 経路では最大五十行です。欠落フィールド、空リスト、オブジェクトでない行、空白名、非有限数、負の時間、ゼロまたは負の利用可能予算はすべて invalid_input で失敗し、課金されません。成功時は三つの時間入力をエコーし、reserved_hours、remaining_for_activities、planned_activity_hours、recommended_activity_hours、committed_hours、slack_hours、overflow_hours、真偽の fits、fits・tight・overflow のいずれかの status、utilization_percent、scale_factor、activity_count を報告します。各活動行は index、name、planned_hours、recommended_hours、share_of_activities、percent_of_day を持ちます。Method は reserve_then_scale です。Formula は remaining が available から transit と rest を引いた値であること、recommended_i が planned_i に 1 と remaining/予定合計の小さい方を掛けた値であることを述べます。tight の日は収まる日で、余裕が available_hours の十パーセント以下のものです。成功した API 呼び出しは公開済みの基本価格 $0.002 を一件あたり使い、検証失敗は前払い残高を消費しません。
一日の旅程時間予算が効く場所
同じ予定停留を保ち、団体が遅ければ transit_hours を上げて再実行します。企業合宿の計画者は昼食とホテル送迎を rest と transit に予約し、三つのワークショップが十時間の日にまだ収まるかを見ます。実装は純粋な parse の段階 A のため、成功した呼び出しは毎回、公開済みの基本価格 $0.002 で、モデルトークンも外向き通信もありません。
連携の活用例
旅行ビルダーとガイドブックの自動化
予約ウィジェットから同じ「先に確保してから縮小」契約を呼び、公開された一日計画と API が余裕で食い違わないようにします。
技術的な質問
移動と休憩の和がすでに一日を超えるとどうなりますか。
タスクは invalid_input で失敗します。予約した移動と休憩は available_hours より大きくできません。割り当てる誠実な活動枠が残らないからです。
旅程時間予算計算機の料金はいくらですか。
ブラウザ用具は無料です。API 要求は成功一件あたり $0.002 で前払い KIT 残高を使い、無効な入力は課金されません。