0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

WooCommerceのモノレポ構成から見る開発環境構築の判断ポイント

0
Posted at

業務上の課題

WooCommerceを使ったECサイトの開発や保守に関わる際、コア本体だけでなく拡張機能や内部ツールのソースコードがどこで管理され、どのように連携しているのかを把握する必要があります。特に複数のプラグインやパッケージを横断して修正を加える場合、個々のリポジトリがばらばらに管理されていると、依存関係の整合性を保つのが難しくなります。WooCommerceはこの課題に対して、コア、拡張、パッケージ、ツールを一つのリポジトリでまとめて管理するモノレポ構成を採用しています。

モノレポが提供する機能

公式READMEによると、このリポジトリにはWooCommerce本体のプラグイン、PHPおよびJavaScriptのパッケージ、開発を支援するツール群がまとめて収録されています。ディレクトリ構成としては、pluginsディレクトリにWooCommerce本体を含む各種プラグインが置かれ、packagesディレクトリには内部依存を示すinternal-という接頭辞が付いたものを含むPHPおよびJavaScriptのパッケージが配置されています。toolsディレクトリには、モノレポ内で使う補助的なスクリプトやユーティリティ、場合によっては外部ツールも含まれるとされています。開発環境の前提としては、PNPMを実行するためのNode.js、依存管理とビルド・テストスクリプトのためのPNPM自体、PHP7.4以上、PHPパッケージやプラグインの依存管理に使うComposerが挙げられています。Node.jsのバージョンはpnpm-workspace.yaml内のuseNodeVersionで指定され、.nvmrcにも同じ内容が反映されており、PNPMがスクリプト実行時に自動でそのバージョンを利用する仕組みになっている点が説明されています。また、POSIX準拠のOSを前提としており、Windows環境ではWSLの利用が推奨されています。

導入検討の場面

社内でWooCommerceのコアに手を入れる予定がある場合や、複数の自社拡張機能を同時に開発していてパッケージ間の依存関係を一元管理したい場合には、このモノレポ構成を参考にする価値があります。また、既存の拡張機能開発で個別リポジトリの管理コストが問題になっている場合、同様のpnpmワークスペースとComposerを組み合わせた構成が自社の開発フローに合うかどうかを検討する材料になります。一方で、単一の軽量な拡張プラグインを開発するだけであれば、モノレポ全体を導入する必要はなく、該当パッケージやプラグインのディレクトリを個別に参照する方が適している場合もあります。

READMEだけでは断定できない点

公式READMEはリポジトリの構成や前提ツール、貢献手順の案内を示していますが、実際のビルド時間や依存解決の挙動、各パッケージ間の具体的な結合度についての記載はありません。また、サポートはこのリポジトリのissueトラッカーではなくコミュニティフォーラムやSlack、公式サポート窓口を通じて行うことが明記されている一方、個々の拡張機能の開発体験や保守のしやすさについては触れられていません。実際の導入を検討する場合は、CONTRIBUTING.mdや開発者向けドキュメント、tools/README.mdに記載されているモノレポ運用の詳細を別途確認する必要があります。

出典: https://github.com/woocommerce/woocommerce/blob/trunk/README.md

公式READMEをもとに、AIを執筆・推敲支援に使用しています。実機検証の報告ではありません。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?