Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Lessons from Implementing a Soft Delete Plugin:...
Search
miyasuta
March 10, 2026
Technology
120
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
33
sitTokyo2023_Flexible_Programming_Modelで_Fiori_elements_or_フリースタイル_の壁を打ち破る.pdf
miyasuta
0
270
Other Decks in Technology
See All in Technology
Benchmarking Disaggregated Serving on vLLM + Dynamo with a Real Coding-Agent Workload
nttcom
1
190
会社説明資料
persolserverworks
0
9.8k
USB PDを使ってスマホを労わりたい
raspython3
0
180
Railsで挑む大量データ永続化 〜600億件を永続化するための設計とボトルネックとの戦い〜
occhi
1
580
S3 Filesで挑む! 八戸せんべい汁の食べ頃問題
usanchuu
0
100
QA4AI 2026-Oct 生成AI時代の品質保証
tokuty
1
860
Running Kotlin + Quarkus with Lambda
nealle
1
3.7k
DevelopersIO 2026 知識の地図を描く ─ オントロジーとは何か?
ishikawa_satoru
1
1.7k
スキマバイトという雇用形態は存在しないので、雇用期間1日のアルバイト契約を事業者とワーカーが結ぶ手続きを支えるのがタイミーなんです
akitoshiga
0
200
実践! SRE × AI - ABEMA における AIOps -
tetsuya28
8
3.1k
20261017福岡devIO 「AIは"良いダッシュボード"を作れるか?
jtakeda
0
160
事業成長とデータ活用を止めないためのマネジメントへ挑戦
hiracky16
0
390
Featured
See All Featured
Lightning talk: Run Django tests with GitHub Actions
sabderemane
0
300
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
52
6.1k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
12
1.9k
Redefining SEO in the New Era of Traffic Generation
szymonslowik
1
480
Understanding Cognitive Biases in Performance Measurement
bluesmoon
32
3.1k
The SEO Collaboration Effect
kristinabergwall1
1
590
Building a Modern Day E-commerce SEO Strategy
aleyda
45
9.3k
Paper Plane
katiecoart
PRO
5
54k
For a Future-Friendly Web
brad_frost
184
10k
jQuery: Nuts, Bolts and Bling
dougneiner
66
8.6k
The Curious Case for Waylosing
cassininazir
1
570
Mind Mapping
helmedeiros
1
400
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