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
260
[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
380
O11?ODC?一体何が違うのさ?_v1.0.2.pdf
kata_junn
0
1.1k
[OutSystems] O11 ユーザーに贈る ODC 移行に備えておくと良さそうなコト
kata_junn
0
360
ODC を乗りこなすために理解しておくと良いかもしれないいくつかのこと~Case:External Logic~
kata_junn
0
410
[OutSystems] Testing Framework がいい。とてもいい。
kata_junn
0
1.7k
[OutSystems] OutSystems が誘う Null がない世界の罠
kata_junn
0
940
[OutSystems] CodeceptJS で快適な E2E ライフを送ろう!
kata_junn
0
320
[OutSystems] とりあえず Reactive なプロジェクトにはこれ導入しておくと良いって規約
kata_junn
1
1.6k
[Agile][Scrum] 転リファ
kata_junn
3
10k
Other Decks in Technology
See All in Technology
re:Inventに行くまでにやっておきたいこと
nagisa53
0
1.1k
今のコンピュータ、AI にも Web にも 向いていないので 作り直そう!!
piacerex
0
650
LLM APIを2年間本番運用して苦労した話
ivry_presentationmaterials
10
8.4k
20251102 WordCamp Kansai 2025
chiilog
1
550
GTC 2025 : 가속되고 있는 미래
inureyes
PRO
0
150
Snowflakeとdbtで加速する 「TVCMデータで価値を生む組織」への進化論 / Evolving TVCM Data Value in TELECY with Snowflake and dbt
carta_engineering
0
160
なぜ新機能リリース翌日にモニタリング可能なのか? 〜リードタイム短縮とリソース問題を「自走」で改善した話〜 / data_summit_findy_Session_2
sansan_randd
1
120
Playwrightで始めるUI自動テスト入門
devops_vtj
0
160
激動の時代を爆速リチーミングで乗り越えろ
sansantech
PRO
1
260
AIとの協業で実現!レガシーコードをKotlinらしく生まれ変わらせる実践ガイド
zozotech
PRO
2
340
AWS re:Invent 2025事前勉強会資料 / AWS re:Invent 2025 pre study meetup
kinunori
0
1.1k
設計は最強のプロンプト - AI時代に武器にすべきスキルとは?-
kenichirokimura
1
130
Featured
See All Featured
Java REST API Framework Comparison - PWX 2021
mraible
34
8.9k
Optimising Largest Contentful Paint
csswizardry
37
3.5k
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.3k
The World Runs on Bad Software
bkeepers
PRO
72
11k
The Invisible Side of Design
smashingmag
302
51k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
Code Reviewing Like a Champion
maltzj
526
40k
Learning to Love Humans: Emotional Interface Design
aarron
274
41k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.2k
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
10
640
[RailsConf 2023] Rails as a piece of cake
palkan
57
6k
Building an army of robots
kneath
306
46k
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
ご清聴ありがとうございました ご質問があれば お願いします!