2026年の祝日は米国が11日、英国が14日、日本が18日、ドイツが9日、インドネシアが17日で、5か国すべてに共通する日付は1月1日だけです。国コードを順に処理して国と年ごとに1回リクエストし、祝日の日付ごとに国をまとめてカレンダーを比較します。
APIで計算する
- キーを取得して環境変数を設定 新規登録で無料のキーを取得し、
NARWHAL_API_KEYという環境変数に保存します。スクリプトはその変数を読み取り、キーをAuthorization: Bearer YOUR_KEYとして送信するため、Pythonを実行する環境で設定してください。 - 国と年を選択
GET /v1/calendars/holidays/{country}/{year}にはISO 3166 alpha-3国コードを使用し、この例では2026年のUSA、GBR、JPN、DEU、IDNをリクエストします。国と年の組み合わせごとに個別のリクエストが必要なので、この比較では5回リクエストします。比較する国の年は統一してください。 - 日付ごとに国をまとめる Pythonスクリプトを実行して各国の祝日を取得し、レスポンスの項目を
dateでグループ化して、日付ごとに国コードの集合を作成します。スクリプトは日付を並べ替えて3か国以上に共通する日付を出力し、その後、共通の日付として出力されないものも含めたデータ全体から、各国の重複を除いた日付数を集計します。Python、5か国の祝日import os from collections import defaultdict import requests HEADERS = {"Authorization": f"Bearer {os.environ['NARWHAL_API_KEY']}"} COUNTRIES = ["USA", "GBR", "JPN", "DEU", "IDN"] by_date = defaultdict(set) for country in COUNTRIES: r = requests.get(f"https://api.narwhalapi.com/v1/calendars/holidays/{country}/2026", params={"scope": "national_public"} if country == "IDN" else None, headers=HEADERS, timeout=10) r.raise_for_status() for h in r.json()["holidays"]: by_date[h["date"]].add(country) for day in sorted(by_date): if len(by_date[day]) >= 3: print(day, sorted(by_date[day])) print({c: sum(1 for d in by_date.values() if c in d) for c in COUNTRIES}) - 共通の日付と国別の合計を確認 2026年の共通の日付の出力には1月1日、4月3日、5月25日、12月25日が含まれ、最後の行には各国の重複を除いた日付の合計が表示されます。この合計では、米国は
federal_government、英国はbank、日本とドイツはnational_publicのスコープを使用し、インドネシアのリクエストではnational_publicを明示的に選択しています。
共通の日付に対応する国の一覧は、祝日の名前とは分けて確認してください。2026年5月25日はドイツ、英国、米国に共通する祝日の日付で、米国では戦没将兵追悼記念日です。スクリプトは日付でグループ化するため、一致する国の祝日名が同じである必要はありません。2026年4月3日はドイツ、英国、インドネシアで聖金曜日となり、この日付も共通の日付として出力する条件を満たします。国の一覧にはDEU、GBR、IDNが含まれます。
スプレッドシートまたはコードを使わずに計算する
スクリプトを使わずに日付を比較するには、各国の祝日カレンダーページ (英語)を開きます。スプレッドシートで比較する場合は、各国の日付を別々の列に貼り付け、同じ国内の各日付は重複を除いて1件だけ残します。比較する日付をA2に、他の国の日付一覧をB:E列に入力します。
=COUNTIF(B:E, A2)数式は他の国の列で一致するセルを数えます。A列に一覧を置いた国はA2の日付ですでに数えているため、数式の結果はシート内の他の列での一致数として読み取ります。一致した日付がどのカレンダーのものか確認できるよう、貼り付ける際は国ごとに日付をまとめてください。A列の比較する日付の隣に数式をコピーします。各結果は同じ行の日付と対応させて確認します。数式は他の列から同じ日付を検索するため、一覧の行位置を揃える必要はありません。
状況に応じた方法の選び方
| 状況 | 適した方法 | 理由 |
|---|---|---|
| 2か国または3か国を一度だけ比較 | カレンダーページ | 各国の祝日の日付を直接確認 |
| チームのカレンダー作成や複数拠点の給与計算 | 国ごとに年1回実行するスクリプト | 日付ごとに国をまとめ、重複を除いた日付を集計 |
| 一部の地域だけを含める | レスポンスのsubdivision_codesで絞り込み | 比較対象の行政区分を選択 |
英国の行数が2倍になるのはなぜですか?
銀行休業日は英国の構成国によって異なるため、各日付が行政区分のグループごとに1回ずつ表示されます。2026年の英国のレスポンスには、イングランドとウェールズ、北アイルランド、スコットランドの行が別々に含まれるため、元の行数は28行ですが、カレンダー全体の重複を除いた日付数は14日です。国全体の重複を除いた日付の合計が必要な場合は、日付を集合にまとめてください。
地域のカレンダーを作成する場合は、日付をまとめる前に、レスポンスのsubdivision_codesで該当する項目を選択します。これにより、地域の選択と重複を除いた日付の集計を分けて行えます。
一斉休暇を除外するにはどうすればよいですか?
インドネシアでは、cuti bersamaと呼ばれる一斉休暇を除外するためにscope=national_publicを指定します。2026年は、この指定で重複を除いた祝日の日付が17日になりますが、フィルターなしのレスポンスにはcollective_leaveの項目も含まれるため25行になります。この比較では、インドネシアのリクエストにスコープのパラメーターを指定します。
日付を全体のデータに追加する前に、スコープを適用してください。適用しない場合、共通の日付の比較や国の祝日の集計に、インドネシアの一斉休暇も含まれます。
週末の祝日の数え方は各国で同じですか?
いいえ、各国の一覧では、その国が定めた日付を使用します。祝日を平日に振り替え、observedを付ける国もあります。比較には振替日も含めてレスポンスの日付を使用し、すべての国の週末の祝日を単一の規則で移動させないでください。
実例:2026年12月25日
2026年12月25日を対象に、各国で選択した祝日一覧からその日付を検索します。ドイツ、英国、インドネシア、米国の国コードがそれぞれ1つずつ加わり、日本にはその日付の祝日はありません。同じ日付の地域別の行がレスポンスに複数含まれる場合も、一致した国は1か国として数えます。
| 国 | コード | 2026年12月25日は祝日か |
|---|---|---|
| ドイツ | DEU | はい |
| 英国 | GBR | はい |
| インドネシア | IDN | はい |
| 米国 | USA | はい |
| 日本 | JPN | いいえ |
| 合計 | DEU, GBR, IDN, USA | 5か国中4か国 |
2026年12月25日の国コードを重複を除いて数えると、5か国中4か国になります。3か国以上に共通するため、この日付はスクリプトの出力条件を満たします。比較すると、2026年1月1日には5か国すべての国コードがあり、2026年で5か国すべてに共通する唯一の日付です。
公開。
