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
モバイルアプリ開発概論2026
recruitengineers
PRO
5
530
【CEDEC2026】専門性の高いデフォルメチームが挑んだ人材育成戦略 〜Cygames Academiaの企画から実施まで〜
cygames
PRO
0
540
Goでデータパイプラインを作ろう
sansantech
PRO
1
360
LLM・AIエージェントシステムベストプラクティス
shibuiwilliam
2
760
研究開発部の紹介 / Sansan R&D Profile
sansan33
PRO
4
24k
Agent 時代の Kaggle 展望 / kaggle-in-the-agentic-era
upura
1
680
AIは実装を速くする。では、私たちは何を今作るべきか?-立場を越えてリリースに向き合ったチーム開発の実践 / 20260801 Hiromi Nakaya and Naoki Takahashi
shift_evolve
PRO
3
460
メルカリのグローバルアプリで挑んだ AlloyDB 運用と課題解決の実践記
hatappi
0
240
TypeScript入門 2026
recruitengineers
PRO
3
520
名刺メーカーDevグループ 紹介資料
sansan33
PRO
0
1.2k
toio・myCobotでフィジカルAIっぽいことを行うための検討(とりあえず調査) / フィジカルAI LT(IoTLTによる開催)
you
PRO
0
310
ボトムアップ文化が強い組織で セキュリティをどう根付かせていくかの現在進行形の話 / Making Security Stick in a Bottom-Up Organization
yamaguchitk333
0
210
Featured
See All Featured
The agentic SEO stack - context over prompts
schlessera
0
860
16th Malabo Montpellier Forum Presentation
akademiya2063
PRO
0
340
Impact Scores and Hybrid Strategies: The future of link building
tamaranovitovic
0
380
Leveraging LLMs for student feedback in introductory data science courses - posit::conf(2025)
minecr
1
340
Future Trends and Review - Lecture 12 - Web Technologies (1019888BNR)
signer
PRO
0
3.7k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
Being A Developer After 40
akosma
91
590k
Stewardship and Sustainability of Urban and Community Forests
pwiseman
0
450
Reality Check: Gamification 10 Years Later
codingconduct
0
2.2k
The Impact of AI in SEO - AI Overviews June 2024 Edition
aleyda
5
1.2k
GraphQLの誤解/rethinking-graphql
sonatard
75
12k
Raft: Consensus for Rubyists
vanstee
141
7.6k
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