Slack 앱을 개발하면서, 모달을 띄우는 view dict 대신 View 객체를 사용하도록 리팩토링을 진행했습니다.
사실 저는 얼마전까지만 해도 slack sdk 가 View 객체를 제공하는지 모르고 있었습니다. 그래서 매번 view 를 dict 로 작성했었는데요. 이번 글에서는 view Dict 를 View 객체로 바꾸는 과정을 공유하고, View 객체를 사용함으로써 얻은 이점에 대해 이야기하려고 합니다.
Dict 를 사용한 기존 코드
처음 Slack 앱을 개발할 때는, Slack의 모달이나 메시지 레이아웃을 정의할 때 주로 딕셔너리(dict)를 사용했습니다. 예를 들어, 유저의 예치금 상태를 보여주는 모달을 열 때 다음과 같이 작성했습니다.
await client.views_open(
trigger_id=body["trigger_id"],
view={
"type": "modal",
"title": {
"type": "plain_text",
"text": f"{user.name}님의 예치금 현황",
},
"blocks": [
{
"type": "section",
"text": {
"type": "mrkdwn",
"text": text,
},
},
],
},
)
이 코드는 기능적으로는 문제가 없지만, 블록이나 뷰의 구조가 복잡해질수록 딕셔너리를 직접 조작하는 것이 불편해지고, 실수하기 쉽다는 단점이 있었습니다. 특히, 코드 라인이 많아지기 때문에 주요 로직들을 한 눈에 파악하기는 더 어려워지죠.
View 객체로 리팩터링
Slack Bolt는 slack_sdk
의 Block 과 View 를 위한 객체 모델을 제공합니다. 이를 활용하면 코드의 가독성과 유지보수성을 크게 개선할 수 있습니다. 그래서 기존의 딕셔너리 기반 코드를 객체 기반으로 리팩토링했습니다.
리팩토링 후의 코드는 다음과 같습니다.
from slack_sdk.models.blocks import SectionBlock, DividerBlock
from slack_sdk.models.views import View
await client.views_open(
trigger_id=body["trigger_id"],
view=View(
type="modal",
title=f"{user.name}님의 예치금 현황",
close="닫기",
blocks=[SectionBlock(text=text)],
),
)
코드가 훨씬 단순해지고 한 눈에 파악하기도 쉬워졌습니다.
View 객체 사용의 장점
1. 가독성 향상: 객체를 사용하면 코드가 훨씬 더 읽기 쉽고 명확해집니다. 특히, 복잡한 레이아웃을 구성할 때 블록과 뷰를 명확하게 구분할 수 있습니다.
2. 타입 안전성: 딕셔너리를 사용하면 키와 값의 형태를 잘못 지정해도 오류가 발생할 수 있습니다. 반면, 객체를 사용하면 IDE의 자동 완성 기능을 활용할 수 있고, 코드 작성 중에 실수를 줄일 수 있습니다.
3. 유지보수 용이성: 블록이나 뷰의 구조가 변경될 때, 객체 모델을 사용하면 필요한 부분만 쉽게 수정할 수 있습니다. 딕셔너리의 중첩된 구조를 모두 파악하며 수정하는 것보다 훨씬 간편합니다.
마무리
Slack 앱 개발에서 Block 과 View 객체 사용은 코드의 품질을 높여줍니다. 특히, 협업 환경에서 코드의 가독성을 높여주죠. Slack Bolt가 제공하는 타입과 객체를 적극 활용하여 보다 쉬운 슬랙 봇 개발을 하시기 바랍니다.
'나는 이렇게 논다 > 글또 슬랙 봇 개발기' 카테고리의 다른 글
슬랙 봇으로 '채널 초대' 모달 띄우기 (0) | 2024.08.30 |
---|---|
슬랙 봇으로 나만 보이는 '관리자' 메뉴 만들기 (0) | 2024.08.29 |
Slack Block Kit 주요 블록 유형별 차이점 정리 (0) | 2024.08.17 |
개발자 글쓰기 커뮤니티는 '슬랙 봇'을 어떻게 사용하고 있을까? (0) | 2024.02.17 |
카테고리 수집하려다 슬랙 봇까지 개발해버린 건에 대하여… (4) | 2023.02.26 |