minimum_wage_jp 1.0.0

Japan minimum wage by prefecture: get rate for a date and check compliance
Documentation
  • Coverage
  • 20.83%
    5 out of 24 items documented0 out of 9 items with examples
  • Size
  • Source code size: 28.17 kB This is the summed size of all the files inside the crates.io package for this release.
  • Documentation size: 2.47 MB This is the summed size of all files generated by rustdoc for all configured targets
  • Ø build duration
  • this release: 20s Average build duration of successful builds.
  • all releases: 21s Average build duration of successful builds in releases after 2024-10-23.
  • Links
  • uiuifree/rust-minimum-wage-jp
    0 0 0
  • crates.io
  • Dependencies
  • Versions
  • Owners
  • uiuifree

minimum_wage_jp

日本の地域別最低賃金(都道府県別)をシンプルに扱うための Rust クレートです。

  • 指定日の最低賃金(円)を取得
  • 指定時給が最低賃金を満たすか判定(不足額も算出)
  • 年度(改定年)を指定して率を取得
  • データ構造は固定(埋め込み)で、適用開始日前は前年データにフォールバック

インストール

Cargo.toml に依存関係を追加します。

[dependencies]
minimum_wage_jp = "1"

本リポジトリをそのまま使う場合は、上記のように path 依存を使ってください。

使い方(クイックスタート)

use chrono::NaiveDate;
use minimum_wage_jp::MinimumWageJp;

// 1 = 北海道, 13 = 東京都, 47 = 沖縄県(1..=47)
let hokkaido: u8 = 1;

// 今日の最低賃金(円)を取得
let rate_today = MinimumWageJp::rate(hokkaido).unwrap();
println!("today rate: {}", rate_today);

// 指定日の最低賃金(円)を取得
let date = NaiveDate::from_ymd_opt(2025, 10, 4).unwrap();
let rate = MinimumWageJp::rate_on_date(date, hokkaido).unwrap();
assert_eq!(rate, 1075);

// 満たすか判定(不足額付き)
let result = MinimumWageJp::is_compliant_on_date(date, hokkaido, 1020).unwrap();
match result {
    minimum_wage_jp::MinimumWageJpCompliance::Compliant => println!("OK"),
    minimum_wage_jp::MinimumWageJpCompliance::Short { shortage_yen, required_yen } => {
        println!("不足: {}円 (必要: {}円)", shortage_yen, required_yen);
    }
}

API 概要

  • MinimumWageJp::rate(pref: u8) -> Result<u16, MinimumWageJpErr>
    • ローカル日付(今日)の最低賃金(円)。
  • MinimumWageJp::rate_on_date(date: NaiveDate, pref: u8) -> Result<u16, MinimumWageJpErr>
    • 指定日の最低賃金(円)。
    • ポイント: 都道府県ごとの適用開始日が全国一斉日より遅い場合、適用日前は前年の率に自動フォールバックします。
  • MinimumWageJp::rate_for_revision(year: u16, pref: u8) -> Result<u16, MinimumWageJpErr>
    • 指定「年版(改定年)」の率。
  • MinimumWageJp::is_compliant(pref: u8, hourly_yen: u32) -> Result<MinimumWageJpCompliance, MinimumWageJpErr>
    • 今日の時給が満たすかを判定。
  • MinimumWageJp::is_compliant_on_date(date: NaiveDate, pref: u8, hourly_yen: u32) -> Result<MinimumWageJpCompliance, MinimumWageJpErr>
    • 指定日の時給が満たすかを判定。

エラー型

  • MinimumWageJpErr::InvalidPrefCode(u8)
    • 都道府県コードが 1..=47 の範囲外。
  • MinimumWageJpErr::DatasetNotFoundForDate { date, prev, next }
    • まだデータが存在しない日付(最初の年版より前)など。
    • prev/next には前後の候補が含まれ、UI での案内に利用できます。
  • MinimumWageJpErr::DatasetNotFoundForYear { year }
    • 対象年版が存在しない。

都道府県コードについて

  • 本クレートでは都道府県コードを u8 の 1..=47 で扱います。
    • 1: 北海道
    • 13: 東京都
    • 47: 沖縄県
  • 無効なコードでは InvalidPrefCode エラーを返します。

データセットと仕様

  • 現在同梱している年版データ(埋め込み)
    • 2024 年版(effective_from: 2024-10-01)
    • 2025 年版(effective_from: 2025-10-01)
  • 都道府県ごとに実際の適用開始日が異なる場合があります(例: 北海道は 2025-10-04)。
  • 仕様(重要)
    • 指定日付の属する「直近の年版」を選びます(effective_from が日付以下で最大のもの)。
    • ただし、当該都道府県の「適用開始日」がその日付より後なら、前年版の率を用います。
    • 最初の年版より前の日付では、Error とともに next 候補(最初の年版)を返します。

日付とタイムゾーン

  • today() は chrono::Local を使い、ローカルタイムゾーンの「日付(NaiveDate)」を用います。
  • サーバとクライアントでタイムゾーンが異なる場合は、is_compliant_on_date / rate_on_date を推奨します。

テスト

cargo test

貢献(データ更新)

  • 新しい年版の追加や適用開始日の修正は src/dataset.rs を編集して行います。
  • 追加の際はテストを併せて更新し、挙動(フォールバック仕様)が満たされることを確認してください。