

高岡智則
年齢:33歳 性別:男性 職業:Webディレクター(兼ライティング・SNS運用担当) 居住地:東京都杉並区・永福町の1LDKマンション 出身地:神奈川県川崎市 身長:176cm 体系:細身〜普通(最近ちょっとお腹が気になる) 血液型:A型 誕生日:1992年11月20日 最終学歴:明治大学・情報コミュニケーション学部卒 通勤:京王井の頭線で渋谷まで(通勤20分) 家族構成:一人暮らし、実家には両親と2歳下の妹 恋愛事情:独身。彼女は2年いない(本人は「忙しいだけ」と言い張る)
はじめに y arn.lock とは何か
yarn.lockは JavaScript のパッケージ管理ツールである Yarn が作る「ロックファイル」です。ロックファイルとは、使う依存関係の正確なバージョン情報を記録しておくためのファイルです。Yarn を使ってプロジェクトを始めると package.json に書かれている依存関係が解決され、実際にどのバージョンのパッケージがインストールされたかを記録するのが yarn.lock です。
なぜ yarn.lock が必要なのか
ソフトウェアの開発環境は人や machines によって少しずつ違います。たとえば同じ package.json でも依存関係の解決結果は異なる場合があります。そんなとき yarn.lock があれば 同じ依存関係の木 が再現され、別の人が同じ手順でインストールしても同じパッケージが入ります。これにより「私の環境では動くのに他の人の環境では動かない」といった問題を減らせます。
どうやって作られるのか
プロジェクトで yarn install を実行すると Yarn は package.json にある依存関係を読み取り、利用可能な最新の解決策を探します。その結果、どのバージョンのパッケージを使うかが決まり、それらの正確なバージョン情報と依存関係の木が yarn.lock に書き込まれます。もし依存関係を追加したり削除したりすると yarn.lock も自動的に更新されます。
実務での使い方のコツ
ポイントは次の三つです。
- コマンド yarn install で依存関係を揃える
- 追加 yarn add パッケージ名 で新しい依存関係を加えると同時に yarn.lock が更新される
- 固定版の環境を保つ CI や本番環境では yarn install --frozen-lockfile を使って yarn.lock を厳密に守る
よくある質問と注意点
質問の例として「yarn.lock をコミットすべきか?」があります。結論としては ほとんどの場合コミットするのが望ましいです。アプリケーションやライブラリを配布する場合、ユーザーが同じ依存関係で動作することを確実にするためです。ただしライブラリを公開する場合は別の戦略があることもあります。なお古いプロジェクトで package.json を変更したら必ず yarn install を実行して yarn.lock を最新にしておくとよいです。
yarn.lock と npm の違い
似た役割を果たす npm のファイルには package-lock.json があります。どちらも同じ目的、つまり依存関係の固定を狙っていますが、作り方やコマンドには違いがあります。現在のプロジェクトでどちらを使うかは、使っているパッケージマネージャに合わせて選ぶのが基本です。
まとめ表
| 項目 | 説明 |
|---|---|
| 目的 | 依存関係の正確なバージョンを記録し再現性を高める |
| 作成タイミング | yarn install 実行時に自動的に生成・更新 |
| コミット | ほとんどのケースで推奨 |
| CI での運用 | --frozen-lockfile でロックファイルの変更を防ぐ |
まとめ
yarn.lock はプロジェクトの依存関係を安定させる大切なファイルです。正しく運用することで開発者全員が同じ環境で作業でき、継続的なデプロイにも安心感をもたらします。初めは少し難しく感じるかもしれませんが、基本の考え方を覚えれば日常の開発で自然に使いこなせるようになります。
yarn.lockの同意語
- yarn.lock
- Yarnが依存関係の正確なバージョンを固定するために生成するロックファイルの正式名称。再現性のあるビルドを保証するために使われます。
- Yarn ロックファイル
- Yarnが作成するロックファイルの一般的な呼び方。依存関係のバージョンを固定して再現性を高める目的で使用します。
- Yarnの依存関係ロックファイル
- Yarnが依存関係の正確な組み合わせを固定するためのファイル。
- 依存関係ロックファイル(Yarn用)
- Yarn向けに、依存関係のバージョンを固定するファイル。
- Yarn用のロックファイル
- Yarn向けの依存関係固定ファイル。
- パッケージ依存関係固定ファイル(Yarn版)
- 特定のパッケージバージョンを固定するファイル。Yarn専用の形式で扱われます。
- パッケージのバージョン固定ファイル(Yarn形式)
- Yarn形式で依存関係のバージョンを固定するファイル。
- ロックファイル(Yarn対応)
- Yarnで利用されるロックファイルという意味合いの言い換え。
- 再現性確保用のロックファイル(Yarn)
- 同じ依存関係ツリーを再現できるようにバージョンを固定する目的のファイル。
yarn.lockの対義語・反対語
- package.json
- yarn.lockの対義語として、依存関係のバージョンを範囲で記述するファイル。実際の厳密な依存バージョンは解決時に決まり、固定はされません(再現性は低くなることがあります)。
- 依存のバージョン範囲指定
- 依存関係のバージョンを範囲で指定する状態。これだと将来の更新を許容し、yarn.lockのような厳密な固定はない状態を指します。
- ロックファイルなし
- yarn.lockのようなロックファイルが存在しない、あるいは使用していない状態。インストールの再現性が落ちます。
- 再現性の低いインストール
- 同じ環境でもインストール時に依存バージョンが変わる可能性があり、再現性が低くなる状態を指します。
- package-lock.json
- npmのロックファイル。yarn.lockの対義語というより対になる存在ですが、異なるパッケージマネージャのロックファイルとして比較されることがあります。
yarn.lockの共起語
- yarn.lock
- Yarn が依存関係の厳密なバージョンを記録して固定するためのロックファイル。
- yarn
- Node.js のパッケージマネージャ。依存関係の解決とインストールを担当します。
- lockfile
- 依存関係の解決結果を保存し、再現性を保証するファイル群の総称。
- lockfileVersion
- yarn.lock のフォーマットバージョン。主に 1 が使われます。
- package.json
- Node.js プロジェクトのメタ情報と依存関係を定義するファイル。
- dependencies
- このプロジェクトが必須として要求する依存関係の集合。
- devDependencies
- 開発時のみ必要な依存関係の集合。
- resolved
- 依存関係の解決済みのソース場所(URL や バージョン)を指す情報。
- integrity
- 依存関係の整合性を検証するハッシュ値。
- version
- パッケージのバージョン番号。
- name
- パッケージ名。
- tarball
- パッケージの tarball アーカイブのURLまたは参照。
- registry
- パッケージが取得されるレジストリの URL。
- git
- Git リポジトリから取得する依存関係の参照(例: git+https://github.com/…)
- peerDependencies
- このパッケージが動作するために必要な同等の依存関係。
- optionalDependencies
- 任意でインストール可能な依存関係。
- workspaces
- 複数のパッケージを一括管理する Yarn Workspaces の設定・利用。
- scope
- スコープ付きパッケージの区分情報(例: @types, @babel)。
- packageManager
- package.json に記載される場合のパッケージマネージャ情報(例: yarn@1.22.19)。
- node_modules
- 実際に依存関係が格納されるディレクトリ。
- resolution
- 依存関係の解決ルールや特定バージョンの強制指定を指す情報。
yarn.lockの関連用語
- yarn.lock
- Yarn が依存関係を厳密に固定するために生成するロックファイル。記録された正確なバージョンと解決先URLにより、開発環境と本番環境で同じ依存関係を再現できます。
- Yarn
- Node.js のパッケージマネージャー。高速なインストール、オフライン作業、ワークスペース管理、PnP などの機能を提供します。
- lockfile
- 依存関係の正確なバージョンを固定するファイルの総称。yarn.lock や package-lock.json が代表例です。
- lockfileVersion
- ロックファイルの形式バージョン。Yarn のバージョンにより異なり、正しい解釈を決定します。
- package.json
- プロジェクトのメタデータと依存関係を定義するファイル。名前・バージョン・依存関係・スクリプトなどを記述します。
- dependencies
- 実行時に必要なパッケージの一覧。package.json の dependencies セクションに記載します。
- devDependencies
- 開発時・テスト時のみ必要なパッケージの一覧。ビルドツールやテストフレームワークなどが該当します。
- peerDependencies
- このパッケージを利用する側が自分で別途用意するべき依存関係を宣言します。互換性を要求する場合に使われます。
- optionalDependencies
- インストールできなくても問題ない依存関係。環境によっては省略されます。
- resolutions
- Yarn 専用の設定で、転送依存の特定バージョンを強制的に上書きします。転送の衝突を解決するために利用されます。
- integrity
- パッケージの整合性を検証するハッシュ値。ダウンロードしたパッケージが改ざんされていないかを確認します。
- resolved
- パッケージの正確な取得先を示す情報。URL やリポジトリの指定などが含まれます。
- tarball
- パッケージの配布ファイル(通常は .tgz 形式)に関する情報。ダウンロード元を表します。
- registry
- パッケージを取得する登録先。通常は npm レジストリや Yarn が使うレジストリの URL。
- node_modules
- インストール済み依存関係を格納するディレクトリ。PnP を使う場合は生成されません。
- Plug'n'Play
- node_modules を用いず、依存関係を別の解決方法で動作させる Yarn の仕組み。パス解決が異なります。
- PnP
- Plug'n'Play の略。Yarn のノードモジュールなしで動作させる仕組みの総称。
- Yarn Berry / Yarn 2+
- Yarn の大幅な改良版(Yarn 2 以降)。PnP の標準化やパフォーマンス向上、ワークスペースの拡張などを特徴とします。
- workspaces
- モノレポ(複数のパッケージを一つのリポジトリで管理)を効率化する機能。依存の共有や一括インストールが可能です。
- offline mirror
- オフライン環境でも依存関係を再現できるように、パッケージをローカルミラーに保存して利用する機能。
- yarn cache
- ダウンロードしたパッケージをローカルにキャッシュする仕組み。再利用を高速化します。
- yarn add
- 新しい依存関係を追加するコマンド。package.json と yarn.lock の両方を更新します。
- yarn install
- package.json または yarn.lock に基づき依存関係をインストールします。既存の lockfile があればそれを優先します。
- yarn upgrade
- 依存関係を許容範囲内で最新へ更新し、yarn.lock を更新します。
- yarn remove
- 依存関係を削除し、package.json と yarn.lock を更新します。
- semver
- セマンティック・バージョニングの規則。バージョン範囲の解釈に用いられる標準的なルールセットです。
- npm
- Node.js の別の代表的なパッケージマネージャー。yarn のライバルであり、package-lock.json を生成します。
- package-lock.json
- npm が生成するロックファイル。依存関係の厳密なバージョンを固定して再現性を確保します。
- shrinkwrap
- 依存関係を固定するための古い仕組み(npm の Shrinkwrap 機能の名残)。lockfile の概念と似ています。
- transitive dependencies
- 直接の依存関係ではなく、その依存関係の依存関係として現れる依存関係。
- direct dependencies
- 直接 package.json に記載されている依存関係。アプリが直接依存するパッケージです。
- deterministic install
- 同じ環境・同じ lockfile で常に同じ依存関係が再現される性質。再現性の要諦です。
yarn.lockのおすすめ参考サイト
- package-lock.jsonとyarn.lockとは!? 分かりやすくシンプルに解説!!
- ロックファイル とは #初心者 - Qiita
- yarnとは・意味・使い方・読み方・例文 - 英ナビ!辞書 英和辞典
- yarnとは (npmとの違い) #194日目|ゆーき|YM202110 - note



















