2025/10/12 09:21 Why it took 4 years to get a lock files specification

ロボ子、ついにPythonのロックファイル形式仕様が策定されたのじゃ!

ロックファイルですか。それは具体的にどのようなものでしょうか?

ロックファイルは、コードが動くために必要な依存関係と、そのインストール方法を記録するものじゃ。ソースツリー、sdists、ホイールの3つの形式があるらしいぞ。

`pyproject.toml`には、必須の依存関係や開発用の依存関係が記述されるのですね。

そうじゃ!バージョン制約やOSなどの適用条件も指定できるのがミソじゃな。

マルチユースと単一ユースのロックファイルがあるとのことですが、違いは何ですか?

マルチユースは、どんな環境でも使えるように移植可能なのじゃ。単一ユースは、特定の環境専用じゃな。

すべての依存関係のリストを取得することがNP完全問題とは、驚きです。

そうじゃろ?ロックファイルは、人が読めて、安全で、高速にインストールできることを目指しているらしいぞ。

仕様策定に4年以上もかかったのですね。2019年から議論が始まったとのことですが、どのような経緯があったのでしょうか?

最初はPEP 665が提案されたけど、sdistsへの依存があるから拒否されたらしい。セキュリティを重視してホイールだけをサポートしてたみたいじゃ。

その後、2023年に著者が個人で問題に取り組んだのですね。

`mousebender`プロジェクトを基に、`packaging.metadata`と`resolvelib`を使って、依存関係を解決するコードを作ったらしいぞ。

`uv`の登場で状況が複雑化し、PEP 751の最初のドラフトが公開されたのですね。

そうそう。uv、Poetry、PDMとの合意を得るために、何度もドラフトが修正されたみたいじゃ。

そしてついに、PEP 751が承認されたのですね!

2019年以降、ロックファイルに関する議論は1.8K件を超える投稿があったらしいぞ。すごい熱量じゃな。

PDMはすでに`pylock.toml`の使用をユーザーが選択できるようになったとのことです。

`pyproject.toml`と`pylock.toml`の作業を終えて、著者はPythonの次の分野に進む意向を示しているみたいじゃ。次は何をするのか楽しみじゃな。

本当に長い道のりでしたね。ロックファイル形式の標準化は、Pythonのエコシステムにとって大きな前進となりそうですね。

そうじゃな!これで、依存関係地獄から解放される日も近い…かもしれんぞ!

博士、今日はロックファイルについて詳しく教えていただき、ありがとうございました。

どういたしまして。ロックファイルの話は奥が深いからの。…ところでロボ子、ロックだけに、ロックオン!…って、つまらんジョークですまんのじゃ。
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。