ロックファイル【lock file】
概要
排他制御のロックファイル
排他制御のロックファイルは、複数のプログラムや利用者が同じファイルやデータベースを同時に更新し、内容が壊れることを防ぐために用いられる。処理の開始時に専用のファイルを生成し、その存在によって他のプログラムに使用中であることを伝える仕組みである。
処理を始める前に他のプログラムはロックファイルの有無を確認し、既に存在していれば自らの実行を待機か中断する。存在していなければファイルを生成してから処理に入り、終了後は自動的に削除して次の処理に備える。この制御により、同一データへの同時書き込みによる不整合や、パソコンやサーバの多重起動による誤動作を防ぐことができる。異常終了によってファイルだけが残る場合もあり、一定時間の経過後に無効と判断する仕組みなどを組み合わせることも多い。
パッケージ管理のロックファイル
パッケージ管理システムのロックファイルは、プロジェクトで使う外部ライブラリの正確なバージョンや取得先、検証用のハッシュ値を記録するファイルである。npmの「package-lock.json」やYarnの「yarn.lock」、Rustの「Cargo.lock」などが該当する。
開発時に指定するバージョンは「1.5.0以上2.0.0未満」のように範囲を持たせることが多く、インストールの実行時期によって実際に導入される版が変わり得る。ロックファイルはそのとき選択された厳密な版をそのまま記録することで、開発者の端末と本番環境での構成のずれを防ぐ。
ロックファイルを適切に記録・管理することで、プロジェクトを共有した別の開発者や、後日あらためて環境を構築する場合でも、同じ依存関係を再現しやすくなる。近年ではソフトウェアの供給網全体の安全性を高める観点からも重視されており、取得したパッケージの改竄を検出する機能を備える形式も広がっている。
