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
[OutSystems] OutSystems が誘う Null がない世界の罠
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
kata_junn
December 23, 2021
Technology
1.1k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
[OutSystems] OutSystems が誘う Null がない世界の罠
× "さそう"
〇 "いざなう"
文章版はこちら:
https://qiita.com/kata_junn/items/5018b3b42c142d7e4997
kata_junn
December 23, 2021
More Decks by kata_junn
See All by kata_junn
[OutSystems] ユニットテスト in OutSystems
kata_junn
0
670
O11?ODC?一体何が違うのさ?_v1.0.2.pdf
kata_junn
0
1.7k
[OutSystems] O11 ユーザーに贈る ODC 移行に備えておくと良さそうなコト
kata_junn
0
720
ODC を乗りこなすために理解しておくと良いかもしれないいくつかのこと~Case:External Logic~
kata_junn
0
530
[OutSystems] シン・とりあえず Reactive なプロジェクトにはこれ導入しておくと良い規約
kata_junn
0
330
[OutSystems] Testing Framework がいい。とてもいい。
kata_junn
0
2k
[OutSystems] CodeceptJS で快適な E2E ライフを送ろう!
kata_junn
0
400
[OutSystems] とりあえず Reactive なプロジェクトにはこれ導入しておくと良いって規約
kata_junn
1
1.8k
[Agile][Scrum] 転リファ
kata_junn
3
11k
Other Decks in Technology
See All in Technology
Let's Change Our World—Again
snoozer05
PRO
5
360
AI × アーキテクト 第1・2章|生成AIの課題とアーキテクトの素養
daidaidai
1
230
「私が一番顧客に詳しい」を捨てる~ 全員が一次情報に精通する開発チームをつくり、PMが次のボトルネックへ染み出すまで
kaminashi
3
1.5k
PHPカンファレンス関西の招待状 / Invitation to PHP Conference Kansai
ykanoh
0
230
Claude Code on Bedrock で統制をかける小ネタ集/claude-code-bedrock-governance-tips
emiki
1
410
[JAWS-UG彩の国埼玉#12]そろそろ準備する?re:Invent2026をやさしく解説 / reinvent2026-sainokuni
sh_fk2
1
400
ウォンテッドリーの最近のプロダクトと技術の紹介
stomk
0
340
AWSセキュリティで活用するAI機能
cmusudakeisuke
1
220
How to teach your AI Agent with Agent skills
linedevth
0
110
20261017福岡devIO 「AIは"良いダッシュボード"を作れるか?
jtakeda
0
240
LLM Content Moderationを支える評価・改善ループの実践
suikabar
2
310
アカウント統制の健康診断
kenichinakamura
1
140
Featured
See All Featured
Beyond borders and beyond the search box: How to win the global "messy middle" with AI-driven SEO
davidcarrasco
3
280
<Decoding/> the Language of Devs - We Love SEO 2024
nikkihalliwell
1
360
Build The Right Thing And Hit Your Dates
maggiecrowley
39
3.5k
Rebuilding a faster, lazier Slack
samanthasiow
85
9.7k
New Earth Scene 8
popppiees
4
2.7k
We Have a Design System, Now What?
morganepeng
55
8.4k
Tips & Tricks on How to Get Your First Job In Tech
honzajavorek
1
810
AI in Enterprises - Java and Open Source to the Rescue
ivargrimstad
0
1.5k
Neural Spatial Audio Processing for Sound Field Analysis and Control
skoyamalab
0
570
Pawsitive SEO: Lessons from My Dog (and Many Mistakes) on Thriving as a Consultant in the Age of AI
davidcarrasco
0
260
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
360
31k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
28
3.7k
Transcript
OutSystems が誘う Null がない世界の罠 片野 潤一 伊藤忠テクノソリューションズ株式会社 アジャイル営業推進部 あつまれ OutSystems
Developer! 開発者超会議
Java Struts/Spring/MyBATIS 2005 2014 OutSystems Developer@3人(6か月) Developer && TL@約10人(24か月) OutSystems
推進 2019 2020 Scrum on AWS Role:Developer TypeScript Serverless Dynamo, Lambda, S3, SQS, Kinesis, Athena Angular 認定スクラムマスター(CSM) AWS Certified DevOps Engineer - Professional OutSystems Expert Traditional Web Developer OutSystems Architecture Specialist 好き:リアル脱出ゲーム、低温調理、スパイス、モブプロ、DQW、ゼルダ 20% OutSystems OutSystems 推進 Expert Service BootCamp 講師 PoC 提案+実施 プロジェクト支援 now!! 2 片野 潤一(かたじゅん) Twitter:@kata_junn
あるよ!!! OutSystems プロジェクトで Null に困ったことが… ないよ!!! 使ってないよ!!! Zoom の ↓
の機能で枠内に✓とかつけてね!
今日の話が響きそうな人 ⚫ OutSystems を調べている人 ⚫ OutSystems に触り始めた人 ⚫ OutSystems の
Null で困っている人 4
None
None
明日(12/23)の 7:00 に公開!!見てね!!
OutSystems には Null がない
OutSystems は Null を意図的に排している ⚫ 初期値は「型に応じたデフォルト値」 ⚫ Null~という Built-in Function(?)もデフォルト値を返す
⚫ ex. NullIdentifier() は 0 ⚫ 理由は不明 ⚫ NullPointerException 回避(推測) ⚫ Null チェックの根絶(推測) ⚫ 宗教的な理由(推測) ⚫ 学習の容易さアピール(推測)
Null がないと困ることあるの?
めっちゃある
Null とデフォルト値の両立が難しい
OutSystems アプリ → 内部DB/外部DB/Consume REST ⚫ 内部 DB or 外部
DB ⚫ SQL query で “NULL” を頑張って書けば良い ⚫ また、前提として画面からの入力値を全て Text で受ける必要がある ⚫ Built-in Validation くんの存在価値 is 何 ⚫ 外部DB ⚫ Entity の Default Value Behavior の設定でデフォルト値を Null に変換可能 ⚫ ただし、デフォルト値と Null 値の両立ができない ⚫ Consume REST ⚫ デフォルト値で送信するか、キー自体を消すかの選択が可能 ⚫ OnBeforeRequest で文字列操作(null に置換)すれば良いが精神が死ぬ ⚫ OutSystems 開発の悪いところが凝縮されている感
内部DB/外部DB/Expose REST → OutSystems アプリ ⚫ 基本的に Null は全てデフォルト値に変換されて入ってくる ⚫
Null を送ってきたのかデフォルト値を送ってきたのか判別ができない ⚫ Expose REST の場合、undefined も判別不可 ⚫ Expose REST は介入ワンチャン ⚫ OnRequest で JSON を文字列解析すれば null や undefined のキーは判別可能 ⚫ ただ、キーがわかったところでメタプログラミングできないため、「このキーだった ら Null として扱う」のような、プロパティを文字列指定するような柔軟性の無い実 装を余儀なくされる ⚫ OutSystems 開発の(略
個人的所感 ⚫ Null がないのは「学習が簡単なように見せかけている」だけ ⚫ NullPointerException や Null-check 等の煩雑さに蓋をしている ⚫
外部システムとの I/F で致命的になり得るユースケースが多い ⚫ 対応は不可能ではないが、スクラッチの方が素直で品質も保持しやすく本末転倒 ⚫ Null を完全排除しているのは筋が悪い ⚫ 拡張性や柔軟性、外部接続性をアピールしているのだから選択肢は欲しい ⚫ NEO でも Null は導入されないとかなんとか(噂) ⚫ 今のところ NEO への唯一の失望ポイント
まとめ ⚫ OutSystems で Null を扱うのは大変難しい ⚫ AOP 等が無いので透過的に実装することができない 1つ1つの
I/F に個別に似たような処理を実装する必要があり、人を精神的 に追い込むには十分な面倒さ ⚫ 特に連携する外部システムで OutSystems のデフォルト値と Null に明確な意味の違いを持つ場合、面倒な実装や調整が求められる ⚫ とりあえず Null の Idea に LIKE してね!!!! ⚫ https://www.outsystems.com/ideas/213/null-values/
“ガソリンタンクを持っていない車と、空のガソリン タンクは、概念的に異なるものだ J.セルコ『プログラマのためのSQL 第2版』p.102
ご清聴ありがとうございました みなさんの回避策も 聞きたいです!