400で割れる、または「4で割れて100で割れない」場合にTrue
「うるう年(閏年)は4年に1度やってくる」「西暦が4で割り切れる年はすべてうるう年」――このように覚えている方は少なくありません。しかし、カレンダーの仕組みを厳密に辿ると、その認識だけでは思わぬ落とし穴にはまります。実際には西暦1900年や2100年は4で割り切れるにもかかわらず、うるう年ではありません。
現在世界中で広く使われている暦の基準では、地球の公転周期と人工的な暦のズレを極限まで補正するため、100や400を用いた緻密な計算ルールが定められています。本稿では、うるう年の正確な計算式と判定ロジック、天文学的な背景から、プログラミングやExcel実務で役立つ具体的なコード・関数式まで、専門的な知見を交えて徹底解説します。
📌 【この記事の重要ポイントまとめ】
- 要点1:うるう年は「4で割り切れる年」のうち「100で割り切れる年を除外」し、さらに「400で割り切れる年を復活」させる3段階で判定する。
- 要点2:地球の公転周期は約365.2422日であり、単純に4年で1日増やすと400年間に約3日分のズレが生じるため例外ルールが必要となる。
- 要点3:次のうるう年は2028年であり、実務やシステム開発では2100年の「例外平年」を見据えた正確なアルゴリズム実装が欠かせない。
「4で割るだけ」は大誤解!うるう年判定の3大ルールと計算方法
学校や日常会話では「夏季オリンピックが開催される年はうるう年」「西暦を4で割る」と簡略化して語られがちですが、世界共通の基準であるグレゴリオ暦ルールには、明確な3つの判定ステップが存在します。
カレンダーの日付を正確に算出するためには、以下の条件を上から順番に評価していく必要があります。
- 条件1:西暦年数が4で割り切れる年は、原則としてうるう年とする。
- 条件2:条件1を満たしていても、100で割り切れる年は平年(うるう年ではない)とする。
- 条件3:条件2に当てはまっても、400で割り切れる年は例外的にうるう年とする。
このうるう年判定条件を具体例に当てはめてみましょう。記憶に新しい西暦2000年は、100で割り切れますが400でも割り切れたため、条件3が適用されてうるう年(2月29日が存在する年)となりました。一方で、過去の西暦1900年や、将来訪れる西暦2100年は、4で割り切れるものの100で割り切れ、かつ400では割り切れません。したがって条件2が適用され、4の倍数でありながら平年(2月28日まで)となります。

なぜ例外が必要なのか?公転周期365日と2月29日の科学的背景
なぜこれほど複雑な条件分岐が必要なのでしょうか。その根本的な理由は、地球が太陽の周りを1周する公転周期365日という数字が、厳密な整数ではない点にあります。
国立天文台の観測データによると、地球の1太陽年(季節がひと巡りする時間)は正確には約365.24219日(365日5時間48分45秒余り)です。カレンダーを1年=365日として固定すると、毎年約0.2422日(約5時間48分)の遅れが生じます。
この端数を調整するため、かつてのユリウス暦では「4年に1度、1日(24時間=0.25日分)を足す」というルールを採用していました。しかし、0.2422日に対して毎年0.25日を加算し続けると、今度は毎年約0.0078日(約11分14秒)カレンダーが季節よりも進みすぎてしまう現象が発生します。このわずかなズレが400年積み重なると、約3.12日分もの大きなズレとなって春分や秋分の時期を狂わせてしまいます。
そこで1582年にローマ教皇グレゴリウス13世が制定したのがグレゴリオ暦です。「400年間に3回だけうるう年をキャンセルする(100で割れる年は平年にし、400で割れる年だけ残す)」というアルゴリズムを導入することで、400年間の平均年長を365.2425日に補正し、数千年にわたって季節と日付が一致する仕組みを完成させました。
なお、「なぜ2月末に調整日を入れるのか」という2月29日理由については、古代ローマ暦の歴史に由来します。当時の暦は現在の3月(農耕が始まる春)が年初であり、2月は1年の締めくくりとなる年末の月でした。そのため、余った日数の調整や帳尻合わせを最後の月である2月で行った名残が、現代の暦にも引き継がれています。
【データ一覧】西暦別の判定結果とスキップされる年の検証
過去の実績から将来の予定まで、西暦ごとの判定ロジックと結果を構造化データとして整理しました。システム開発や暦の確認における検証用データとしてご活用ください。
| 西暦年 | 条件判定(4 / 100 / 400の除算) | 暦上の扱い | 特記事項・影響 |
|---|---|---|---|
| 1900年 | 4で割れる / 100で割れる / 400で割れない | 平年(28日) | 4の倍数だが100の例外ルールでうるう年をスキップ。 |
| 2000年 | 4で割れる / 100で割れる / 400で割れる | うるう年(29日) | 400年に一度の特例。多くのシステムで世紀末問題と併せて検証された。 |
| 2024年 | 4で割れる / 100で割れない | うるう年(29日) | 前回の直近うるう年。夏季五輪開催年と合致。 |
| 2026年 | 4で割れない | 平年(28日) | 平年(年間日数365日)。 |
| 2028年 | 4で割れる / 100で割れない | うるう年(29日) | 次のうるう年いつという疑問に対する直近の該当年。 |
| 2100年 | 4で割れる / 100で割れる / 400で割れない | 平年(28日) | 次回訪れる「4で割り切れるのに平年となる」世紀の例外年。 |
このように閏年西暦一覧を精査すると、4年に1度という周期性が100年ごとにリセットされる構造が明瞭に理解できます。

