Tyme for Dart — 強力なカレンダーライブラリ

Library

概要

Tyme は多様な暦情報の計算と表現を目的とした Dart ライブラリです。Lunar(中国暦関連ライブラリ)の後継的な位置づけで設計・拡張されており、公暦(Solar)と農暦(Lunar)を中心に、藏歴(チベット暦)、星座、十干・十二支、生肖(二十四節気や節日も含む)や国民の法定休日といった付帯情報を取得できます。API は Dart 型(例: SolarDay)を通じた簡潔な生成・変換メソッドを提供し、Flutter を含む Dart エコシステムでの利用を想定した実装になっています。

GitHub

リポジトリの統計情報

  • スター数: 3
  • フォーク数: 0
  • ウォッチャー数: 3
  • コミット数: 2
  • ファイル数: 8
  • メインの言語: Dart

主な特徴

  • 公暦(Solar)と農暦(Lunar)を中心に多様な暦情報を計算・提供
  • 干支(十干・十二支)、生肖や二十四節気、星座などの補助情報サポート
  • シンプルな API(例: SolarDay.fromYmd)で日付生成・変換が容易
  • MIT ライセンスで利用しやすく、Dart パッケージとして依存追加可能

技術的なポイント

Tyme は暦計算に関するドメイン知識をライブラリ化したもので、以下のような技術的ポイントが挙げられます。

  • データ型設計: SolarDay(公暦)などのドメイン固有型を用いて日付情報を扱うため、呼び出し側の可読性と型安全性が高い。生成メソッド(fromYmd など)によって簡潔にインスタンス化できる点は API 設計の良さを示します。
  • 暦変換ロジック: 農暦(旧暦)や藏歴などの相互変換は天文計算や地域特有の規則を含み、正確な節気・閏月の判定が必要です。Tyme は既存の Lunar 系ライブラリのロジックを継承・改良しており、二十四節気や節日判定のアルゴリズムを実装しています。これにより、同一日付から干支・生肖・節気情報を導出できます。
  • 拡張性とモジュール性: README の説明どおり「より良い設計と拡張性」を目指しており、異なる暦体系(公暦・農暦・藏歴)や補助情報(星座・法定休日)を分離して扱える構造になっていると推測できます。analysis_options.yaml が含まれていることから、静的解析ルールを整備しコード品質を保つ配慮も確認できます。
  • パッケージ化と利用: pubspec による依存解決(例: tyme4dart: ^1.3.8)で簡単にプロジェクトへ組み込み可能。Dart/Flutter のプロジェクトで日付情報の拡張が必要な場面(カレンダー表示、祝日判定、占術的表示など)にそのまま適用できます。
  • 実装サイズとメンテナンス性: 現状コミット数やファイル数が少なく、小規模な状態で公開されています。コア機能は揃っていますが、継続的なメンテナンスやバグフィックス、追加機能を必要とする場面ではリポジトリの活発さを確認する必要があります。
  • ライセンスと互換性: MIT ライセンスで配布されているため商用利用や二次配布が容易です。Dart 言語で書かれているため、Flutter アプリへの統合も自然です。

使い方は非常にシンプルで、README の例のように依存を追加し、SolarDay.fromYmd(年, 月, 日) から始めることで、そこから農暦情報や節気、干支といった派生情報を取得できます。内部で天文的な計算(節気の時刻や閏月判定)を再現しているため、暦関連の厳密な要件にも対応可能です。

プロジェクトの構成

主要なファイルとディレクトリ:

  • .gitignore: file
  • CHANGELOG.md: file
  • LICENSE: file
  • README.md: file
  • analysis_options.yaml: file

…他 3 ファイル

まとめ

多様な暦情報を扱える軽量な Dart ライブラリで、カレンダー機能の実装に有用。

リポジトリ情報: