본문 바로가기
버블 개발/중급

24. Bubble Conditons (중급) : 버블 조건식, 동적 표현식을 트리거하는 조건에 대해 알아보기

by 스타트업 사업가 마르코 2023. 6. 30.

(1) Conditions의 정의

조건식(Conditions)을 사용하면 특정 질문이 yes 또는 no로 응답하는지 확인한 다음, 응답으로 조치를 취하거나 조치를 중지하거나 앱을 변경하는 메커니즘을 설정할 수 있습니다.

 

*조건식(Conditions)을 사용하기 위해서는 동적 표현식(Dynamic Expressions)의 작동 방식을 알아두는 것이 좋습니다.

동적 표현식(Dynamic Expressions)  > 바로가기

 

예시 1: 필드(filed)가 비어있을 경우 양식 제출 중지

  • 사용자가 양식을 작성했지만 필수인 필드(field)를 비워 둔 경우 조건식을 사용하여 필드가 비어 있는지 확인하고 비어 있는 경우 정보가 제공될 때까지 양식이 제출되지 않도록 할 수 있습니다.
  • 이것은 여러 가지 다른 시나리오에서 사용됩니다.

 

예시 2: yes 또는 no일 경우 스타일 변경

  • 조건식을 사용하면 표현식에서 반환된 값을 기반으로 요소(element)의 스타일을 변경할 수 있습니다.
  • 예를 들어 "사용자가 로그아웃했습니까?"라는 질문을 하여 버튼을 클릭할 수 없게 만들 수 있습니다.
  • 요소에 조건식을 배치하면 표현식이 yes 또는 no 응답을 반환하는지 여부에 따라 스타일을 변경할 수 있습니다.

 

예시 3: 트리거 중지를 위해 only when-conditons 사용

  • 조건이 yes를 반환하지 않는 경우 실행을 중지하기 위해 이미 트리거 된 워크플로우 작업에 only when-conditions가 배치됩니다. 워크플로우의 only when-conditions는 Bubble로직과 앱 보안으로써 매우 유용한 부분입니다.

 

예시 4: 필드(filed) 비어있는 경우 데이터베이스 변경 중지

  • 워크플로우에서 특정 조건에 데이터베이스를 생성하기 위해 only when-conditons를 설정하고 Create a new thing 작업을 설정했을 경우, Only when 필드의 표현식이 yes를 반환하는 경우에만 실행됩니다. 그렇지 않은 경우 Bubble은 이를 건너뛰고 워크플로의 다음 작업(있는 경우)으로 이동합니다.

 

예시 5: 워크플로우에서 Do when-conditions 사용

  • Do when-conditions는 식이 yes 값을 반환하는 경우 자동으로 트리거 되는 워크플로입니다.
  • 예를 들어 "현재 로그인한 사용자입니다"라는 질문에 예 대답이 반환될 때마다 특정 값을 실행할 수 있습니다.
  • 한 번 또는 값이 변경될 때마다 실행되도록 설정할 수 있습니다.
  • 한 번만 실행으로 설정되어 있을 경우 세션당 한 번만 실행됩니다. (페이지 로드)

 

예시 6: 백엔드 트리거 조건 사용

  • 백엔드 트리거는 조건식을 기반으로 트리거하는 워크플로이기도 하지만 백엔드 및 서버 측에서 실행되므로 모든 프런트페이지(html)와 독립적으로 실행됩니다.
  • 데이터베이스에서 변경 사항을 트리거하는 데 사용할 수 있습니다.

 

(2) 요소 조건식 (Element Conditions)

요소 조건(element conditions)은 식이 yes를 반환할 때 요소의 속성을 변경하는 데 사용됩니다.

 

요소(element) 조건 적용
요소(element) 조건 적용

요소 조건식 (Element Conditions)은 다음 두 단계로 구성됩니다.

  1. 표현식: 2번의 속성이 적용되는 시기를 정의하는 표현식 (when~)
  2. 수정되는 속성: 1번의 yes를 반환할 때 수정되는 속성, 위의 yes에서는 사용자가 로그아웃한 경우 버튼을 클릭할 수 없도록 만듭니다.
  • 스타일 변화는 동적이고 즉각적입니다. 즉, 조건식의 데이터가 변경될 때마다 요소의 스타일이 즉시 적용됩니다.
    • 동일한 요소에 여러 조건을 배치할 수 있으며 한 번에 둘 이상의 조건을 활성화할 수 있습니다.(예: 한 조건으로 버튼을 클릭할 수 없게 만들고 다른 조건으로 색상을 변경할 수 있음)
    • 충돌하는 스타일 옵션이 있는 경우, 조건을 하향식으로 읽기 때문에 제일 아래의 조건이 위의 조건을 재정의합니다.(따라서 제일 아래 조건이 마지막에 적용됨)
  • 미리 보기(when 위의 off 클릭)의 조건을 편집할 때 on/off를 클릭하여 해당 속성이 변경된 요소의 모양을 미리 볼 수 있습니다. (이는 실행 모드의 요소에 영향을 주지 않습니다. )

 

