2 Why Design Pattern
2.1 아가일 패턴?
- 위키에 따르면, 아가일 패턴은 마름모 꼴을 연속적으로 배치한 패턴이라고 한다.
- 문서에서 다루고자하는 “Shiny” 디자인 패턴과 연관이 있는 것은 아니지만, (패션) 디자인 패턴하면 떠오르기도 하고 그냥 있어보여서 문서의 이름으로 정했다.
2.2 디자인 패턴이란?
이 문서에서의 디자인 패턴 (Design Pattern)이란, Shiny 개발에 있어서 자주 등장하는 상황에서 효과적인 코드 모음 정도로 정의하겠다.
당연히 개발에 정답은 없지만, Shiny를 깎아가다보면 특정 상황에서 더욱 효과적인 예시들이 있기에 이를 정리하여 궁극적으로는 Shiny 개발에 유지보수와 재사용성, 확장성 등 온갖 좋은 것들을 이 문서를 참고하여 누리기 위함이다.
2.3 왜 Shiny 디자인 패턴인가?
- Shiny는 R에서 근본된 프레임워크인 만큼, 퍼포먼스에 있어서 다른 웹 프레임워크에 비하면 아쉬움이 조금 있다.
- 다행히도 Shiny의 사용 환경은 이러한 오버로드가 문제 되는 경우는 많지 않지만, 그래도 때때로 최적화를 위해 몸을 비틀어야하는 순간들도 생긴다.
- 보통 JS 기반의 프레임 워크는 싱글통, 팩토리, 옵저버 등. 잘 알려진 디자인 패턴들이 있지만 Shiny는 이러한 디자인 패턴들을 적용할 수 없다는 것이 문제다.
- 그래서 보다 못해 내가 개인적으로 사용하면서 아 쩔었다. 싶은 패턴들을 있어보이게 디자인 패턴이라는 이름으로 정리하여 문서로 공유하고자 한다.
- 내가 만든 것들로만 구성되어 있으면 좋겠지만 아쉽게도 그러지는 않고, 일부는 내가 만든 것, 일부는 대학원 시절부터 쌓아왔던 자료들을 사용했다.
2.4 왜 Quarto 디자인 패턴인가?
- Quarto는 Rmarkdown을 대체하기 위한 차세대 프로젝트로, posit에서 힘을 주어 개발하고 있다.
- Rmarkdown에서 파생된 수많은 패키지들의 많은 기능이 추가되고 업데이트 되는 만큼 장점도 많지만 뭔가 정리가 되지 않은 사례가 많다.
- 가끔 디자인적으로 혹은 여러가지 사용 과정에서 얻은 경험들을 정리하려고 한다.
2.5 왜 R 디자인 패턴인가?
- 별 의미 없다. 사실 대체로 Shiny와 Quarto를 위한 패턴이다.
- 그러나 여전히 Tidyverse를 위시한 데이터 깎기용, 모델링용 (선호하진 않지만) 주요 패턴들이 있고 여러 곳에 좋은 사례들이 저장되어 있지만 찾아보기는 어려워 정리하려고 한다.
- 가능하면 Package나 Test 같은 고급 주제에 대해서도 다뤄보려고 노력하겠다.
주의
이 문서에서 다루는 코드 패턴들이 정답은 아니기에 참고만 하길 바란다.
UI 패턴에 한정하지는 않는다.
비정기적으로 업데이트 할 예정이다.
출처가 있는 경우 (Stackoverflow 등) 표기하려고 노력하겠다.
quarto books의 사용이 익숙하지 않기에 문서의 레이아웃은 계속 바뀔 수 있다.