技術・ツール

HANA Cloud CDSとは|ABAP CDS・CAP CDSとの違いと現在のユースケース

目次

はじめに: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 CDSDDIC-based CDS ViewABAPスタック(S/4HANA含む)ABAP開発者非常に高い(S/4HANA標準)
HANA Cloud CDSHDBCDS/HDI CDSHANA DB内(XS Advanced/HDI)HANAデータベース開発者中(限定的な領域で現役)
CAP CDSCDS for Node.js/JavaBTP上の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 -.継承.-> HDB
凡例 クエリの方向 -.-> 概念的な系譜・継承 [ ] 技術コンポーネント subgraph 動作レイヤ

HANA 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 CDSHANA Cloud CDS
定義場所ABAPスタックのDDICHANA 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 CDSCAP CDS
動くレイヤHANA DB内BTP上のNode.js/Javaアプリ
提供物テーブル・DBビューRESTful OData v4サービス
主な開発者DBエンジニアフルスタック/BTPアプリ開発者
Clean Coreとの関係直接的ではない中核技術
永続化先HANA CloudHANA 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の実装スキルを体系的に身につけられます。

▶ SAP ABAP・OData・RAPを体系的に学ぶ 全335レクチャー / 受講生10,000人超 / 評価4.4 / ※英語での受講になります
← SAP Datasphere入門|ビジネスデータファブリックで実現する次世代データ基盤 SAP PP BAdI実装ガイド|製造指図・MRP・確認の代表BAdIと拡張ポイント →
← 記事一覧に戻る