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] シン・とりあえず Reactive なプロジェクトにはこれ導入してお...
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
kata_junn
October 25, 2023
Technology
0
290
[OutSystems] シン・とりあえず Reactive なプロジェクトにはこれ導入しておくと良い規約
とりあえず Reactive なプロジェクトにはこれ導入しておくと良いって規約の"シン"版です
kata_junn
October 25, 2023
Tweet
Share
More Decks by kata_junn
See All by kata_junn
[OutSystems] ユニットテスト in OutSystems
kata_junn
0
480
O11?ODC?一体何が違うのさ?_v1.0.2.pdf
kata_junn
0
1.4k
[OutSystems] O11 ユーザーに贈る ODC 移行に備えておくと良さそうなコト
kata_junn
0
590
ODC を乗りこなすために理解しておくと良いかもしれないいくつかのこと~Case:External Logic~
kata_junn
0
460
[OutSystems] Testing Framework がいい。とてもいい。
kata_junn
0
1.8k
[OutSystems] OutSystems が誘う Null がない世界の罠
kata_junn
0
1k
[OutSystems] CodeceptJS で快適な E2E ライフを送ろう!
kata_junn
0
340
[OutSystems] とりあえず Reactive なプロジェクトにはこれ導入しておくと良いって規約
kata_junn
1
1.7k
[Agile][Scrum] 転リファ
kata_junn
3
11k
Other Decks in Technology
See All in Technology
開発チームとQAエンジニアの新しい協業モデル -年末調整開発チームで実践する【QAリード施策】-
kaomi_wombat
0
240
「AIエージェントで変わる開発プロセス―レビューボトルネックからの脱却」
lycorptech_jp
PRO
0
100
【AWS】CloudTrail LakeとCloudWatch Logs Insightsの使い分け方針
tsurunosd
0
120
Kiroで見直す開発プロセスとAI-DLC
k_adachi_01
0
130
スピンアウト講座03_CLAUDE-MDとSKILL-MD
overflowinc
0
1.2k
20260321_エンベディングってなに?RAGってなに?エンベディングの説明とGemini Embedding 2 の紹介
tsho
0
160
TUNA Camp 2026 京都Stage ヒューリスティックアルゴリズム入門
terryu16
0
200
【社内勉強会】新年度からコーディングエージェントを使いこなす - 構造と制約で引き出すClaude Codeの実践知
nwiizo
22
11k
今日から始められるテスト自動化 〜 基礎知識から生成AI活用まで 〜
magicpod
1
140
RGBに陥らないために -プロダクトの価値を届けるまで-
righttouch
PRO
0
110
スケールアップ企業でQA組織が機能し続けるための組織設計と仕組み〜ボトムアップとトップダウンを両輪としたアプローチ〜
tarappo
4
360
LINEヤフーにおけるAIOpsの現在地
lycorptech_jp
PRO
5
2.2k
Featured
See All Featured
Unsuck your backbone
ammeep
672
58k
Lightning Talk: Beautiful Slides for Beginners
inesmontani
PRO
1
490
The Power of CSS Pseudo Elements
geoffreycrofte
82
6.2k
Raft: Consensus for Rubyists
vanstee
141
7.4k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
199
73k
[RailsConf 2023] Rails as a piece of cake
palkan
59
6.4k
Jamie Indigo - Trashchat’s Guide to Black Boxes: Technical SEO Tactics for LLMs
techseoconnect
PRO
0
89
How GitHub (no longer) Works
holman
316
150k
Bash Introduction
62gerente
615
210k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
47
8k
Between Models and Reality
mayunak
2
240
How to Get Subject Matter Experts Bought In and Actively Contributing to SEO & PR Initiatives.
livdayseo
0
91
Transcript
シン・とりあえず Reactive なプロジェクトには これを導入しておくと良い規約 片野 潤一 伊藤忠テクノソリューションズ アジャイル営業推進部 Photo by
Isaac Smith on Unsplash
片野 潤一 かたのじゅんいち/かたじゅん 伊藤忠テクノソリューションズ(略称:CTC) 主業務 ローコードプラットフォーム: OutSystems の推進 - プリセールス、技術支援
- トレーニング講師、講師育成 @kata_junn kata_junn 社内活動 - 社内 OutSystems Developer 向け勉強会開催、登壇 - Webinar 企画、登壇 社外活動 - OutSystems User Group、Qiita、セミナー登壇 資格系 - OutSystems 資格全部、Certified Scrum Master、等 ティアキンまだやってます
3 Traditional だよ! 今やってるプロジェクトは… Reactive だよ! OutSystems やったことないよ!
今日の話が響きそうな属性 Reactive なアプリケーションを実装している これから Reactive なアプリケーションに関わりそう Traditional はもう飽きたな、Reactive したいな OutSystems
の規約ってどんなのか興味がある 4
Façade Action
6 “Facade(ファサード)とは「建物の正面」を意味す る。異なるサブシステムを単純な操作だけを持った Facadeクラスで結び、サブシステム間の独立性を高め る事を目的とする。 Wikipedia https://ja.wikipedia.org/wiki/Facade_%E3%83%91%E3%82%BF%E3%8 3%BC%E3%83%B3
Screen Action Server Action 画面機能を実現するための主役たち
Screen Action Server Action 画面機能を実現するための主役たち
Screen Action Server Action 画面機能を実現するための主役たち
Screen Action Server Action 画面機能を実現するための主役たち Screen Action から Server Action
呼び出しは 1 回以下
Screen Action Server Action
Façade Action
13 “Facade(ファサード)とは「建物の正面」を意味す る。異なるサブシステムを単純な操作だけを持った Facadeクラスで結び、サブシステム間の独立性を高め る事を目的とする。 Wikipedia https://ja.wikipedia.org/wiki/Facade_%E3%83%91%E3%82%BF%E3%8 3%BC%E3%83%B3
14 “Facade(ファサード)とは「建物の正面」を意味す る。異なるサブシステムを単純な操作だけを持った Facadeクラスで結び、サブシステム間の独立性を高め る事を目的とする。 Wikipedia https://ja.wikipedia.org/wiki/Facade_%E3%83%91%E3%82%BF%E3%8 3%BC%E3%83%B3 いろんな処理を捌いてくれる執事
None
Screen Action Server Action
Façade Action Screen Action Server Action
Façade Action の具体的な規約 ⚫ Screen Action と 1:1 の Façade
Action を作る ⚫ フォルダ/Action 名 ⁻ ServerActions -> [Screen 名] ⁻ [Screen 名]_[Screen Action 名]Facade ⁻ ex. HogeDetail_SaveFacade ⚫ 他細かいの ⁻ Façade Action → Façade Action 呼び出し禁止 ⁻ Server Action → Façade Action 呼び出し禁止
Façade で EU 内をレイヤードアーキテクチャ化 Screen Action Façade Action Server Action
依存の方向 再利用性 画面機能に特化したサーバーサイドロジック 共通ロジックのオーケストレータ ※同層(他の Façade)呼び出し禁止 共通ロジック ※同層(他の Service)呼び出し OK でも循環には気を付けよう 画面機能に特化したクライアント処理 バリデーションや UI ロジック 対応する Façade を呼び出す。時には再利用されることも。 △ × 〇
Façade Action の責務 ⚫ 画面機能に特化したサーバーサイドロジックの実装 ⁻ 共通ロジックに切り出す必要がないロジックを実装 ⚫ 共通ロジックのオーケストレータ ⁻
共通ロジックへのパラメータ授受 ⁻ 呼び出し順序制御 ⁻ エラーハンドリング
Façade Action を設ける利点 ⚫ Screen Action の品質一定化 ⁻ Screen Action
が呼び出す Server Action が明確になる ⁻ 規約に従うと Reactive 実装ベストプラクティスが遵守できる ⚫ 実装責務の明確化 ⁻ Screen Action、Façade Action、(非 Façade な)Server Action ⁻ 副次的に影響範囲の局所化
まとめ × FAQ
まとめ ⚫ Façade Action を設けてレイヤードアーキテクチャ化しよう! ⁻ Reactive 実装のベストプラクティスに則ることができる ⁻ Screen
Action/Façade Action/Server Action の責務を明確にできる ⚫ 具体的にどんな実装になるの?
Data Action に対応する Façade Action は作るの? ⚫ Data Action 自体が
Façade と似た責務を持つので、Façade を作っても アーキテクチャ観点では利点が少ないです。 ⚫ ただ、ユニットテストを書いているプロジェクトであれば別です。Data Action はテストできないが Façade はテストでき、かつ Facade はきち んとテストされるべきだからです。
Façade のユニットテスト、すごく大変そう… ⚫ OutSystems 公式の BDD Framework を使用するとすごく大変です。 Façade がちゃんと動くための前提条件を整える必要がありますが、
BDD は Public な Action しかテストできないのと、Mocking に弱いの で呼び出す全ての Action を把握し、事前データ準備もすべて行ってお く必要があるからです。
Façade のユニットテスト、すごく大変そう… ⚫ Façade の本質は”オーケストレーター”と”固有ロジック”であり、依存先に 興味はありません。が、 BDD だと把握しなければなりません。 ⚫ そんな状況を救い得るのが
Testing Framework。非公式だけど最高! Forge:https://www.outsystems.com/forge/component-overview/12754/testing-framework 紹介スライド:https://speakerdeck.com/kata_junn/outsystems-testing-framework-gaii-totemoii
複数の Screen Action で同じ Façade を使ってもいい? ⚫ 良いです。ロジックによりそういったことはあり得るでしょう。 その場合、Façade には使用される
Screen Action の名前を全て含める とわかりやすいと思います。 ex. HogeScreen_Save_SaveAndNext_Facade
ご清聴ありがとうございました ご質問があれば お願いします!