B2C Commerce のその他 Salesforce 製品との接続 - Commerce API, WebDAV

※ これから記載する事項は、私が所属する会社とは切関係のない事柄です。


今回は[「B2C Commerce のその他 Salesforce 製品との接続」シリーズ](https://qiita.com/syunyama/items/366fcbc315be5e5c252f)として Commerce API, WebDAV について紹介します。
Commerce API については以前紹介した「[Salesforce B2C CommerceのヘッドレスAPIを呼んでみる](https://qiita.com/syunyama/items/060f5777b0fc04e4cea1)」シリーズをご覧ください。
今回は **WebDAV のみ**について紹介したいと思います。

![Cross Cloud (10) (1).jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2110894/f82b86fe-7cb7-dba5-8f84-6158d1366729.jpeg)



## WebDAV とは？

#### 出典：フリー百科事典『ウィキペディア（Wikipedia）』

WebDAV（Web-based Distributed Authoring and Versioning、ウェブダブ）はHypertext Transfer Protocolを拡張したもので、Webサーバ上のファイル管理を目的とした分散ファイルシステムを実現するプロトコルである。


#### 出典：ChatGPT

WebDAV (Web Distributed Authoring and Versioning) は、HTTP（Hypertext Transfer Protocol）プロトコルを使用して、Web サーバー上のファイルを編集、更新、バージョン管理するための拡張機能です。WebDAV を使用すると、クライアントアプリケーション（WebDAV クライアント）を介して、WebDAV サーバーに接続し、ファイルを読み書きすることができます。




## 接続内容とポイント

* WebDAV Client が WebDAV Server に対してファイル操作を行います。
* B2C Commerce の（違うインスタンス上に構築されていたとしても）インスタンス同士の WebDAV での操作はできません。
    * ![b2c_data_io_slide_15.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2110894/f987a319-b452-965e-367c-0cbb476e3f9b.gif)

* クレデンシャルの種類には下記の２種類があり、それぞれのクレデンシャルに対してアクセスできるフォルダーに制限をかけることができます。
    * 1.Business Manager ユーザーのクレデンシャル
        * Business Manager を利用するユーザーごとに制限をかけることが可能です
        * Business Manager の制限をかける画面：
            * 管理 > 組織 > 役割 > {ユーザに紐づいている役割} - WebDAV の許可

    * 2.Account Manager で作成する API Client のクレデンシャル
        * アプリケーションなどの API を利用するクライアント単位で制限をかけることが可能です
        * Business Manager の制限をかける画面：
            * 管理 > 組織 > クライアントの WebDAV 許可





## 接続方法

今回は Business Manager ユーザーのクレデンシャル情報を利用して下記の２つの方法を試してみます。（Account Manager で作成する API Client のクレデンシャルの設定方法については[こちら](https://documentation.b2c.commercecloud.salesforce.com/DOC1/index.jsp?topic=%2Fcom.demandware.dochelp%2Fcontent%2Fb2c_commerce%2Ftopics%2Faccount_manager%2Fb2c_account_manager_add_api_client_id.html)をご覧ください）

* Mac の Finder から接続する方法
* curl コマンドで接続する方法



### （試す前に） Business Manager ユーザーのクレデンシャル情報（ID、パスワード）の取得

まず接続を行う前に B2C Commerce の WebDAV サーバーに接続するためのクレデンシャル情報を取得します。

上部右上のプロフィールアイコンをクリックすると下記のようなマイプロフィール画面が表示されます。そこのログインという項目から ID を取得します。（Eメールアドレスになっているかと思います）
さらに「アクセスキーの管理」のリンクをクリックしパスワードとなるアクセスキーを生成する画面に遷移します。
![スクリーンショット 2023-04-11 17.32.17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2110894/73ff4d16-18df-c883-6d75-fb2467d3fc51.png)



アクセスキーを生成する画面で「アクセスキーの生成」ボタンをクリックし、表示されたポップアップから「WebDAV のファイルアクセスと UX Studio」を選択し「生成」ボタンをクリックし生成を行います。
![スクリーンショット 2023-04-11 17.34.33.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2110894/6cc33590-0603-4aad-4477-11545ee779f4.png)



生成を行うとアクセスキーが表示されるのでコピーしておきます。念の為ファイルとしてダウンロードしておくのもおすすめです。
![スクリーンショット 2023-04-11 17.34.39.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2110894/e9de4718-9417-425e-7cf1-4a9ee987d069.png)



#### 権限の設定

今回は Administrator の役割をアサインしているので、すべてのフォルダにアクセスできるのですが、ここではどのフォルダいにアクセスできるかを確認・編集する方法だけ紹介しておきます。

下記のように、 **管理 > 組織 > 役割 > Administrator - WebDAV の許可** へアクセスすると、Administrator　に割り当てられている権限を確認することができ、役割によっては編集することも可能です。

![スクリーンショット 2023-04-11 18.39.25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2110894/93faa4eb-c2e3-0db2-fb5a-3bc3cde2daef.png)






### Mac の Finder から接続する方法

接続の方法は[こちら](https://support.apple.com/ja-jp/guide/mac-help/mchlp1546/mac)を参考にしました。

Mac で Finder を開き、 **移動 > サーバーへの接続** をクリックしポップアップを表示します。

![スクリーンショット 2023-04-11 17.58.42.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2110894/0d2b14bf-89b1-e5c2-7f13-dc1572bd03d0.png)



今回は Logs フォルダにアクセスしますのでURL入力欄に `https://{domain}.dx.commercecloud.salesforce.com/on/demandware.servlet/webdav/Sites/Logs` というフォーマットで入力し接続します。
![スクリーンショット 2023-04-11 18.47.37.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2110894/c9a1b7e1-1d84-8335-c153-97133b754d76.png)


**補足：** 
入力するURLは Busness Manger の **管理 > サイトの開発 > 開発セットアップ** から確認できます。
![スクリーンショット 2023-04-11 18.57.05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2110894/fdefe3ca-a133-17f3-099d-849c8d962ea6.png)




接続しようとするとID（名前）とパスワードを求められますので、上記「Business Manager ユーザーのクレデンシャル情報（ID、パスワード）の取得」で取得したID・パスワードを入力し接続します。
![スクリーンショット 2023-04-11 18.48.19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2110894/a35f13a5-9433-4256-c256-2caffa2b08b0.png)




接続が完了すると下記のように B2C Commerce 上の WebDAV サーバーにあるファイルが表示され操作することが可能です。
![スクリーンショット 2023-04-11 18.48.51.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2110894/42b40558-5c35-8d7e-9467-498d47af802a.png)



### curl コマンドで接続する方法

WebDAV を curl コマンドで利用する方法は[ここ](https://code.blogs.iiidefix.net/posts/webdav-with-curl/)が参考になりました。
今回は Logs フォルダ内のファイル一覧を取得してみたいと思います。

下記の curl コマンドを実行します。

```sh
curl --user 'ID:Password' 'https://{domain}.dx.commercecloud.salesforce.com/on/demandware.servlet/webdav/Sites/Logs'
```

下記のように HTML の形式でフォルダ内のファイル一覧を取得できました。
![スクリーンショット 2023-04-12 12.49.58.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2110894/a5892132-06fd-a2e2-9029-c466ad85c906.png)




## 接続データとポイント

ファイルの制限については[こちら](https://documentation.b2c.commercecloud.salesforce.com/DOC1/topic/com.demandware.dochelp/content/b2c_commerce/topics/import_export/b2c_file_size_and_transfer_restrictions.html?cp=0_6_17_5_0)を参考にしてください。下記にポイントをまとめます。

* 必ず SSL 接続が必要となります。
* 一回での最大アップロード容量は 500 MB です。またあまりに時間がかかる場合はタイムアウトになってしまうので、サポートに問い合わせてください。
* 一回での最大ダウンロード容量は 200 MB です。




## リソース

* [WebDAV について](https://documentation.b2c.commercecloud.salesforce.com/DOC1/topic/com.demandware.dochelp/content/b2c_commerce/topics/import_export/b2c_using_web_dav.html?resultof=%22%57%65%62%44%41%56%22%20%22%77%65%62%64%61%76%22%20)