JinJin48
JinJin48
SAP Consultant | BTP · S/4HANA · US Global Rollout
· 19 min read

カバー:CAPとBuild Code — アーキテクチャとユースケース

TL;DR
  • CAPはオープンなSAP Cloud Application Programming Modelです。Node.jsおよびJavaサービス向けのCDS駆動型フレームワークであり、汎用ODataプロバイダー、宣言的認可、SaaSグレードのマルチテナンシーを備えています。CAPがサポートされる環境(Cloud Foundry、Kyma)であればどこでも実行可能で、独自のAI依存関係はありません。
  • Build Codeは、Business Application Studioの開発スペースと、開発者向けAIコパイロット「Joule for Developers」をCAPに組み合わせた商用バンドルです。このAIコパイロットは、自然言語からCDSエンティティ、CAPサービス、Fiori UIアノテーションを生成(スキャフォールディング)します。2025年には複雑なアプリケーション向けのマルチエージェントモードも含まれます。
  • コンサルタントの問いは「CAPかBuild Codeか」ではありません。「Jouleによるスキャフォールディングと統合Buildサブスクリプションが必要か、それともBAS上の通常のCAPで十分か」です。スキャフォールディングの必要性が明確でないのにBuild Codeを選択するとクレジットを浪費します。一方、上級CDSスキルへの予算を確保せずに通常のCAPを選択する方が、より一般的な失敗です。

本記事の位置づけ

IDタイトル
BTP-B01アプリケーション開発の概要と機能マップ
BTP-B02Business Application Studio:アーキテクチャと使用方法
BTP-B03CAPとBuild Code:アーキテクチャと使用方法(本記事)
BTP-B04ABAP環境:アーキテクチャと使用方法
BTP-B05Build Apps:アーキテクチャと使用方法
BTP-B06Build Process Automation:アーキテクチャと使用方法
BTP-B07Build Work Zone:アーキテクチャと使用方法
BTP-B08ユースケースと判断パターン

参考資料

リソースURL
SAP Cloud Application Programming Model (capire)cap.cloud.sap →
CAP Java — はじめにcap.cloud.sap →
CAP Node.js スタックcap.cloud.sap →
CAP — 拡張性 & マルチテナンシーガイドcap.cloud.sap →
SAP Joule for Developers 製品ページsap.com →

1) CAP と Build Code のランドスケープ

プロコードBTP開発の4つの機能:CAP、BAS、Joule、Build Code

CAPとBuild Codeは、しばしば競合製品のように語られますが、そうではありません。CAPはフレームワークであり、Build CodeはそのフレームワークをIDEとAIコパイロットでパッケージ化したものです。

機能説明主なユーザー
CAP(プログラミングモデル)CDSでドメインをモデル化し、ODataサービスを生成、永続化とセキュリティを管理プロ開発者(Node.js / Java)
SAP Business Application Studioブラウザベースの開発スペースで、CAPツールチェーンとFioriツールをホストプロ開発者
Joule for Developers自然言語プロンプトからCDSエンティティ、CAPサービス、Fiori UIアノテーションを生成するAIコパイロットプロ開発者
SAP Build Code商用バンドル:BAS開発スペース + CAP + Jouleを1つのサブスクリプションで提供チームリーダー / プロジェクトオーナー

これらは代替ではありません。CAPは、どのオプションを選択しても使用されるランタイムです。BASはIDEです。JouleはAI機能です。Build Codeは商用ラッパーです。

2) S/4HANA への接続方法

サイドバイサイドBTP CAPアーキテクチャ(レイヤー:オーサリング、プログラミングモデル、ランタイム、永続化、S/4HANAへの統合)

