# minimum_wage_jp
[](https://crates.io/crates/minimum_wage_jp)
[](LICENSE)
日本の地域別最低賃金(都道府県別)をシンプルに扱うための Rust クレートです。
## 特徴
- 指定日の最低賃金(円)を取得
- 指定時給が最低賃金を満たすか判定(不足額も算出)
- 年度(改定年)を指定して率を取得
- データは埋め込み済み、適用開始日前は前年データに自動フォールバック
## インストール
```toml
[dependencies]
minimum_wage_jp = "1"
```
## クイックスタート
```rust
use chrono::NaiveDate;
use minimum_wage_jp::{MinimumWageJp, MinimumWageJpCompliance};
// 都道府県コード: 1 = 北海道, 13 = 東京都, 47 = 沖縄県
let hokkaido: u8 = 1;
// 今日の最低賃金(円)を取得
let rate_today = MinimumWageJp::rate(hokkaido).unwrap();
println!("今日の最低賃金: {}円", 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 {
MinimumWageJpCompliance::Compliant => println!("OK"),
MinimumWageJpCompliance::Short { shortage_yen, required_yen } => {
println!("不足: {}円 (必要: {}円)", shortage_yen, required_yen);
}
}
```
## API
### 最低賃金の取得
| `rate(pref: u8)` | 今日の最低賃金(円)を取得 |
| `rate_on_date(date: NaiveDate, pref: u8)` | 指定日の最低賃金(円)を取得 |
| `rate_for_revision(year: u16, pref: u8)` | 指定年版(改定年)の最低賃金を取得 |
### コンプライアンス判定
| `is_compliant(pref: u8, hourly_yen: u32)` | 今日の時給が最低賃金を満たすか判定 |
| `is_compliant_on_date(date: NaiveDate, pref: u8, hourly_yen: u32)` | 指定日の時給が最低賃金を満たすか判定 |
### 戻り値の型
```rust
enum MinimumWageJpCompliance {
Compliant, // 最低賃金を満たしている
Short { shortage_yen: u32, required_yen: u32 } // 不足あり
}
```
### エラー型
| `InvalidPrefCode(u8)` | 都道府県コードが 1〜47 の範囲外 |
| `DatasetNotFoundForDate { date, prev, next }` | 指定日のデータが存在しない |
| `DatasetNotFoundForYear { year }` | 指定年版のデータが存在しない |
## 都道府県コード
JIS X 0401 に準拠した 1〜47 の数値コードを使用します。
| 1 | 北海道 | 17 | 石川県 | 33 | 岡山県 |
| 2 | 青森県 | 18 | 福井県 | 34 | 広島県 |
| 3 | 岩手県 | 19 | 山梨県 | 35 | 山口県 |
| 4 | 宮城県 | 20 | 長野県 | 36 | 徳島県 |
| 5 | 秋田県 | 21 | 岐阜県 | 37 | 香川県 |
| 6 | 山形県 | 22 | 静岡県 | 38 | 愛媛県 |
| 7 | 福島県 | 23 | 愛知県 | 39 | 高知県 |
| 8 | 茨城県 | 24 | 三重県 | 40 | 福岡県 |
| 9 | 栃木県 | 25 | 滋賀県 | 41 | 佐賀県 |
| 10 | 群馬県 | 26 | 京都府 | 42 | 長崎県 |
| 11 | 埼玉県 | 27 | 大阪府 | 43 | 熊本県 |
| 12 | 千葉県 | 28 | 兵庫県 | 44 | 大分県 |
| 13 | 東京都 | 29 | 奈良県 | 45 | 宮崎県 |
| 14 | 神奈川県 | 30 | 和歌山県 | 46 | 鹿児島県 |
| 15 | 新潟県 | 31 | 鳥取県 | 47 | 沖縄県 |
| 16 | 富山県 | 32 | 島根県 | | |
## データセット
### 同梱データ
| 2024 | 2024-10-01 |
| 2025 | 2025-10-01 |
### 仕様
- 指定日に適用される最新の年版を自動選択
- 都道府県ごとの適用開始日が異なる場合、適用日前は前年版にフォールバック
- 例: 北海道の 2025 年版適用開始日は 2025-10-04
- 最初の年版より前の日付を指定した場合はエラーを返却
## タイムゾーンについて
`rate()` および `is_compliant()` は `chrono::Local` を使用してローカル日付を取得します。
サーバ・クライアント間でタイムゾーンが異なる環境では、`rate_on_date()` / `is_compliant_on_date()` の使用を推奨します。
## テスト
```bash
cargo test
```
## 貢献
新しい年版の追加や適用開始日の修正は `src/dataset.rs` を編集してください。
変更時はテストも併せて更新し、フォールバック仕様が正しく動作することを確認してください。
## ライセンス
MIT License