yarn v2 は開発時における効率を損ねるのではないか


背景

npm, yarn による zero install 戦略を読んで Zero Install を知り、yarn v2 の有用性が気になった。パッケージ追加の速度やパッケージのサイズは従来よりも改善されるそうだが、パッケージをランタイム時に読み込むということはアプリ起動速度は従来よりも劣るように思えたため、検証を行った。

検証方法

yarn v2 と v1 を用いる別環境にて、CRAを用いたプロジェクトを作成して以下の3点から優位性を比較する。
* パッケージ追加の所要時間
* プロジェクトディレクトリのサイズ
* アプリ起動の所要時間

検証

1. パッケージ追加の所要時間

ReactアプリのプロジェクトをCRA経由で作成する。途中でパッケージ追加が行われるため、以下のコマンドを実行してdateコマンドの差から所要時間を算出する。

$ create-react-app --version
3.4.1
$ date && create-react-app test-react-app && date

2. プロジェクトディレクトリのサイズ

以下のコマンドを実行し、出力結果からプロジェクトディレクトリのサイズを取得する。

$ du -sh test-react-app

3. アプリ起動の所要時間

以下のコマンドを実行し、アプリ起動のメッセージが出力されるまでの時間をストップウオッチで計測する。

$ cd test-react-app
$ yarn start

結果と考察

検証結果は以下の通りである。当初の想定通り、パッケージ追加の速度とプロジェクトディレクトリのサイズは v2 が優位であるが、アプリ起動の所要時間は v1 の方が短く優位である。

yarn v2 yarn v1
パッケージ追加の所要時間 67s 88s
プロジェクトディレクトリのサイズ 70.9M 247.1M
アプリ起動の所要時間 19.70s 13.73s

アプリ起動を頻繁に繰り返す開発時における6秒の差は大きく、体感的にも待たされているストレスを強く感じる。パッケージ追加は高速であるとはいえ、頻繁に発生するアプリ起動時の遅延を補えるものではなく、プロジェクトディレクトリのサイズは記憶媒体が大容量化している今日ではさほど問題ではないように思える。現時点の個人的な感想としては v2 は開発の効率を損なうもののように思え、好意的な印象を持つには至らなかった。