(3) 실행 모드 디버깅(Run-mode debugging)

:요소(element)가 둘 이상의 조건을 가질 수 있으므로 동일한 요소에서 여러 조건이 yes로 평가될 수 있습니다.

 

  • 요소의 동작을 이해하기 위한 조건이 포함될 때 종종 요소의 동작을 디버깅해야 합니다.
  • 디버거를 사용하여 요소를 검사하고 어떤 조건이 yes로 평가되고 요소의 모양에 어떤 영향을 미치는지 파악하는 것이 좋습니다.

 

<디버깅 모드 실행>

메인 panel의 우측 상단의 preview를 통해 앱을 실행시켜 줍니다.
preview 모드에서 하단의 slow , step by step의 모드에 진입할 수 있습니다. 그리고 진단하려는 요소(element)를 우측하단의 드롭다운메뉴에서 선택할 수 있습니다. 워크플로우의 진단을 위해서는 해당 부분의 체크박스를 클릭하여 진단하고 싶은 부분들을 기록합니다.

 

(4) Only When-Conditions (워크플로우 conditions)

특정 조건이 충족될 때만 실행되도록 워크플로 및 Action에 조건을 설정할 수 있습니다.

예를 들어 워크플로를 트리거하는 버튼이 있는 경우 버튼을 클릭할 때마다 워크플로 실행을 계속할지 여부를 확인하도록 Bubble에 지시할 수 있습니다.

only when conditions 예시
only when conditions 예시

 

  • 이 예시에서는 사용자에 대해 Admin이라는 yes/no 필드를 만들었고 현재 사용자에 대해 yes로 설정되어 있는지 확인합니다.
  • 조건이 워크플로우에 해당되면 해당 워크플로우 내의 모든 작업이 실행되지 않습니다.
  • 개별 Action에 조건을 적용하여 특정 작업이 실행되는 것을 방지할 수도 있습니다.

 

(6) 효율적인 표현식 만들기

표현식이 평가되는 방법에 대해 자세히 알아보려면 동적 표현식에 대한 글을 읽어보는 것이 좋습니다.
동적 표현식(Dynamic Expressions)  > 바로가기

 

  • 표현식은 명확한 yes 또는 no 대답에 도달할 때까지 처리됩니다.

즉, 표현식의 이전 부분이 필요한 응답을 제공하는 경우 Bubble은 나머지 부분을 평가하지 않습니다.

  • 이는 필요한 작업량을 줄여 효율성을 최적화하기 위한 것입니다.

 

1. 표현식의 최적화

: 표현식 작성방법을 신중하게 고려하여 앱을 더욱 최적화할 수 있습니다.

  • Bubble이 왼쪽에서 오른쪽으로 평가하고 필요한 것만 처리한다는 사실을 알고 있으므로 표현의 가장 빠른 부분을 처음에 배치하여 앱을 최대한 효율적으로 만들 수 있습니다.

 

2. 빠른 처리속도 예시

: 페이지에 이미 있는 정보를 기반으로 무언가를 평가하는 표현식이 일반적으로 가장 빠릅니다.

 

예시:

  • 현재 사용자가 로그인되어 있음
  • 요소가 보이거나 보이지 않음
  • 요소의 값은 X

 

3. 느린 처리속도 예시

:표현식을 느리게 만드는 것에 대한 엄격한 규칙을 설정하기는 어렵지만 몇 가지 일반적인 지침을 제공할 수 있습니다.

 

  • Do a search for와 같은 데이터베이스 작업은 서버로 전송되고 처리된 후 장치로 다시 전송되어야 하므로 표현 속도가 느려질 수 있습니다. 그리고 검색이 복잡할수록 느려집니다.
  • 장치에서 처리되는 작업은 일반적으로 매우 빠르지만 복잡한 처리를 수행하는 경우 느려질 수 있습니다. 예를 들어 수백 또는 수천 개의 항목을 포함하는 두 개의 반복 그룹이 있고 교차 연산자를 사용하는 경우(repeatinggroup1의 항목 목록이 repeatinggroup2의 항목 목록과 교차함) 완료하는 데 약간의 시간이 걸리는 프로세스로 끝날 수 있습니다.

 

