【SAP Fiori】UI Theme Designerでテーマを作り、SAP Fiori画面のCSSを一括設定する

# 概要
受託開発企業で働くfussasyといいます。普段は、SAP BTP（PaaS）上でSAP Fioriアプリケーション開発をしています。プロジェクトでの技術検証の過程で、複数あるSAP Fioriアプリケーションに対して、一括でCSS 設定をする必要があり、その際に公式が提供しているUI Theme Designer利用してみました。

# UI Theme Designer について
UI Theme Designerは、SAP BTPが提供するサービスの一つです。テーマのテンプレートを元にして文字、配色、アイコンやイメージ画像等をカスタマイズしてデザインし、テーマを作成できます。作成したカスタムテーマを公開することで、SAP Build Work Zone上のサイトのホーム画面や、サイト上の各Fioriアプリケーションのデザインを、一括で設定・変更することができます。（一括設定のため、各Fioriアプリで個別のUI要件を満たす設定はできません。）

https://experience.sap.com/fiori-design-web/theming/

UI Theme Designerで新規テーマを作成する際、SAP BTP Cockpitでユーザーへ権限付与する必要があります。以下のヘルプドキュメントに記載の通り、テーマを編集するための「Editor」と、編集したテーマを公開するための「Publisher」のロールが必要となります。 

https://help.sap.com/docs/btp/ui-theme-designer/setting-up-permissions-for-ui-theme-designer

SAP BTP Cockpit > Service Marketplaceにて、SAP Build Work Zoneを有効にすると、以下3種類のRole Collectionがデフォルトで用意されます。Editorを含む「Launchpad_Admin」と、Publisherを含む「Launchpad_Advanced_Theming」に、Userを追加する必要があります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1727556/67ed8b11-f122-55d6-32a3-82d844dfe433.png)

# UI Theme Designerでカスタムテーマを作成し公開する
SAP Build Work Zoneのサイトにある、ユーザーメニューのテーママネージャ > テーマデザイナの起動を選択して、UI Theme Designerを開きます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1727556/693f8e5a-3853-8679-dd46-6ec9b847770f.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1727556/40dfa197-2b36-4c6e-eb30-bcec92786005.png)

新規テーマの作成を押し、SAPテーマを選択してテーマの作成を押すと、UI Theme Designerの編集画面に遷移します。左側のプレビューページでSAPUI5コントロールの変化を確認しながら、右側のパラメータ値を変更します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1727556/a1fddbf1-9937-2ace-f834-fbc6303941cc.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1727556/f5399db4-226c-4ee3-9e6b-28828b711a91.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1727556/03f41d2c-827c-3d41-79ca-2b89bcacc5bf.png)

ここでは、SAP Build Work Zone上のサイトのタイルやグループ等の文字、配色、アイコンやイメージ画像を一括で変更・設定することができます。また、サイトから遷移される各アプリケーションの文字と配色、各アプリケーションで利用される項目、ボタン、メッセージストリップやバー等のSAPUI5コントロールの文字と配色を、一括変更・設定することができます。UI Theme Designerで標準で用意されている編集項目でなく、CSSエディタに記述することで、CSSの内容を各アプリケーションへ一括適用することもできます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1727556/cfba9adf-9354-0aab-ad23-7b3ccb7a4674.png)

例えば、UI要件としてFontFamilyをMS Gothicを適用したい場合、エキスパートでFontを検索してあげれば、変更可能なテーマパラメータが表示されます。デフォルトだとFioriは、「Font 72」というSAP独自の書式が利用されていますので、値のフォームに"MS Gothic"を追加してあげます。FontSizeは、rem指定で変更可能です。初期設定は0.875rem(14px)で構成されており、1rem(16px)までならサイズを上げても、表示不具合はありませんでした。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1727556/adccb5ff-5778-e31d-8921-51d521f70210.png)

テーマの編集が完了したら、保存および公開することで、サイト上の「テーママネージャ」で公開されているテーマ一覧から選択することができます。有効化ユーザーとして設定・保存すると、「個人設定」の表示から選択・適用できるようになります。「テーママネージャ」からデフォルトとして設定することもできます。このとき、各ユーザーの初期画面は、デフォルトとして設定されたテーマが適用されます。各Fioriアプリを開いている状態でもテーマを変更・適用することができます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1727556/6c798fac-8ceb-6e2d-b725-b62f238eef87.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1727556/df7cd396-96d1-0f9a-7168-ed6ef9c5d696.png)

各アプリケーションで個別にCSS設定することが可能ですが、UI Theme Designerで設定したものが優先されます。まずはUI Theme Designerで一括設定した上で、各アプリケーション固有の要件については、それらのプロジェクト内のCSSファイルを個別修正すると良いです。（保守工数は高くなりますが。）また余談ですが、UI Theme DesignerはLessで記述されています。実際にエクスポートしてみるとLessファイルが出力されます。

# おわりに
UI Theme DesignerはSAP BTPのライセンスがあれば利用可能で、特に追加料金は発生しません。SAP Fioriアプリケーションを開発する際には、UI要件としてデザインに関する指定もそれなりにあるかと思いますので、気軽に色々と試してみて、できる事とできない事を、手を動かして事前に把握しておくのが良いかなと思います。

# 参考記事
### SAP公式のチュートリアル（Create a Theme with the UI Theme Designer）
https://developers.sap.com/tutorials/create-custom-theme.html
### Fioriデザインガイドライン（Fiori for Web Design Guidelines）
https://experience.sap.com/fiori-design-web/theming/
### SAP BTP UI Theme Designerヘルプドキュメント
https://help.sap.com/docs/btp/ui-theme-designer/ui-theme-designer
### SAP NetWeaver 7.5 UI Theme Designerヘルプドキュメント
https://help.sap.com/docs/SAP_NETWEAVER_750/ab06dedc873746eaba1c041200c068e0/a118094264684230bb6510045b5b5b7c.html?version=7.5.6&locale=en-US

※記載の通り、UI Theme DesignerはSAP Fioriアプリケーションに限って提供されるものではないようです。
>Cross-technology theming:
Create one consistent theme that applies to various SAP UI clients and technologies:
・SAPUI5 standard libraries (including SAP Fiori applications and SAP Fiori launchpad)
・Unified Rendering technologies (such as Web Dynpro ABAP and Floorplan Manager)
・SAP Business Client