Deprecation of Python 3.9 for Dependabotとは?期限と移行対応を実務目線で整理

Deprecation of Python 3.9 for Dependabot は、GitHub の Dependabot が Python 3.9 をサポート対象から外した変更です。結論から言うと、Python 3.9 を前提にしたリポジトリでは、Dependabot が依存関係更新の Pull Request を作成できなくなる可能性があります。2026年6月24日時点で優先すべき対応は、pyproject.tomlsetup.cfgDockerfile、GitHub Actions、.github/dependabot.yml を確認し、Python 3.9 固定をサポート中の Python へ移行することです。GitHub Changelog では、Python 3.9 が EOL に達したため、2026年6月23日以降 Dependabot が Python 3.9 をサポートしないと説明されています。 (The GitHub Blog)

目次

Deprecation of Python 3.9 for Dependabot の期限・移行対応で見落としやすい点

今回の変更は、アプリケーション本体が突然停止するという意味ではありません。見落としやすいのは、Dependabot による依存関係更新の自動化が静かに止まるリスクです。

Python 3.9 のままでもアプリや CI が一見動いていると、対応を後回しにしがちです。しかし、Dependabot が依存関係を解決できず、セキュリティアップデートや通常のバージョン更新 PR が作られなくなると、脆弱性対応の初動が遅れます。

確認項目内容
変更日2026年6月23日
対象Python 3.9 を使う Dependabot の更新処理
主な影響依存関係更新 PR が作成されない可能性
課金への直接影響該当 Changelog では新たな課金変更は示されていない
優先対応Python 3.9 固定を洗い出し、サポート中の Python へ移行
実務上の扱いGitHub Changelog 上は「Retired」として表示されており、廃止対応として管理するのが安全

GitHub の告知では、Python 3.9 を使い続けると Dependabot が依存関係更新の Pull Request を作成しないリスクがあると明記されています。分類名を「Release」と見るか「Retired」と見るかよりも、実務では「自動更新が止まる可能性のある廃止対応」として扱うのが重要です。 (The GitHub Blog)

影響を受ける可能性が高いリポジトリ

影響を受けやすいのは、単に GitHub Actions で python-version: 3.9 を使っているリポジトリだけではありません。Dependabot が Python 依存関係を解決する際に参照するファイルや、プロジェクトの対応 Python バージョン指定が 3.9 に固定されている場合も確認が必要です。

確認場所典型的な記述例見るべきポイント
pyproject.tomlrequires-python = ">=3.9,<3.10"Python 3.9 のみを許可していないか
setup.cfg / setup.pypython_requires=">=3.9,<3.10"パッケージメタデータが 3.9 固定でないか
Pipfilepython_version = "3.9"Pipenv の実行環境が 3.9 固定でないか
.python-version3.9.xpyenv などのローカル実行環境が古くないか
DockerfileFROM python:3.9コンテナベースイメージが 3.9 のままか
GitHub Actionspython-version: "3.9"CI のテスト対象が 3.9 のみになっていないか
tox.ini / noxfile.pypy39テスト環境が 3.9 前提になっていないか
.github/dependabot.ymlpackage-ecosystem: "pip"Python 依存関係更新の対象ディレクトリが正しいか

GitHub Docs では、Dependabot の Python 系エコシステムとして pippipenvpip-compilepoetry が整理されており、Poetry や Pipenv を使う場合も dependabot.yml では package-ecosystem: "pip" を使うと説明されています。つまり、プロジェクトで Poetry を使っているから無関係、とは判断できません。 (GitHub Docs)

まず確認すべきチェックリスト

最初にやるべきことは、全リポジトリの中から Python 3.9 固定を探すことです。規模が小さい場合は手作業でも対応できますが、組織内に複数リポジトリがある場合は、検索で一括確認した方が漏れを減らせます。

git grep -nE 'python-version|python_requires|requires-python|FROM python:3\.9|python:3.9|3\.9'

この検索結果をすべて機械的に置換するのは危険です。たとえば、README の古い説明、テスト対象として残している py39、互換性メモの 3.9 など、移行対象ではない記述も混ざります。実務では、次の順番で確認すると判断しやすくなります。

優先度確認するもの対応判断
pyproject.tomlsetup.pysetup.cfgパッケージの対応 Python を決めるため最優先
Dockerfile、本番イメージ実行環境に直結するため影響確認が必要
GitHub Actions の CI移行後にテストが通るか確認する
Pipfilepoetry.lock、requirements 系ファイルロック再生成が必要になる場合がある
.github/dependabot.ymlDependabot が対象ファイルを見ているか確認する
README、ドキュメント移行後に利用者向け説明を更新する

ポイントは、CI の Python バージョンだけを上げて終わりにしないことです。pyproject.tomlrequires-python が Python 3.9 固定のままだと、Dependabot やパッケージ解決の挙動が期待通りにならない可能性があります。

