既存の Sitecore MVC コンポーネント を ヘッドレス 環境で表示する
Sitecore XM/XP 10.2 以降と Sitecore Headless Services モジュール 19.0 以降で、ヘッドレス環境(Sitecore JavaScript Rendering SDK (JSS) for Next.jsなど)に既存の Sitecore MVC コンポーネントを組み合わせて表示できるようになりました。
今回はそのアーキテクチャと利用方法の紹介です
アーキテクチャ
アーキテクチャの図を以下に記載します。簡単に説明しますと既存の Sitecore MVC で作成したレンダリングを、JSS で作成したページ上にコンポーネントとして配置して表示できるようになりました。

詳細はこちらをご参照ください(英語)
利用方法
実際に簡単な MVC レンダリングを作成して説明していきます。
ヘッドレス環境を用意
Docker compose を利用して自身のPCに用意できます。こちらを参照ください。
MVC レンダリングを作成
Visual Studio でソリューションを開く
ヘッドレス環境を作成すると、Visual Studio のソリューションも作成されますのでそちらを開きます。

ASP.NET MVC プロジェクトを追加
Visual Studio のソリューションエクスプローラーのソリューションで右クリックしてプロジェクトを追加します。スクリーンショットは Visual Studio 2019 英語版になります。

ASP.NET Web Application を選択

プロジェクト名を入力(MVCRenderingとしています)し、Frameworkは.NET Framework 4.8を選択します。

Emptyを選択し、「Add folders & core references」の「MVC」をチェックします。
Advanced の部分は任意で選択してください。

Sitecore View Rendering を追加
Views で右クリックして新しいアイテムを追加

Sitecore ツリーの MVC を選択、Sitecore View Rendering を選択

Sitecore Rock のダイアログで以下 Renderings の追加場所を指定

MVCRendering.cshtml を編集
<div> の間に以下のように表示する項目を入れる
<p> Rendering Test </p>

MVCRendering.cshtml をパブリッシュ
プロジェクトで右クリックし、Publish を選択

Folder を選択

デプロイの場所をヘッドレスプロジェクトにある docker\deploy\platform を選択

以下のようになれば設定完了です

MVCRendering.cshtml を右クリックし、Publish MVCRendering.cshtml を選択

以下のように表示されれば成功です

MVC レンダリングの確認
MVCRendering アイテムの確認
Sitecore Rock で Path を確認します。

Visual Studio の Containers ビューの左のツリーで {project_name}_cm_1 を選択し、Files タブを選択。 inetpub\wwwroot\Views\MVCRendering.cshtml があることを確認

ダブルクリックするとファイルをプレビューすることができます。(編集はできません)

Render as HTML をチェック
Sitecore Rock で MVCRendering アイテム を一番下までスクロールし、 Render as HTML にチェックを入れる。

Content Editor でも同様に操作可能です。

JSS サンプルページに MVC レンダリングを組み込む
jss-main Placeholder Settings に MVCRendering を追加
Sitecore Rock 上で Placeholder Settings の jss-main の Allowed Controls に MVCRendering を追加します

こちらも Content Editor にて同様に操作可能です

Experience Editor にて MVCRendering を追加
Experience Editor にてサンプルページを開き、Component ボタンをクリックし、「Add here」ボタンを表示しクリック

MVCRenderingを選択

表示を確認

保存し、Publish を行い、CD でも表示されていることを確認

まとめ
以上で ASP.NET MVC にてシンプルな Rendering を作成し、JSS のページに組み込めることを確認しました。
メリットとして、既存のプロジェクトのリソースを利用しつつ、モダンなJSS環境で開発を行うことができます。
制限事項がいくつかありますのでご案内します。
Discussion