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
miyasuta
March 10, 2026
Technology
110
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Lessons from Implementing a Soft Delete Plugin: Is CAP Java the Right Choice for Java Developers?
miyasuta
March 10, 2026
More Decks by miyasuta
See All by miyasuta
Start developing UI5 apps using TypeScript
miyasuta
0
28
sitTokyo2023_Flexible_Programming_Modelで_Fiori_elements_or_フリースタイル_の壁を打ち破る.pdf
miyasuta
0
260
Other Decks in Technology
See All in Technology
グローバルチームと挑むプロダクト開発
sansantech
PRO
1
160
AIに「使われる」時代のSaaS戦略 〜既存WebAPIのMCPサーバー化における開発ノウハウ〜
ekispert_api
0
300
型は壁、Rustでもバグを直すな、表現できなくせよ
nwiizo
12
1.6k
AI Driven AI Governance
pict3
0
160
依頼文化をやめる日 EM視点で語るPlatform EngineeringとInclusive SRE / Discussing Platform Engineering and Inclusive SRE from an EM's Perspective
shin1988
4
3.2k
SRE歴2ヶ月でも開発6年の知見を活かして、チームで止まっていた環境改善を前に進めた話
a_ono
1
210
完全自律ロボットを作りたくて、先に開発を自律させた話(ROS Japan UG #63 LT)
rryz09
0
370
20260702_生成AIはどこまで成長するのか_チャットだけじゃない世界
doradora09
PRO
0
110
次世代ランサムウェア対策の考察 / 20260704 Mitsutoshi Matsuo
shift_evolve
PRO
5
1.7k
Empower GenAI with Agile - あなたのアジャイルが生成AIのバフになる仕組み
hageyahhoo
0
130
SRE依存からの脱却 運用を開 発チームへ移す、 フルサイ クル開 発体制の実践
joooee0000
0
960
product engineering with qa
nealle
0
150
Featured
See All Featured
Stewardship and Sustainability of Urban and Community Forests
pwiseman
0
250
Bash Introduction
62gerente
615
220k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
55k
Lightning talk: Run Django tests with GitHub Actions
sabderemane
0
220
Fashionably flexible responsive web design (full day workshop)
malarkey
408
66k
Building the Perfect Custom Keyboard
takai
2
810
Getting science done with accelerated Python computing platforms
jacobtomlinson
2
250
How to train your dragon (web standard)
notwaldorf
97
6.7k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.8k
Paper Plane (Part 1)
katiecoart
PRO
0
9.5k
The #1 spot is gone: here's how to win anyway
tamaranovitovic
3
1.1k
So, you think you're a good person
axbom
PRO
2
2.1k
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