Advent of Code(AoC)は、Eric Wastl氏が2015年から毎年12月に公開しているプログラミングパズルです。参加は無料で、言語は問いません。10年間続いた「12月1日から25日まで」の形式は、2025年に12日間へ短縮され、世界全体の速さを競うグローバルリーダーボードも廃止されました。日本語の解説記事には25日間のまま書かれたものが多いため、本記事では公式サイトのFAQと統計ページ、作者本人の告知をもとに、現在の仕組みと参加方法、AI利用や解答公開のルールを整理します。
まとめ:2026年9月時点のAdvent of Codeの要点
- 毎年12月1日に始まり、2025年からは12日間(12月12日まで)。各日の問題はPart OneとPart Twoの2部構成です。
- 公開時刻は米国東部時間の午前0時(UTC-5)で、日本時間では14時です。
- 提出するのはソースコードではなく答えの値だけ。入力データはログインしたアカウントで取得します。
- グローバルリーダーボードは2025年に廃止され、順位を競うならプライベートリーダーボードを使います。
- 公式FAQは「AIでパズルを解くべきか」に「No.」と答え、リポジトリに問題文や入力を含めないよう求めています。
- 2015年から2025年までの11回分の問題は、今も公式サイトから解けます。
まず、各日の出題形式と日本時間での公開時刻を確認します。
Advent of Codeの出題形式と公開時刻
公式のAboutページは、Advent of Codeを「さまざまなスキルレベル向けの小さなプログラミングパズルのアドベントカレンダーで、好きなプログラミング言語で解ける」と説明しています。用途として面接対策、企業研修、大学の授業、速さ比べが挙がっており、競技専用のサービスではありません。
Part One・Part Twoとゴールド/シルバーのスター
各日の問題ページには物語仕立ての問題文があり、2つのパズルが用意されています。2つ目は1つ目を解くと開き、1つ解くごとにスターが1つもらえます。Statsページでは、両方を解いた人をゴールド、前半だけを解いた人をシルバーとして日ごとに集計しています。
Part Twoの内容はPart Oneを解くまで表示されません。前半の答えを出した直後に後半の条件がわかる形式なので、前半の実装は読み込み処理と計算処理を分けておくと書き直す量を抑えられます。
公開は日本時間14時(米国東部時間の午前0時)
FAQの「Why do the puzzles unlock at midnight EST/UTC-5?」のとおり、問題は米国東部標準時の午前0時に公開されます。UTC-5の0時はUTCの5時、日本時間(UTC+9)では14時です。12月の米国東部は夏時間ではないため、開催期間中この時刻はずれません。
理由について作者は「その時間なら確実に対応できるから」と書き、深夜に参加できなくても問題はないとしています。日本の平日昼に当たるため、同僚どうしで速さを競うなら公開時刻の条件をそろえるより、後述のプライベートリーダーボードで各自の都合に合わせるほうが続きます。
答えだけを提出し、入力データはアカウントごとに取得
問題ページでは入力データを「your puzzle input」と呼びます。問題文そのものは未ログインでも読めますが、入力データのURLは未ログインだと取得できません(2026年9月15日にDay 10で確認すると、問題ページは200、入力データは400を返しました)。提出するのは答えの値だけで、ソースコードは送りません。
そのため、言語もツールも自由です。Aboutページは「どの問題にも、10年前のハードウェアで最大15秒以内に終わる解法がある」とも書いています。何分も計算が終わらない場合は、力任せの探索から計算量を減らす方針へ切り替える合図です。
2025年の変更点:12日間化とグローバルリーダーボード廃止
作者のEric Wastl氏は2025年10月22日、Mastodon(Hachyderm)の投稿で「10年続けた末に、正気を保つためにいくつか変更した。毎年12月のパズルは12日間(開始は12月1日のまま)になり、グローバルリーダーボードはもう無い」と告知しました。詳細はAboutページのFAQに追加されています。
| 項目 | 2015〜2024年 | 2025年以降 |
|---|---|---|
| 開催期間 | 12月1日〜25日 | 12月1日〜12日 |
| 日数 | 25日 | 12日 |
| グローバルリーダーボード | あり | なし |
| プライベートリーダーボード | あり | あり(読み取り専用の共有が可能) |
| 公開時刻 | 日本時間14時 | 日本時間14時 |
日付と日番号の対応(Day 1=12月1日)は変わっていません。
12日間に短縮された理由
FAQ「Why did the number of days per event change?」によると、運営には毎年大量の私的な時間がかかり、その大半がパズル作りに費やされていました。10年間同じ日程を守ったうえで変更が必要になった、というのが作者の説明です。開始日を12月1日に据え置いたのは、日番号と日付を一致させるためだと明記されています。
グローバルリーダーボード廃止とプライベートリーダーボード
2025年のリーダーボードのページには「Advent of Code 2025 doesn’t have a global leaderboard.」とだけ表示されます。FAQは廃止の理由として、作者とインフラと多くの利用者にとって最大級のストレス源だったこと、DDoS攻撃に訴える人まで現れたこと、自分のタイムと比べて「自分は劣ったプログラマーだ」と誤って結論づける人が多かったことを挙げています。
プライベートリーダーボードの既定の並び順はLocal Scoreで、参加者がN人なら、各スターを最初に取った人にN点、2番目にN-1点、最後の人に1点が入ります。Stars順に切り替えるとスター数で並び、同数なら直近のスターを取った時刻で順位が決まります。
2025年からは、プライベートリーダーボードを読み取り専用で共有できるようになりました。ただし作者は、この機能やデータを使って「新しい」グローバルリーダーボードを作らないよう求めています。社内やコミュニティで順位表を公開するときは、この一文に反しない範囲にとどめてください。
Statsページで見る参加者数:2024年と2025年の比較
公式のStatsページ(2024年・2025年)は、日ごとに両方のパートを解いた人数(ゴールド)と前半だけの人数(シルバー)を数分おきに更新しています。2026年9月15日に取得した値は次のとおりです。
| イベント | Day 1 ゴールド | 最終日 | 最終日 ゴールド | Day 1比 |
|---|---|---|---|---|
| 2024年 | 268,350人 | Day 25 | 17,557人 | 6.5% |
| 2025年 | 166,414人 | Day 12 | 20,680人 | 12.4% |
2025年は初日に両パートを解いた人が2024年の約6割に減った一方、最終日までたどり着いた人数は2024年を上回りました。表の最終日ゴールド人数をDay 1のゴールド人数で割った比率は、2024年の6.5%に対し2025年は12.4%です。ただし、この比較だけでは期間短縮が差を生んだとは判断できません。
表の数値は取得時点の累計です。2024年は終了から約1年9か月、2025年は約9か月のあいだ過去問として解かれ続けているため、同じ経過期間での比較ではありません。「2025年に参加者が4割減った」と断定する材料にはならず、読み取れるのは完走率の差までです。
参加規模の出発点も押さえておくと、成長の大きさがわかります。MIT Technology Review(2021年12月17日)の報道によると、2015年の初回は70人規模を想定していたところ、公開時点で81人、12時間で約4,000人、終了時には52,000人が登録しました。
Advent of Codeへの参加方法と始め方
GitHub・Google・Twitter・Redditでのログイン
アカウント登録はありません。GitHub、Google、Twitter、RedditのいずれかでOAuth認証します。FAQによると、パスワードを渡す相手は各サービスだけで、Advent of Codeが記録するのは一意のID、名前、URL、画像です。ログインしないと入力データを取得できず、答えも提出できません。
2015〜2025年の過去問へのアクセスと練習順
Eventsページから2015年から2025年までの11回分にアクセスでき、問題、リーダーボード、統計が残っています。12月を待たずに練習できるので、初めての人は過去年のDay 1から数日分を解いて、入力の読み込みと答えの提出の流れに慣れておくとよいでしょう。
難易度についてFAQは「おおむね日を追うごとに難しくなるが、得意分野によって感じ方は人それぞれ」と答えています。Statsページでも、2024年はDay 1のゴールド268,350人に対しDay 25は17,557人で、最終日の人数は初日を下回っています。ただし、途中の日には前日より人数が増える例もあります。
必要なスキルと開発環境
Aboutページは「コンピュータサイエンスの素養は要らない。少しのプログラミング知識と問題解決力があればかなり進める」「高性能なコンピュータも要らない」と明言しています。環境は、ファイルを読んで文字列を処理できる言語が1つあれば足ります。問題文は英語のみなので、長い物語部分から入力の形式と求める値を拾う読み方に慣れる必要があります。
Pythonで解くときの入力読み込みと探索の雛形
入力をグリッドとして読み込む処理と、最短手数を求める幅優先探索(BFS)は多くの年で繰り返し使われます。次のコードは、S から E までの最短手数を求める自作迷路のBFS例と、90段を1段または2段ずつ上る方法の数を求めるメモ化例です。出力のpart2は迷路とは独立した計算で、公式問題の解答ではありません。問題文や公式の入力は含めていません。
import sys
from collections import deque
from functools import cache
def read_input(path):
with open(path, encoding="utf-8") as f:
return f.read().rstrip("\n")
def parse_grid(text):
return {(r, c): ch
for r, line in enumerate(text.splitlines())
for c, ch in enumerate(line)}
def bfs(grid, start, goal):
dist = {start: 0}
q = deque([start])
while q:
r, c = q.popleft()
if (r, c) == goal:
return dist[(r, c)]
for nr, nc in ((r + 1, c), (r - 1, c), (r, c + 1), (r, c - 1)):
if grid.get((nr, nc), "#") != "#" and (nr, nc) not in dist:
dist[(nr, nc)] = dist[(r, c)] + 1
q.append((nr, nc))
return -1
@cache
def count_paths(n):
if n <= 1:
return 1
return count_paths(n - 1) + count_paths(n - 2)
if __name__ == "__main__":
text = read_input(sys.argv[1])
grid = parse_grid(text)
start = next(p for p, ch in grid.items() if ch == "S")
goal = next(p for p, ch in grid.items() if ch == "E")
print("part1:", bfs(grid, start, goal))
print("part2:", count_paths(90))
次の5行を sample.txt として保存し、python3 aoc_template.py sample.txt で実行します。
S..#....
.#.#.##.
.#...#..
.####.#.
......#E
Python 3.9.6 と 3.14.6 のどちらでも出力は同じでした。
part1: 15
part2: 4660046610375530309
座標を辞書のキーにすると、盤面の外を grid.get(..., "#") で壁として扱えるため、境界チェックを書かずに済みます。@cache(Python 3.9以降)はメモ化の例で、同じ引数の計算を一度で済ませます。count_paths(90) をキャッシュなしで呼ぶと再帰呼び出しが指数的に増え、実用的な時間では計算を終えにくくなります。再帰とメモ化の考え方は再帰関数の仕組みとスタック・末尾再帰の解説、BFSで使うキューはスタックとキューの違いで詳しく扱っています。
AI利用・解答公開・自動取得のルール
ルールの大半はAboutページのFAQと作者の告知に書かれています。社内イベントでは、公式の利用条件に加え、プライベートリーダーボードの参加ルールも事前に確認してください。
AIでパズルを解くことへの公式回答は「No.」
FAQの「Should I use AI to solve Advent of Code puzzles?」に対する答えは「No.」です。作者は「友達を代わりにジムへ行かせて、自分が強くなると思うか」とたとえ、パズルは人間が解いて面白いように作っており、AIで解けるかどうかは考慮していないと説明しています。プロンプトの練習をしたいなら、そのための教材が他にある、とも書いています。
プライベートリーダーボードでAI、配信の視聴、解答スレッドの閲覧をどこまで認めるかは、各ボードの運営者が決めます。社内で順位を競うなら、使ってよいツールと問題を開いてよい時刻を開始前に文章で決めておいてください。
GitHubでの解答公開と問題文・入力の除外
FAQは「Advent of Code is free to use, not free to copy.」とし、リポジトリに問題文や自分の入力を含めないよう求めています。一方で、議論や授業、ソースコード、商用の文脈でもパズルへのリンクや言及は認められており、解答の実装の所有権・著作権は主張しないと明記されています。つまり、解答コードは公開してよく、入力ファイルは公開しないのが公式の線引きです。
入力ファイルをうっかりコミットしないよう、リポジトリの .gitignore に次の行を入れておきます。
# Advent of Codeの入力はコミットしない
input*.txt
inputs/
git check-ignore -v で確認すると、input.txt、input_day01.txt、inputs/day01.txt、2025/input.txt が無視対象になり、解答の day01.py は対象外でした。すでにコミットした入力は .gitignore に書いても追跡は止まりません。git rm --cached input.txt で追跡を外し、その変更をコミットしてください。ただし、過去のコミットには入力が残るため、公開済みの履歴から取り除くには別途履歴の書き換えが必要です。
自動リクエストの上限は15分(900秒)に1回
作者は2025年11月30日(UTC)にHachydermで「Please throttle your AdventOfCode traffic」と告知し、サイトへの頻繁な自動リクエストを控え、900秒(15分)に1回より多く送らないよう求めました。プライベートリーダーボードのJSON APIの説明にも同じ間隔が書かれています。入力を取得するスクリプトを書くなら、一度取得した入力はローカルに保存して再利用し、実行のたびにサイトへ取りに行く作りにはしないでください。
Advent of Codeが向いている人・向かない使い方
答えだけを提出する形式は、言語の練習や設計の試行には向いています。新しい言語を覚えるときに、入力処理から探索まで一通り書く練習に使えます。制限時間もレーティングも無いため、仕事の合間に1日1問ずつ進められます。
反対に、次の目的なら別の場を選ぶべきです。
- 実行時間制限つきのコード提出に慣れたい(採用試験・競技プログラミング対策):AoCはコードを採点しないため、提出形式の練習になりません。レーティングで実力を測りたいならAtCoderのレーティングとコンテストの種類を参照してください。
- 世界ランキングで順位を上げたい:2025年からグローバルリーダーボードはありません。
- 生成AIのプロンプト練習をしたい:公式FAQ自身が、AoCはその目的に設計されていないと答えています。
- 新作の公開直後に全員参加する社内研修:公開は日本時間14時で業務時間に重なります。過去問を使って開始時刻を自分たちで決めるほうが運営しやすくなります。
探索問題でつまずく場合は、盤面を頂点と辺として捉え直すと解法が見えることが多いです。基礎はグラフ理論と最短経路の解説にまとめています。
よくある質問
Advent of Codeの「Advent」とはどういう意味ですか?
Adventはキリスト教でクリスマスを待つ「待降節(アドベント)」のことで、12月に1日1つずつ窓を開けるアドベントカレンダーが名前の由来です。公式サイトも自らを「小さなプログラミングパズルのアドベントカレンダー」と説明しています。略称のAoCはAdvent of Codeの頭文字です。2025年からは12日間になったため、クリスマス当日までではなく12月12日までの開催です。
Advent of Code 2026は開催されますか?
2026年9月15日時点で、公式サイトのタイトルは「Advent of Code 2025」のままで、2026年の開催告知は出ていません。2025年は10月22日に形式変更が告知され、11月4日にスポンサー募集、12月1日に初日の公開という流れでした。作者の告知は12日間の形式を「each December」と書いているため、開催される場合も12日間が前提になると考えられますが、確定情報は公式サイトと作者の告知で確認してください。
Pythonで参加できますか?
できます。答えの値だけを提出する形式なので、Python、Rust、Go、JavaScriptなど言語は自由です。Pythonは標準ライブラリに collections.deque(BFSのキュー)、functools.cache(メモ化)、itertools(組み合わせ列挙)がそろっており、追加のインストール無しで多くの問題に対応できます。本記事の雛形はPython 3.9以降で動きます。
英語が苦手でも参加できますか?
問題文は英語のみで、日本語版はありません。ただし物語部分の多くは設定の説明で、解くのに必要なのは入力の形式、処理の規則、求める値の3点です。各問題には小さな入力例と期待される答えが載っているため、まず例で自分のプログラムが同じ答えを出すか確かめると誤読に気づけます。FAQも、行き詰まったら例と照合し、問題文を読み直すよう勧めています。
Day 10など途中の日から始めてもよいですか?
始められます。問題の公開は前日を解いたかどうかではなく日付で決まり、終了した年はすべての日が公開されています。2026年9月15日に未ログインで2025年のDay 10を開くと問題文が表示されたので、気になる日から読むこと自体はできます。答えの提出にはログインが必要です。問題文が前の日の設定を前提にしていてつながりが見えない場合は、前の日の問題文を確認してください。