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
[OutSystems] OutSystems が誘う Null がない世界の罠
Search
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
610
O11?ODC?一体何が違うのさ?_v1.0.2.pdf
kata_junn
0
1.6k
[OutSystems] O11 ユーザーに贈る ODC 移行に備えておくと良さそうなコト
kata_junn
0
680
ODC を乗りこなすために理解しておくと良いかもしれないいくつかのこと~Case:External Logic~
kata_junn
0
510
[OutSystems] シン・とりあえず Reactive なプロジェクトにはこれ導入しておくと良い規約
kata_junn
0
320
[OutSystems] Testing Framework がいい。とてもいい。
kata_junn
0
1.9k
[OutSystems] CodeceptJS で快適な E2E ライフを送ろう!
kata_junn
0
380
[OutSystems] とりあえず Reactive なプロジェクトにはこれ導入しておくと良いって規約
kata_junn
1
1.8k
[Agile][Scrum] 転リファ
kata_junn
3
11k
Other Decks in Technology
See All in Technology
動画配信アプリでの Engage SDK 導入 — TVer Android が Play ストアにコンテンツを届けるまで
techtver
PRO
0
110
多摩川(.dev)ランニング入門 / Tamagawa.dev#3
fujiwara3
3
360
DGX Sparkを2台使って いろいろ動かす話
sonoda_mj
1
130
Self Healing Rollouts: Automating Production Fixes with Agentic AI
kdubois
0
150
AI時代に、プロダクトの数だけ積み上がる所有コストをどうエンジニアリングするか / Engineering the Cost of Ownership
kzkmaeda
0
1k
『止めない』を設計する — 制約の中で、事業の根幹を支える判断
hiroyaterui
0
200
書籍『生成AIの安全性入門』の入門
wataoka
0
210
プロダクト思考 × 基盤思考を AIで実現する Compound Engineering
tkc66buzz
1
270
AI活用の現在地、 ちゃんと見えてますか?/XPfest-2026
visional_engineering_and_design
0
160
どんな手を使っても絶対間に合わせるスケジューラ
asari194617
0
1.6k
Bet AI Day 2026丨Production-Ready AI Agents — エンタープライズの実務を任せるための設計と運用
layerx
PRO
3
2.2k
「重なり」は迎える側がつくる ― 人もAIエージェントも歓迎するプロダクトエンジニアリング ―
go0517go
PRO
0
240
Featured
See All Featured
YesSQL, Process and Tooling at Scale
rocio
174
15k
Groundhog Day: Seeking Process in Gaming for Health
codingconduct
0
330
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
123
22k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
35
2.8k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1.5k
We Analyzed 250 Million AI Search Results: Here's What I Found
joshbly
1
1.9k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
16k
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.9k
How to Grow Your eCommerce with AI & Automation
katarinadahlin
PRO
1
260
Leading Effective Engineering Teams in the AI Era
addyosmani
9
2.5k
SERP Conf. Vienna - Web Accessibility: Optimizing for Inclusivity and SEO
sarafernandez
2
1.6k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
128
56k
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
ご清聴ありがとうございました みなさんの回避策も 聞きたいです!