日本の最低賃金は47都道府県ごとに異なり、毎年改定されます。給与計算システムや求人管理ツールを開発する際、最低賃金の参照と遵守チェックは避けて通れない処理です。しかし、厚生労働省は機械可読なAPIを公開しておらず、PDFからのデータ抽出が必要になるのが現状です。
minimum_wage_jp は、この課題を解決するRustクレートです。都道府県コード(1〜47)と日付を渡すだけで、その時点の最低賃金額を取得したり、指定時給が基準を満たすかどうかを判定したりできます。
minimum_wage_jp の概要
| 項目 | 内容 |
|---|---|
| クレート名 | minimum_wage_jp |
| 最新バージョン | 1.0.1(2026年1月7日公開) |
| ライセンス | MIT |
| 依存クレート | chrono(日付処理)、thiserror(エラー定義) |
| カテゴリ | Date and time / Localization |
| 対応データ | 2024年度・2025年度の地域別最低賃金 |
| リポジトリ | GitHub |
外部APIへの通信は発生しません。最低賃金データはクレート内にハードコードされており、ネットワーク接続なしで動作します。
インストール方法
Cargo.toml に以下を追加します。
[dependencies]
minimum_wage_jp = "1"
日付操作に chrono を使うため、まだ導入していない場合は併せて追加します。
[dependencies]
minimum_wage_jp = "1"
chrono = "0.4"
5つのAPI関数
minimum_wage_jp が提供する関数は5つです。すべて MinimumWageJp 構造体の関連関数として呼び出します。
1. rate — 本日の最低賃金を取得
use minimum_wage_jp::MinimumWageJp;
let tokyo: u8 = 13;
let rate = MinimumWageJp::rate(tokyo).unwrap();
println!("東京都の最低賃金: {}円", rate);
// => 東京都の最低賃金: 1226円(2025年度改定後)
システムのローカル日付を基準に、指定都道府県の最低賃金(円)を u16 で返します。
2. rate_on_date — 指定日の最低賃金を取得
use chrono::NaiveDate;
use minimum_wage_jp::MinimumWageJp;
let date = NaiveDate::from_ymd_opt(2025, 10, 4).unwrap();
let hokkaido: u8 = 1;
let rate = MinimumWageJp::rate_on_date(date, hokkaido).unwrap();
println!("2025/10/4 北海道: {}円", rate);
過去や未来の特定日における最低賃金を取得できます。都道府県ごとに発効日が異なるため、同じ年度でも「まだ旧年度の金額が適用される」ケースを正しく処理します。
たとえば2025年度の北海道は10月4日発効です。10月1日に問い合わせると2024年度の金額が返り、10月4日以降は2025年度の金額が返ります。
3. rate_for_revision — 年度指定で最低賃金を取得
use minimum_wage_jp::MinimumWageJp;
let okinawa: u8 = 47;
let rate = MinimumWageJp::rate_for_revision(2025, okinawa).unwrap();
println!("2025年度 沖縄: {}円", rate);
発効日に関係なく、特定年度の改定額そのものを参照する場合に使います。「来年度の改定額をあらかじめ表示したい」といったユースケースに適しています。
4. is_compliant — 本日の賃金コンプライアンス判定
use minimum_wage_jp::{MinimumWageJp, MinimumWageJpCompliance};
let osaka: u8 = 27;
let hourly_yen = 1100;
match MinimumWageJp::is_compliant(osaka, hourly_yen).unwrap() {
MinimumWageJpCompliance::Compliant => {
println!("基準を満たしています");
}
MinimumWageJpCompliance::Short { shortage_yen, required_yen } => {
println!("{}円不足(必要額: {}円)", shortage_yen, required_yen);
}
}
指定した時給が、本日の最低賃金を満たしているかを判定します。不足している場合は、不足額(shortage_yen)と必要額(required_yen)が返ります。
5. is_compliant_on_date — 指定日のコンプライアンス判定
use chrono::NaiveDate;
use minimum_wage_jp::{MinimumWageJp, MinimumWageJpCompliance};
let date = NaiveDate::from_ymd_opt(2025, 11, 1).unwrap();
let aichi: u8 = 23;
let result = MinimumWageJp::is_compliant_on_date(date, aichi, 1050).unwrap();
match result {
MinimumWageJpCompliance::Compliant => println!("OK"),
MinimumWageJpCompliance::Short { shortage_yen, required_yen } => {
println!("不足: {}円(基準: {}円)", shortage_yen, required_yen);
}
}
改定の切り替わり時期に「いつから新しい金額が適用されるか」をプログラム的に判定する場合に役立ちます。
都道府県コードの対応表
都道府県コードはJIS X 0401(総務省の全国地方公共団体コード)の上2桁と同じ体系で、u8 型の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 | 島根県 |
エラーハンドリング
MinimumWageJpErr は3種類のバリアントを持ちます。
use minimum_wage_jp::{MinimumWageJp, MinimumWageJpErr};
match MinimumWageJp::rate(99) {
Ok(rate) => println!("{}円", rate),
Err(MinimumWageJpErr::InvalidPrefCode(code)) => {
eprintln!("無効な都道府県コード: {}", code);
}
Err(MinimumWageJpErr::DatasetNotFoundForDate { date, prev, next }) => {
eprintln!("{}のデータがありません", date);
// prev / next に隣接するデータセットの情報が入る
}
Err(MinimumWageJpErr::DatasetNotFoundForYear { year }) => {
eprintln!("{}年度のデータがありません", year);
}
}
| バリアント | 発生条件 | 補足 |
|---|---|---|
InvalidPrefCode(u8) | 都道府県コードが1〜47の範囲外 | バリデーション用 |
DatasetNotFoundForDate | 指定日が収録範囲外 | prev・next で前後のデータセット情報を返す |
DatasetNotFoundForYear | 指定年度のデータが未収録 | 新年度データ追加前に発生しうる |
thiserror で実装されているため、Display トレイトによるメッセージ出力や ? 演算子によるエラー伝播がそのまま使えます。
発効日のスマートフォールバック

