Deprecation of Python 3.9 for Dependabotの変更点と影響|GitHub利用者の確認ポイント

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.txtpyproject.tomlPipfilepoetry.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アプリ、ライブラリ、CIPython 3.9を固定しているDependabot対象リポジトリ

重要なのは、アプリ本体がすぐ動かなくなるという話ではない点です。影響を受けるのは主に、Dependabotによる依存関係更新の自動化です。

つまり、アプリケーションはPython 3.9で動作していても、Dependabotが依存関係の更新PRを出せなくなる可能性があります。セキュリティパッチやライブラリアップデートをDependabot任せにしているチームほど、見落としやすい変更です。

影響を受ける可能性が高い人

今回の変更で最初に確認すべきなのは、GitHubでPythonプロジェクトを管理している開発者、リポジトリ管理者、DevOps担当者です。

特に、次のようなリポジトリは影響を受ける可能性があります。

  • .github/dependabot.ymlpackage-ecosystem: "pip"を設定している
  • requirements.txtrequirements-dev.txtpyproject.tomlPipfilepoetry.lockを使っている
  • GitHub Actionsのsetup-python3.9を指定している
  • Dockerfileでpython:3.9python: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.ymlpackage-ecosystem: "pip"の有無、対象ディレクトリ
pyproject.tomlrequires-python、PoetryのPython制約
Pipfile[requires]のPythonバージョン
requirements.txtPython 3.9専用の依存関係がないか
DockerfileFROM python:3.9を使っていないか
GitHub Actionsactions/setup-pythonpython-version: "3.9"を指定していないか
README、開発手順書Python 3.9前提の記述が残っていないか

Python 3.9が残っているかを探す実務的な方法

小規模なリポジトリなら、GitHub上で3.9python: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-versionpython: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が来ないrequestsdjangoなどの更新に気づかないDependabot対象リポジトリを棚卸しする
セキュリティ対応が遅れる脆弱性修正バージョンへの追従が遅れるDependabot Alertsと手動確認を併用する
CIだけ新しく、Dockerが古いActionsは3.12、Dockerfileは3.9のまま実行環境を一覧化して更新する
ライブラリ互換性で失敗するPython更新後に依存関係の解決が壊れるロックファイル再生成とテストを行う
担当者が気づかないDependabotのPRが減った理由が共有されないリポジトリ管理者へ通知する

特に注意したいのは、DependabotのPRが出ないことに気づくまで時間がかかる点です。エラーで派手に止まるよりも、「いつの間にか更新されていない」状態のほうが運用上は危険です。

すぐ実施したい確認チェックリスト

DependabotのPython 3.9非対応に対しては、次の順番で確認すると効率的です。

優先度確認内容判断基準
.github/dependabot.ymlpipがあるかある場合はPython依存関係の確認対象
CIでPython 3.9を固定していないかsetup-pythonやmatrixを確認
DockerfileでPython 3.9を使っていないかFROM python:3.9を検索
pyproject.tomlPipfileで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が残っていた場合は、いきなり全リポジトリを一括更新するより、影響の大きい順に進めるのが安全です。

実務でのおすすめ手順

  1. Dependabotを使っているPythonリポジトリを洗い出す
  2. Python 3.9指定があるファイルを確認する
  3. 移行先のPythonバージョンを決める
  4. CIのPythonバージョンを更新する
  5. Dockerfileやdevcontainerを更新する
  6. pyproject.tomlPipfilerequirements系の制約を見直す
  7. ロックファイルを再生成する
  8. テストを実行する
  9. Dependabotの実行状況と更新PRの作成状況を確認する
  10. 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ライブラリのビルド結果が変わることがあります。psycopgcryptographynumpypandasなどを使っている場合は、ビルドと実行テストを必ず確認してください。

よくある勘違い

「アプリがPython 3.9で動いているだけなら問題ない」は危険

今回の変更は、Dependabotのサポート対象に関するものです。アプリケーションが即停止するとは限りません。

ただし、依存関係の自動更新が止まる可能性があるため、セキュリティ更新やライブラリ更新の運用に影響します。アプリが動いているから放置してよい、とは判断しないほうが安全です。

「Poetryだから関係ない」とは限らない

Dependabotでは、PoetryやPipenvを使う場合でもpackage-ecosystem: "pip"を指定します。GitHub Docsでも、PoetryでPython依存関係を監視する場合はpipを使う例が示されています。(GitHub Docs)

そのため、dependabot.ymlpipがある場合は、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.ymlpackage-ecosystem: "pip"を使っているリポジトリを洗い出し、CI、Dockerfile、pyproject.tomlPipfile、READMEにPython 3.9指定が残っていないか確認してください。

対応のゴールは、単にバージョン表記を変えることではありません。新しいPythonで依存解決とテストが通り、Dependabotが継続して更新PRを作成できる状態に戻すことです。依存関係更新の自動化を維持するためにも、Python 3.9が残っているリポジトリから優先的に見直しましょう。

この記事を書いた人

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

コメント

コメントする

目次