CAP はサイドバイサイド拡張オプションです。サービスはBTP上で実行され、公開されたAPIを介してS/4HANAを呼び出します。S/4HANAスタック内部からではありません。Build Codeはこれを変更するものではなく、サイドバイサイドサービスの作成方法を変更するものであり、実行場所を変更するものではありません。

                 SAP BTP — Application Development (Pro Code)
   ┌──────────────────────────────────────────────────────────────────┐
   │  Authoring layer                                                 │
   │   ├─ SAP Build Code (BAS dev space + Joule for Developers)       │
   │   └─ Or: BAS standalone + CAP toolchain (no Joule)               │
   │                                                                  │
   │  Programming model                                               │
   │   └─ CAP (Node.js or Java) — CDS, generic providers, MTX         │
   │                                                                  │
   │  Runtime                                                         │
   │   ├─ Cloud Foundry (default for CAP)                             │
   │   └─ Kyma (Kubernetes-native)                                    │
   │                                                                  │
   │  Persistence                                                     │
   │   └─ SAP HANA Cloud (PostgreSQL / SQLite supported in dev)       │
   └──────────────────────────────┬───────────────────────────────────┘
                                  │ OData / REST via Destination service
                                  ▼
   ┌──────────────────────────────────────────────────────────────────┐
   │  S/4HANA Cloud (released APIs only)  ──or──  S/4HANA on-premise  │
   │                                                via Cloud Connector│
   └──────────────────────────────────────────────────────────────────┘

重要なポイント: プレーンなBASで作成するか、Build Codeで作成するかに関わらず、デプロイされたCAPサービスは同一のアーティファクトです。Build Codeはアーキテクチャ上の決定ではなく、作成方法の選択です。「Build Codeを選んだ」という事実自体は、S/4HANA統合に関するいかなる質問への回答にもなりません。

3) 成熟度マップ

2026年におけるCAPおよびBuild Codeコンポーネントの成熟度チェックリスト

機能成熟度備考
CAP Node.js✅ 本番環境対応長期実行がデフォルト。最も広いコミュニティ。Node.js LTSが必要。
CAP Java✅ 本番環境対応Spring Boot統合。Java 17以上必須、Java 21推奨。Maven 3.6.3以上。
CAP on Cloud Foundry✅ 本番環境対応デフォルトのデプロイメントターゲット。最も豊富なサービスカタログ。
CAP on Kyma✅ 本番環境対応実際のKubernetes運用能力が必要。CFチームの代替としてそのまま使用できるものではない。
CAP MTX(マルチテナンシー)✅ 本番環境対応SAPが構築するすべてのSaaS拡張機能で使用。CDS Aspectsがサポートされる拡張モデル。
SAP Business Application Studio✅ 本番環境対応サブスクリプション型。標準的なCAP開発スペース。
Joule for Developers(シングルエージェント)⚠️ コアCAPスキャフォールディングでは本番環境対応CDSエンティティ、CAPサービス、Fiori UIアノテーションを生成。
Joule for Developers(マルチエージェント)🔶 一般提供中、拡大中複雑なCAPアプリケーション向けの2025年進化版。プロンプトの規律により出力品質が向上。
SAP Build Code(バンドル)✅ 本番環境対応現在は統合SAP Buildパッケージ(Build Code + Apps + Process Automation + Work Zoneを1ライセンスで提供)の一部。

4) 要件チェックリスト

4つの前提条件ブロック:プログラミングモデル、Build Code/Joule、デプロイメント/アイデンティティ、運用

以下は、それぞれ独立したゲーティングセットです。要件クローズ時に未回答の項目がある場合、そのプロジェクトは設計の準備ができていません。

プログラミングモデルとチームの前提条件

