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의 사용이 익숙하지 않기에 문서의 레이아웃은 계속 바뀔 수 있다.