日本の最低賃金は毎年10月前後に改定されますが、都道府県ごとに発効日が異なります。2025年度の場合、多くの都道府県は10月1日発効ですが、北海道は10月4日、秋田県は2026年3月31日と大きく差があります(出典: 厚生労働省)。
minimum_wage_jp はこの差異を内部で管理しており、rate_on_date や is_compliant_on_date は発効日を考慮して自動的に正しい年度の金額を返します。開発者側で発効日テーブルを持つ必要がありません。
2025/09/30 → 2024年度の金額
2025/10/01 → 多くの都道府県で2025年度の金額に切り替わる
2025/10/04 → 北海道も2025年度の金額に切り替わる
実践的な活用パターン
パターン1: 求人掲載時の時給バリデーション
求人情報の登録時に、掲載する時給が最低賃金を下回っていないかをチェックする処理です。
use minimum_wage_jp::{MinimumWageJp, MinimumWageJpCompliance};
fn validate_job_posting(pref_code: u8, hourly_wage: u32) -> Result<(), String> {
match MinimumWageJp::is_compliant(pref_code, hourly_wage) {
Ok(MinimumWageJpCompliance::Compliant) => Ok(()),
Ok(MinimumWageJpCompliance::Short { shortage_yen, required_yen }) => {
Err(format!(
"時給{}円は最低賃金{}円を{}円下回っています",
hourly_wage, required_yen, shortage_yen
))
}
Err(e) => Err(format!("判定エラー: {}", e)),
}
}
パターン2: 全都道府県の最低賃金一覧を生成
管理画面やレポートで、全国の最低賃金一覧を出力するケースです。
use minimum_wage_jp::MinimumWageJp;
fn print_all_rates() {
let pref_names = [
"北海道", "青森県", "岩手県", "宮城県", "秋田県",
"山形県", "福島県", "茨城県", "栃木県", "群馬県",
"埼玉県", "千葉県", "東京都", "神奈川県", "新潟県",
"富山県", "石川県", "福井県", "山梨県", "長野県",
"岐阜県", "静岡県", "愛知県", "三重県", "滋賀県",
"京都府", "大阪府", "兵庫県", "奈良県", "和歌山県",
"鳥取県", "島根県", "岡山県", "広島県", "山口県",
"徳島県", "香川県", "愛媛県", "高知県", "福岡県",
"佐賀県", "長崎県", "熊本県", "大分県", "宮崎県",
"鹿児島県", "沖縄県",
];
for (i, name) in pref_names.iter().enumerate() {
let code = (i + 1) as u8;
if let Ok(rate) = MinimumWageJp::rate(code) {
println!("{}: {}円", name, rate);
}
}
}
パターン3: 改定前後の差額計算
年度改定のタイミングで、前年度との差額をレポートする処理です。
use minimum_wage_jp::MinimumWageJp;
fn calc_diff(pref: u8, year: u16) -> Option<i32> {
let current = MinimumWageJp::rate_for_revision(year, pref).ok()? as i32;
let previous = MinimumWageJp::rate_for_revision(year - 1, pref).ok()? as i32;
Some(current - previous)
}
// 東京都の2024→2025年度の差額
if let Some(diff) = calc_diff(13, 2025) {
println!("東京都: +{}円", diff);
}
最低賃金データの取得手段を比較

