30
18

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Salesforce PlatformAdvent Calendar 2019

Day 25

Salesforce B2C CommerceCloud についてちょっとだけ語るよ!

Last updated at Posted at 2019-12-28

皆様メリー・クリスマス!
小林です。。投稿がだいぶ遅れてしまいすみません、、

最初は今年から運営をしているSalesforce Developer Group Tokyoの活動についてエモく語ろうかなと思っていましたが、それはJapanDreamin'の場で語ろうかなと思い、

本記事では、皆様興味津々であろうB2C CommerceCloudについて、広く浅く語っていきたいと思います。
(文字多め & ある程度Salesforce開発したことある前提です、ごめんなさい)

B2C CommerceCloudとは

一言でいうとECサイトの構築と提供が出来るプラットフォームです。
テンプレートサイトとして、通常の購入フローをカバーしたものは準備されており、そこに設定によるカスタマイズや拡張開発を行っていきます。
テンプレートサイトイメージ

詳しくはTrailheadのモジュールに概要が書いてありますので、下記を参照ください。
決して書くのが面倒と言うことではありません。
Commerce Cloud の使用開始

環境

買収した製品ですので、通常のSaleseforce組織へのログインではなく、独自の環境へログインし、管理・構築を行います。

ログインして利用する環境にはAccountManagerとBuisinessManagerがあります。
サポートケース用のアカウントもありますが、一旦置いておいて、AccountMangerは組織ごと、BuisinessManagerはインスタンスごとに存在しています。

Account Manager

その名の通り、アカウントの管理を行う環境(機能)です。
Rolesという権限を付与し、そのユーザが何を出来るかを制御します。
例)

  • BuisinessManagerの管理権限
  • Xchange(TrailblazerCommunityのCommerce版的なもの)へのログイン権限
  • 各環境へのアクセス制御(Sandbox01はログイン可能だが、02は不可、Productionも不可、など)

AccountManager.png

インスタンスの種類

  • PIG(プライマリ インスタンス グループ)
    • Staging/Development/Production 環境が含まれるインスタンスグループ
  • SIG(セカンダリ インスタンス グループ)
    • 開発用Sandboxが含まれるインスタンスグループ
    • CommerceCloudではSandboxが5つデフォルトで付与されます
    • 昨今はODSが主流となっているため、SIGのSandboxは利用されていないかも
インスタンスタイプ 使用方法
Staging SIGからリリースをうけ、Developmentインスタンスへの検証準備環境。Development、Productionへのメタデータ、レコード、コードのレプリケーションに利用する
Development UATや外部連携テストに利用
Production 本番環境

Business Manager

ECサイトを管理する機能です。今回、全機能は紹介出来ないので、ピックアップしていくつか紹介します。
※この機能気になる、ということがあれば個別にお問い合わせください(答えられるかは別ですが、、)

まず、BuisinessManagerには、マーチャントツールと管理機能があります。

BuisinessManagerには、管理者、開発者、マーチャンダイザーなど多くのロールユーザがアクセスするので、前述のAccountManagerで権限付与を正しくしておく必要があります。このあたりは、通常のSalesforceと同様ですね。
※統合認証を利用していない場合、BuisinessManagerでもユーザ作成・権限付与出来ます

マーチャントツールのメニューたち

スクリーンショット 2019-12-27 9.30.24.png

管理ツールのメニューたち

スクリーンショット 2019-12-27 9.28.26.png パッと見ていただくと、開発者向け、管理者向け機能が混在しているのがわかるかと思います。
商品とカタログ(マーチャントツール)

名の通り、いわゆるカタログ(カテゴリや商品)を管理出来ます。

オブジェクト(管理ツール)

Salesforceに携わっている方にはお馴染みのオブジェクトです。
CommerceCloudにも標準(システム)オブジェクトとカスタムオブジェクトがあります。

ECサイトに必要なオブジェクトはシステムオブジェクトとして一通り用意されていますので、必要に応じて項目の追加、もしくはカスタムオブジェクトの追加を行います。
カスタムオブジェクトにはレコード保有上限(40万件)があるので、設計時には注意が必要です。
各種制限は「クォータ」と呼ばれ、管理ツール内のメニューから確認可能です。コア側の組織の制限的なものですね。

ちなみに、参照関係項目的なものはないのですが、システムオブジェクトのデータはXMLで構造化されて出力されます。
これがまたわかりづらく、オブジェクトとしては独立している(ように見える)のですが、データ上紐付いている、ということが結構あります。ER的なものや各システムオブジェクトレコードが作成されるタイミングをまとめたヘルプなどもないので、このへんは結構苦しかったりもします。

ちなみに各種レコードや設定のインポートはXML形式です~~(苦行!!)~~
カタログはSpring'20? でCSVでのインポートが可能になるとか(神!!)
→(追記)商品のCSVインポートは可能になりましたが、カテゴリの割り当てなどはできないため、どこで苦労するのか、という機能なので、一長一短ですね。。

サンプル(この1オーダーの下に5つくらいのオブジェクトレコード情報が入ってます)
おーだXML.png

キャンペーン・プロモーション・クーポン(マーチャントツール)

ECサイトでよく見る、XXキャンペーンだったり、クーポンだったりを管理出来ます。
プロモーションはいわゆる、XX円以上お買い上げで(割引・XXをプレゼント・配送料無料)などを管理し、
クーポンはクーポン番号を管理します。それらを取りまとめているのがキャンペーンになります(いつからいつまで、誰をターゲットにするのかなどなど)

各種インポート・エクスポート(両方)

