# プログラムでカタログを作成する

> CatalogProvider クラスを使用して、柔軟な構成またはランタイム駆動の構成のコードでカタログを定義します。

`CatalogProvider` クラスを使用して、コードで直接カタログを定義できます。このアプローチは、カタログ設定をプログラムで完全にコントロールでき、例えば、非常に大きなカタログを使用して、絶えず大量の新しいアイテムを追加するゲームなど、複雑なシナリオに役立ちます。

カタログが静的で視覚的な設定が必要な場合は、代わりに Unity エディターの IAP Catalog ウィンドウを使用してリストを設定できます。この方法の手順については、[エディターでの](./create-catalog-in-editor.md)カタログの作成 を参照してください。

> **Note:**
>
> D2C(ダイレクト トゥ コンシューマー)支払いプロバイダーの場合は、[リモート カタログを作成する](./payment-providers/configure-remote-catalog.md)必要があります。

カタログリストをプログラムで定義するには、以下を行います。

1. 初期化段階で、`CatalogProvider` クラスのインスタンスを作成します。
2. 各リストを追加するには `AddProduct()` メソッドを使用します。一度に複数のリストを追加するには `AddProducts()`を使用します。
3. リストごとに、ストア間で一意の`Product ID`と`Product Type`を指定します。

以下の例は、ID `100_gold_coins`を持つ消費型リストを`CatalogProvider`に追加し、後で `FetchProducts()` を呼び出して定義されたリストを取得する方法を示しています。

```cs
using UnityEngine;
using UnityEngine.Purchasing;

public class MyIAPManager {
    public MyIAPManager () {
        var catalog = new CatalogProvider();
        catalog.AddProduct("100_gold_coins", ProductType.Consumable);
        // Connect to the store
        catalog.FetchProducts(UnityIAPServices.DefaultProduct().FetchProductsWithNoRetries);
    }
}
```

> **Note:**
>
> `CatalogProvider` クラスを使用して、ストア固有の ID やその他の高度な設定をコードで直接設定できます。

## 追加リソース##additional-resources

* [ダッシュボードでのカタログの管理](./dashboard-catalog/_index.md)
