日焼け止め塗り直しスケジュール計算ツール
皮膚科医は、日差しを浴びている間は約2時間ごとに、水泳や大量の発汗の後はさらに早めに日焼け止めを塗り直すよう推奨しています。しかし「9:30から15:30まで2時間ごと」という指示を、ビーチバッグを用意しながら実際の時刻に換算できる人はほとんどいません。この機能はその計算を代行します。最初に塗った時刻、塗り直し間隔(時間単位)、合計の露出時間を入力するだけで、初回の塗布とすべての塗り直し時刻を含む完全なスケジュールが返されます。露出が深夜をまたぐ場合は日をまたいだ日数のラベルも付きます。同じ入力からは必ず同じスケジュールが返る純粋な決定的計算で、アカウントも保存も推測もありません。このページでは無料でお使いいただけます。また、APIを1リクエスト$0.002で呼び出して、ご自身のアプリにリマインダー機能を組み込むこともできます。
無料で実行
塗り直しのタイミングが重要な理由
日焼け止めは一日中持続するわけではありません。紫外線吸収剤は日差しの中で劣化し、肌の上の被膜は汗、水、タオルでの拭き取り、衣服との接触によって物理的に失われます。そのため、主要な皮膚科学会はいずれも、継続して日光に当たる間は少なくとも2時間ごとに、また水泳や大量の発汗の直後には、ラベルに記載されたSPFにかかわらず塗り直すよう推奨しています。朝8:00に一度塗っただけでは、昼食の頃には意味のある防御力はほとんど残っていません。問題は、この推奨が「間隔」で表されるのに対し、私たちの生活は「時刻」で動いていることです。「2時間ごとに塗り直す」と分かっていても、遅めの出発や水泳を挟んだ後に、それが11:15なのか11:40なのかは分かりません。間隔を1回数え間違えるだけで、1時間もの無防備な肌が静かに生まれてしまいます。正確な日焼け止め塗り直しスケジュールは、間隔のルールをスマホのアラームに設定できる具体的な時刻へと変換します。これが、なんとなく覚えているルールと、長い一日の屋外活動で実際に守れる習慣との違いです。
スケジュールの計算方法
アルゴリズムは意図的にシンプルで透明なものにしています。入力は3つだけです。初回塗布の開始時刻(24時間表記のHH:MM形式)、塗り直し間隔(時間単位)、合計の露出時間(時間単位)です。内部ではすべてが午前0時からの分数に変換され、開始時刻に間隔が繰り返し加算され、露出時間の範囲内に収まる各ステップが塗り直し時刻となります。ちょうど範囲の終端に一致する時刻も含まれます。深夜をまたぐ時刻は翌日に繰り越され、日数のラベルが付くため、22:00開始で露出時間が6時間の場合でも、不可能な時刻ではなく2日目の早朝の時刻として表示されます。間隔と露出時間はどちらも正の数である必要があり、ゼロや負の間隔は、無限または空のスケジュールを生成する代わりに、明確な入力エラーとして拒否されます。時計への依存はどこにもありません。出力は入力のみに依存するため、結果は再現可能で、キャッシュ・監査・再生成も安全に行えます。
適切な間隔の選び方
渡す間隔は、ボトルのラベルだけでなく、実際に行う活動を反映させるべきです。標準的な基準は継続露出で2時間で、適度な活動量の通常の屋外の一日に適しています。水に何度も入る場合、大量に汗をかく場合、頻繁にタオルで拭く場合は、これらが保護膜を物理的に取り除くため、1時間または80分(小数の時間で表現)に短縮してください。ウォータープルーフ処方は水中での被膜の持続時間を延ばしますが(一般的には水泳で40分から80分)、その後の塗り直しルールを変えるものではありません。一日の中で活動が変わる場合は、フェーズごとに計算を実行してください。午前の散歩は2時間のスケジュール、プールの時間は短い間隔、午後は基準に戻す、という具合です。どんなスケジュールも、十分な量の使用(全身でショットグラス1杯分が目安)や、紫外線が最も強い時間帯の日陰の利用の代わりにはならない点にご留意ください。スケジュールが示すのは「いつ塗るか」であり、肌を守るのは量とSPFです。
活用例
ビーチの日のアラーム計画
到着から出発までの全塗り直し時刻のリストを生成し、家を出る前に各時刻にスマホのアラームを1つずつ設定します。
子どもの野外キャンプのリマインダー
キャンプの指導員向けにスケジュールを印刷し、子どもたちのグループが一日中外で過ごす間、時間どおりに塗り直しを受けられるようにします。
ヘルスケアアプリのリマインダー機能
ユーザーの開始時刻と予定露出時間をAPIに送信し、計算された各塗り直し時刻にプッシュ通知を送ります。
よくある質問
料金はいくらですか?
APIリクエスト1回につき$0.002です。このページのブラウザ上では無料でお使いいただけます。
どのくらいの間隔を使うべきですか?
継続して日光に当たる場合の標準的な推奨は2時間です。水泳、大量の発汗、タオルでの拭き取りの後は、ウォータープルーフ処方でも1時間以下の短い間隔にしてください。
どの時刻形式を受け付けますか?
初回塗布には09:30のような24時間表記のHH:MM文字列を入力します。結果のすべての時刻も同じ形式です。
露出が深夜をまたぐ場合はどうなりますか?
時刻は翌日に繰り越され、各項目に日数が付きます。1日目が開始日、2日目がその翌日です。
間隔が拒否されたのはなぜですか?
間隔は正の時間数である必要があります。ゼロ、負の値、数値以外の値は、意味のあるスケジュールを生成できないため無効です。
このツールはデータを保存しますか?
いいえ。計算は3つの入力に対する純粋な算術処理であり、何も保存されません。同じ入力からは常に同じスケジュールが返されます。
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/beauty/spf-reapply-schedule \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"start":"09:30","interval_hours":2,"duration_hours":6}'const res = await fetch("https://api.kit.forhosting.com/beauty/spf-reapply-schedule", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"start": "09:30",
"interval_hours": 2,
"duration_hours": 6
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/beauty/spf-reapply-schedule",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"start": "09:30",
"interval_hours": 2,
"duration_hours": 6
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/beauty/spf-reapply-schedule", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"start":"09:30","interval_hours":2,"duration_hours":6}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"start":"09:30","interval_hours":2,"duration_hours":6}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/beauty/spf-reapply-schedule", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"start": "09:30",
"interval_hours": 2,
"duration_hours": 6
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "beauty.spf_reapply_schedule",
"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 | リクエストが多すぎます。しばらく待ってから再度お試しください。 |