チェックリスト項目重要性
チームに本番環境でのCDS経験を持つエンジニアが少なくとも1名いることCAPの生産性はCDSに依存します。プロジェクトでCDSを学習しながら進めるチームは、Spring BootやExpressを直接使用するチームよりも開発速度が低下します。
Node.jsとJavaスタックのどちらかを決定し、1つのサービス内で混在させないこと両方ともGA(一般提供)ですが、並行して運用すると生産性向上のメリットなしに運用面が2倍になります。
ビルドおよびランタイムにNode.js LTSまたはJava 17以上(Java 21推奨)を使用することを確認すること古いNode.jsやJava 11はサポート対象外であり、セキュリティレビューで不合格となります。
すべてのコンシューマーがOData V4を受け入れ可能であることCAPの汎用プロバイダーはデフォルトでOData V4を公開します。純粋なRESTやGraphQLを使用する場合はカスタムアダプターが必要です。
サービスレベルのSLOをスキャフォールディング開始前に文書化すること汎用プロバイダーはクエリコストを隠蔽するため、SLOにより本番稼働後の問題を防止します。

Build Code と Joule の前提条件

Joule for Developers: シングルエージェント生成とマルチエージェント生成

チェックリスト項目重要性
具体的なスキャフォールディングのユースケースが文書化されている(例:「この仕様から12のエンティティのCDSを生成する」)プレーンなCAPに対するBuild Codeの価値はJouleにある。スキャフォールディングの必要性がなければ、バンドルはオーバーヘッドとなる。
SAP BuildサブスクリプションのBTPエンタイトルメント、またはJoule消費のためのBTPEAクレジットJouleはgenerative AI hubを通じて実行される。開発開始前にエンタイトルメントが存在していなければならない。
プロンプトエンジニアリングのレビュープロセスが合意されているJouleの出力はレビューされたコードであり、盲目的にマージする成果物ではない。レビューの規律を定義する必要がある。
アプリケーションごとのシングルエージェントとマルチエージェント生成の選択マルチエージェントは複雑なアプリケーションに適しており、シングルエージェントはシンプルなスキャフォールディングに高速である。チーム全体でデフォルトが混在すると、出力に一貫性がなくなる。
ソース管理ワークフローがAI生成のコミットに対応している生成されたCDSとサービススタブはコミットとして取り込まれる。明確な所有権とレビュールールにより、乖離を回避する。

デプロイメント、永続性、およびアイデンティティ

チェックリスト項目重要性の理由
ターゲットランタイムの決定:Cloud Foundry または Kymaプロジェクト開始時に選択し、途中で変更しないこと。CF がデフォルトであり、Kyma には Kubernetes 運用スキルが必要。
非本番環境および本番環境向けに SAP HANA Cloud のサイジングと予算確保SQLite は単体テストには適しているが、共有開発環境には不向き。HANA Cloud のコスト超過は、BTP で最もよくある予算超過の原因。
認証に XSUAA または IAS を選択し、ロールコレクションをマッピングCAP の @requires および @restrict はロールに依存するため、これを先送りにすると統合テストがブロックされる。
すべての外部呼び出しに対して宛先サービスエントリを計画CAP の RemoteService を使用する場合でも、その背後に宛先が必要。
最初のスプリント前にマルチテナンシー(シングルテナント vs MTX)を決定MTX の後付けはコストがかかる。CAP は事前に計画されている場合にのみ適切にサポートされる。

運用とライフサイクル

チェックリスト項目重要性
CI/CDパイプラインが cds build の成果物(mta または k8s)を対象としているCAPビルドはサポートされているツールを通じてのみ再現可能であるため。
初日からログとトレースが SAP Cloud Logging に接続されているデフォルトの cf ログだけでは、サービス間の本番環境でのデバッグには不十分であるため。
HANA Cloud のバックアップとDR戦略が確認されているHANA Cloud には独自のバックアップとPITRの仕組みがある — 「BTPがバックアップする」という認識でチームが失敗した事例があるため。
Joule のプロンプトと出力が監査用にプロジェクトごとにアーカイブされている規制の厳しい業界では、AI支援によるコード生成のトレーサビリティが求められる場合があるため。
Joule に依存しないロールバック計画リグレッションが発生した場合、チームはプロンプトを再実行せずに修正して再デプロイする必要があるため。

5) 意思決定基準

最初に問うべき3つの質問

CAP と Build Code の選択前に確認すべき3つの質問

