メインコンテンツに移動

shirane lab

メインナビゲーション

  • ホーム
  • ブログ
  • Drush
  • 検索

パンくず

  • ホーム
  • ブログ
  • "Testing Composer 2 RC1 with Drupal 9" を実際にやってみた

"Testing Composer 2 RC1 with Drupal 9" を実際にやってみた

2020/09/30(水) - 22:04
shirane

パフォーマンス向上で注目の Composer 2。現状まだ RC1 だが、Drupal 8 と Drupal 9 は既に Composer 2 互換になっており、サイトのインストールやモジュールの追加/削除を実際に試してみることができる。

Composer をバージョン 2(現状 RC1)にアップデートするには、

$ composer self-update --snapshot

元のバージョンに戻すには、

$ composer self-update --rollback

のように実行すればよい。ただ、日常の作業で欠かせないツールをまだ RC1 の次バージョンに上げてしまうのは(戻せるとしても)抵抗があるかもしれない。

そんな人でも不安なく Composer 2 で Drupal を試せる実行例を、Acquia の Gábor Hojtsy 氏が公開した。

  • Testing Composer 2 RC1 with Drupal 9: huge memory and time savings; and what does it mean for Drupal

自分も Composer 2 を試したことがなかったので、この例にならって実際にやってみた。

使用環境は、VirtualBox 上の CentOS8 仮想マシン、PHP のバージョンは 7.4:

$ php -v
PHP 7.4.11 (cli) (built: Sep 29 2020 10:17:06) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
    with Zend OPcache v7.4.11, Copyright (c), by Zend Technologies
    with Xdebug v2.9.8, Copyright (c) 2002-2020, by Derick Rethans

まず、最新の Composer 1 と Composer 2 を実験用に個別ダウンロード:

$ curl https://getcomposer.org/composer-1.phar --output composer-1.phar
$ php composer-1.phar -V
Composer version 1.10.13 2020-09-09 11:46:34

$ curl https://getcomposer.org/composer-2.phar --output composer-2.phar
$ php composer-2.phar -V
Composer version 2.0.0-RC1 2020-09-10 15:39:45

これで、普段使っているグローバル インストールの composer コマンドには触ることなく、Composer 1 と Comoser 2 を試すことができる。

では、drupal/recommended-project テンプレートで Drupal 9 をインストールしてみよう。1 と 2 とでパフォーマンスを比較するため、--no-cache(キャッシュ無効化)と --profile(メモリと時間の計測)の各オプションを指定して実行する。

Composer 1 の実行結果:

$ php composer-1.phar --no-cache --profile create-project drupal/recommended-project composer1site
~
Memory usage: 9.4MiB (peak: 196.79MiB), time: 94.41s

Composer 2 の実行結果:

$ php composer-2.phar --no-cache --profile create-project drupal/recommended-project composer2site
~
Memory usage: 12.56MiB (peak: 13.77MiB), time: 34.77s

実行時間が約 1/3、メモリのピーク使用量は 1/14 になった。

次に、モジュールのインストールと削除の例。

Composer 1 でインストールしたサイトで、Composer 1 を使って metatag モジュールのインストールと削除を行ってみる。

$ cd composer1site
$ php ../composer-1.phar --no-cache --profile require drupal/metatag
Memory usage: 629.61MiB (peak: 1557.56MiB), time: 265.13s

$ php ../composer-1.phar --no-cache --profile remove drupal/metatag
Memory usage: 450.98MiB (peak: 1377.86MiB), time: 237.71s

では、Composer 2 でインストールしたサイトで同じ処理を実行するとどうなるか。

$ cd ../composer2site
$ php ../composer-2.phar --no-cache --profile require drupal/metatag
Memory usage: 13.72MiB (peak: 14.26MiB), time: 4.77s

$ php ../composer-2.phar --no-cache --profile remove drupal/metatag
Memory usage: 12.24MiB (peak: 12.61MiB), time: 0.27s

メモリの使用量で約 1/100、実行時間で2桁から3桁下の数値が出ている。体感的にも Composer 2 の方は一瞬で終わる感じだった。

まとめると、

メモリ使用量のピーク値(単位=MiB):

操作 Composer v1 Composer v2 比較 (v2/v1)
D9 インストール 196.79 13.77 0.07
Metatag インストール 1557.56 14.26 0.009
Metatag 削除 1377.86 12.61 0.009

実行時間(単位=秒):

操作 Composer v1 Composer v2 比較 (v2/v1)
D9 インストール 94.41 34.77 0.36
Metatag インストール 265.13 4.77 0.017
Metatag 削除 237.71 0.27 0.0011

劇的に改善することがよくわかる。

drupal.org でホストされているプロジェクトの2割近くが外部パッケージに依存しているそうで、Composer なしで Drupal サイトを維持するのは今後ますます難しくなっていくと思う。それだけに、Composer 2 のパフォーマンス向上は Drupal にとっても意義深い。

参考資料

  • Composer 2: What's new and changed
  • Testing Composer 2 RC1 with Drupal 9: huge memory and time savings; and what does it mean for Drupal
  • Allow Drupal to work with Composer 2
  • Composer v1 vs v2 performance comparison - Drupal 9
  • Composer 2.0-alpha2 performance comparison (speed and memory)
  • Using Composer to Install Drupal and Manage Dependencies
Drupal9
Composer
‹ 前の記事次の記事 ›

書籍

『D9 おいしいレシピ集2』がパワーアップして商業誌に

『D9 おいしいレシピ集2』がパワーアップして商業誌に

 書籍の一覧はこちら

 

タグ一覧

DrushDrupal9Drupal6ffdsmVagrant開発環境VirtualBoxDrupal7ComposerコミュニティDrupal5Migrate勉強会モジュールDocker書籍ubercartWindowsCKEditorArtisteerDrupal ONSENDrupal4MariaDBTwigデバッグthemingTomeテーマH5PインストールAnalytics仮想マシンCentOSMacREPLpsyshDruxtJSデカップルドヘッドレスNuxtQuizVue

サイト運営

シナジークエスト

© shirane lab