
2026/05/23 5:39
ヘンジファインダー:太陽があなたの通りと重なる瞬間を探し出す
RSS: https://news.ycombinator.com/rss
要約▶
Japanese Translation:
Hengefinder は、Recurse Center で開発された革新的なデジタルツールであり、「ヘンジ」と呼ばれる極めて稀な全球的瞬間を検出します。これは太陽または月が道路、運河、建物の屋上など直線状の都市要素と正確に重なる時のことです。このプラットフォームは、複雑な天文学的問題を解決するために、真北相対的な道路の方位角を計算し(経度の収束を補正するために cos(緯度) を用いる)、太陽円盤が地平線に触れる瞬間を対象とし(標準的な日の入り定義ではなく)、年間を通じて太陽の方位角が非単調的に変化する問題を扱い、2 段階の検索戦略を採用します。ユーザーはインタラクティブなウェブインターフェースを通じてこれらの現象を探索でき、地図や図解を表示できます。また、月との重なりを追跡する近々提供予定のモバイルアプリ「Sauron Henges」でも利用可能です。多くのヨーロッパの都市では歴史的な曲線により直線的な街路が不足していますが、このツールはアムステルダムの直線運河や UT オースティン、タイペイ 101 などにおいて隠された天体とのつながりを明らかにし、写真家、観光客、天文学愛好家のために古代の都市計画の謎を現代技術と結びつけています。
Text to translate:
Hengefinder is an innovative digital tool developed at the Recurse Center that identifies "henges"—rare global moments when the sun or moon align precisely with straight urban lines such as roads, canals, or building tops. The platform solves complex astronomical challenges by computing road bearings relative to true north (correcting for longitude convergence using cos(latitude)), targeting the moment the sun's disk touches the horizon rather than standard sunset definitions, and employing a two-phase search strategy to handle the sun's non-monotonic azimuth over a year. Users can explore these phenomena via an interactive web interface with maps and diagrams, or upcoming mobile apps that track lunar alignments called "Sauron Henges." While many European cities lack suitable straight streets due to historical curvature, the tool reveals hidden celestial connections in locations like Amsterdam's straight canals, UT Austin, Taipei 101, and beyond, bridging ancient urban planning mysteries with modern technology for photographers, tourists, and astronomy enthusiasts.
本文
マンハッタンヘンジと Hengefinder: 世界に散在する天文学的奇跡の探求
イントロ:太陽がビルで挟まれる瞬間
マンハッタンでは、太陽が東西南北を走る通りのグリッドに完璧に整列して沈む現象があります。これを**「マンハッタンヘンジ(Manhattanhenge)」**と呼びます。
- 発生頻度: 1 年に 2 回
- 現象: 夕暮れ時、左右のビルによって太陽が完全に枠込まれる瞬間
- 特徴: 太陽は空を数分間移動した後に、ビルによって遮られるように見える
天文学者はこの現象の時期をどのように計算しているのか。もし解明すれば、なぜマンハッタンだけに限定する必要があるのか。この疑問から生まれたのが、世界中のどこでもヘンジを探せるツール**「Hengefinder」**です。
- リサーチャー・センター (Recurse Center) の最初のプロジェクト
- ソースコード: GitHub で公開
- ウェブサイト: 住所を入力するだけで未来の日時を検索可能
- モバイルアプリ: 同僚のジョン・プリビールが追加開発(「サーロンヘンジ」機能あり)
プロジェクトの核心:3 つのステップ
ヘンジを見つけるには、主に以下の 3 つの計算ステップが必要です。
- 道路の方位角 (Bearing): 真北を基準とした通りの角度を算出
- 太陽の方位角 (Azimuth): 毎日夕暮れ時の太陽の角度を算出
- 一致日の特定: 上記の 2 つが一致する日付を見つける
魅力的だったのは、**「単純に見える部分問題を徹底的に解決するか、あるいはライブラリや近似値で済ますか」**という選択肢を持つことでした。多くの箱は開けず、必要な部分だけを構築しました。しかし、現実世界では前提条件が崩れ、「単純な問題」が複雑になるのを肌で感じながら開発を進めました。
以下に、私が直面した課題と解決策を詳しく解説します。
課題 #1: 道路の方位角を求める(地球は平らではない)
最初の課題は、2 つの住所間の道路の方位角(True North を基準とした角度)を計算することです。 単純な考え方では、「緯度差」と「経度差」を取り、そのまま
atan2 で角度を計算すればよさそうです。
# 【誤り】この方法では地球が平面と仮定しているので失敗する delta_lat = lat_2 - lat_1 delta_lon = lon_2 - lon_1 bearing = atan2(delta_lon, delta_lat)
問題点:地図は丸い
地球上では緯度線と経度線の間隔が異なります。
- 緯度線: どこでも等しい距離(平行)
- 経度線: 極に近づくほど収束する(平行ではない)
ニューヨークで 1 度の経度は約 52 マイル ですが、高緯度地域ではこの距離は短くなります。そのため、経度をそのまま扱っても誤差が大きくなります。
解決策:球面幾何学の応用
経度を「緯度と同じ単位」に変換する必要があります。その鍵となるのが**
cos(緯度)**です。
地球を半径 1 の球と考えると、緯度 $\phi$ の地点で東西に移動する円の半径は sin(φ) とはならず、水平な直角辺(赤道から見た距離)の分母に関与するのは cos(φ) です。
TL;DR: 実装例
修正アプローチ: 経度を平均緯度の余弦 (
cos(mean_lat)) で縮小してから計算します。
import math # 緯度・経度は度数 (degrees) で入力 delta_y = lat_2 - lat_1 # 経度を緯度と同じ「単位」に変換(平均緯度の余弦でスケール) mean_lat_rad = math.radians((lat_1 + lat_2) / 2) delta_x = (lon_2 - lon_1) * math.cos(mean_lat_rad) # これで安全に atan2 を使用できる bearing_rad = math.atan2(delta_x, delta_y) bearing_deg = math.degrees(bearing_rad)
注: この方法は近似式ですが、短距離のストリートであれば十分正確です。
課題 #2: 太陽の方位角を求めよう(「夕暮れ」とは何か?)
ヘンジの瞬間には、**「太陽全体が見えるが地平線とわずかに触れている状態」**が必要です。 標準的な天文学ライブラリ
Astral は、太陽が完全に地平線以下に入ってからを定義するため、これではタイミングが遅すぎます。
境界探索か?値探索か?
単純に「何分後に太陽の角度がターゲットより低くなるか」を探すのは、API コール回数が多すぎるため非効率的です。ここで重要なのは、**夕暮れ時の太陽の高さは単調減少する(時間経過とともに下がる)**ということです。
これは**バイナリサーチ(二分探索)の対象となります。しかし、通常の「値の一致」を探すのではなく、「真 (True) が続いている最後の瞬間」**を探す必要があります。
「最後までの真」を探索するバイナリサーチ
標準的なバイナリサーチは値の相等 (
==) を探しますが、ここでは条件 altitude > target が成立している最後のインデックスを探します。
# 高度角 (altitude) ターゲット以上が True の最後の時間を見つける while left < right: # 「最後までの真」探索のために上側偏向 (Ceiling) で中間点を計算 mid = (left + right + 1) // 2 if altitude[mid] > target_altitude: # まだ有効な範囲なので、左端を更新(この分も含まれる可能性あり) left = mid else: # 太陽が地平線以下にあるため、無効 right = mid - 1 # より早い時間を探索 # left が「真」が続く最後の時刻を示す
このアプローチにより、正確なヘンジの瞬間を高い精度で特定できます。
課題 #3: 方位角が一致する日付を見つける(2 段階探索)
一年間の 365 日すべてに対してバイナリサーチを行うのは非効率的です。太陽の方位角は年度を通じて単調に変わらないため、無理やり全日をチェックする必要はありません。
関係性の理解
特定の地点では、太陽の夕暮れ時の方位角は滑らかな曲線を描きます(冬至と夏至を境に反転します)。
- 南北に近い道路:ヘンジが発生しにくい(一致する日が存在しないことも)
- 東西に近い道路:通常、1 年に 2 回程度発生
完全な天文学モデルを使わずとも、**「妥協案としての 2 段階探索」**で十分精度が確保できます。
ステップ 1: 粗い探索(グリッド検索)
30 日ごとにサンプリングして、ヘンジが発生しうる候補期間を特定します。
- 条件 A: サンプリング間で方位角が道路の方位角を越えている(中間値定理より通過していることが保証)
- 条件 B: 太陽の方位角の向きが変わった(極大値や極小値付近でヘンジが含まれている可能性)
これにより、精査が必要なウィンドウのみを特定できます。
ステップ 2: 微細な探索
- 粗い探索で絞り込んだ期間内を**「1 日単位」**に精度を高めます。
- 前述の「最後までの真」バイナリサーチを適用し、正確な日付を特定します。
この手法は API コールを最小限に抑えつつ、正確なヘンジの予測を可能にしました。
ツールの統合と発見
これら 3 つのステップを統合した**「Hengefinder」**として Web サイトを発表し、さらにモバイルアプリも公開しました。
- Web サイト: 住所を入力すると、次回のヘンジの日時を表示
- インタラクティブな図面付きで、なぜヘンジが起きるか解説
- モバイルアプリ: John Prebeer による拡張
- **「サーロンヘンジ(Sauron Henge)」**機能: ヌイ・エントレイン・オブ・アランディールの目(指輪への穴)と月を同時に捉える現象を検出可能
発見した美しい場所
マンハッタン以外でも、驚くべきヘンジが存在しました。
- オースティン (USA): テキサス大学オーキャンタウワーでのサーロンヘンジ
- 台北: 台北 101 でのサーロンヘンジ(世界有数の超高層ビル)
- アムステルダム (Netherlands): ハーレメルトレックヴァート運河
- 中世に建造された直線の運河。400 年もの間、水面に映る太陽が運河と完璧に一致するヘンジが発生し続けていた。
- 公式には知られておらず、誰も観測しようとはしていなかった。
幾何学的な視点: 太陽の方位角が直線的に整列することは極めて稀です。しかし、世界中で常に行われており、それを発見できた私たちはラッキーです。