SAP BTP 上での開発を助ける CAP をざっくり理解する

SAP BTP 上でエンタープライズ向けのアプリを構築するために、Cloud Application Programming Modelを採用することは、非常に良い選択だと思います。しかし、この CAP というものは日本語のドキュメントが無く、また、よくよく概要から理解しないと「Tutorial はやったけどそれ以上には書けない」事態に陥ってしまうため、まずはその概要から解説していきます。

CAP とは?

Cloud Application Programming Model(以下 CAP)とは、SAP社が提供し、メンテナンスを実施している、”言語”・”ライブラリ”・”ツール”のフレームワークの名称です。エンタープライズ向けのアプリ開発を前提に作られているため、データベースオブジェクト自体の生成はもちろん、生成したテーブルへの接続方法も提供されます。

加えて、”Cloud”と名前がついている通りクラウドテクノロジーへも対応しており、REST や OData といったプロトコルの使用や、イベント駆動アーキテクチャとの連携機能が提供されます。

このように様々な機能が提供されるフレームワークである CAP ですが、下図の通りその中核にいるテクノロジーは Core Data Services(以下CDS)です。

capire – About CAP より 

この CDS を使うことで、ドメイン(ビジネスの問題あるいは業務領域)モデルをデータベースにテーブルとして表現することが可能になります。また、そのモデルをサービスとして API 公開することも出来るため、1つの言語でバックエンドサービスの多くをカバーすることができるようになります。

CDS についての深堀りは別の機会で実施することとしますが、CAP を使っていく上では避けては通れないテクノロジーであるため、もしご興味があるようでしたら以下のリンクより CDS についての理解を深めていただければと思います。

参考: capire – Core Data Services (CDS)

SAP S/4HANA 導入支援サービス 基本ガイドブック

CAP が対応する SAP BTP 環境

CAP が対応する環境は、使用するランタイムとプラットフォームによって以下のように整理できます。

Node.jsJava
Cloud Foundry environment使用可能使用可能
Kubernetes使用不可(将来的には可能)使用不可(将来的には可能)
Kyma使用不可(将来的には可能)使用不可(将来的には可能)

2022年1月現在の状況としてはランタイムによる差は無く、CAP アプリケーションをデプロイできる先はCloud Foundry 環境一択ですが、今後 Kubernetes, Kyma 環境もサポートする予定はあるようです。

CAP を使用するメリット

CAP を使用することで得られるメリットは何でしょうか?私は以下が挙げられると思います。

  1. CDS による開発効率向上
  2. deploy 作業の効率向上
  3. 高度な機能の提供

それぞれを解説します。

1. CDS による開発効率向上

CDS を使用すると、データベースや API の構築が可能となることは先述しました。

それだけでなく、CDS で構築したモデルと、それに対するサービスを CDS で記述することで CRUD 機能が CAP によってもたらされます。つまり(複雑なビジネス要件が存在しないことが前提とはなりますが)コードを書かずして動作するアプリを構築することが出来ます。

これは CDS の機能のほんの1つですが、開発効率を向上させる例として挙げさせていただきまいした。

2. deploy 作業の効率向上

SAP BTP Cloud Foundry 環境への deploy 作業用に使用できる、Cloud MTA Build Tool というものが用意されています。このツールを使用することで、YAML ファイルに定義した構成のとおりにコードをアーカイブ化し、そのファイルを SAP BTP へ deploy することで環境設定が完了するようになります。。このようなツールがない場合、フロントエンド向けのコードとバックエンド向けのコードと、データベース向けのコードを別々に管理する必要があり、その分手間が増えてしまい、その分ヒューマンエラーが発生しやすくなってしまうでしょう。

3. 高度な機能の提供

CAP には開発を支援する様々な機能があります。例えば作成したAPIのドキュメントを作成する場合、全てを手書きのドキュメントで仕上げることは大変に非効率であるため、Swagger を使用することがあると思います。この Swagger へのサポート機能を CAP は有しており、(CAP を Node.js で書いている場合)以下のようなコマンドを実行するだけで、ドキュメントを生成することが出来ます。

npm add –save-dev cds-swagger-ui-express

なお、Java を使用している場合は、CAP からのサポートは得られませんが、Spring Boot 内で Swagger を使用するように設定することで同様のドキュメントを生成することが出来ます。

参考: https://cap.cloud.sap/docs/advanced/openapi#embedded-in-java

まとめ

今回はSAP BTP の開発効率を向上させるためのフレームワーク CAP について解説させていただきました。概要レベルの解説ではありましたが、CAP の便利さについて、少しでもご理解いただけたのであれば幸いです。

公式ドキュメントのページ数からもおわかりになるかと思いますが、CAP は非常に高機能なフレームワークであるため、全ての機能を理解し、使いこなすことはかなり難しいです。

そのため弊社のブログでは、引き続き CAP の様々な機能を調査し、記事として公開させていただきますのでご期待ください。

パソナテックではSAP Fiori、BTPの概要、技術要素を解説している「SAP FioriとBTPが理解できる基本ガイドブック」をご用意しました。本資料は、SAP Fiori、BTPの理解を深めたい方に必見の資料です。ぜひダウンロードいただき、ご覧ください。

SAP FioriとBTPが理解できる基本ガイドブック
SAP FioriとBTPが理解できる基本ガイドブック