
YarnはFacebook(現Meta)が2016年10月に公開したJavaScript向けパッケージマネージャで、当時のnpm v3が抱えていたインストール速度・再現性・大規模リポジトリ対応の課題を解決する目的で生まれました。Sebastian McKenzie氏・Christoph Pojer氏らを中心にGoogle・Tilde・Exponentと共同で開発され、yarn.lockによる確実な依存固定と並列ダウンロードによる高速化を初期の売りに掲げました。2018年にはYarn 2(コードネーム「Berry」)への大幅刷新が発表され、Plug'n'Play(PnP)・ゼロインストール・ワークスペースなど独自路線を強めて現在はYarn 4系として継続的に進化を続けています。
この記事の目次
- yarn.lockと並列ダウンロード
- Yarn 2以降のBerry・PnP路線
- Workspaces中心のモノレポ運用
- npmやpnpmとの位置取り
- まとめ
yarn.lockと並列ダウンロード

Yarn 1の最大の貢献はyarn.lockによる完全な依存固定で、当時のnpmはpackage-lock.jsonを持たず「開発機とCIで微妙に違うバージョンが入る」問題が頻発していました。Yarnは依存ツリー全体の解決結果をyarn.lockに書き出し、yarn install --frozen-lockfileで再現性のあるインストールを保証する設計を最初から備えていました。この衝撃を受けてnpm側も2017年のv5でpackage-lock.jsonを追加し、現在では両者の差はかなり縮まっています。
Yarnは依存パッケージを並列にダウンロードし、ローカルキャッシュ(~/.yarn/cacheなど)を活用して同一バージョンを2度取得しない仕組みを取りました。オフラインモードも標準で、一度取得した依存はネットなしで再インストールできる点もチーム開発で重宝されました。リリース当時のベンチマークではnpmと比べて2〜3倍速いケースが珍しくなく、「高速・確実」というキャッチコピーが広く浸透しました。
Yarn 2以降のBerry・PnP路線

Facebookは2018年にYarn 2の構想を発表し、コードネーム「Berry」として完全に書き直したコードベースを2020年に正式リリースしました。最大の変更点はPlug'n'Play(PnP)で、node_modulesディレクトリを生成せず、.pnp.cjsに依存解決マップを保存してNodeのモジュール解決を差し替える方式に切り替えました。これによりインストールが事実上瞬時に終わり、ディスクI/Oも最小化されますが、node_modulesを前提とする一部ツールとの互換性に注意が必要です。
Yarn Berryは「ゼロインストール」と呼ばれる運用も提案し、.yarn/cacheをリポジトリにコミットすればyarn installなしでgit clone直後に開発を始められる構成を可能にしました。2022年にはYarn 4が登場し、デフォルトでnode-modulesリンカーも選べるようになり、移行のハードルが下がっています。Yarnの開発はMetaから独立したコミュニティ主導の運用に移っており、現在はMaël Nison氏らが中心的に保守しています。
Workspaces中心のモノレポ運用

Yarnは比較的早い段階でWorkspaces機能を実装し、ルートのpackage.jsonに"workspaces": ["packages/*"]と書くだけで複数パッケージをまとめて管理できました。Babel・Jest・Storybookといった巨大OSSはこの機能を活用してYarnでモノレポを構築し、その運用ノウハウがフロントエンド界全体に広まりました。yarn workspaces foreach run buildでモノレポ内の各パッケージのスクリプトを順序を考慮して実行できる点も実用的です。
Yarn Berryからは公式プラグインシステムがあり、yarn plugin import constraintsを入れると、ワークスペース全体で依存版数の一貫性をTOMLルールで強制できます。TypeScript版数やReact版数をモノレポで完全一致させたいときに有効で、ヘテロなチームでも事故を減らせます。プラグインはCIへのインタフェース提供・キャッシュ強化など多岐にわたり、自社で独自プラグインを書いてプラットフォーム化する事例もあります。
npmやpnpmとの位置取り

Yarnが登場した当時はnpmへの不満が大きく、ほぼすべての大手プロジェクトがYarnへ移行しました。しかしnpm v7(2020年)・v8でWorkspacesとlockfile改善が入り、機能面での差は大きく縮まりました。現在の選択肢は「公式の安定を取るならnpm」「省ディスクとモノレポ最強構成ならpnpm」「PnPと独自プラグインで尖るならYarn Berry」と整理できます。
Yarn 1系はすでにメンテナンスモードに入っており、新規プロジェクトでは1系を選ぶ理由はほぼなくなっています。既存のYarn 1リポジトリはnpmかpnpmへ移行するか、Yarn 4へアップグレードしてBerry系の機能を取り込むのが現実的な選択肢です。「最初にlockfileの大切さを業界に広めた立役者」としての歴史的役割は大きく、現代のパッケージマネージャ全般が受けた影響は計り知れません。
まとめ
Yarnは2016年にFacebookが公開したnpm代替で、yarn.lockと並列ダウンロードでパッケージ管理に再現性と速度をもたらしました。Yarn 2以降はPlug'n'Play・Workspaces・プラグインで独自路線を歩み、現在はYarn 4として継続的に進化しています。npmとpnpmが追従した今でも、PnPやゼロインストールを軸にした選択肢として固有の価値を保ち続けています。
※本記事はIT用語辞典の手書きドラフトです。公開前に最新情報・出典を確認のうえ加筆修正してください。

コメント