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
180
[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
96
O11?ODC?一体何が違うのさ?_v1.0.2.pdf
kata_junn
0
350
[OutSystems] O11 ユーザーに贈る ODC 移行に備えておくと良さそうなコト
kata_junn
0
150
ODC を乗りこなすために理解しておくと良いかもしれないいくつかのこと~Case:External Logic~
kata_junn
0
210
[OutSystems] Testing Framework がいい。とてもいい。
kata_junn
0
1.1k
[OutSystems] OutSystems が誘う Null がない世界の罠
kata_junn
0
710
[OutSystems] CodeceptJS で快適な E2E ライフを送ろう!
kata_junn
0
270
[OutSystems] とりあえず Reactive なプロジェクトにはこれ導入しておくと良いって規約
kata_junn
1
1.4k
[Agile][Scrum] 転リファ
kata_junn
3
8.5k
Other Decks in Technology
See All in Technology
日本語プログラミングとSpring Bootアプリケーション開発 #kanjava
yusuke
2
370
High Performance PHP
cmuench
0
120
デザインから逆算して難易度を見積もるための観点
fumiyasac0921
0
110
“自分”を大切に、フラットに。キャリアチェンジしてからの一年 三ヶ月で見えたもの。
maimyyym
0
310
ソフトウェアアーキテクトのための意思決定術: Software Architecture and Decision-Making
snoozer05
PRO
20
4.3k
【5分でわかる】セーフィー エンジニア向け会社紹介
safie_recruit
0
18k
生成AIの利活用を加速させるための取り組み「prAIrie-dog」/ Shibuya_AI_1
visional_engineering_and_design
1
120
CNAPPから考えるAWSガバナンスの実践と最適化
nrinetcom
PRO
1
410
Amazon Location Serviceを使ってラーメンマップを作る
ryder472
2
180
サーバーレスで楽しよう!お気軽に始められる3つのポイント / Have fun with Serverless!
_kensh
3
280
まだ間に合う! エンジニアのための生成AIアプリ開発入門 on AWS
minorun365
PRO
4
460
EDRからERM: PFN-SIRTが関わるセキュリティとリスクへの取り組み
pfn
PRO
0
130
Featured
See All Featured
Building an army of robots
kneath
302
45k
Rebuilding a faster, lazier Slack
samanthasiow
79
8.8k
Thoughts on Productivity
jonyablonski
69
4.4k
Java REST API Framework Comparison - PWX 2021
mraible
28
8.4k
Typedesign – Prime Four
hannesfritz
40
2.5k
The Straight Up "How To Draw Better" Workshop
denniskardys
232
140k
Faster Mobile Websites
deanohume
306
31k
Build your cross-platform service in a week with App Engine
jlugia
229
18k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
251
21k
Stop Working from a Prison Cell
hatefulcrawdad
267
20k
We Have a Design System, Now What?
morganepeng
51
7.4k
Designing on Purpose - Digital PM Summit 2013
jponch
117
7.1k
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
ご清聴ありがとうございました ご質問があれば お願いします!