Pythonで指定日が祝日か判定する方法!初心者でもわかるholidaysモジュールの使い方
生徒
「Pythonで特定の日が祝日かどうかって判定できますか?」
先生
「はい、holidaysという便利なモジュールを使えば、日本の祝日も簡単に調べられますよ。」
生徒
「Python初心者でも簡単に使えるんですか?」
先生
「もちろんです!使い方を一から丁寧に説明しますので、一緒にやってみましょう!」
1. holidaysモジュールとは?祝日を簡単に判定できる便利機能
holidaysモジュールは、指定した国の祝日を自動で判定してくれるPythonの外部ライブラリです。アメリカ、日本、カナダなど多くの国に対応していて、業務システムやスケジュール管理にとても役立ちます。
日本の祝日も対応しており、「この日が祝日かどうか」「この年の祝日はいつか」などをプログラムから簡単にチェックできます。
2. holidaysモジュールのインストール方法
holidaysモジュールは標準では入っていないため、まずはPythonにインストールする必要があります。以下のコマンドを使ってインストールしてください。
pip install holidays
コマンドプロンプトやターミナルで上の命令を打てば、数秒で完了します。
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. 今日が祝日かどうかを自動判定する方法
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. 特定の年のすべての祝日一覧を取得する
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. 平日・休日・祝日を組み合わせて判定する方法
たとえば「土日や祝日を休みにしたい」といった場合、曜日と祝日の両方をチェックする必要があります。
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モジュールの注意点と対応国
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モジュールは非常に直感的に使えるので、初心者でも扱いやすいのが特徴です。」
生徒
「土日と組み合わせることで、実際の業務に近い休日判定ができるのも良かったです。」
先生
「その通りです。実務では単純な祝日だけでなく、複合的な条件が必要になることが多いので、今回のようなロジックはとても役立ちます。」
生徒
「これならスケジュール管理や勤怠システムにも応用できそうです!」
先生
「ぜひチャレンジしてみてください。今回学んだ内容をベースに、関数化やクラス化を進めると、さらに実践的なコードになりますよ。」