-
Notifications
You must be signed in to change notification settings - Fork 0
/
intro.qmd
50 lines (33 loc) · 3.38 KB
/
intro.qmd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
---
title: "Why Design Pattern"
---
## 아가일 패턴?
<p style = 'align: center'>
<img src='https://upload.wikimedia.org/wikipedia/commons/thumb/0/0c/PinkArgyle.svg/400px-PinkArgyle.svg.png' width = '100px'>
</p>
- <a href = 'https://en.wikipedia.org/wiki/Argyle_(pattern)' target="_blank">위키</a>에 따르면, 아가일 패턴은 마름모 꼴을 연속적으로 배치한 패턴이라고 한다.
- 문서에서 다루고자하는 "Shiny" 디자인 패턴과 연관이 있는 것은 아니지만, (패션) 디자인 패턴하면 떠오르기도 하고 그냥 있어보여서 문서의 이름으로 정했다.
## 디자인 패턴이란?
- 이 문서에서의 디자인 패턴 (Design Pattern)이란, Shiny 개발에 있어서 자주 등장하는 상황에서 효과적인 코드 모음 정도로 정의하겠다.
- 당연히 개발에 정답은 없지만, Shiny를 깎아가다보면 특정 상황에서 더욱 효과적인 예시들이 있기에 이를 정리하여 궁극적으로는 Shiny 개발에 유지보수와 재사용성, 확장성 등 온갖 좋은 것들을 이 문서를 참고하여 누리기 위함이다.
## 왜 Shiny 디자인 패턴인가?
- Shiny는 R에서 근본된 프레임워크인 만큼, 퍼포먼스에 있어서 다른 웹 프레임워크에 비하면 아쉬움이 조금 있다.
- 다행히도 Shiny의 사용 환경은 이러한 오버로드가 문제 되는 경우는 많지 않지만, 그래도 때때로 최적화를 위해 몸을 비틀어야하는 순간들도 생긴다.
- 보통 JS 기반의 프레임 워크는 싱글통, 팩토리, 옵저버 등. 잘 알려진 디자인 패턴들이 있지만 Shiny는 이러한 디자인 패턴들을 적용할 수 없다는 것이 문제다.
- 그래서 보다 못해 내가 개인적으로 사용하면서 **아 쩔었다. 싶은 패턴들**을 있어보이게 디자인 패턴이라는 이름으로 정리하여 문서로 공유하고자 한다.
- 내가 만든 것들로만 구성되어 있으면 좋겠지만 아쉽게도 그러지는 않고, 일부는 내가 만든 것, 일부는 대학원 시절부터 쌓아왔던 자료들을 사용했다.
## 왜 Quarto 디자인 패턴인가?
- Quarto는 Rmarkdown을 대체하기 위한 차세대 프로젝트로, posit에서 힘을 주어 개발하고 있다.
- Rmarkdown에서 파생된 수많은 패키지들의 많은 기능이 추가되고 업데이트 되는 만큼 장점도 많지만 뭔가 정리가 되지 않은 사례가 많다.
- 가끔 디자인적으로 혹은 여러가지 사용 과정에서 얻은 경험들을 정리하려고 한다.
## 왜 R 디자인 패턴인가?
- 별 의미 없다. 사실 대체로 Shiny와 Quarto를 위한 패턴이다.
- 그러나 여전히 Tidyverse를 위시한 데이터 깎기용, 모델링용 (선호하진 않지만) 주요 패턴들이 있고 여러 곳에 좋은 사례들이 저장되어 있지만 찾아보기는 어려워 정리하려고 한다.
- 가능하면 Package나 Test 같은 고급 주제에 대해서도 다뤄보려고 노력하겠다.
::: {.callout-warning title="주의"}
이 문서에서 다루는 코드 패턴들이 정답은 아니기에 참고만 하길 바란다.
UI 패턴에 한정하지는 않는다.
비정기적으로 업데이트 할 예정이다.
출처가 있는 경우 (Stackoverflow 등) 표기하려고 노력하겠다.
quarto books의 사용이 익숙하지 않기에 문서의 레이아웃은 계속 바뀔 수 있다.
:::