Q1. 私たちが取り除く具体的な開発上の課題は何ですか?—— スキャフォールディングの速度、ランタイムの能力、またはその両方ですか?

もし答えが「scaffolding speed(足場構築の速さ)」のみであれば、Build Code は対象範囲内であり、プレーンな CAP は対象外です。答えに「MTX が必要」や「イベント駆動型のクロスサービス呼び出しが必要」が含まれる場合、Build Code が追加されているかどうかに関わらず、CAP が必要です。

Q2. データはどこに保存され、どのAPIがそれにアクセスするのか?

CAPの価値は、クリーンなODataまたはREST APIをモデル化できるかどうかに依存します。統合対象がリリースされたAPIのないオンプレミスのS/4HANAである場合でも、CAPはCloud ConnectorとDestinationを介して呼び出すことができますが、要件の議論にはS/4HANA側でAPIリリース計画を誰が担当するかを含める必要があります。

Q3. チームの資金は誰が提供し、AIの消費に対する請求はどのように行われますか?

Build Code は、統合された SAP Build サブスクリプション内に位置付けられるようになりました。BTPEA クレジットはあるが Build サブスクリプションがない場合、Joule は BTPEA プールの下で消費されます。どちらもない場合、調達が制約となり、技術的な制約ではありません。

プロジェクトコンテキストによるドメイン選択

スペクトラム:プロジェクトのコンテキストに基づくプレーンCAPからBuild Codeまで

プロジェクトのコンテキスト推奨される開始機能
S/4HANA Cloud上での新規SaaS拡張、初日からマルチテナントCAP(Node.jsまたはJava)+Cloud Foundry上のMTX。Jouleによるスキャフォールディングが必要な場合はBuild Codeを追加。
FioriアプリにODataを公開する内部データプロダクトCloud Foundry上のCAP(Node.js)。Build Codeは任意。
顧客が具体的なスキャフォールディングのユースケースで「AIによるアプリ構築」を希望Build Code+Joule(シングルエージェントまたはマルチエージェント)。
既存のCAPチームが1つのサービスを追加する場合標準のCAP — Build Codeは1つのサービスに対して新たな機能を追加しない。
Kubernetes必須の環境で社内プラットフォームチームが存在Kyma上のCAP。Build Codeは任意。
明確な課題がまだ特定されていない停止。Q1に戻る。

ライセンスとコスト

ライセンス内訳: CAP無料、BASサブスクリプション、Joule消費、Build Code統合またはBTPEA

機能ライセンスモデル確認すべき重要事項
CAP フレームワークオープンソース、ライセンス費用不要予算化された SAP HANA Cloud インスタンスはあるか?CAP は無料だが、永続化は有料。
SAP Business Application Studio開発スペースごとのサブスクリプションBTP サブアカウントで権利化されている同時開発スペース数はいくつか?
Joule for Developers生成 AI ハブ経由の従量課金、Build Code にバンドル開発者1人あたり1日あたりのプロンプト数は予算化されているか?クレジットが不足した場合のフォールバックは何か?
SAP Build Code統合 SAP Build パッケージのサブスクリプション、BTPEA/PayG でも利用可能顧客は統合 SAP Build SKU を利用しているか、それとも BTPEA 経由で Build Code を個別購入しているか?
SAP HANA Cloudサブスクリプション / キャパシティ非本番環境は本番環境と別にサイジングされているか?開発と本番で1つのインスタンスを共有すると、超過が頻発する。

6) よくある障害

CAPまたはBuild Codeを選択する際の7つのよくある失敗

障害1: 足場となるユースケースなしでビルドコードを選択

チームは顧客が「AI開発」を求めたためBuild Codeを購入したが、Jouleでいくつかのエンティティプロンプトを使い、残りは手書きで記述している。このバンドルはチームが活用していない機能に対して支払いが発生する。スキャフォールディングのユースケースが限定的であれば、BAS上の通常のCAPに留まるべきである。

障害 2: Jouleの出力をマージ済みコードとして扱う