レコードやメタデータ(設定)のエクスポートが出来ます。
サイトのエクスポートなどはグローバルエクスポートが可能で、同一インスタンス間でエクスポートしたファイルの共有も可能です(変更セットの送信が不要なイメージ)

サイトのアーキテクチャ

アーキテクチャにはSiteGenesis2(SG2)とStoreFrontReferenceArchitecture(SFRA)の2種類があります。
ちょっと語ると長くなるので、今回は割愛。ちなみにSFRAが新しく、新規導入はこちらが(一応)推奨です。新しい、ということはそういうことですよ(察してください)

開発の流れ

SIG環境からPIG環境へ

スクリーンショット 2019-12-27 18.46.28.png

各Sandboxで開発をし、Stagingへデプロイし、Stagingからは、Development、Productionへのレプリケーション機能でリリースを実施します。レプリケーションはクリックだけで実施可能です。

開発者1名につき1Sandboxを準備してもらいましょう

これがないと、つらい思いをします(私も現在進行系で、、w)
Salesforce社もこちらを推奨しています。これもまたなぜ、を書くと長いので割愛、、

従来、Sandboxを1つずつ追加購入という形式でしたが、On-Demand-Sandboxの登場により、このあたりは多少やりやすくなりそうです。On-Demand-Sandboxは、従量課金制のScratchOrgのようなものと解釈しています。HerokuのAddonクレジット的なものを購入しておき、利用した分だけ課金される仕組みです。まだ私も利用したことはないのですが、B2C CommerceCloudはそれなりに開発規模が大きくなるとおもうので、こちらはかなり有用かなと思います。

On-Demand-Sandboxの詳細

ソースコード

カートリッジと呼ばれる、ソースコード郡が存在しており、CommerceCloud標準で用意されているカートリッジがあり、拡張する場合は、カスタムカートリッジやサードパーティのカートリッジ(リンクカートリッジ)を適用し、カスタマイズ開発を実施します。
実際のソースコードは、ISMLというマークアップと、クライアント・サーバーサイドのJS、CommerceCloudが用意しているライブラリを利用して開発してきます

CommerceCloudの標準提供のソースコードや拡張カートリッジはGithubで限定公開されておりますが、xchangeからの申請が必要なため、開発に携わらないと参照不可です。。Stagingデプロイに利用するBuildSuiteなんかもここに入っています。

SFRAの場合のカートリッジ構成

サードパーティが提供するカートリッジ

AppExchange的なものです。現在CommerceCloudのサードパーティの機能もAppExchangeに掲載されるようにはなるようです。
ちなみに、リンクカートリッジにはGMOPaymentやPaypal、AmazonPayなど、決済系のカートリッジを始め、レビュー機能、CMS機能を提供するカートリッジなどがあります。

開発環境

SG2までは、UXStudioというEclipseのプラグインを利用しての開発でしたが、
SFRAでは、Visual Studio Codeが利用できるようになりました!!!!

環境取得の障壁

B2C CommerceCloudには、Developer環境やPlayGroundなどは存在しておりません。

CommerceCloudのテスト(パートナー)環境を得るためには、Salesforce社とパートナー契約(通常のコンサルティングパートナーとは別)を結ぶ必要があります。

ただし、パートナーの条件としては、認定B2C CommerceCloudデベロッパー保持者が 4名在籍している必要があります。ただし環境がなく、出題される問題はかなり細かいレベルなので、公開されているリファレンスをひたすら読み込むだけでは流石に厳しく、おなじみの研修を受講する必要があるかとは思います。

ちなみにこんな問題が出ます。
※受験ガイドから引用

1. ビジネスユーザーが、カテゴリページへのリンクを、コンテンツアセットの本文内
に追加したいと考えています。カテゴリの ID は `mens-jeans` です。
正しいリンクを生成するリンク関数はどれですか?
答えを 1 つ選んでください。
A) `$url('Search-Show', 'cgid', 'mens-jeans')$`
B) `$httpUrl('Search-Show', 'cid', 'mens-jeans')$`
C) `$include('Products-Show', 'cgid', 'mens-jeans')$`
D) `$url('Products-Show', 'cid', 'mens-jeans')$`

2. デベロッパーが、おすすめ商品を用いてコンテンツスロットを設定するよう依頼さ
れました。
この要件を満たすために設定できるスロットコンテンツタイプを 2 つ選択してくだ
さい。
答えを 2 つ選んでください。
A) コンテンツアセット
B) HTML
C) 商品
D) 推奨

ソースコードレベルの問題から、BusinessManagerでの設定内容まで出てくるので、設定や開発物をBusinessManager、カートリッジ、ストアフロントを通して見ないと、なかなか厳しそうだ、ということがなんとなく伝わったとは思います。

まとめ

かなり雑多な文章になってしまいましたが、ざっとB2C CommerceCloudについて書いてみました。

今後、SalesforceCMSとの連携など、コア製品との連携が増えていく、というところはありますが、ライセンス体系がどうなるのか、など個人的には気になっているところではあります。現状B2C CommerceCloudだけでもライセンス購入が可能なので、CMSとの連携となると、そっちもライセンス購入するのか?など。
Customer360の発表もあるため、各Platformをシームレスに繋ぐ仕組み、というところが提供されていくのだとは思いますが、Platformが増えたことによる、開発/管理の複雑さ、とこれからどうしていくのかも気になるポイントですね。

折角B2C CommerceCloudに関われているので、今後それぞれの機能を深堀りした記事を書こうかな、と思いますので、過度に期待せずお待ちくださいませ。

それでは、皆様良いお年を!!!

30
18
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
30
18

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?