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
kata_junn
October 25, 2023
Technology
0
250
[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
320
O11?ODC?一体何が違うのさ?_v1.0.2.pdf
kata_junn
0
1k
[OutSystems] O11 ユーザーに贈る ODC 移行に備えておくと良さそうなコト
kata_junn
0
320
ODC を乗りこなすために理解しておくと良いかもしれないいくつかのこと~Case:External Logic~
kata_junn
0
390
[OutSystems] Testing Framework がいい。とてもいい。
kata_junn
0
1.6k
[OutSystems] OutSystems が誘う Null がない世界の罠
kata_junn
0
910
[OutSystems] CodeceptJS で快適な E2E ライフを送ろう!
kata_junn
0
310
[OutSystems] とりあえず Reactive なプロジェクトにはこれ導入しておくと良いって規約
kata_junn
1
1.6k
[Agile][Scrum] 転リファ
kata_junn
3
9.7k
Other Decks in Technology
See All in Technology
CDK CLIで使ってたあの機能、CDK Toolkit Libraryではどうやるの?
smt7174
4
190
株式会社ログラス - 会社説明資料【エンジニア】/ Loglass Engineer
loglass2019
4
65k
自作JSエンジンに推しプロポーザルを実装したい!
sajikix
1
190
Firestore → Spanner 移行 を成功させた段階的移行プロセス
athug
1
500
AWSを利用する上で知っておきたい名前解決のはなし(10分版)
nagisa53
10
3.2k
共有と分離 - Compose Multiplatform "本番導入" の設計指針
error96num
2
1.2k
Evolución del razonamiento matemático de GPT-4.1 a GPT-5 - Data Aventura Summit 2025 & VSCode DevDays
lauchacarro
0
210
これでもう迷わない!Jetpack Composeの書き方実践ガイド
zozotech
PRO
0
1.1k
5年目から始める Vue3 サイト改善 #frontendo
tacck
PRO
3
230
5分でカオスエンジニアリングを分かった気になろう
pandayumi
0
260
下手な強制、ダメ!絶対! 「ガードレール」を「檻」にさせない"ガバナンス"の取り方とは?
tsukaman
2
460
職種の壁を溶かして開発サイクルを高速に回す~情報透明性と職種越境から考えるAIフレンドリーな職種間連携~
daitasu
0
170
Featured
See All Featured
Making the Leap to Tech Lead
cromwellryan
135
9.5k
Designing for humans not robots
tammielis
253
25k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
131
19k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
The Illustrated Children's Guide to Kubernetes
chrisshort
48
50k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.5k
A Tale of Four Properties
chriscoyier
160
23k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
127
53k
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.1k
The Pragmatic Product Professional
lauravandoore
36
6.9k
For a Future-Friendly Web
brad_frost
180
9.9k
Music & Morning Musume
bryan
46
6.8k
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
ご清聴ありがとうございました ご質問があれば お願いします!