👋

commons-suncalc: Javaで太陽と月の位置を計算する

2023/08/09に公開

Java開発者の皆さん、太陽や月の位置、日の出や日の入りの時間、さらには月の相まで、これらの天文学的な情報を簡単に取得したいことはありませんか?
commons-suncalcは、そのためのJavaライブラリです。この記事では、このライブラリの主な特徴と使用方法、そして実装例を紹介します。

特徴:

  • 精度: 結果の精度は約1分で、一般的なアプリケーションには十分です。
  • 依存関係: Java 8以上が必要ですが、他のランタイム依存関係はありません。
  • インストール: Maven Centralで利用可能です。

Mavenでのインストール:

commons-suncalcをMavenプロジェクトに追加するには、以下のスニペットをpom.xmlに追加してください。

<dependency>
    <groupId>org.shredzone.commons</groupId>
    <artifactId>commons-suncalc</artifactId>
    <version>最新のバージョン</version>
</dependency>

※最新のバージョンはMaven Centralで確認してください。

利用方法:

commons-suncalcは、以下の天文計算を提供しています:

  1. 日の出、日の入、正午、真夜中の時間。
  2. 月の出と月の入の時間。
  3. 新月、満月、半月の日付と時間。
  4. 太陽の位置。
  5. 月の位置。
  6. 月の相と角度。

クイックスタート:

計算は以下のように呼び出されます:

ZonedDateTime dateTime = // 計算の日付、時間、タイムゾーン
double lat, lng = // ジオロケーション
SunTimes times = SunTimes.compute()
 .on(dateTime) // 日付を設定
 .at(lat, lng) // 位置を設定
 .execute(); // 結果を取得
System.out.println("Sunrise: " + times.getRise());
System.out.println("Sunset: " + times.getSet());

実用的な例:

  1. タイムゾーン: パリでの日の出と日の入りの時間を計算する場合:
ZonedDateTime dateTime = ZonedDateTime.now(ZoneId.of("Europe/Paris"));
double lat = 48.8566;
double lng = 2.3522;
SunTimes times = SunTimes.compute().on(dateTime).at(lat, lng).execute();
System.out.println("Sunrise in Paris: " + times.getRise());
System.out.println("Sunset in Paris: " + times.getSet());
  1. 月の相: 2023年の満月の日を取得する場合:
Year year = Year.of(2023);
MoonPhase phase = MoonPhase.compute().in(year).fullMoon().execute();
System.out.println("Full moon in 2023: " + phase.getDate());

まとめ:

commons-suncalcは、Javaで太陽や月の天文学的な情報を簡単に取得するための強力なライブラリです。その使いやすさと柔軟性により、さまざまなアプリケーションやプロジェクトでの使用に適しています。興味がある方は、公式ドキュメントを参照して、さらに詳しい情報を得ることができます。

Happy coding! 🌞🌙

Discussion