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
560
O11?ODC?一体何が違うのさ?_v1.0.2.pdf
kata_junn
0
1.5k
[OutSystems] O11 ユーザーに贈る ODC 移行に備えておくと良さそうなコト
kata_junn
0
640
ODC を乗りこなすために理解しておくと良いかもしれないいくつかのこと~Case:External Logic~
kata_junn
0
480
[OutSystems] シン・とりあえず Reactive なプロジェクトにはこれ導入しておくと良い規約
kata_junn
0
310
[OutSystems] Testing Framework がいい。とてもいい。
kata_junn
0
1.9k
[OutSystems] CodeceptJS で快適な E2E ライフを送ろう!
kata_junn
0
360
[OutSystems] とりあえず Reactive なプロジェクトにはこれ導入しておくと良いって規約
kata_junn
1
1.8k
[Agile][Scrum] 転リファ
kata_junn
3
11k
Other Decks in Technology
See All in Technology
LayerXにおけるセキュリティ管理の現在地と次の一手
tosho
0
190
社内 AI エージェント Synapse と セマンティックレイヤーの育て方
hiroakis
3
1.9k
いまさら聞けない「仕様駆動開発入門」 〜AI活用時代の開発プロセスを考える〜
findy_eventslides
1
100
作って終わりにしない タイミーのセマンティックレイヤー育成の現在地
chanyou0311
4
2.4k
脆弱性対応、どこで線を引くか
rymiyamoto
1
390
新しいVibe Codingと”自走”について
watany
6
330
2026 TECHFRESH 畢業分享會 - 開發日常大解密!從領域驅動到企業級上線
line_developers_tw
PRO
0
1k
マルチアカウント環境での コーディングエージェントを使った障害調査が大変なので AIエージェントにReadOnly権限を付与してみた / ReadOnly AI Agents for Multi-Account AWS Incident Response
yamaguchitk333
2
110
GitHub Copilot 最新アップデート – 「一歩先」の実践活用術
moulongzhang
2
590
2026TECHFRESH畢業分享會 - AI 時代的人生存檔點
line_developers_tw
PRO
0
1k
入門!AWS Blocks
ysuzuki
1
120
【2026年版】 ベクトル検索䛸 Embedding最前線
mocobeta
0
140
Featured
See All Featured
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
254
22k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
287
14k
The SEO Collaboration Effect
kristinabergwall1
1
480
Everyday Curiosity
cassininazir
0
230
Breaking role norms: Why Content Design is so much more than writing copy - Taylor Woolridge
uxyall
0
320
Un-Boring Meetings
codingconduct
0
310
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
22k
Principles of Awesome APIs and How to Build Them.
keavy
128
18k
Crafting Experiences
bethany
1
180
How Fast Is Fast Enough? [PerfNow 2025]
tammyeverts
3
610
Designing for Performance
lara
611
70k
The Pragmatic Product Professional
lauravandoore
37
7.3k
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
ご清聴ありがとうございました みなさんの回避策も 聞きたいです!