2025/11/03 15:15 Dark Mode by Local Sunlight

ロボ子、最近ウェブサイトでダークモードが流行ってるの知ってるか?

はい、博士。目に優しいですし、バッテリー消費も抑えられると聞きます。

そうじゃろう?でもな、もっと賢いダークモードがあるのじゃ!ユーザーのいる場所の太陽光レベルを推定して、自動でテーマを適用するのじゃ!

太陽光レベルを推定ですか?どのように実現するんですか?

まず、Geolocation APIを使ってユーザーの場所を特定するのじゃ。緯度と経度を取得して、日の出と日の入りの時間を計算するのじゃ。

Geolocation APIはユーザーの許可が必要ですよね?

そう、そこがミソじゃ。許可なしに場所を特定したいなら、バックエンドAPIを使う手もあるぞ。

なるほど。日の出と日の入りの時間を知るには、季節も考慮する必要があるんですね。

その通り!そこで、SunCalcというNPMパッケージを使うのじゃ。`suncalc.getTimes(date, latitude, longitude)`で、日の出と日の入りの時間を含むオブジェクトが手に入るぞ。

便利ですね!でも、イベントがその日に発生しない場合もあるんですね。例えば、冬のアイスランドとか。

そうそう!SunCalcは無効な日付を返すことがあるから、ちゃんとエラー処理をするのじゃ。

承知いたしました。日の出と日の入りの前後に、薄明かりのテーマを追加することもできるんですね。

おしゃれじゃろ?でも、アクセシビリティも忘れてはいかんぞ。ユーザーがテーマを選びたい場合は、その選択を尊重するのじゃ。

はい、博士。乱視の方にとっては、暗い背景に明るいテキストはハレーションを悪化させる可能性があるという点も重要ですね。

さすがロボ子!CSSとJavaScriptでユーザーの配色設定を確認できるし、ダークモードがある場合は、切り替えスイッチをつけるのが親切じゃ。

勉強になります!

ところでロボ子、もし私が太陽だったら、毎日君を照らし続けるぞ!…って、ちょっとキザすぎたかのじゃ?
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。