日本の最低賃金は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指定日が収録範囲外prevnext で前後のデータセット情報を返す
DatasetNotFoundForYear指定年度のデータが未収録新年度データ追加前に発生しうる

thiserror で実装されているため、Display トレイトによるメッセージ出力や ? 演算子によるエラー伝播がそのまま使えます。

発効日のスマートフォールバック

発効日のスマートフォールバック:都道府県ごとの発効日の違いと年度切替タイムライン

日本の最低賃金は毎年10月前後に改定されますが、都道府県ごとに発効日が異なります。2025年度の場合、多くの都道府県は10月1日発効ですが、北海道は10月4日、秋田県は2026年3月31日と大きく差があります(出典: 厚生労働省)。

minimum_wage_jp はこの差異を内部で管理しており、rate_on_dateis_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);
}

最低賃金データの取得手段を比較

最低賃金データ取得方式の選び方フローチャート:Rustプロジェクトかどうか・オフライン動作の要否で最適な方式を判断

最低賃金データをプログラムから取得する手段は、minimum_wage_jp のほかにもいくつか存在します。

方式言語オフライン動作都道府県別発効日の考慮コンプライアンス判定
minimum_wage_jpRust対応対応
最低賃金API(Vercel)Python / FastAPI不可対応非対応
jp_minimum_wage_dataJSON(言語非依存)非対応非対応
厚労省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アプリケーションに日本の最低賃金チェック機能を組み込むためのクレートです。ネットワーク通信なしに都道府県別の最低賃金取得とコンプライアンス判定が行えます。