移行先の Python バージョンはどう選ぶべきか

移行先は、単に「3.9 より新しければよい」ではなく、サポート期間とライブラリ互換性を見て決める必要があります。Python.org のアクティブリリース一覧では、Python 3.9 は EOL、3.10 以降がサポート対象として掲載されています。ただし、Python 3.10 も 2026年10月にサポート終了予定のため、今から移行するなら長めに使えるバージョンを選ぶのが現実的です。 (Python.org)

バージョン2026年6月時点の見方実務でのおすすめ度
Python 3.14新しい安定系として有力新規開発や検証環境から採用候補
Python 3.13比較的新しく、サポート期間も長い多くのプロジェクトで有力候補
Python 3.12既存ライブラリとの互換性を見やすい安定重視の移行先として現実的
Python 3.11まだサポート中だが期限は短め短期移行や互換性重視なら候補
Python 3.102026年10月にサポート終了予定今からの本格移行先としては避けたい
Python 3.9EOL移行対象

迷った場合は、まず Python 3.12 または 3.13 で CI を通し、主要ライブラリの対応状況を見てから 3.14 を検討する進め方が堅実です。ライブラリのバイナリ配布、フレームワークの対応状況、OS パッケージとの組み合わせによっては、最新版へ一気に上げるより段階移行の方が安全です。

Dependabot 設定で確認するポイント

Dependabot の設定ファイルは、通常 .github/dependabot.yml に置きます。GitHub Docs では、versionupdatespackage-ecosystemdirectory または directoriesschedule.interval が主要な必須項目として整理されています。 (GitHub Docs)

Python 依存関係を更新する基本形は次のようになります。

version: 2
updates:
  - package-ecosystem: "pip"
    directory: "/"
    schedule:
      interval: "weekly"
      day: "monday"
      time: "09:00"
      timezone: "Asia/Tokyo"
    open-pull-requests-limit: 5
    labels:
      - "dependencies"
      - "python"

複数ディレクトリに Python プロジェクトがある場合は、ルートだけでなく対象ディレクトリを追加します。たとえば、backend/worker/ に別々の pyproject.toml があるのに directory: "/" だけを指定していると、Dependabot が期待したファイルを見ていない可能性があります。

version: 2
updates:
  - package-ecosystem: "pip"
    directories:
      - "/backend"
      - "/worker"
    schedule:
      interval: "weekly"
      day: "monday"
      time: "09:00"
      timezone: "Asia/Tokyo"

ただし、dependabot.yml を直すだけでは Python 3.9 の移行は完了しません。requires-python、Docker イメージ、CI、ロックファイル、ランタイムの整合性をそろえる必要があります。

移行作業の実務手順

Python 3.9 からの移行は、依存関係管理と実行環境を同時に見ると失敗しにくくなります。

手順作業内容完了基準
1Python 3.9 固定箇所を検索対象ファイル一覧ができている
2移行先 Python を決める3.12、3.13、3.14 など候補が決まっている
3requires-python を更新パッケージメタデータが新バージョンを許可している
4Docker / devcontainer を更新開発環境と本番相当環境が新 Python で起動する
5CI の Python バージョンを更新テスト、lint、型チェックが通る
6ロックファイルを再生成poetry.lockPipfile.lock、requirements 系が整合している
7Dependabot のジョブを確認対象ファイルが監視され、エラーが出ていない
8既存 PR とリリース手順を確認更新 PR を安全にマージできる

移行後は、Dependabot が実際に動いているかを必ず確認してください。GitHub Docs では、Dependabot が監視している依存関係はリポジトリの Insights から Dependency graphDependabot で確認でき、対象が抜けている場合はログや設定ファイルを見直すよう案内されています。 (GitHub Docs)

移行時に失敗しやすいポイント

CI だけ Python 3.11 にして満足してしまう

GitHub Actions の actions/setup-python を 3.11 や 3.12 に変えるだけでは不十分です。pyproject.tomlrequires-python、Dockerfile の FROM python:3.9.python-version が古いままだと、開発環境・本番環境・Dependabot の見ている前提がずれます。

Python 3.10 を移行先にして再対応が近くなる

Python 3.10 は 3.9 より新しいものの、サポート期限が近いバージョンです。短期的な互換性確保として選ぶことはありますが、2026年後半以降も継続運用するリポジトリでは、3.12 以降を優先して検証する方が手戻りを減らせます。Python.org のサポート表では、Python 3.10 のサポート終了は 2026年10月と示されています。 (Python.org)

ロックファイルを再生成せずに PR だけ通そうとする

Poetry、Pipenv、pip-tools などを使っている場合、Python バージョンを変えると解決される依存関係が変わることがあります。pyproject.toml だけを直してロックファイルを更新しないと、CI や Dependabot の更新 PR で不整合が出やすくなります。