효율적인 조건식에 대해 평가
효율적인 조건식에 대해 평가

 

  • 위의 예시에서는 action을 진행해야 하는지 여부를 확인하기 위해 두 가지 사항을 확인합니다.
    • 첫 번째는 Bubble이 이미 가지고 있고 클라이언트 측에서 빠르게 확인할 수 있는 정보입니다. (고객의 로그인 정보)
    • 두 번째는 서버에서 수행해야 하는 검색이므로 시간이 더 오래 걸립니다.(Task의 개수가 0 보다 큰 겨우) 위와 같이 이 표현식을 뒤에 배치하면 사용자가 로그아웃한 경우 실행되지 않으므로 마지막 단계를 확인하지 않아도 됩니다.
*표현식의 어떤 구성 요소가 가장 많은 시간을 차지할지 결정하여 더 빠른 부분이 시작 부분에 배치되도록 전략적으로 배열할 수 있습니다. 그렇게 함으로써 Bubble은 더 짧은 시간 안에 필요한 답변을 찾을 가능성이 높아집니다.

 

(7) 보안을 위한 조건식 사용

조건식은 앱 보안의 중요한 부분으로 사용하여 일부 조건이 적절한 보안을 제공하는 반면 다른 조건식은 난독화(obfuscation)만 제공한다는 것을 이해하는 것이 중요합니다.

 

1. 난독화 vs 보안

  • "난독화는 보안이 아니다"라는 문구는 보안에 대해 논의할 때 일반적이며 이는 Bubble에서도 마찬가지입니다. 난독화는 공격자(일반적으로 핵커)가 앱의 취약성을 악용하기 어렵게 만들 수 있지만, 진정으로 안전한 보안을 제공할 수는 없습니다.
  • 난독화를 하지 말아야 한다는 말은 아닙니다. 공격자가 앱의 취약성을 악용하기 어렵게 만드는 것은 항상 좋은 일이며 사용자 경험의 중요한 부분이 될 수도 있습니다.
  • 중요한 것은 고려될 수 있는 것과 고려될 수 없는 것을 인식하는 것입니다.

 

2. 요소 조건식 (element conditions)

  • 조건식을 사용하여 요소를 숨기거나 표시하거나, 클릭할 수 없거나 편집할 수 없도록 만들고/하거나 스타일을 변경하는 것은 보안을 제공하고 전달하는 일반적인 방법입니다.
  • 스타일 지정 조건을 UX의 일부로 구현하는 것이 좋지만 워크플로 실행을 중지하는 안전한 방법으로 간주해서는 안 됩니다.
  • 이는 UX 관점에서는 타당하지만 안전한 것으로 간주되어서는 안 된다는 점에 유의해야 합니다.
  • 페이지의 요소는 다운로드한 애플리케이션 코드의 일부이므로 기술에 능숙한 사용자라면 숨겨야 하는 요소를 표시하는 등 스타일을 변경하는 방법을 찾을 수 있습니다. 따라서 이것은 난독화가 고려되어야합니다.

 

3. 워크플로우 조건식 (workflow conditions)

  • 워크플로 및 Action에 조건식을 지정하는 것은 승인되지 않은 사용을 중지하는 안전한 방법이며 개인 정보 보호 규칙과 함께 보안의 핵심 부분입니다.
  • 그래도 보안을 강화하기 위해 따라야 할 몇 가지 지침이 있습니다.
  • 서버 측에서 확인할 수 있는 조건은 클라이언트 측에 의존하는 조건보다 더 안전합니다.
  • 서버와 관련된 일반적인 예는 현재 사용자의 Admin = yes와 같이 데이터베이스에서 무언가를 확인하는 것입니다.
  • Bubble은 클라이언트 장치에 의존하지 않고 이를 확인할 수 있으므로 안전하다고 볼 수 있습니다.
  • 반대의 예는 페이지에서 "요소 X가 표시됨" 또는 이와 유사한 항목을 확인하는 것입니다. 이것은 사용자 장치의 정보에 의존하며 우회하기가 더 쉽습니다.
  • 조건에 따라 여러 Action 과정이 있는 경우 각 Action에 조건이 있는 하나의 워크플로가 아니라 별도의 워크플로에 배치하면 보안을 유지하는 것이 더 쉽습니다. 이렇게 하면 변경사항이 있을 때 업데이트해야 하는 조건의 수가 최소화됩니다.
  • 조건이 제대로 작동하는지 확인하려면 다른 사용자로 앱을 테스트해봐야 합니다.