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
570
O11?ODC?一体何が違うのさ?_v1.0.2.pdf
kata_junn
0
1.6k
[OutSystems] O11 ユーザーに贈る ODC 移行に備えておくと良さそうなコト
kata_junn
0
650
ODC を乗りこなすために理解しておくと良いかもしれないいくつかのこと~Case:External Logic~
kata_junn
0
490
[OutSystems] シン・とりあえず Reactive なプロジェクトにはこれ導入しておくと良い規約
kata_junn
0
320
[OutSystems] Testing Framework がいい。とてもいい。
kata_junn
0
1.9k
[OutSystems] CodeceptJS で快適な E2E ライフを送ろう!
kata_junn
0
370
[OutSystems] とりあえず Reactive なプロジェクトにはこれ導入しておくと良いって規約
kata_junn
1
1.8k
[Agile][Scrum] 転リファ
kata_junn
3
11k
Other Decks in Technology
See All in Technology
Keeping applications secure by evolving OAuth 2.0 and OpenID Connect
ahus1
PRO
1
160
アカウントが増えてからでは遅い? ~ マルチアカウント統制の勘所 ~
kenichinakamura
0
220
AIと共生する開発者プラットフォーム:バクラクのモノレポ×マイクロサービス基盤
sakajunquality
2
3.4k
SRE本の知られざる名シーン / The Hidden Gems of Google SRE Book
nari_ex
1
370
「ちゃんとやっている」は独りよがりだった ― 不安に寄り添うインシデント対応へ / Towards incident response that addresses anxieties
chmikata
1
5k
Foxgloveについて 実際にExtensionを開発して公開するまでの話 / About Foxglove: The Story of Developing and Releasing an Extension
ry0_ka
0
210
Making sense of Google’s agentic dev tools
glaforge
1
180
凡エンジニアがこの先生きのこるためには。〜TypeScript完全に理解したい〜
alchemy1115
2
170
ゼロをイチにする仕事が終わったあと
smasato
0
340
はじめてのWDM
miyukichi_ospf
1
140
AI駆動開発におけるQAエンジニアの役割事例 〜AI駆動開発の現場から〜
kobayashiyorimitsu
0
490
GuardrailからGovernanceへ~AIエージェント運用の次の課題~
sbspsy
2
270
Featured
See All Featured
Leveraging LLMs for student feedback in introductory data science courses - posit::conf(2025)
minecr
1
310
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
2k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
230
23k
Information Architects: The Missing Link in Design Systems
soysaucechin
0
1k
Breaking role norms: Why Content Design is so much more than writing copy - Taylor Woolridge
uxyall
0
340
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.8k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
17k
What’s in a name? Adding method to the madness
productmarketing
PRO
24
4.1k
Design in an AI World
tapps
1
260
Highjacked: Video Game Concept Design
rkendrick25
PRO
1
410
Are puppies a ranking factor?
jonoalderson
1
3.7k
Un-Boring Meetings
codingconduct
0
340
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
ご清聴ありがとうございました みなさんの回避策も 聞きたいです!