GitHub ActionsのワークフローでPythonツールを手軽に実行するには、uvx tool-nameコマンドが非常に便利です。uvは高速なPythonパッケージマネージャーで、uvxはnpxのようなツールランナーです。しかし、デフォルトではワークフローが実行されるたびにPyPIから最新バージョンのツールとその依存関係をダウンロードするため、時間と帯域を消費します。
この問題を解決するために、Simon Willison氏は2026年7月14日にキャッシュフレンドリーなレシピを公開しました。その方法は、ワークフローの先頭で環境変数UV_EXCLUDE_NEWERを設定することです。例えば、UV_EXCLUDE_NEWER: "2026-07-12"と設定すると、uvはその日付以前に公開された最新バージョンのみを使用します。そして、この日付をGitHub Actionsのキャッシュキーの一部として利用します(例:uv-cache-${{ env.UV_EXCLUDE_NEWER }})。これにより、初回実行時にはツールがダウンロードされてキャッシュされ、以降の実行ではキャッシュから再利用されるため、ネットワークリクエストが発生しません。
ツールをアップグレードしたい場合は、UV_EXCLUDE_NEWERの日付を更新するだけで、キャッシュキーが変わり、自動的に新しいバージョンがダウンロードされます。このプロセスは完全に自動化されており、開発者は単に環境変数の日付を変更するだけで済みます。
Willison氏の目標は、PythonツールをGitHub Actionsで使用する際に、毎回のワークフロー実行でPyPIにアクセスしないようにすることです。このテクニックは、uvxで呼び出されるあらゆるツールに適用可能で、頻繁に実行されるCI/CDパイプラインにおいて実行時間の短縮と帯域幅の節約に大きく貢献します。また、実装は非常に簡単で、ワークフローに一行の環境変数設定を追加し、キャッシュキーを調整するだけです。
実践的なアドバイスとしては、日付を適切に選択することが重要です。例えば、当日の日付を設定すればその日時点の最新バージョンに固定され、テストが通過した日付であれば安定したバージョンを使用できます。GitHub Actionsのキャッシュ機能と組み合わせることで、効果的で信頼性の高いツール管理が実現します。
まとめると、Simon Willison氏のこのレシピは、GitHub Actionsユーザーにとって最小限の変更で大きなパフォーマンス向上をもたらすエレガントな解決策です。CI/CDにおけるキャッシュ戦略の賢い応用例であり、Pythonやuvxを利用するすべての開発者にとって参考になるでしょう。