Joule はコンパイル可能なCDSおよびサービススタブを生成するため、チームが浅いレビューに陥りやすくなります。生成された認可アノテーション、アソシエーションのカーディナリティ、Fiori UIヒントが最も一般的な欠陥クラスです。これらはテストに合格しますが、誤ったビジネスルールをエンコードしています。Jouleの出力は、ジュニアエンジニアのプルリクエストとして扱ってください。

障害 3: CDS 認可をスキップし、XSUAA スコープのみに依存する

Teamsはカスタムハンドラにスコープチェックを組み込み、CDSモデルから@restrictと@requiresを除外します。これは、次の開発者がハンドラを完全にバイパスする汎用プロバイダ呼び出しを記述するまでは機能します。認可はモデルに属するものです。

障害 4: 1つのチーム内でNode.jsとJavaスタックを混在させる

Node.js と Java CAP の両方のサービスを保守するチームは、1つのスタックに絞ったチームと比較して、スプリントごとの出荷量が約半分になります。CAP 自体は両方で一貫していますが、運用ツールチェーンは一貫していません。デバッグ、プロファイリング、依存関係管理、IDE のセットアップがすべて倍になります。

障害5:初期プロトタイピングにおけるSAP HANA Cloudのコスト過小評価

SQLite を使った CAP 開発は低コストです。共有 HANA Cloud への最初の移行で予算の驚きが始まります。特に、シングルユーザーのプロトタイプに本番用のインスタンスをプロビジョニングした場合です。HANA Cloud は実際の非本番負荷に合わせてサイジングし、「本番がどうなるか」に合わせないでください。

障害 6: MTX は初日から決定すべき事項であることを忘れる

CAPはマルチテナンシーを適切にサポートしていますが、それは最初からモデル化されている場合に限ります。シングルテナントリリース後にMTXを後付けすると、永続化、認証、CIフローを書き直すことになります。顧客がアプリケーションを再販したり、法人間で共有する可能性がある場合、MTXは最初のスプリントに含めるべきです。

障害 7: Build Code を CDS スキルの代替として扱うこと

Build CodeはCDSを抽象化するのではなく、CDSの生成を高速化します。CDSに精通したメンバーがいないチームは、スプリントごとにより多くのコードを生成し、より多くのバグをリリースすることになります。Jouleの有無にかかわらず、プロジェクトごとに少なくとも1名のシニアCAPエンジニアを計画してください。

FAQ

Q: CAPはオンプレミスのSAPシステムで実行できますか、それともクラウドのみですか?

CAPがサポートするデプロイ先は、SAP BTP Cloud FoundryとKymaです。オンプレミスのS/4HANAに接続するために、CAPサービスはDestinationサービスとSAP Cloud Connectorを使用し、リリースされたAPI(OData、REST、または許可されている場合はリモート対応ファンクションモジュール)を呼び出します。CAPサービス自体はオンプレミスでは動作しません。

Q: Build Code は Joule for Developers を利用する上で必須ですか?

Joule for Developersは、Build Code内で提供されるAIコパイロットです。一部のJoule機能はVS Code(Joule Studioコードエディター)やABAP開発ツールから利用可能ですが、多くのコンサルタントが「Joule」と呼ぶCAPスキャフォールディング体験は、Build Codeのエクスペリエンスを指します。要件にJouleが含まれている場合は、Build Code(または統合SAP Build)の調達を計画してください。

Q: 顧客から要求があった場合でも、プロジェクトからBuild Codeを除外すべきなのはどのような場合ですか?

チームが四半期あたり2件未満のスキャフォールディングユースケースしかない場合、またはチームが十分に小規模で、1人のシニアCDSエンジニアが手作業でスキャフォールディングする方がJouleの出力をレビューするよりも速い場合は、導入を見送る。Build Codeの価値は多数のスキャフォールディングイベントにわたって償却されるものであり、単発のプロジェクトではその価値を回収することはほとんどない。

