カテゴリ: Python 更新日: 2026/05/24

Pythonで指定日が祝日か判定する方法!初心者でもわかるholidaysモジュールの使い方

Pythonで指定日が祝日か判定する方法(holidaysモジュール)
Pythonで指定日が祝日か判定する方法(holidaysモジュール)

先生と生徒の会話形式で理解しよう

生徒

「Pythonで特定の日が祝日かどうかって判定できますか?」

先生

「はい、holidaysという便利なモジュールを使えば、日本の祝日も簡単に調べられますよ。」

生徒

「Python初心者でも簡単に使えるんですか?」

先生

「もちろんです!使い方を一から丁寧に説明しますので、一緒にやってみましょう!」

1. holidaysモジュールとは?祝日を簡単に判定できる便利機能

1. holidaysモジュールとは?祝日を簡単に判定できる便利機能
1. holidaysモジュールとは?祝日を簡単に判定できる便利機能

holidaysモジュールは、指定した国の祝日を自動で判定してくれるPythonの外部ライブラリです。アメリカ、日本、カナダなど多くの国に対応していて、業務システムやスケジュール管理にとても役立ちます。

日本の祝日も対応しており、「この日が祝日かどうか」「この年の祝日はいつか」などをプログラムから簡単にチェックできます。

2. holidaysモジュールのインストール方法

2. holidaysモジュールのインストール方法
2. holidaysモジュールのインストール方法

holidaysモジュールは標準では入っていないため、まずはPythonにインストールする必要があります。以下のコマンドを使ってインストールしてください。


pip install holidays

コマンドプロンプトやターミナルで上の命令を打てば、数秒で完了します。

3. 指定日が祝日かどうかを判定する基本的なコード

3. 指定日が祝日かどうかを判定する基本的なコード
3. 指定日が祝日かどうかを判定する基本的なコード

それでは、具体的に2025年1月1日が祝日かどうかを判定するサンプルコードを見てみましょう。日本の祝日として判定したいので、country='JP'を指定します。


import holidays
import datetime

# 日本の祝日リストを作成(2025年)
jp_holidays = holidays.country_holidays('JP', years=2025)

# 判定したい日付
check_date = datetime.date(2025, 1, 1)

# 判定
if check_date in jp_holidays:
    print(f"{check_date} は祝日です({jp_holidays[check_date]})")
else:
    print(f"{check_date} は祝日ではありません")

2025-01-01 は祝日です(元日)

jp_holidaysは辞書のような構造になっていて、日付をキーにして祝日の名前を取り出せます。とてもシンプルです。

4. 今日が祝日かどうかを自動判定する方法

4. 今日が祝日かどうかを自動判定する方法
4. 今日が祝日かどうかを自動判定する方法

datetime.date.today()を使えば、今日の日付が祝日かどうかをリアルタイムでチェックできます。毎日自動で判定したいときに便利です。


import holidays
import datetime

jp_holidays = holidays.country_holidays('JP')
today = datetime.date.today()

if today in jp_holidays:
    print(f"今日は祝日です({jp_holidays[today]})")
else:
    print("今日は祝日ではありません")

このように書くだけで、システムを起動したその日の祝日情報がわかります。

5. 特定の年のすべての祝日一覧を取得する

5. 特定の年のすべての祝日一覧を取得する
5. 特定の年のすべての祝日一覧を取得する

1年分の祝日を全部表示したい場合も簡単です。たとえば2025年の祝日を一覧表示するには次のようにします。


import holidays

jp_holidays = holidays.country_holidays('JP', years=2025)

for date, name in sorted(jp_holidays.items()):
    print(f"{date}:{name}")

2025-01-01:元日
2025-01-13:成人の日
...

スケジュール作成やカレンダー生成にとても役立ちますね。

6. 平日・休日・祝日を組み合わせて判定する方法

6. 平日・休日・祝日を組み合わせて判定する方法
6. 平日・休日・祝日を組み合わせて判定する方法

たとえば「土日や祝日を休みにしたい」といった場合、曜日と祝日の両方をチェックする必要があります。


import holidays
import datetime

check_date = datetime.date(2025, 9, 15)
jp_holidays = holidays.country_holidays('JP', years=2025)

# 曜日番号(0=月曜, 6=日曜)
weekday = check_date.weekday()

if check_date in jp_holidays or weekday >= 5:
    print("この日は休みです")
else:
    print("この日は平日です")

この日は休みです

weekday()で土曜(5)・日曜(6)を調べ、祝日とあわせて休日判定ができます。

7. holidaysモジュールの注意点と対応国

7. holidaysモジュールの注意点と対応国
7. holidaysモジュールの注意点と対応国

holidaysモジュールはたくさんの国に対応していますが、一部の祝日(地方限定など)は入っていないこともあります。また、将来の祝日は政府の発表で変更されることがあるため、最新の祝日情報を常に確認するようにしましょう。

対応している国のコード(JP、US、UKなど)は公式ドキュメントやholidays.list_supported_countries()で確認できます。

まとめ

まとめ
まとめ