最低賃金データをプログラムから取得する手段は、minimum_wage_jp のほかにもいくつか存在します。
| 方式 | 言語 | オフライン動作 | 都道府県別発効日の考慮 | コンプライアンス判定 |
|---|---|---|---|---|
| minimum_wage_jp | Rust | 可 | 対応 | 対応 |
| 最低賃金API(Vercel) | Python / FastAPI | 不可 | 対応 | 非対応 |
| jp_minimum_wage_data | JSON(言語非依存) | 可 | 非対応 | 非対応 |
| 厚労省PDF手動抽出 | — | 可 | 手動対応 | 手動対応 |
minimum_wage_jp の特長は、ネットワーク不要で動作する点と、コンプライアンス判定(is_compliant 系関数)が組み込まれている点です。API方式は外部サーバーの可用性に依存しますが、データ更新がクレート更新を待たずに反映される利点があります。
データ更新とコントリビューション
最低賃金は毎年改定されるため、新年度のデータ追加が必要になります。minimum_wage_jp のデータは src/dataset.rs に定義されています。新しい年度のデータを追加するには、GitHubリポジトリにプルリクエストを送る方法が推奨されています。
データ更新のタイミングは、例年7〜8月に中央最低賃金審議会の答申が出揃い、10月前後に発効するサイクルです。答申確定後にデータを追加し、クレートの新バージョンとして公開する流れになります。
2025年度の最低賃金データ
minimum_wage_jp に収録されている2025年度の最低賃金は、全国加重平均で時給1,121円です。最高額は東京都の1,226円、最低額は高知県・宮崎県・沖縄県の1,023円となっています(出典: 厚生労働省)。
全都道府県で初めて時給1,000円を超え、前年度の全国平均1,055円から66円の引き上げとなりました。
主要都市の2025年度最低賃金(参考値):
| 都道府県 | 2025年度 | 前年度比 |
|---|---|---|
| 東京都 | 1,226円 | +63円 |
| 神奈川県 | 1,225円 | +63円 |
| 大阪府 | 1,177円 | +63円 |
| 愛知県 | 1,140円 | +63円 |
| 北海道 | 1,075円 | +65円 |
| 沖縄県 | 1,023円 | +71円 |
まとめ
minimum_wage_jp は、Rustアプリケーションに日本の最低賃金チェック機能を組み込むためのクレートです。ネットワーク通信なしに都道府県別の最低賃金取得とコンプライアンス判定が行えます。
