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
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
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
マルチアカウント環境での コーディングエージェントを使った障害調査が大変なので AIエージェントにReadOnly権限を付与してみた / ReadOnly AI Agents for Multi-Account AWS Incident Response
yamaguchitk333
2
110
【NRUG vol.18】KubernetesにおけるNew Relicデータ取得量削減の考え方
nrug_member
0
120
MUSUBI 田中裕一『AIと共に行う「しごとのリデザイン」- スモールバックオフィス編』AI Ops Lab #4
musubi
0
180
FinOps × AIエージェントで実現する コストインシデントの自動調査
oasis1994liveforever
0
140
失敗を資産に変えるClaude Code
shinyasaita
0
660
AI駆動開発を通して感じた、 AI時代のデザイナーの役割変化
whisaiyo
3
2.1k
RSA暗号を手計算したくなること、ありますよね?? (20260615_orestudy6_rsa)
thousanda
0
430
Snowflakeと仲良くなる第一歩
coco_se
4
470
Oracle AI Database@Google Cloud:サービス概要のご紹介
oracle4engineer
PRO
6
1.5k
プロダクト開発から業務改善コンサルまで。事業全体へ「染み出す」ことで広がるエンジニアの可能性
ham0215
0
130
AIっぽい文章を採点して人間らしく直すアプリを作ってみた
yama3133
2
190
エラーバジェットのアラートのタイミングを考える.pdf
kairim0
0
150
Featured
See All Featured
The Hidden Cost of Media on the Web [PixelPalooza 2025]
tammyeverts
2
330
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
201
75k
Bioeconomy Workshop: Dr. Julius Ecuru, Opportunities for a Bioeconomy in West Africa
akademiya2063
PRO
1
140
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
11
940
Max Prin - Stacking Signals: How International SEO Comes Together (And Falls Apart)
techseoconnect
PRO
0
180
Reflections from 52 weeks, 52 projects
jeffersonlam
356
21k
Visualization
eitanlees
152
17k
Unsuck your backbone
ammeep
672
58k
The Cult of Friendly URLs
andyhume
79
6.9k
Design of three-dimensional binary manipulators for pick-and-place task avoiding obstacles (IECON2024)
konakalab
0
460
Thoughts on Productivity
jonyablonski
76
5.2k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
3.4k
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
ご清聴ありがとうございました みなさんの回避策も 聞きたいです!