Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Lessons from Implementing a Soft Delete Plugin:...
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
miyasuta
March 10, 2026
Technology
0
89
Lessons from Implementing a Soft Delete Plugin: Is CAP Java the Right Choice for Java Developers?
miyasuta
March 10, 2026
Tweet
Share
More Decks by miyasuta
See All by miyasuta
Start developing UI5 apps using TypeScript
miyasuta
0
22
sitTokyo2023_Flexible_Programming_Modelで_Fiori_elements_or_フリースタイル_の壁を打ち破る.pdf
miyasuta
0
240
Other Decks in Technology
See All in Technology
AI時代のシステム開発者の仕事_20260328
sengtor
0
310
Datadog で実現するセキュリティ対策 ~オブザーバビリティとセキュリティを 一緒にやると何がいいのか~
a2ush
0
180
不確実性と戦いながら見積もりを作成するプロセス/mitsumori-process
hirodragon112
1
110
Oracle AI Database@Azure:サービス概要のご紹介
oracle4engineer
PRO
4
1.3k
Oracle Cloud Infrastructure(OCI):Onboarding Session(はじめてのOCI/Oracle Supportご利⽤ガイド)
oracle4engineer
PRO
2
17k
Physical AI on AWS リファレンスアーキテクチャ / Physical AI on AWS Reference Architecture
aws_shota
1
200
GitHub Advanced Security × Defender for Cloudで開発とSecOpsのサイロを超える: コードとクラウドをつなぐ、開発プラットフォームのセキュリティ
yuriemori
1
110
夢の無限スパゲッティ製造機 #phperkaigi
o0h
PRO
0
400
Embeddings : Symfony AI en pratique
lyrixx
0
420
AgentCoreとLINEを使った飲食店おすすめアプリを作ってみた
yakumo
2
260
会社紹介資料 / Sansan Company Profile
sansan33
PRO
16
410k
OCI技術資料 : ロード・バランサ 概要 - FLB・NLB共通
ocise
4
27k
Featured
See All Featured
How STYLIGHT went responsive
nonsquared
100
6k
Building an army of robots
kneath
306
46k
End of SEO as We Know It (SMX Advanced Version)
ipullrank
3
4.1k
Ten Tips & Tricks for a 🌱 transition
stuffmc
0
93
30 Presentation Tips
portentint
PRO
1
260
Information Architects: The Missing Link in Design Systems
soysaucechin
0
850
Leveraging Curiosity to Care for An Aging Population
cassininazir
1
200
Heart Work Chapter 1 - Part 1
lfama
PRO
5
35k
Why Mistakes Are the Best Teachers: Turning Failure into a Pathway for Growth
auna
0
100
The Director’s Chair: Orchestrating AI for Truly Effective Learning
tmiket
1
140
Making the Leap to Tech Lead
cromwellryan
135
9.8k
Building a A Zero-Code AI SEO Workflow
portentint
PRO
0
420
Transcript
SAP Inside Track 2026 #sitTokyo TOKYO Lessons from Implementing a
Soft Delete Plugin: Is CAP Java the Right Choice for Java Developers? 2026-03-06: Day2 – AppDev, Integration, Application
2 INTERNAL – SAP and Partners Only 名前: Mio Yasutake
(安竹 みお) 役割: BTP , SAP Cloud ERPなどの技術調査、プロジェクト支援 SAP Champion(ブログ執筆、Q&A) 参加目的:技術情報のインプット・アウトプット Mio Yasutake (tami)
3 INTERNAL – SAP and Partners Only 発表日:2026/03/06 氏 名:安竹
みお 論理削除プラグイン実装から見えてきた、CAP Node.jsとCAP Javaの違い: 「Java開発者だからCAP Java」は正解なのか? SAP Inside Track TOKYO 2026 #sitTokyo
4 • CAPの開発言語、どうやって決めていますか? • 私のバックグラウンド • 論理削除プラグインについて • 論理削除プラグインから見るCAP Node.jsとCAP
Javaの違い • 「Java開発者だからCAP Java」は正解なのか? 目次
5 【自分の周辺では】 • 開発者はBTPやCAPの開発経験が少ないことが多い • しかし、Javaの経験はある →開発者の経験が豊富なJavaで作る これは正解なのだろうか?というのが本セッションの問い CAPの開発言語、どうやって決めていますか?
6 • ABAP出身 • CAPはNode.jsから入った • プロジェクトを支援する立場。プロジェクトではJavaを採用しているため、CAP Javaを習得中 私のバックグラウンド
論理削除プラグインについて
8 CAPでレコードが削除がされたときのデフォルトの動きは物理削除。これを論理削除(削除フラ グを設定)に変えるためのプラグイン。 削除処理の上書きに加え、読み込み処理のときにデフォルトでは削除済レコードを返却しないよう にする。 作成した背景: • プロジェクトで論理削除の要件があった • CAPのプロジェクトごとに同じ処理を書くのは大変。プラグイン化すれば便利になる
※個人的な実験として作成 概要
9 使い方 ①“softdelete”アスペクト(削除フラグなどを含む構造)をエンティティに追加 ②サービスレイヤで@softdelete.enabledアノテーションを設定
10 • プラグインの土台は自分で作成 • 実装はClaude Code + cds-mcpを使用(自分はコードを触らず) • 最初にNode.jsで作り、それを参考にJavaで同じ要件を実装
関連ブログ: CAPの個人開発でClaude Codeを使い始めた3か月を振り返る | Qiita 進め方
論理削除プラグインから見るCAP Node.jsとCAP Javaの違い
12 • Node.jsのほうが短いコードで実現できる • Node.jsのほうがやりたいことがシンプルに実現できる 論理削除プラグインを開発してみて
13 • Node.jsのほうが短いコードで実現できる • Node.js: 383行 • Java: 703行 ※コメント行、空白行を除く
383 703 0 100 200 300 400 500 600 700 800 Node.js Java
14 Node.jsのほうがやりたいことがシンプルに実現できる ①CQLクエリの書き方 親を論理削除するとき、子のエンティティも同時に論理削除する例 Node.js: SQLライクでわかりやすい Java: カラムや条件の指定が複雑 ・カラム名はgetメソッドで指定 ・条件が複数あるときはandでつなぐ
15 Node.jsのほうがやりたいことがシンプルに実現できる ②キーの抽出 DELETEハンドラで削除フラグを設定してエンティティを更新する例 Node.js: リクエストオブジェクトからキーを取得できる Java: CqnAnalyzerを使ってキーを抽出する必要がある 削除時のキーは req.dataに設定されて
いる キーを取得するために この3行が必要
16 Node.jsのほうがやりたいことがシンプルに実現できる Node.js: クエリを直接書き換え ③クエリの書き換え フィルタ条件に論理削除フラグを指定し、削除されていないレコードだけを抽出する例 もとのwhere句に条件を 追加 Java: Modifierを使用して書き換え
変更したクエリをセット クエリを書き換え クエリをコピー
17 CAP Javaの「難しさ」の正体 • Node.jsの場合、「やりたいこと」をそのまま書ける • Javaの場合、「やりたいこと」を実現する前に1クッション入る Java開発者であっても、「CAPでの正しいやり方」を知るための学習コストが高い
「Java開発者だからCAP Java」は正解なのか?
19 • 「これからCAP開発を始めるけど、言語はどうしたらいい?」という状況を想定 • すでに開発体制が確立していて、ドキュメントや基準が揃っている場合は今の言語で問題なし 前提として
20 • Node.jsとJavaで、CAPの機能に大きな差はない ただし・・・ • 特定の機能が、どちらかの言語で先行リリースされることはある • どちらかの言語でしかサポートされていない機能も一部ある どちらの言語を選んでも、ノックアウトになるような要素はない 前提として
21 • メリット:ライブラリや開発周りのツールに関する知識、ドキュメントなど既存資産を活用で きる • デメリット:CAP Javaの学習コストが高い Java開発者にとってのCAP Javaのメリット・デメリット Java開発者
22 • プロジェクトメンバの構成は毎回変わる • 熟練開発者もいれば、そうでないメンバもいる • フロントエンドとバックエンドの開発を同じメンバーがやることもある • 誰にとってもわかりやすい言語は? 今はJava開発者が多いかもしれない。でも、これからもそう?
Java開発者 UI5開発者 元ABAP開発者
23 • チュートリアルの多くはNode.js • SAP CommunityのブログやDevtoberfest, reCAP(CAPの年次イベント)では、Node.jsのほう がよく出てくる • 2025年のDeveloper
Insights Surveyの結果: ➢ CAP Node.jsを使っている割合が87%, CAP Javaは5% 認めよう、誰にとってもわかりやすいのはCAP Node.js 出典:The 2025 Developer Insights Survey: The Report ABAPしかやったことのない人間が、 CAP Node.jsではそれほど苦労しな かった Java開発者にとっても、Node.jsはきっ と簡単なはず
24 CAP Node.jsなら、「書き方」を調べる時間を他のことに使える 調査・ 実装 テスト・リ ファクタリン グ 部品化 ベストプラク
ティスの確立 and more… CAP Node.js 時間 テスト・リ ファクタリン グ 部品化 ベストプラク ティスの確立 CAP Java 調査・ 実装 例
25 • 「Java開発者だからCAP Java」ではなく、組織として「CAPはこの言語」と決める • 「CAPはNode.js」と決めることで、長期的に皆が幸せになる CAP Node.jsで複雑さを回避して、1日目から「やりたいこと」を実装しよう! CAPの開発言語はどう決めるべきか CAP
Node.jsを採用するメリット ✓ 情報が多い ✓ コードが書きやすい・読みやすい ✓ フロントエンドと技術スタックを統一できる
26 • 論理削除プラグイン (Node.js) : https://github.com/miyasuta/cds-softdelete-plugin • 論理削除プラグイン (Java): https://github.com/miyasuta/cds-feature-softdelete
• The 2025 Developer Insights Survey: The Report Appendix