実務で使える!Excel関数とPythonによるプログラミングアルゴリズム
ソフトウェア開発やデータ分析、日々の業務自動化において、うるう年判定を正確に実装することはバグを防ぐ必須スキルです。「4で割れるか」だけの簡易判定コードを組んでしまうと、2100年問題などの長期運用システムで致命的な日付エラーを引き起こします。
1. 閏年計算エクセルでの実装手法
Excel上でセル(例えばA1セル)に入力された西暦年がうるう年かどうかを判定する場合、論理式を用いて以下のように記述します。
=IF(OR(MOD(A1,400)=0, AND(MOD(A1,4)=0, MOD(A1,100)<>0)), "うるう年", "平年")
また、日付関数の仕様を活かして「その年の2月末日が何日か」を判定するアプローチも実用的です。以下の数式では、2月28日の翌日(DATE関数で2月29日を指定)の月が「2」のままであればうるう年、「3」に繰り上がれば平年と判定できます。
=IF(MONTH(DATE(A1, 2, 29))=2, "うるう年", "平年")
2. Pythonうるう年判定とアルゴリズムの基本形
プログラミング言語Pythonにおけるうるう年プログラミングアルゴリズムは、以下のようなブール論理式で1行で表現するのが標準的です。
def is_leap_year(year): return (year % 400 == 0) or (year % 4 == 0 and year % 100 != 0) # 動作検証 print(is_leap_year(2024)) # True print(is_leap_year(2026)) # False print(is_leap_year(2100)) # False print(is_leap_year(2000)) # Trueなお、Python標準ライブラリのcalendarモジュールを使用すれば、自作関数を記述することなくcalendar.isleap(year)を呼び出すだけで安全に判定可能です。
混同しやすい「うるう秒」との違いとシステム現場の実態
「うるう年」としばしば混同される概念に「うるう秒(閏秒)」があります。これらは名前こそ似ていますが、調整の対象も物理的な発生メカニズムもまったく異なります。
- うるう年(Leap Year):地球の「公転周期(約365.24日)」とカレンダー(365日)の端数を合わせるため、数年おきに「1日(24時間)」を追加・調整するもの。
- うるう秒違い(Leap Second):地球の「自転速度の揺らぎ(潮汐摩擦やマントル対流による減速)」と、原子時計が刻む超高精度な国際原子時とのズレを解消するため、不定期に「1秒」を挿入・削除するもの。
IT現場の運用において、うるう年は計算式が完全に確定しているため事前に完全なテストが可能です。一方でうるう秒は地球の自転状況に応じて国際地球回転・基準系事業(IERS)が決定するため、過去にはサーバーダウンや通信障害の原因となってきました。2022年の国際度量衡総会(CGPM)において、うるう秒は2035年までに運用を一時停止または許容幅を広げる方針が決議されています。

一般に知られていない盲点|2月29日生まれの法的年齢加算
うるう年に関する話題で最も質問が多いのが、「2月29日生まれの人は平年にいつ年をとるのか」という法的・社会的な疑問です。
日本の法律(明治35年施行の「年齢計算ニ関スル法律」および民法第143条)では、「誕生日の前日が終了する瞬間(午後12時・24時)をもって加齢する」と明確に規定されています。
つまり、2月29日生まれの人は、毎年2月28日の午後12時(=3月1日午前0時)を迎えた瞬間に1歳歳をとる扱いになります。そのため、うるう年ではない平年であっても「年をとらない」ということはなく、法律上は3月1日になった瞬間に無事加齢されます。運転免許証の更新期間や学年の区切り(4月1日生まれが早生まれになる理由と同様の法理)も、この厳密な計算原則に基づいて処理されています。
【プロの結論】エンジニア・実務担当者が持つべき暦リテラシー
日付計算は、一見単純に見えてプログラミングやデータ管理において最も不具合を生み出しやすい領域です。「西暦年 % 4 == 0」という不完全なコードが業務基幹システムに残されていると、数十年後の世代に重大なシステム障害を引き起こす負債となります。基本ルールを忠実に順守した設計を徹底することが、堅牢なデータ運用の第一歩です。
【うるう年 計算 方法】に関するよくある質問(FAQ)
Q1:次のうるう年は何年になりますか?
A1:直近のうるう年は2028年です(その次は2032年、2036年と続きます)。前回のうるう年は2024年でした。
Q2:西暦2100年は4で割り切れますが、本当になぜ平年になるのですか?
A2:グレゴリオ暦のルールにより、「100で割り切れて400で割り切れない年」は平年と定められているためです。地球の公転周期(約365.2422日)によるわずかなズレを補正し、カレンダーが季節より進みすぎるのを防ぐための国際規格です。
Q3:うるう年の判定式を最も簡単に覚える語呂やコツはありますか?
A3:「4で割れたら基本うるう年、ただし100で割れたら平年に戻り、400で割れたら復活する」という3ステップの条件分岐として順序立てて覚えるのが確実です。
Q4:Excelで該当年がうるう年かどうかをTRUE/FALSEで返す最短数式は?
A4:西暦がA1セルにある場合、=DAY(DATE(A1,2,29))=29 または =OR(MOD(A1,400)=0,AND(MOD(A1,4)=0,MOD(A1,100)<>0)) を入力することで判定できます。
まとめ:正しい判定ルールを理解して日付計算のトラブルを防ごう
うるう年の計算方法は、単に「4で割り切れる年」を探すだけではなく、「100で割り切れる平年」と「400で割り切れるうるう年」という2つの例外条件を正しく組み合わせることで初めて完成します。
この緻密なルールは、約400年以上にわたり人類が季節の循環と天文学的な時間軸を正確に同期させ続けてきた知恵の結晶です。ビジネスの帳票処理、プログラミング実装、あるいは知的好奇心を満たす教養として、正しい3大判定ルールをぜひ日々の実務に役立ててください。 (出典: うるう年 計算 方法(Yahoo!ニュース))