대충 5년 가량 파이썬과 VBA로 엑셀 자동화, 아래아한글 자동화를 종종 다뤄본 입장에서 깨달았던, 가장 공유하고 싶은 인사이트는 바로...
업무자동화가 코딩 입문이나 기초과정보다는 훨씬 어렵다는 것이다.
(물론 엄청나게 간단하면서 효율적인 스크립트도 참 많기는 하다.)
혼자 몇 년 찬천히 삽질할 때는 잘 못 느꼈는데, 몇 번 다른 사람에게 가르쳐주려다 보니까 새삼 깨닫는다. 오랜 삽질도 자산이었다. 순식간에 지나가는 쌔한 느낌을 간과하면 항상 버그가 나타났다. 결국 잠깐 업무자동화 코드 짜려고 파이참 켰다가 한 시간 있다 보면 디버깅과 테스트, 온갖 익셉션을 다루고 있다. 오죽하면 요즘은 (말도 안 된다고 생각했던) TDD라는 개념도 배워보고 있다. 혹시 도움이 될까봐서..
결국 하다 보면 어느 지점에서 타협하게 된다.
'내가 전문 프로그래머도 아니고...'
자동화를 효율적으로 잘 짜는 방법은 한계를 인정하고 할 수 있는 만큼까지만 하는 것이라고 생각한다. 자동으로 처리 할 줄 모르겠으면 스택오버플로에다 던져놓고, 그냥 부족한 대로 용납하는 것. (그리고 다시 업무에 집중~)
어떤 문서에서든 완벽하게 돌아가는 프로그램을 만들기엔 예외가 항상 너무 많다. 왜 GUI로 감싸고, 조건부 서식을 엄격하게 두는지, 왜 엔드유저를 조금도 신뢰해서는 안되는지, 왜 결국 DBMS를 쓰게 되는지... 대부분은 깊은 고통을 동반한 후에야 여러 프로그래밍 교양서에서 읽었던 구절들 중 한 문장으로 노하우가 귀결되더라.
...내가 너무 깊이 들어온 거 아닌가? 온종일 아래아한글만 뚝딱거려도 월급 따박따박 받는 일개 회사원 나부랭이 따위가, 스스로를 너무 고급인력으로 과대평가하고 있는 거 아닌가? 이런 생각이 들기도 한다.
너무 이야기가 삼천포로 빠지고 있는 거 보니, 여기서 끊어야겠다. 하여튼 아래아한글 자동화를 알리고 싶은 사람 입장에서 아무리 파이썬의 쉬운문법 버프를 안고 가도 어려운 것이 사실이다. 오죽하면 쉽게 가르칠 방법을 알아내서 공유하는 노력보다, 고수준의 바인딩이나 잘 읽히는 API매뉴얼을 직접 만들어내는 게 효율적일 것 같다는 생각이 들기도 한다.
그걸 크게 느낀 게 최근이었다. 최근 올린 아래아한글 포스팅 중에 "특정 글자를 찾아서 진하게 만드는" 코드가 있었다. 내가 상상하는 우아한 코드는 이런 느낌이다.
target_list = Hwpdoc.find_strings_by_regex(r"^제\d장.+")
for i in target_list:
i.style.bold = True
그런데 실제 구현해본 코드는 아래와 같다... 20줄이 넘는다.
hwp.InitScan() # 탐색 초기화
장번호 = 1 # 인덱스
while True: # break 만나기 전까지 아래 과정을 무한반복할 것.
text = hwp.GetText() # 탐색시작
if text[0] == 1: # 문서끝 코드(1)이 나타나면
break # while문 종료
elif re.match(rf"^제{장번호}장", text[1].replace(" ", "")): # 원하는 문단이면
hwp.MovePos(201) # 거기로 캐럿을 옮기고
Act = hwp.CreateAction("CharShape") # "글자모양" 액션 생성
Set = Act.CreateSet() # "글자모양 액션"의 아이템셋 생성
Act.GetDefault(Set) # "글자모양 액션 아이템셋"을 현재 선택블록의 값으로 채우기
if Set.Item("Bold") == 1: # 완성된 아이템셋에서 "진하게"가 적용되어 있는지 조회
pass # 이미 진하면 패스.
else: # 그렇지 않은 경우에 한해
hwp.HAction.Run("MoveSelLineEnd") # 라인 끝까지 선택
hwp.HAction.Run("CharShapeBold") # 진하게 적용
hwp.HAction.Run("MoveLineBegin") # 캐럿 원래위치로
장번호 += 1 # 다음 장을 찾기 위해 인덱스 + 1
hwp.InitScan() # (내용수정이 생기면 탐색이 자동종료되므로) 다시 탐색초기화 실행
else: # 원하는 문자열이 아닌 경우
pass # 넘어가기
"원하는 문자열을 찾아서 진하게"라는 간단한 작업인데도 코드가 이 정도로 길고 복잡하다는 점은
별 수 없이 일반인에게, 보통 회사원에게 큰 진입장벽이 된다.
"사실 뜯어보면 별 거 없어요. 엄청 쉬워요." 라는 말은 거짓말이다. 인정한다. 어렵다.
현재 진행중인 고민이다..
'기타 > 살다 보면 또 좋은 날 오겠지' 카테고리의 다른 글
자동화를 활용했으면 하는 세대는 20대 초중반인데.. (0) | 2020.12.13 |
---|---|
만만한 사람들이 가진 최고의 무기 (0) | 2020.12.12 |
제가 뭘 했다고 번아웃일까요? (0) | 2020.12.05 |
댓글