Yarn

開発手法・ツール | IT用語集

この用語をシェア

Yarnとは

Yarn(Yet Another Resource Negotiator)は、Facebook(現Meta)が開発したJavaScriptパッケージマネージャーです。npmの代替として作られ、高速性、セキュリティ、信頼性を重視し、yarn.lockファイルによる確実な依存関係管理と並列インストールにより、効率的な開発環境を提供します。

Yarnの主要特徴

高速パフォーマンス

  • 並列インストール:複数パッケージの同時ダウンロード
  • キャッシュシステム:一度ダウンロードしたパッケージの再利用
  • ネットワーク最適化:効率的なレジストリアクセス
  • オフライン機能:キャッシュされたパッケージのオフライン利用

確実な依存関係管理

  • yarn.lock:厳密なバージョン固定ファイル
  • 決定論的インストール:環境間での一貫した結果
  • バージョン解決:複雑な依存関係の自動解決
  • 整合性チェック:パッケージの完全性検証

主要なYarnコマンド

プロジェクト管理

  • yarn init - 新しいプロジェクトの初期化
  • yarn install - 依存関係のインストール
  • yarn add <package> - パッケージの追加
  • yarn remove <package> - パッケージの削除
  • yarn upgrade - パッケージの更新

実行コマンド

  • yarn start - アプリケーションの開始
  • yarn test - テストの実行
  • yarn build - プロダクションビルド
  • yarn run <script> - カスタムスクリプト実行

yarn.lockファイル

yarn.lockの重要性:

  • バージョン固定:すべての依存関係の正確なバージョンを記録
  • 再現性:チームメンバー間での同じ環境構築
  • CI/CD対応:本番環境での一貫したビルド
  • セキュリティ:予期しないパッケージ更新の防止

Yarnワークスペース

モノレポ管理

複数のパッケージを1つのリポジトリで管理する機能

package.jsonの設定例:

{
  "name": "my-monorepo",
  "private": true,
  "workspaces": [
    "packages/*",
    "apps/*"
  ],
  "devDependencies": {
    "lerna": "^6.0.0"
  }
}

ワークスペースの利点

  • 依存関係の共有:共通パッケージの重複排除
  • 一括管理:すべてのパッケージの同時更新
  • クロスリンク:ワークスペース間の相互参照
  • 効率的ビルド:変更されたパッケージのみ再ビルド

Plug'n'Play(PnP)

革新的な依存関係解決

node_modulesを使わない新しいパッケージ管理方式

PnPの利点

  • 高速起動:node_modules作成の省略
  • ディスク効率:重複ファイルの削除
  • 厳密性:宣言されていない依存関係へのアクセス禁止
  • 即座のインストール:ファイルコピー不要

npmとの比較

主な違い:

機能 Yarn npm
インストール速度 高速(並列処理) 標準
ロックファイル yarn.lock(自動生成) package-lock.json
ワークスペース ネイティブサポート v7以降サポート
Plug'n'Play あり なし

Yarn 2(Berry)の新機能

次世代Yarn

  • Zero-Installs:インストール不要の即座の利用
  • Constraints:プロジェクト間の制約管理
  • プラグインシステム:機能の柔軟な拡張
  • TypeScript統合:型定義の自動管理

セキュリティ機能

パッケージセキュリティ

  • チェックサム検証:パッケージの完全性確認
  • yarn audit:脆弱性スキャン
  • レジストリ検証:信頼できるソースの確認
  • ライセンス管理:依存関係のライセンス確認

実際の運用例

React プロジェクトでの活用

開発フロー:

  1. プロジェクト初期化:yarn create react-app my-app
  2. 依存関係追加:yarn add react-router-dom
  3. 開発ツール追加:yarn add -D prettier eslint
  4. 開発サーバー起動:yarn start
  5. 本番ビルド:yarn build

メリット

  • 高速性:npmより大幅に高速なインストール
  • 信頼性:yarn.lockによる確実な再現性
  • セキュリティ:パッケージ検証とライセンス管理
  • ワークスペース:モノレポ開発の効率化
  • オフライン対応:ネットワーク障害時の継続作業

学習・導入のポイント

  • npmからの移行:既存プロジェクトの段階的移行
  • yarn.lock管理:バージョン管理での適切な取り扱い
  • ワークスペース活用:モノレポ構成での効率的開発
  • PnP理解:新しいパッケージ管理方式の習得
  • チーム統一:開発チーム全体での一貫した利用

この用語についてもっと詳しく

Yarnに関するご質問や、システム導入のご相談など、お気軽にお問い合わせください。