holidaysモジュールの重要ポイントを振り返る

Pythonで祝日判定を行う際に非常に便利なのがholidaysモジュールです。標準ライブラリでは扱いにくい祝日情報を、シンプルなコードで扱える点が最大の魅力といえるでしょう。特に日本の祝日を含め、複数の国に対応しているため、業務システムやカレンダー機能の開発、勤怠管理、スケジュール管理など幅広い用途で活用できます。

今回の記事では、「Python 祝日 判定」「holidays モジュール 使い方」「Python カレンダー 祝日取得」といったキーワードに関連する重要な内容を解説しました。指定した日付が祝日かどうかを判定する基本的な方法から、今日の日付を自動取得して判定する方法、さらには1年分の祝日一覧を取得する方法まで、実践的な内容を網羅しています。

実務で役立つ使い方の整理

実務では単純な祝日判定だけでなく、「土日+祝日」を組み合わせた休日判定が求められるケースが多くあります。datetimeモジュールと組み合わせることで、曜日と祝日を同時にチェックできるため、より実用的なロジックを構築できます。

また、holidaysの戻り値は辞書のように扱えるため、「日付 → 祝日名」を簡単に取得できる点も非常に便利です。この特徴を活かすことで、画面表示やログ出力、帳票生成などにも応用できます。

サンプルプログラム(実践編)

ここでは、これまでの内容を踏まえて、より実務に近い形で「祝日・土日を含めた休日判定」と「祝日名の表示」を組み合わせたサンプルコードを紹介します。


import holidays
import datetime

def is_holiday(date):
    jp_holidays = holidays.country_holidays('JP', years=date.year)
    weekday = date.weekday()

    if date in jp_holidays:
        return True, jp_holidays[date]
    elif weekday >= 5:
        return True, "土日"
    else:
        return False, None

# 確認したい日付
check_date = datetime.date(2025, 9, 15)

result, name = is_holiday(check_date)

if result:
    print(f"{check_date} は休日です({name})")
else:
    print(f"{check_date} は平日です")

2025-09-15 は休日です(敬老の日)

このように関数化することで、再利用性の高いコードになります。業務システムやAPI開発においても、そのまま応用できる実践的な構成です。

理解を深めるためのポイント

初心者の方はまず、「日付オブジェクト」と「辞書構造」の扱いに慣れることが重要です。datetime.dateで日付を扱い、その日付がholidaysの中に含まれているかを確認する、という流れをしっかり理解しておきましょう。

また、祝日情報は法改正などによって変更される可能性があります。そのため、定期的にライブラリを更新することや、重要なシステムでは別途確認処理を設けることも検討すると安心です。

先生と生徒の振り返り会話

生徒

「Pythonで祝日を判定する方法がすごくシンプルで驚きました。辞書みたいに扱えるのも便利ですね。」

先生

「そうですね。holidaysモジュールは非常に直感的に使えるので、初心者でも扱いやすいのが特徴です。」

生徒

「土日と組み合わせることで、実際の業務に近い休日判定ができるのも良かったです。」

先生

「その通りです。実務では単純な祝日だけでなく、複合的な条件が必要になることが多いので、今回のようなロジックはとても役立ちます。」

生徒

「これならスケジュール管理や勤怠システムにも応用できそうです!」

先生

「ぜひチャレンジしてみてください。今回学んだ内容をベースに、関数化やクラス化を進めると、さらに実践的なコードになりますよ。」

コメント
コメント投稿は、ログインしてください

まだ口コミはありません。

関連記事:
Python の日時操作の記事一覧へ
新着記事
New1
Python
Pythonの整数と浮動小数点数の違いとは?数値型の基本を解説
New2
Python
Pythonで文字列をリストに変換する方法!split()とjoin()の使い方
New3
Python
Pythonのbreakとcontinueの違いとは?ループの制御方法をマスター
New4
Python
Pythonのstartswith()・endswith()の使い方!文字列の前後をチェック
人気記事
No.1
Java&Spring記事人気No1
PHP
PHPの特殊文字とエスケープ処理を完全ガイド!初心者向けにhtmlspecialcharsとhtmlentitiesをやさしく解説
No.2
Java&Spring記事人気No2
PHP
PHP の文字列のフォーマット(sprintf, printf)
No.3
Java&Spring記事人気No3
Python
Pythonで文字列を置換する方法!replace()の使い方と正規表現の活用
No.4
Java&Spring記事人気No4
Python
Pythonでリストを分割する方法(スライス / split() / itertools)
No.5
Java&Spring記事人気No5
Python
Pythonのクロージャー(Closure)とは?関数内関数とnonlocalの活用
No.6
Java&Spring記事人気No6
Python
Pythonで経過時間を測る方法をやさしく解説!初心者向けtime.perf_counterとtime.sleepの使い方
No.7
Java&Spring記事人気No7
Python
Pythonのstartswith()・endswith()の使い方!文字列の前後をチェック
No.8
Java&Spring記事人気No8
Python
Pythonで経過時間を計測する方法を完全解説!初心者でもわかる time.perf_counter() と time.sleep()