---
title: "ウォークスルー:データアクセスコンポーネントの実装"
slug: "walkthrough--implementing-data-access-components"
abstract: "Sitecore Data Exchange Frameworkで入力値を読み書き、マッピングするために使われるデータアクセスコンポーネントの実装ガイド。"
---
# ウォークスルー:データアクセスコンポーネントの実装

このウォークスルーは「 [テキストファイルのカスタムプロバイダーを実装](https://doc.sitecore.com/xp/ja/developers/def/80/data-exchange-framework/implementing-a-custom-provider-for-text-files-walkthrough-series.html "Implementing a custom provider for text files walkthrough series") する」ウォークスルーシリーズの第4部であり、データアクセスコンポーネントの実装方法を説明します。データアクセスコンポーネントは、データ同期プロセス中に値を読み書きするロジックを表します。この例のデータアクセスコンポーネントは、テキストファイルの行から特定の位置で値を読み取る能力を表しています。

例えば、新規顧客の詳細を示すカンマ区切られた値(CSV)を含むファイルを考えます。そのファイルは以下のようになります:

first,last,company
Aaron,Adkins,Ace Corp
Brad,Bedford,Burnside Bread
Charlotte,Colson,Carefree Farms

パイプラインステッププロセッサ*ReadTextFileStepProcessor*ファイルから各行を読み込み、指定された区切り符を使って値の配列を作成します。この例では、区切り符はコンマです。

データアクセスコンポーネントを使って、その配列内の値へのアクセス方法を制御します。この例では、データアクセスコンポーネントを使って以下のものを特定します:

-   ファーストネームはポジション1に位置しています
-   姓(姓)は2番目に位置します
-   会社名は3位に位置しています

このウォークスルーでは、以下の方法を説明します:

-   値アクセス用のテンプレートを作成する
-   値アクセスコンバータを実装してください
-   値アクセスツールのテンプレートでデフォルト値を設定します
-   値アクセスセットのテンプレートを作成します
-   値アクセスツールのデフォルト値を設定する Set テンプレート

## 値アクセス用のテンプレートを作成する

このウォークスルーでは、入力テキストファイルの各行を配列に分割します。配列内の個々の値はデータ同期プロセスで使用できます。テンプレートを作成し、そのアイコンを設定し、ユーザーが配列内のどの値を読み取るか指定できるフィールドを追加する必要があります。

テンプレートを作成するには:

1.  コンテンツエディターで*Templates*に移動します。メニューリボンの **ホーム** タブで「 **新しいテンプレート**」をクリックします。
    
2.  「 **名前選択** 」ダイアログで、以下の値を入力してください:
    
    フィールド
    
    価値
    
    **名称**
    
    *Array Value Accessor*
    
    **ベーステンプレート**
    
    *テンプレート/データ交換/フレームワーク/データアクセス/値アクセス/値アクセス/値アクセス*
    
3.  **次へ**クリック。
    
4.  **ロケーション**ダイアログで、*テンプレート/データ交換/プロバイダー/ファイルシステム/データアクセス/値アクセス*を選択。**「次へ**」をクリックします。確認ダイアログで「**閉じる**」をクリックします。
    
5.  値アクセルのアイコンを設定するには、コンテンツエディターで新しいテンプレートを選択してください。例えば、*テンプレート/データ交換/プロバイダー/ファイルシステム/データアクセス/値アクセサ/配列値アクセサ*。
    
6.  右側のペインの **「コンテンツ** 」タブで、タイトルの横にあるアイコンをクリックします。
    
    ![Array Value Accessor title icon on the Content tab](https://doc.sitecore.com/api/markdown-image/xp/ja/developers/def/80/data-exchange-framework/images/icon.png)
    
7.  アイコン **変更** ダイアログの **アイコン** 欄で、例えば*Office/32x32/radio\_button\_selected.png*と入力します。 **OK**をクリックします。
    
8.  値アクセサにフィールドを追加するには、新しいテンプレートでテンプレートセクションを追加し、*Settings*と名付けてください。
    
9.  以下のフィールドを追加してください:
    
    フィールド
    
    価値
    
    **名称**
    
    *Position*
    
    **種類**
    
    *Integer*
    
    **共有**
    
    選ばれました
    
10.  アイテムを保存してください。
     

## 値アクセスコンバータを実装してください

値アクセサ項目の設定をプラグインに変換できるコンバーターを作成する必要があります。その後、バリューアクセサテンプレート上でコンバーターを指定して、パイプラインステップを読み取るエンドポイントを特定できます。

コンバーターを作成するには:

1.  Visual Studioで、次のクラスを追加します:
    
    using Sitecore.DataExchange.Attributes;
    using Sitecore.DataExchange.Converters.DataAccess.ValueAccessors;
    using Sitecore.DataExchange.DataAccess;
    using Sitecore.DataExchange.DataAccess.Readers;
    using Sitecore.DataExchange.DataAccess.Writers;
    using Sitecore.DataExchange.Repositories;
    using Sitecore.Services.Core.Model;
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace Examples.DataExchange.Providers.FileSystem
    {
     SupportedIds(ArrayValueAccessorTemplateId)
     public class ArrayValueAccessorConverter : ValueAccessorConverter
     {
     public const string ArrayValueAccessorTemplateId = "ARRAY VALUE ACCESSOR TEMPLATE ID";
     public const string TemplateFieldPosition = "Position";
     public ArrayValueAccessorConverter(IItemModelRepository repository) : base(repository)
     {
     }
     protected override IValueReader GetValueReader(ItemModel source)
     {
     var reader = base.GetValueReader(source);
     if (reader == null)
     {
     var position = this.GetIntValue(source, TemplateFieldPosition);
     if (position < 0)
     {
     return null;
     }
     reader = new ArrayValueReader(position);
     }
     return reader;
     }
     protected override IValueWriter GetValueWriter(ItemModel source)
     {
     var writer = base.GetValueWriter(source);
     if (writer == null)
     {
     var position = this.GetIntValue(source, TemplateFieldPosition);
     if (position < 0)
     {
     return null;
     }
     writer = new ArrayValueWriter(position);
     }
     return writer;
     }
     }
    }
    
    > !重要ARRAY VALUE ACCESSOR TEMPLATE IDの値を、[前のステップ](https://doc.sitecore.com/xp/ja/developers/def/80/data-exchange-framework/walkthrough--implementing-data-access-components.html#UUID-057771aa-b704-a148-12f9-dfaf23da3c94_N1652779835355)で作成した値インセクターテンプレートの*Array Value Accessor*のIDと一致させる必要があります。
    
2.  プロジェクトをコンパイルします。
    
3.  Examples.DataExchange.Providers.FileSystem.dllをSitecoreサーバーにデプロイしてください。
    

## 値のアクセサテンプレートでデフォルト値を設定します

値アクセスツールテンプレートを使う前に、そのコンバータータイプを設定しなければなりません。この例では、コンバータータイプはVisual Studioで作成した [プラグイン](https://doc.sitecore.com/xp/ja/developers/def/80/data-exchange-framework/walkthrough--implementing-data-access-components.html#UUID-057771aa-b704-a148-12f9-dfaf23da3c94_N1652779867187) を指し示さなければなりません。

コンバータータイプの設定:

1.  コンテンツエディターで、*テンプレート/データ交換/プロバイダー/ファイルシステム/データアクセス/値アクセス/配列値アクセル*に移動します。
    
2.  右側のペインで「 **ビルダー** 」タブをクリックします。
    
3.  メニューリボンのビル **ダーオプション** タブで「 **標準値**」をクリックします。
    
    ![Standard values on menu ribbon](https://doc.sitecore.com/api/markdown-image/xp/ja/developers/def/80/data-exchange-framework/images/standard-values-button.png)
    
4.  新しいアイテムを選択してください。
    
    ![Standard values in content tree](https://doc.sitecore.com/api/markdown-image/xp/ja/developers/def/80/data-exchange-framework/images/standard-values-item.png)
    
5.  右側のパネルで、以下のフィールド値を設定します:
    
    **名称**
    
    *Converter Type*
    
    **価値**
    
    *例:DataExchange.Providers.FileSystem.ArrayValueAccessorConverter、例:DataExchange.Providers.FileSystem*
    
    > !注フィールドのコンバータータイプはデータ交換フレームワークのセクションにあります。フィールドを見る前にセクションを拡張する必要があるかもしれません。
    
6.  アイテムを保存してください。
    

## 値アクセスセットのテンプレートを作成します

値のアクセス子セットを使って関連する値のアクセス子オブジェクトの集合をグループ化します。

特定の種類の値アクセルのみをサポートするカスタムテンプレートを作成できます。この例では、使用するすべてのバリューアクセサは*Array Value Accessor*テンプレートに基づいています。したがって、この例では配列バリューアクセサのみを許可する値アクセサセットの作成方法を示しています。値アクセルを作成したら、そのアイコンを設定しなければなりません。

配列の値アクセス者のみを表示する値アクセスセットテンプレートを作成するには:

1.  コンテンツエディターで*Templates*に移動します。
    
2.  メニューリボンの **ホーム** タブで **「新しいテンプレート**」をクリックします。
    
    ![New template option on the menu ribbon](https://doc.sitecore.com/api/markdown-image/xp/ja/developers/def/80/data-exchange-framework/images/add-template.png)
    
3.  「 **名前選択** 」ダイアログで、以下の値を入力してください:
    
    フィールド
    
    価値
    
    **名称**
    
    *Array Value Accessor Set*
    
    **ベーステンプレート**
    
    *テンプレート/データ交換/フレームワーク/データアクセス/値アクセスセット/値アクセスセット/値アクセスセット*
    
4.  **次へ**クリック。
    
5.  **ロケーション**ダイアログで、*テンプレート/データ交換/プロバイダー/ファイルシステム/データアクセス/値アクセスセット*を選択します。
    
    ![Value Accessor sets in the Location dialog](https://doc.sitecore.com/api/markdown-image/xp/ja/developers/def/80/data-exchange-framework/images/location-set.png)
    
6.  **「次へ**」をクリックします。確認ダイアログで**「閉じる**」をクリックします。
    
7.  新しいテンプレートを選択してください。例えば、*テンプレート/データ交換/プロバイダー/ファイルシステム/データアクセス/値アクセスセット/配列値アクセスセット。*右側のペインの **「コンテンツ** 」タブで、タイトルの横にあるアイコンをクリックします。
    
    ![Title icon on content tab](https://doc.sitecore.com/api/markdown-image/xp/ja/developers/def/80/data-exchange-framework/images/icon-set.png)
    
8.  アイコン **変更** ダイアログの **アイコン** 欄でOffice/32x32/radio\_button\_group.pngを入力してください。 **OK**をクリックします。
    

## 値アクセスツールのセットテンプレートでデフォルト値を設定します

配列値アクセスツールセットテンプレートを使う前に、テンプレートのデフォルトの挿入オプションを設定する必要があります。

テンプレートのデフォルト値を設定するには:

1.  コンテンツエディターで、*テンプレート/データ交換/プロバイダー/ファイルシステム/データアクセス/値アクセスセット/配列値アクセスセット*の集合へ移動します。
    
2.  右側のペインで「 **ビルダー** 」タブをクリックします。
    
3.  メニューリボンの**Builder OPTIONS**タブの **テンプレート** グループで「 **Standard value**」をクリックします。
    
    ![Standard values on menu ribbon](https://doc.sitecore.com/api/markdown-image/xp/ja/developers/def/80/data-exchange-framework/images/standard-values-button.png)
    
4.  コンテンツツリーで新しい項目を選択してください。例えば、*テンプレート/データ交換/プロバイダー/ファイルシステム/データアクセス/値アクセスセット/\_Standard値*などです。メニューリボンの**CONFIG**タブの「Insert Options」グループで「 **Assign**」をクリックします。
    
5.  **選択**リストからすべてのテンプレートを削除し、テンプレートのテンプレート/*データ交換/プロバイダー/ファイルシステム/データアクセス/値アクセス/配列値アクセサ*を追加します。
    
    ![Insert options dialogue](https://doc.sitecore.com/api/markdown-image/xp/ja/developers/def/80/data-exchange-framework/images/insert-options.png)
    
6.  **OK**をクリックします。商品を保存します。