プライベートレジストリの認証を見落とす

社内 PyPI、GitHub Packages、Artifactory、Nexus などを使っている場合、Dependabot が依存関係を解決するにはレジストリへのアクセスが必要です。GitHub Docs では、Dependabot にプライベートレジストリやプライベートパッケージへのアクセス権を与えられること、認証情報は Dependabot secrets や dependabot.yml から参照できることが説明されています。 (GitHub Docs)

Dependabot のログを見ずに「PR が来ない」と判断する

Dependabot の PR が来ない場合、単に更新がないのではなく、ジョブが失敗している可能性があります。GitHub Docs では、Dependabot のジョブログにジョブ種別、実行時刻、関連 PR、失敗時のエラーメッセージなどが記録されると説明されています。 (GitHub Docs)

課金面で確認すべきこと

今回の Python 3.9 廃止告知そのものは、課金体系の変更を主題にしたものではありません。実務上の主な影響は、Dependabot による依存関係更新 PR の作成可否です。 (The GitHub Blog)

一方で、Dependabot は GitHub Actions ランナー上で実行されるため、組織の Actions 運用ポリシーとは切り離さずに確認する必要があります。GitHub Docs では、Dependabot が有効な場合、Dependabot のジョブは GitHub Actions で実行され、標準 GitHub ホストランナーまたはセルフホストランナーで実行する Dependabot は GitHub Actions の含まれる分数にカウントされず、larger runners を使う場合は通常料金で課金されると説明されています。 (GitHub Docs)

利用形態課金面の見方
標準 GitHub ホストランナーで Dependabot を実行通常は Actions 分数にカウントされない
セルフホストランナーで Dependabot を実行通常は Actions 分数にカウントされないが、運用コストは自社側
larger runners で Dependabot を実行通常料金で課金対象
この Python 3.9 廃止告知追加課金ではなく、サポート対象外化による自動更新リスクが中心

GitHub Actions の課金ドキュメントでも、標準的な GitHub ホストランナーの無料使用対象として Dependabot が挙げられています。ただし、larger runners は常に課金されるため、Dependabot を高性能ランナーに寄せている組織では設定を確認しておくべきです。 (GitHub Docs)

移行後に確認するべき状態

移行作業は、コードを直してマージしただけでは終わりません。Dependabot が継続的に PR を作成できる状態になっているかを確認して完了です。

確認項目確認方法OK の目安
Python 3.9 固定が残っていないgit grep やリポジトリ検索意図しない固定がない
CI が新 Python で通るGitHub Actions の実行結果テスト、lint、型チェックが成功
ロックファイルが整合しているpoetry lockpip-compile など差分が説明できる
Dependabot 対象が表示されるInsightsDependency graphDependabot対象マニフェストが表示される
ジョブログに致命的エラーがないDependabot job logs認証・解決・互換性エラーがない
PR 運用が詰まっていないopen PR 数や reviewer 設定更新 PR がレビュー可能な量に収まる

特に、open-pull-requests-limit を低く設定している場合、古い Dependabot PR が残っていて新しい PR が出にくくなることがあります。Python 移行後は、古い PR を整理し、必要に応じて一度クローズして再作成させると運用がすっきりします。

まとめ:Python 3.9 固定の棚卸しを先に終わらせる

Deprecation of Python 3.9 for Dependabot で最も重要なのは、2026年6月23日以降、Python 3.9 を使い続けるリポジトリでは Dependabot の依存関係更新 PR が作成されない可能性がある点です。アプリが今動いているかどうかではなく、セキュリティアップデートを自動で受け取れる状態を維持できるかで判断してください。 (The GitHub Blog)

今すぐ行うべきことは明確です。まずリポジトリ内の Python 3.9 固定を洗い出し、requires-python、Docker、CI、ロックファイル、Dependabot 設定をそろえて更新します。そのうえで、Dependabot の監視対象とジョブログを確認し、更新 PR が作成できる状態まで確認してください。

Python 3.9 からの移行は、単なるバージョンアップではなく、依存関係更新の自動化とサプライチェーンセキュリティを維持するための運用対応です。後回しにするほど、脆弱性対応の遅れや移行差分の肥大化につながります。まずは主要リポジトリから Python 3.9 固定を検索し、影響度の高いものから順に移行計画へ落とし込みましょう。

この記事を書いた人

実務の現場で詰まりがちなポイントを地図にするITブログ「IT trip」を運営。Windows/Office(Teams・Excel)からSQL、サーバ運用、ガジェットまで、再現性のある手順と“なぜそうなるか”を丁寧に解説します。読んだらすぐ試せること、そして迷った人の次の一歩が見えることを大切にしています。

コメント

コメントする

目次