Q: Build Code を既に BTPEA を保有している顧客でライセンスするにはどうすればよいですか?

Build Code は統合 SAP Build パッケージの一部であり、BTPEA および PayG でも利用可能です。既存の BTPEA 契約を持つお客様は、そのプールに対して Build Code を消費できます。統合 Build SKU と BTPEA ライン消費では価格が異なるため、正確な単価については SAP の担当営業担当者にご確認ください。

Q: CAP要件をどのように文書化すれば、設計チームがそれに基づいて行動できるようになりますか?

最低限、以下を記録すること:(1) リリース済みAPIにマッピングされたエンティティと新規永続化、(2) Node.jsまたはJavaの判断、(3) デプロイメントランタイム(CFまたはKyma)、(4) 認証プロバイダー(XSUAAまたはIAS)とロールコレクションのマッピング、(5) マルチテナンシーの姿勢、(6) 宛先リスト、(7) Jouleがツールチェーンに含まれているか、およびどのフローを担当するか。これら7項目がない場合、設計チームは契約に合致しないデフォルト値を設定することになる。

Q: Build Code を使用することで、長期的に SAP にロックインされるのでしょうか?

CAP コードはポータブルです。Node.js または Java サービスと CDS ソースは Build Code の外部でも再構築可能であり、CDS ツールチェーンはオープンです。Build Code は生産性向上のためのラッパーであり、ランタイムのロックインではありません。より強い結合は、アプリケーションが使用する BTP サービス(XSUAA、Destination、HANA Cloud)から生じます。Build Code ではなく、それらこそが真のロックインの議論の対象です。

Q: Build Apps を使用するローコードチームは、Build Code で構築された CAP サービスを利用できますか?

はい。CAPはODataを公開し、Build AppsはDestinationサービスを介してODataを利用できます。これはBTPにおける標準的な「プロコードサービス、ローコードUI」のパターンです。

概要

意思決定の概要:CAPを開始し、スキャフォールディングのユースケースが具体的かつ反復的になった時点でBuild Codeを追加する

CAPはプログラミングモデルです。オープンで成熟しており、Node.jsとJavaでサポートされ、SAP S/4HANAの本格的なサイドバイサイド拡張における適切なデフォルト選択肢です。SAP Build Codeは、Business Application Studioの開発スペースと、CDS、サービス、FioriアノテーションをスキャフォールディングするAIコパイロット「Joule for Developers」(2025年のマルチエージェントモードを含む)でCAPをラップした商用バンドルです。選択すべきはどちらを使うかではなく、プロジェクトにBuild Codeの商用オーバーヘッドを償却するのに十分なスキャフォールディング作業があるかどうかです。迷った場合は、BAS上でプレーンなCAPから始め、スキャフォールディングのユースケースが具体的かつ反復的になった時点でBuild Codeを追加してください。

次に読むべきもの

IDタイトル
BTP-B01: アプリケーション開発の概要と機能マップ4つのBTP開発ファミリをマッピングし、Pro Codeに焦点を当てる前に全体像を把握する
BTP-B02: Business Application Studio: アーキテクチャと使用方法Build Codeの有無にかかわらず、CAP開発をホストするIDE
BTP-B03CAPとBuild Code: アーキテクチャと使用方法(本記事)
BTP-B04: ABAP環境: アーキテクチャと使用方法拡張機能をS/4HANAコアに近づける必要がある場合のABAP側の代替手段
BTP-B05: Build Apps: アーキテクチャと使用方法CAPで構築されたODataサービスを利用することが多いローコードのコンパニオン
BTP-B06: Build Process Automation: アーキテクチャと使用方法CAPサービスをトリガーするワークフローおよびRPAレイヤー
BTP-B07: Build Work Zone: アーキテクチャと使用方法CAPベースのFioriアプリを表示するポータルレイヤー
BTP-B08: ユースケースと意思決定パターン4つのファミリをすべて統合したエンドツーエンドのシナリオ