GitHubのDependabotでPython依存関係を自動更新しているリポジトリは、Python 3.9を使い続けていないかをすぐ確認する必要があります。GitHub Changelogで「Deprecation of Python 3.9 for Dependabot」が案内され、DependabotはPython 3.9をサポートしなくなりました。影響を受けると、依存関係を更新するPull Requestが作成されない可能性があります。(The GitHub Blog)
特に確認すべきなのは、.github/dependabot.ymlでPython系の依存関係を監視しているリポジトリ、requirements.txt、pyproject.toml、Pipfile、poetry.lockなどを使っているプロジェクト、CIやDockerfileでPython 3.9を固定している環境です。この記事では、DependabotのPython 3.9非対応で何が変わったのか、対象者、実務で確認すべき設定と運用上の注意点を整理します。
Deprecation of Python 3.9 for Dependabot は何が変わった?
今回の変更点はシンプルです。DependabotがPython 3.9をサポート対象外にしたという内容です。
GitHub Changelogでは、Python 3.9がEOLに達したため、DependabotがPython 3.9をサポートしなくなったと説明されています。Python 3.9を使い続ける場合、Dependabotが依存関係更新用のPull Requestを作成しないリスクがあります。(The GitHub Blog)
なお、GitHub Changelog上の掲載日は2026年6月23日です。日本時間や外部の更新通知では2026年6月24日として扱われる場合がありますが、確認時点の公式ページでは「Retired」として掲載されています。(The GitHub Blog)
変更前と変更後の違い
| 項目 | 変更前 | 変更後 |
|---|---|---|
| Python 3.9を使うリポジトリ | Dependabotが動作する可能性があった | Dependabotのサポート対象外 |
| 依存関係更新PR | 作成される可能性があった | 作成されないリスクがある |
| 推奨対応 | Python 3.9のままでも運用できる場合があった | サポート中のPythonへ更新が必要 |
| 影響の大きい環境 | Pythonアプリ、ライブラリ、CI | Python 3.9を固定しているDependabot対象リポジトリ |
重要なのは、アプリ本体がすぐ動かなくなるという話ではない点です。影響を受けるのは主に、Dependabotによる依存関係更新の自動化です。
つまり、アプリケーションはPython 3.9で動作していても、Dependabotが依存関係の更新PRを出せなくなる可能性があります。セキュリティパッチやライブラリアップデートをDependabot任せにしているチームほど、見落としやすい変更です。
影響を受ける可能性が高い人
今回の変更で最初に確認すべきなのは、GitHubでPythonプロジェクトを管理している開発者、リポジトリ管理者、DevOps担当者です。
特に、次のようなリポジトリは影響を受ける可能性があります。
.github/dependabot.ymlでpackage-ecosystem: "pip"を設定しているrequirements.txt、requirements-dev.txt、pyproject.toml、Pipfile、poetry.lockを使っている- GitHub Actionsの
setup-pythonで3.9を指定している - Dockerfileで
python:3.9やpython:3.9-slimを使っている - READMEや開発手順でPython 3.9を前提にしている
- 社内の標準実行環境がまだPython 3.9のままになっている
Dependabotでは、PoetryやPipenvを使う場合でもdependabot.yml上ではpackage-ecosystem: "pip"を使うとGitHub Docsで説明されています。Poetryだから関係ない、Pipenvだから別扱い、とは判断しないほうが安全です。(GitHub Docs)
まず確認すべきファイルと設定
最初に見るべき場所は、.github/dependabot.ymlです。Dependabot version updatesは、この設定ファイルをリポジトリに置くことで有効化します。GitHub Docsでも、Dependabotの更新対象、マニフェストの場所、実行間隔をdependabot.ymlで指定すると説明されています。(GitHub Docs)
.github/dependabot.ymlを確認する
Python依存関係をDependabotで監視している場合、次のような設定が入っていることがあります。
version: 2
updates:
- package-ecosystem: "pip"
directory: "/"
schedule:
interval: "weekly"
この設定自体が悪いわけではありません。確認すべきなのは、Dependabotが参照するPythonプロジェクト側で、Python 3.9を前提にしていないかです。
たとえば、次のようなファイルを確認します。
| 確認対象 | 見るポイント |
|---|---|
.github/dependabot.yml | package-ecosystem: "pip"の有無、対象ディレクトリ |
pyproject.toml | requires-python、PoetryのPython制約 |
Pipfile | [requires]のPythonバージョン |
requirements.txt | Python 3.9専用の依存関係がないか |
Dockerfile | FROM python:3.9を使っていないか |
| GitHub Actions | actions/setup-pythonでpython-version: "3.9"を指定していないか |
| README、開発手順書 | Python 3.9前提の記述が残っていないか |
Python 3.9が残っているかを探す実務的な方法
小規模なリポジトリなら、GitHub上で3.9やpython:3.9を検索すれば十分です。複数リポジトリを管理している場合は、検索対象を決めて機械的に確認したほうが漏れを減らせます。
GitHub上で検索するキーワード
リポジトリ内検索では、次のキーワードを順番に探します。
python-version: 3.9
python-version: "3.9"
python:3.9
python:3.9-slim
requires-python
python_requires
Pipfile
package-ecosystem: "pip"
特にpython-versionとpython:3.9は見つかりやすいポイントです。CIは新しいPythonへ更新していても、Dockerfileだけ古いまま残っているケースがあります。
ローカルでまとめて確認する例
リポジトリをローカルに持っている場合は、次のように検索できます。
grep -RIn --exclude-dir=.git \
-e 'python-version:.*3\.9' \
-e 'python:3\.9' \
-e 'requires-python.*3\.9' \
-e 'python_requires.*3\.9' \
-e 'package-ecosystem: "pip"' \
.
この検索でヒットしたからといって、すべて修正が必要とは限りません。たとえばドキュメントに「Python 3.9では動作しません」と書かれているだけなら問題ではありません。重要なのは、実行環境、依存解決、CI、Dependabotの対象ディレクトリに関係する指定かどうかです。
どのPythonバージョンへ更新すべきか
GitHub Changelogでは、影響を受ける場合はサポート中のPythonリリースへ更新するよう案内されています。Python公式サイトのActive Python releasesでは、Python 3.9はend-of-lifeとして表示され、Python 3.10以降がサポート対象として掲載されています。(The GitHub Blog)
実務では、単に最新だからという理由だけでバージョンを選ぶと、既存ライブラリや本番環境との互換性確認に時間がかかることがあります。次の基準で選ぶと判断しやすくなります。
| 選択肢 | 向いているケース | 注意点 |
|---|---|---|
| Python 3.10 | 変更幅を抑えて移行したい | サポート期間が比較的短くなるため、次の移行計画も必要 |
| Python 3.11 | 安定性と移行しやすさを重視したい | 一部の古いライブラリで確認が必要 |
| Python 3.12 | ある程度新しい環境へ寄せたい | ビルド系ライブラリや古い依存関係の互換性を確認 |
| Python 3.13以降 | 新規開発や積極的に最新化するプロジェクト | 本番基盤、ライブラリ、社内標準との整合性を確認 |
| Python 3.14 | 最新サポート版を採用したい | 既存プロジェクトでは検証範囲が広くなりやすい |
既存サービスでは、まずPython 3.11または3.12を候補にするのが現実的です。ただし、組織の標準イメージ、クラウド実行環境、利用ライブラリの対応状況によって最適解は変わります。
Dependabotの更新PRが止まると何が問題なのか
Dependabotの更新PRが作成されなくなると、単に「便利機能が止まる」だけでは済まない場合があります。
もっとも大きい影響は、依存関係の更新に気づきにくくなることです。これまで週次でライブラリ更新PRが来ていたチームでは、PRが来ない状態を「更新がない」と誤解する可能性があります。
起こりやすい運用上の問題
| 問題 | 具体例 | 対応 |
|---|---|---|
| 更新PRが来ない | requestsやdjangoなどの更新に気づかない | Dependabot対象リポジトリを棚卸しする |
| セキュリティ対応が遅れる | 脆弱性修正バージョンへの追従が遅れる | Dependabot Alertsと手動確認を併用する |
| CIだけ新しく、Dockerが古い | Actionsは3.12、Dockerfileは3.9のまま | 実行環境を一覧化して更新する |
| ライブラリ互換性で失敗する | Python更新後に依存関係の解決が壊れる | ロックファイル再生成とテストを行う |
| 担当者が気づかない | DependabotのPRが減った理由が共有されない | リポジトリ管理者へ通知する |
特に注意したいのは、DependabotのPRが出ないことに気づくまで時間がかかる点です。エラーで派手に止まるよりも、「いつの間にか更新されていない」状態のほうが運用上は危険です。
すぐ実施したい確認チェックリスト
DependabotのPython 3.9非対応に対しては、次の順番で確認すると効率的です。
| 優先度 | 確認内容 | 判断基準 |
|---|---|---|
| 高 | .github/dependabot.ymlにpipがあるか | ある場合はPython依存関係の確認対象 |
| 高 | CIでPython 3.9を固定していないか | setup-pythonやmatrixを確認 |
| 高 | DockerfileでPython 3.9を使っていないか | FROM python:3.9を検索 |
| 高 | pyproject.tomlやPipfileで3.9固定がないか | requires-pythonや[requires]を確認 |
| 中 | ロックファイルを再生成できるか | 新しいPythonで依存解決できるか |
| 中 | テストが新しいPythonで通るか | CIで確認 |
| 中 | Dependabotの実行状況を確認したか | Dependency graphのDependabotタブを確認 |
| 低 | READMEや手順書が古くないか | 開発者が3.9を使い続けないよう修正 |
GitHub Docsでは、Dependabot version updatesの状態はリポジトリのDependency graph内のDependabotタブで確認できると説明されています。設定後は、単にファイルを修正して終わりにせず、Dependabotが対象パッケージマネージャを認識しているかも確認してください。(GitHub Docs)
修正の進め方
Python 3.9が残っていた場合は、いきなり全リポジトリを一括更新するより、影響の大きい順に進めるのが安全です。
実務でのおすすめ手順
- Dependabotを使っているPythonリポジトリを洗い出す
- Python 3.9指定があるファイルを確認する
- 移行先のPythonバージョンを決める
- CIのPythonバージョンを更新する
- Dockerfileやdevcontainerを更新する
pyproject.toml、Pipfile、requirements系の制約を見直す- ロックファイルを再生成する
- テストを実行する
- Dependabotの実行状況と更新PRの作成状況を確認する
- READMEや開発手順を更新する
この順番なら、設定だけ変えて実行環境が追いつかない、あるいはCIだけ更新してローカル開発環境が古いままになる、といったズレを防ぎやすくなります。
GitHub Actionsの修正例
Python 3.9を指定している場合は、サポート中のバージョンへ変更します。
変更前の例です。
- uses: actions/setup-python@v5
with:
python-version: "3.9"
変更後の例です。
- uses: actions/setup-python@v5
with:
python-version: "3.12"
複数バージョンでテストしている場合は、matrixから3.9を外し、移行先バージョンを追加します。
strategy:
matrix:
python-version: ["3.11", "3.12", "3.13"]
Dockerfileの修正例
DockerfileでPython 3.9を使っている場合も確認が必要です。
FROM python:3.9-slim
たとえばPython 3.12へ移行する場合は、次のように変更します。
FROM python:3.12-slim
ただし、Dockerイメージを変えると、OSパッケージ、ビルドツール、ネイティブ拡張を持つPythonライブラリのビルド結果が変わることがあります。psycopg、cryptography、numpy、pandasなどを使っている場合は、ビルドと実行テストを必ず確認してください。
よくある勘違い
「アプリがPython 3.9で動いているだけなら問題ない」は危険
今回の変更は、Dependabotのサポート対象に関するものです。アプリケーションが即停止するとは限りません。
ただし、依存関係の自動更新が止まる可能性があるため、セキュリティ更新やライブラリ更新の運用に影響します。アプリが動いているから放置してよい、とは判断しないほうが安全です。
「Poetryだから関係ない」とは限らない
Dependabotでは、PoetryやPipenvを使う場合でもpackage-ecosystem: "pip"を指定します。GitHub Docsでも、PoetryでPython依存関係を監視する場合はpipを使う例が示されています。(GitHub Docs)
そのため、dependabot.ymlにpipがある場合は、Poetry、Pipenv、pip-tools、requirements管理のどれであっても確認対象に含めるべきです。
「Dependabotの設定だけ変えればよい」わけではない
dependabot.ymlにはPythonの実行バージョンを直接書いていないことも多くあります。実際のPython 3.9指定は、CI、Dockerfile、pyproject.toml、Pipfile、開発用コンテナなどに分散していることがあります。
DependabotのPRが出ない場合、dependabot.ymlだけを見ても原因にたどり着けないことがあります。プロジェクト全体でPython 3.9が残っていないか確認することが重要です。
管理者・チームで共有すべきポイント
リポジトリが多い組織では、個別の開発者任せにすると対応漏れが起きやすくなります。GitHub管理者や開発基盤チームは、次の内容をチームに共有しておくと対応が進めやすくなります。
| 共有項目 | 伝える内容 |
|---|---|
| 変更内容 | DependabotがPython 3.9をサポートしなくなった |
| 影響 | 依存関係更新PRが作成されない可能性がある |
| 対象 | Python 3.9を使うDependabot対象リポジトリ |
| 期限感 | すでに変更済みのため早めに確認する |
| 対応 | サポート中のPythonへ移行し、CIとDependabotを確認する |
| 完了条件 | テスト成功、ロックファイル更新、Dependabotの動作確認 |
社内向けには、「Python 3.9を使っているか」ではなく、「DependabotでPython依存関係を更新しているリポジトリにPython 3.9が残っていないか」という表現にすると、確認対象が明確になります。
まとめ:Dependabot利用者はPython 3.9の残存確認を優先する
Deprecation of Python 3.9 for Dependabot の要点は、DependabotがPython 3.9をサポートしなくなり、Python 3.9を使い続けるリポジトリでは依存関係更新PRが作成されないリスクがあることです。GitHub Changelogでも、影響を受ける場合はサポート中のPythonへ更新するよう案内されています。(The GitHub Blog)
まずは.github/dependabot.ymlでpackage-ecosystem: "pip"を使っているリポジトリを洗い出し、CI、Dockerfile、pyproject.toml、Pipfile、READMEにPython 3.9指定が残っていないか確認してください。
対応のゴールは、単にバージョン表記を変えることではありません。新しいPythonで依存解決とテストが通り、Dependabotが継続して更新PRを作成できる状態に戻すことです。依存関係更新の自動化を維持するためにも、Python 3.9が残っているリポジトリから優先的に見直しましょう。

コメント