---
title: "新しいCommerceプラグインプロジェクトを作成する際のベストプラクティス"
slug: "best-practices-for-creating-new-commerce-plugin-projects"
abstract: "新しいCommerceプラグインプロジェクトを作成し、カスタム機能を実装するためのベストプラクティスとヒント。"
---
# 新しいCommerceプラグインプロジェクトを作成する際のベストプラクティス

プラグインは、ECソリューションのニーズに合わせてCommerce Engineの機能をカスタマイズする主な方法です。Commerce Engineプラグインには、機能を構成するすべての必要なクラスが含まれています。このセクションでは、カスタム機能を実装するための新しいCommerceプラグインプロジェクトを作成するためのベストプラクティスとヒントを提供します。

## 新しい機能領域ごとに新しいプラグインを作成してください

カスタム機能を実装する際は、新しい機能領域ごとに新しいプラグインを作成する必要があります。または特定の要件を満たすために修正が必要な標準機能ごとに。例えば、既存のパイプラインを変更したり、sitecore.commmerce.plugin.catalogプラグインが提供するデフォルトのビジネスロジックを変更するパイプラインブロックを置き換えている場合は、対応する機能領域用のプラグインを作成しましょう。Commerceソリューションは通常、カスタマイズを含む独自のプラグインを定義します。拡張する機能領域を反映したカスタム [プラグインプロジェクト](https://doc.sitecore.com/xp/ja/developers/102/sitecore-experience-commerce/best-practices-for-creating-new-commerce-plugin-projects.html#UUID-97404ffd-5b6c-a9c1-a434-989fb5da7234_section-idm4480052173505631530272189924 "Plugin project name and structure") の名前を付けましょう。

## プラグインプロジェクトには同じ機能領域のアーティファクトのみを追加してください

カスタム機能を実装するために新しいプラグインを作成する際は、異なる機能領域に属する要素を含めないでください。

例えば、カスタムプラグインプロジェクトが既存のカタログ機能を拡張する場合、そのプラグイン内でプロモーション操作を処理するパイプラインブロックは含めないでください。代わりに、プロモーション操作に必要な変更を含む別のカスタムプロモーションプラグインプロジェクトを作成しましょう。

## プラグインプロジェクト名と構造

新しいCommerce EngineプラグインはVisual Studio内のプロジェクトとして定義されます。このセクションでは、カスタムプラグインプロジェクトの名称や構造化に関するベストプラクティスとガイドラインを提供します。

### プラグインプロジェクトの命名規則

新しいCommerce Engineプラグインプロジェクトに名前を付ける際は、以下の規則やパターンを考慮してください。

#### 新しい機能や機能を実現するプラグインの名前を付けること

新しい機能を実装するカスタムプラグインプロジェクトの名前は以下の慣例で用いられます。

<CompanyName>.Commerce.Plugin.<FunctionalArea>

ここで:

-   <CompanyName> は会社名(またはクライアントのためにサイトを構築する場合はクライアント名)です。例えば: HabitatCompany。
-   Commerce.Plugin プロジェクトの種類を示します。
-   <FunctionalArea> は新しい機能領域または特徴です。例えば: ProductComparison。

例えば、新しい製品比較機能を実装したカスタムプラグインの名前は : HabitatCompany.Commerce.Plugin.ProductComparisonです。

#### 基本機能を拡張するプラグインの名前を付ける

ベースプラグインがデフォルトで提供する機能を拡張するカスタムプラグインを作成する際は、拡張するベースプラグインの名前をプロジェクト名の一部として含めてください。カスタムプラグインの名前は以下のパターンを用いてください:

<CompanyName>.Commerce.Plugin.<CommerceDefaultPluginName>

ここで:

-   <CompanyName> はサイトを構築している会社(またはクライアント)の名前です。例えば: HabitatCompany。
-   Commerce.Plugin プロジェクトの種類を示します。
-   <CommerceDefaultPluginName> 拡張しているデフォルトのプラグイン名を反映しています。

例えば、Commerce.Plugin.Catalogプラグインが提供する機能を拡張するカスタムプラグインの名前は「 HabitatCompany.Commerce.Plugin.Catalog」です。

#### プロジェクト名を避けると長くなりすぎます

プラグインプロジェクト名の推奨ガイドラインに厳密に従うと、プロジェクト名が長くなりすぎて管理しにくくなることがあります。

もしソリューション名にすでに <CompanyName> (またはクライアント名)が含まれている場合は、プラグイン名から <CompanyName> とcommerce.pluginセグメントを削除してプラグインプロジェクト名を短縮できます。

> !注基礎となるアセンブリとデフォルト名前空間には、プラグイン名から削除された2つのセグメントを引き続き含めることを推奨します。

例えば、HabitatCompany.Commerce.Plugin.ProductComparisonという名前のプロジェクトを短縮するには、Plugin.ProductComparisonに名前を変えることができます。しかし、プロジェクトが構築するアセンブリは依然として命名規則に従い、フルネーム(例えばHabitatCompany.Commerce.Plugin.ProductComparison.dll)を保持します。デフォルトの名前空間はHabitatCompany.Commerce.Plugin.ProductComparisonのままです。

## プロジェクト構造とネームスペース

カスタムプラグインプロジェクトでプラグインのアーティファクトやクラスを整理する際には、以下のガイドラインとベストプラクティスを考慮してください。

-   各タイプのプラグインアーティファクトを収めるための別々のフォルダを作成し、フォルダ名がアーティファクトタイプの複数形になるようにします。例えば、カスタムプラグインプロジェクトが新しいコマンドクラスとコントローラークラスを実装している場合、それぞれ Commands と Controllersという名前のフォルダを作成します。
-   パイプラインブロックや引数を表すクラスを、それぞれ Blocks と Arguments サブフォルダに追加します。
-   パイプラインやパイプラインインターフェースを表すクラスを Pipelines フォルダに直接追加します。

Sitecore.Commerce.Engine.SDKに含まれるVisual Studioプロジェクトテンプレートは、プラグインプロジェクトに必要な構造の良い例を提供しており、適切なフォルダ名とサブフォルダ名が付けられています。

![Example of the folder structure that a plugin project template creates in Visual Studio.](https://doc.sitecore.com/api/markdown-image/xp/ja/developers/102/sitecore-experience-commerce/images/XC_Default_Sample_Project.png)

## プラグインプロジェクトの参照

プロジェクト内の他のコンポーネントに参照や依存関係を追加する際には、以下の点を考慮してください。

-   公式 [Sitecore NuGetフィード](https://nuget.sitecore.com/resources/v3/index.json)を通じてすべてのSitecoreプラグインへの参照を追加してください。
-   可能な限り、サードパーティアセンブリへの参照はNuGet経由で追加してください。
-   Visual Studioで自分のソリューション内のカスタムプラグインプロジェクトへのすべての参照をプロジェクト依存として定義してください。

## Commerce Engineへの新しいプラグインの追加

カスタムプラグインを作成する際は、新しいプラグインアセンブリをCommerce Engineの実行ファイルに登録し、新しい機能を利用可能にする必要があります。以下はCommerce Engineプロジェクトの実行ファイルにカスタムプラグインを追加する際のベストプラクティスです:

-   プロジェクト参照を使って、 sitecore.commerce.engine プロジェクトと同じソリューション内で新しいプラグインプロジェクトを追加してください。
-   より複雑なビルドシナリオでは、NuGetを通じてCommerce Engineプロジェクトに新しいプラグイン参照を追加できます。