システム開発者向け!日本の祝日を取得する方法まとめ

2024年5月9日木曜日

t f B! P L

はじめに

日本の祝日は「国民の祝日に関する法律」によって定められています。
祝日の多くは例年固定されていますが、東京オリンピックなどの国際的なイベントに合わせて一部が変更されることもあります。このため、祝日は常に一定とは限らないため、正確な情報を取得するには内閣府が公開する一次情報を活用するのが最も確実です。
しかし、開発現場では企業や個人が提供しているAPIを使って効率的に祝日データを取得するのも一つの方法です。この記事では、日本の祝日を取得するための主要な方法をまとめます。

日本の祝日を取得する主要な方法

1. 内閣府の一次情報

日本の祝日情報の最も信頼できるソースは、内閣府が公式に公開している一次情報です。次のリンクからCSV形式で最新の祝日一覧を取得できます。

内閣府ホームページ:国民の祝日について

2. 祝日APIの利用

企業や個人が提供する祝日APIは、簡単に実装でき、利便性が高いです。

主な祝日APIを紹介!

主な祝日APIは以下の通りです。

1. Holiday API (holidays-jp)

提供者:@matsubara0507 |
GitHub リポジトリ:matsubara0507/holidays-jp
機能:Googleカレンダーから抽出した日本の祝日データを提供

使い方

去年・今年・来年の3年分の祝日情報を取得

$ curl https://holidays-jp.github.io/api/v1/date.json

指定した年の祝日情報を取得

$ https://holidays-jp.github.io/api/v1/2017/date.json

2. Google Calendar API

Google カレンダーの日本の祝日を、Google Calendar APIを通じて取得する方法です。

使い方

  1. Google Cloud Platformでプロジェクトを作成し、Google Calendar APIを有効化
  2. クライアントIDとクライアントシークレットを設定し、認証情報を生成
  3. カレンダーデータを取得するコード例(Python):
from googleapiclient.discovery import build
from google.oauth2.credentials import Credentials

SCOPES = ['https://www.googleapis.com/auth/calendar.readonly']
creds = Credentials.from_authorized_user_file('token.json', SCOPES)
service = build('calendar', 'v3', credentials=creds)

# 日本の祝日カレンダーID
calendar_id = 'japanese__ja@holiday.calendar.google.com'
events_result = service.events().list(calendarId=calendar_id).execute()
events = events_result.get('items', [])
for event in events:
    print(event['summary'], event['start'].get('date'))

3. Nager.Date

国際的な祝日データを提供するC#用ライブラリ(REST APIも利用可能)

Web サイト:Nager.Date
機能:日本を含む多くの国の祝日情報を取得可能

使い方:

APIの仕様は、次のように年と国コードを指定して祝日の一覧を取得します。

GET /api/v3/PublicHolidays/{Year}/{CountryCode}

例えば2024年分の日本の祝日一覧を取得する場合は、次のURLでリクエストを投げます。

$ curl https://date.nager.at/api/v3/PublicHolidays/2024/JP

自前で祝日カレンダーを実装する方法

独自に日本の祝日データを扱いたい場合、以下の2つの方法があります。

  1. 祝日計算アルゴリズムの実装
    「国民の祝日に関する法律」に基づく祝日計算ロジックを直接実装します。Pythonの例:
   import datetime
   import jpholiday

   year = 2024
   holidays = jpholiday.year_holidays(year)
   for holiday in holidays:
       print(f"{holiday[0]}: {holiday[1]}")
  1. Excelデータの利用
    内閣府が公開するPDFデータをExcelに変換して管理する方法もあります。Excelファイルを社内ツールとして活用することで、開発者間で一元的に祝日データを共有できます。

まとめ

日本の祝日は公式の一次情報を利用するのが最も正確ですが、システム開発においてはAPIを使うことで開発の効率を高めることができます。ぜひ自分のプロジェクトに合った方法で、正確な祝日情報を取得してください。

スポンサーリンク
スポンサーリンク

このブログを検索

Profile

自分の写真
Webアプリエンジニア。 日々新しい技術を追い求めてブログでアウトプットしています。
プロフィール画像は、猫村ゆゆこ様に書いてもらいました。

仕事募集もしていたり、していなかったり。

QooQ