はじめに:3つの「CDS」が混乱を生んでいる
SAPの開発者なら一度は「CDSってどれのこと?」と戸惑った経験があるはずです。SAPの世界には現在、名前に「CDS」を含む技術が少なくとも3つ存在します。ABAP CDS、HANA(Cloud)CDS、そしてCAP CDSです。どれも「Core Data Services」の略であり、データモデルをコードで宣言的に記述するという思想は共通していますが、動く場所も対象ユーザーも目的もまったく違います。
なぜ混乱するのか(why so)。SAPがHANA時代に「データモデルを上位レイヤに引き上げる」という発想を一度打ち出し、そこから派生する形で各製品ラインがそれぞれの文脈でCDSを実装してきたからです。結果として「どれを学べばよいか」「自分のプロジェクトではどれを使うべきか」が見えにくくなっています。
ではどう整理すべきか(so what)。3つのCDSは「動く場所(ABAPスタック/HANA DB/BTPランタイム)」で区別すれば一発で見分けられるというのが本記事の結論です。本記事ではとくにHANA Cloud CDSに焦点を当て、その正体・他CDSとの違い・現在の現実的なユースケースを整理します。
まず結論:3つのCDSの位置関係
| 種類 | 別名 | 動く場所 | 主な対象ユーザー | 現代の主流度 |
|---|---|---|---|---|
| ABAP CDS | DDIC-based CDS View | ABAPスタック(S/4HANA含む) | ABAP開発者 | 非常に高い(S/4HANA標準) |
| HANA Cloud CDS | HDBCDS/HDI CDS | HANA DB内(XS Advanced/HDI) | HANAデータベース開発者 | 中(限定的な領域で現役) |
| CAP CDS | CDS for Node.js/Java | BTP上のNode.js/Javaランタイム | フルスタック/クラウド開発者 | 非常に高い(Clean Coreの中核) |
ポイントは、3つともデータモデルを宣言的に書く言語であるという共通点を持ちつつも、どのレイヤで定義し、どのレイヤでクエリされるかがまったく異なることです。混乱の正体はここにあります。
flowchart LR
subgraph BTP[BTPランタイム]
CAP[CAP CDS
Node.js/Java]
end
subgraph S4[S/4HANA ABAPスタック]
ABAP[ABAP CDS]
end
subgraph HC[HANA Cloud DB]
HDB[HANA Cloud CDS
HDBCDS]
TBL[(物理テーブル
カルキュレーションビュー)]
end
CAP -->|OData/SQL| HC
ABAP -->|SQL| HC
HDB --> TBL
ABAP -.継承.-> HDBHANA Cloud CDSとは何か
HANA Cloud CDS(正確にはHDBCDS、あるいはHDI上のCDS)は、SAP HANAデータベース内部で「テーブル・ビュー・関連を宣言的に定義する言語」です。CREATE TABLE文をSQLで書く代わりに、.hdbcdsという拡張子のファイルにエンティティを定義し、HDI(HANA Deployment Infrastructure)にデプロイすると、HANA内部に物理テーブルやビューが生成されます。
歴史的には、SAP HANA XS Classic時代の「HANA CDS」を引き継ぎ、XS Advanced/HDI時代に再設計されたものです。SAP BTP上のSAP HANA Cloudでも同じくHDIコンテナを通じて利用できます。
特徴を整理すると次のとおりです。
- データモデル定義言語であって、ABAPやJavaのような業務ロジック言語ではない
- HDIコンテナという単位で配置され、コンテナごとに権限・スキーマが分離される
- アソシエーション(テーブル間の関連)を宣言的に書け、JOINを書かなくてもナビゲーションできる
- SQL Procedureやカルキュレーションビューと組み合わせて、HANA内部に閉じた高速分析モデルを作るのに向く
つまりHANA Cloud CDSは「データベース寄りの開発者が、HANAの中に閉じてデータモデルとビューを構築するための道具」と言えます。
ABAP CDSとの違い
ABAP CDS(DDIC-based CDS View)は、ABAPスタックのDDIC上で定義され、ABAPサーバーがHANAに対してビューを発行する方式です。S/4HANAでは標準業務オブジェクトの大半がABAP CDSで定義されており、Fiori・OData・Embedded Analyticsの基盤になっています。
両者の違いを整理すると次のとおりです。
| 観点 | ABAP CDS | HANA Cloud CDS |
|---|---|---|
| 定義場所 | ABAPスタックのDDIC | HANA DB内のHDIコンテナ |
| 開発ツール | ABAP Development Tools(Eclipse) | SAP Business Application Studio/Web IDE |
| ABAPバッファ | 利用可能 | 利用不可(DBに直接アクセス) |
| 業務アノテーション | 豊富(@ObjectModel等でFiori連携) | 基本的な構文のみ |
| S/4HANAでの位置づけ | 標準・推奨 | 直接は使わない |
なぜABAP CDSがS/4HANAの主流になったのか(why so)。理由は単純で、ABAPの権限・バッファ・業務アノテーションを継承したまま、HANAにビュー定義をプッシュダウンできるからです。HANA Cloud CDSはこの「ABAP層の業務的文脈」を持たないため、S/4HANAアプリケーションのデータモデルを記述するには不向きです。
so what:S/4HANAの業務オブジェクトを扱うならABAP CDS一択であり、HANA Cloud CDSはこの用途では使われないと覚えるのが安全です。
CAP CDSとの違い
CAP(SAP Cloud Application Programming Model)のCDSは、BTP上でNode.jsやJavaのアプリケーションを構築するためのモデリング言語です。.cdsファイルにエンティティ・サービス・アソシエーションを書くと、CAPフレームワークがOData v4サービスを自動生成し、内部的にはCAP/SQLとしてHANA Cloudに対してクエリを発行します。
ABAP CDSやHANA Cloud CDSと似た構文を持ちますが、立ち位置は大きく異なります。
| 観点 | HANA Cloud CDS | CAP CDS |
|---|---|---|
| 動くレイヤ | HANA DB内 | BTP上のNode.js/Javaアプリ |
| 提供物 | テーブル・DBビュー | RESTful OData v4サービス |
| 主な開発者 | DBエンジニア | フルスタック/BTPアプリ開発者 |
| Clean Coreとの関係 | 直接的ではない | 中核技術 |
| 永続化先 | HANA Cloud | HANA Cloud/SQLite/PostgreSQLなど |
CAPはS/4HANA Side-by-Side拡張の標準フレームワークであり、Clean Core戦略の中核をなす技術です。Clean Coreの全体像はClean Core戦略で、BTP全体の位置づけはSAP BTP入門で解説しています。CAPフレームワークそのもの(アーキテクチャ・Node.js/Java選択・ABAP RAPとの違い・BTPデプロイ)の詳細についてはSAP CAP入門を別途用意しています。
なぜCAPがCDSという同じ名前を採用したのか。SAPが「データモデルを宣言的に書く言語」を全社で統一しようとした結果、ABAP CDSの構文思想がCAP CDSに引き継がれたためです。文法は似ていますが、生成されるものはまったく異なります。ABAP CDSはABAP Dictionaryのビューを、HANA Cloud CDSはDBオブジェクトを、CAP CDSはOData v4サービスを生成します。
HANA Cloud CDSは今も使われているのか
ここが本記事の最大の論点です。結論から言うと、HANA Cloud CDSは特定領域で今も現役だが、新規プロジェクトの第一選択肢ではなくなりつつあるというのが現実です。
今も使われている領域
- HANA Cloudをデータベース単体として使うネイティブアプリケーション。アプリ層がHANAに直接接続し、HDIコンテナ内でテーブル・ビューを管理するパターン
- HANAストアドプロシージャやカルキュレーションビューを多用する分析系アプリ。CAPからは扱いにくい高度な計算ロジックをHANA内に閉じて実装するケース
- SAP HANA Cloud上で動く一部のレガシーXSAアプリの保守
- 既存のSAP BW/4HANAやSAP Datasphereの一部内部実装。Datasphereの詳細はSAP Datasphere入門を参照
新規開発で減ってきた理由
SAPの公式推奨は現在、新規BTPアプリケーションについてはCAPを使うことです。CAPは内部的にHANA Cloudを使う際にもCDS構文でDB定義を書けるため、「HANA Cloud CDSを直接書く必要がない」状況が増えました。さらにABAP Cloud(ABAP Cloud入門)やRAP(RESTful Application Programming Model)の整備により、S/4HANAの拡張開発もABAP CDS+RAPで完結するようになっています。
つまり、3つの主要レイヤ(S/4HANAコア/BTP拡張/HANA DB)それぞれに最適なツールが揃った結果、「HANAに直接テーブル定義を書く」というHANA Cloud CDSの出番が、相対的に減ったのです。
so what:これからHANA関連のスキルを学ぶなら、ABAP CDSとCAP CDSを優先するのが合理的です。HANA Cloud CDSは「既存のHANAネイティブアプリを保守する」「HANAに閉じた高度な分析モデルを構築する」といった限定的な場面で価値を発揮する技術と理解しておけば十分です。
現代における3つの使い分け
実務での使い分けを一言でまとめると次のようになります。
- S/4HANAの業務オブジェクトを扱う・拡張する → ABAP CDS(+RAP)
- BTP上でSide-by-Sideのクラウドアプリを作る → CAP CDS
- HANA Cloudをデータベース単体として使い、DB内で完結する高速モデルを作る → HANA Cloud CDS
なぜこの使い分けが正解か。3つはいずれも「データモデルを宣言的に書く」共通思想を持ちながら、生成される成果物(ABAPビュー/OData v4サービス/HANA物理オブジェクト)が異なり、それぞれが最適なレイヤで動くからです。「同じCDSだからどれでもよい」と考えると、本来別レイヤで実装すべきものを混在させてしまい、Clean Core原則を破壊することになります。
ユースケース3例
ユースケース1:S/4HANA上のFiori分析アプリ(→ABAP CDS)
販売実績ダッシュボードをFiori上で提供したい場合、ABAP CDSビューを作って@Analytics.dataCategoryなどのアノテーションを付与し、Embedded Analyticsから直接呼び出すのが定石です。HANA Cloud CDSを使う必要はありません。
ユースケース2:S/4HANAと連携するBTPカスタムアプリ(→CAP CDS)
S/4HANAの受注データを取得しつつ、独自のワークフローを管理する拡張アプリを作る場合、CAPで.cdsにエンティティを書き、CAPサービスとしてOData v4を公開し、HANA Cloudをバックエンドに置きます。Clean Coreを守りながらSide-by-Side拡張を実現できます。
ユースケース3:HANA Cloudに閉じた高速計算エンジン(→HANA Cloud CDS)
サードパーティのフィンテックアプリがリアルタイム与信スコアを計算するためにHANA Cloudを採用し、CAPやABAPを介さずアプリから直接HANAに接続して大量の計算を回す場合、HDIコンテナ内でHDBCDSとカルキュレーションビューを組み合わせるのが適しています。SAPの業務アプリケーションとは独立した、HANAをDBaaSとして使うパターンです。
よくある疑問(FAQ)
Q. ABAP CDSビューは内部的にHANA Cloud CDSに変換されるのですか? A. いいえ。ABAP CDSはABAPサーバーがHANAに対してSQLビューを発行するだけで、HDIコンテナ上のHDBCDSとは別物です。生成されるDBオブジェクトはありますが、HDBCDSのデプロイ機構は通っていません。
Q. CAP CDSとHANA Cloud CDSのファイルは互換ですか?
A. 構文は似ていますが互換ではありません。CAPの.cdsはCAPコンパイラで処理され、HDBCDSはHDIで処理されます。CAPはバックエンドにHANAを選んだ際、自動的にHANA向けのDDLを生成します。
Q. HANA Cloud CDSを新規で学ぶ価値はありますか? A. HANAを直接扱うDBエンジニア・データ基盤エンジニアを目指すなら価値があります。一方、SAPアプリケーション開発者を目指すならABAP CDSとCAP CDSを優先したほうが投資対効果は高いです。
Q. HANA Cloud CDSは将来的に廃止されますか? A. 現時点で廃止予定の公式アナウンスはありません。HANA Cloudの永続化レイヤを直接扱う手段として残り続ける見込みですが、SAPの推奨パスは徐々にCAP/ABAP Cloudに寄っています。
Q. Datasphereの内部にもCDSがありますか? A. Datasphereはユーザーから見ればグラフィカルなビュービルダーが中心ですが、内部的にはHANAのビュー定義を多用しています。利用者がHDBCDSを直接書くことはほぼありません。
まとめ
- SAPのCDSは3種類あり、ABAP CDS/HANA Cloud CDS/CAP CDSはそれぞれ動くレイヤと用途が異なる
- HANA Cloud CDS(HDBCDS)はHANA DB内でテーブル・ビューを宣言的に定義する言語で、HDIコンテナにデプロイされる
- ABAP CDSはS/4HANAの業務オブジェクト記述、CAP CDSはBTPクラウド拡張、HANA Cloud CDSはHANAに閉じたDB開発という棲み分け
- 新規開発の第一選択肢はABAP CDSとCAP CDSであり、HANA Cloud CDSは特定領域での現役技術
- 現役ユースケースは「HANAをDBaaSとして使うネイティブアプリ」「HANA内に閉じた高度な分析モデル」「既存XSAアプリの保守」など
- これから学ぶなら、まずABAP CDSとCAP CDSを押さえ、HANA Cloud CDSは必要になった時点で深掘りするのが合理的
CDSという同じ名前のせいで混乱しがちですが、「どのレイヤで動くか」を一度押さえてしまえば3つの違いはクリアになります。自分のプロジェクトがS/4HANAコアの拡張なのか、BTPでのSide-by-Side拡張なのか、それともHANAをデータベース単体として使うのかを明確にすれば、選ぶべきCDSは自ずと決まります。
ABAP CDSやCAP CDSを実際に手を動かして学ぶなら、ABAP・BTP CAPM・RAP・OData・ABAP on HANAまでカバーした実践講座が効率的です。3つのCDSの違いを理解したうえで、実務で使うABAP CDSとCAP CDSの実装スキルを体系的に身につけられます。