Lock in $30 Savings on PRO—Offer Ends Soon! ⏳

[NDC 19] 프로그래머가 자산 관리하는 법

[NDC 19] 프로그래머가 자산 관리하는 법

NEXON Developers Conference 2019에서 마이크로토크로 발표했던 발표의 슬라이드입니다.
자산 흐름 현황을 관리하기 위해 프로그래머로서 시도했던 여러 가지 방법에 대해 소개합니다.

Chanwoong Kim

April 26, 2019
Tweet

Other Decks in Programming

Transcript

  1. 저작물 인용 저작권법 제35조의 3 ‘공정이용’ 조항에 따라 교육과 연구

    목적으로 이용하고 있습니다. 혹시 문제가 있을 경우, [email protected]로 연락 주시면 적절 한 조치를 취하겠습니다.
  2. 김찬웅 프로그래머 • 〈삼한제국기〉 • 〈Project N 퍼즐 게임〉 •

    〈야생의 땅: 듀랑고〉 • NDC 15 - 〈그룹웨어에 새 에너지를〉 • NDC 16 - 〈Find My AndPhone〉 • NDC 16 - 〈Effective Git〉 • NDC 17 - 〈왓 스튜디오 서비스파트〉 • NDC 18 - 〈만들고 붓고 부수고〉 https://chanwoong.kim kexplo
  3. 자산이란 무엇일까? • 자산 = 자본 + 부채 • 쉽게

    이야기하면 • 자본은 축적된 부를 의미하고 • 부채는 빚을 의미한다.
  4. 자산이란 무엇일까? • 자산 = 자본 + 부채 • 쉽게

    이야기하면 • 자본은 축적된 부를 의미하고 • 부채는 빚을 의미한다. (바람을 일으키는 기구가 아니다) 출처: 위키백과 `자산` 항목
  5. 나에게 자산이란? 자산 = 자본 + 부채 자산 = 축적된

    부 + 빚 자산 = 0 + 빚 나에게 자본이란 것은 (거의) 없다. 조금 비약하자면
  6. 자산 관리한다며? • 축적된 부(부동산 등)를 관리하는 것 말고 •

    정기적인 수입(월급)과 • 비정기적인 지출을 관리
  7. 사실, 부기에 관한 이야기 • 세상에는 다양한 수입과 지출 방식이

    있다 • 동료와 같이 먹은 점심을 대표로 결제했다. • 동료들에게 1/n로 받은 돈의 수입은 수익인가? • 카드 결제일은 카드를 긁은 날과 다르다 • 지출은 카드 긁은 날에 차감해야 하는가, 결제일에 차감해야 하는가? • 할부는…? Bookkeeping
  8. 가계부를 써 보셨다면… 날짜 항목 수입 지출 2019. 04. 01

    월급 받음 1,000,000 2019. 04. 02 과자 사먹음 (현금) 1,000 2019. 04. 03 옷 쇼핑 (카드) 100,000 2019. 04. 04 식재료 구입 (카드) 65,000 2019. 04. 05 점심, 2인분 결제 (카드) 10,000 2019. 04. 05 점심 값 1인분 (현금) 5,000 수입 1,005,000 지출 176,000
  9. 가계부를 써 보셨다면… • 내 가용 현금은 정확히 얼마인가? •

    다음 달 카드 값은 얼마?? • 큰돈이 빠져나가는 날은??? 날짜 항목 수입 지출 2019. 04. 01 월급 받음 1,000,000 2019. 04. 02 과자 사먹음 (현금) 1,000 2019. 04. 03 옷 쇼핑 (카드) 100,000 2019. 04. 04 식재료 구입 (카드) 65,000 2019. 04. 05 점심, 2인분 결제 (카드) 10,000 2019. 04. 05 점심 값 1인분 (현금) 5,000 수입 1,005,000 지출 176,000
  10. 가계부를 써 보셨다면… • 내 가용 현금은 정확히 얼마인가? •

    다음 달 카드 값은 얼마?? • 큰돈이 빠져나가는 날은??? 돈의 흐름을 파악하기가 힘듦 날짜 항목 수입 지출 2019. 04. 01 월급 받음 1,000,000 2019. 04. 02 과자 사먹음 (현금) 1,000 2019. 04. 03 옷 쇼핑 (카드) 100,000 2019. 04. 04 식재료 구입 (카드) 65,000 2019. 04. 05 점심, 2인분 결제 (카드) 10,000 2019. 04. 05 점심 값 1인분 (현금) 5,000 수입 1,005,000 지출 176,000
  11. 단식 부기, 복식 부기 • 앞에서 본 가계부의 형태를 단식

    부기라고 한다. • 거래가 발생한 날짜의 순서대로 나열하는 형태이기 때문에, 로그에 가깝다. • 반면, 자산과 부채, 자본의 증감 변화를 기록하는 복식 부기라는 기록 형태가 있다.
  12. 복식 부기에 대해 알아보자 • 복식 부기(複式簿記, 영어: double-entry bookkeeping)란

    경영조직에 서 외부와 거래를 할 때 거래의 주고받는 양 측면을 함께 기록함으로써 기 록의 신뢰성을 확보하고 재무상태, 재무성과 및 현금흐름 등 경영의사결정 에 필요한 다양한 재무적 정보를 제공할 수 있는 장부기록 방법을 말한다. 여기서 경영조직이란 영리를 목적으로 하는 기업은 물론 국가나 지방자치 단체와 같은 비영리조직을 포함한다. 복식부기는 흔히 차변과 대변의 대응 방식을 사용하여 거래를 기록하는 것으로 알려져 왔는데 이는 1494년 이 탈리아에서 루카 빠찌올리가 최초로 정리한 것으로 되어 있으며, 우리나라 에서는 이보다 앞서 이와 유사한 장부기록 방법인 송도사개치부법이 개성 상인들에 의해 정리되었다고 한다. 출처: 위키백과 `복식부기` 항목
  13. 복식 부기란… • 거래내역을 차변(Debit)과 대변(Credit)으로 나누어 이중으로 기록하는 장부

    기입 방식 차변 (Debit) 대변(Credit) 자산의 증가 자산의 감소 부채의 감소 부채의 증가 자본의 감소 자본의 증가 비용의 발생 수익의 발생
  14. 현금 999,000 카드 부채 100,000 비용-간식 1,000 비용-의류 100,000 항목

    금액 차변 대변 월급 받음 1,000,000 자산 증가 현금 수익 발생 월급 과자 사먹음 1,000 비용 발생 간식 자산 감소 현금 옷 쇼핑 100,000 비용 발생 의류 부채 증가 카드 항목 수입 지출 월급 받음 1,000,000 과자 사먹음 (현금) 1,000 옷 쇼핑 (카드) 100,000 수입 1,000,000 지출 101,000 복식 부기로 표현해보면
  15. 현금 999,000 카드 부채 100,000 비용-간식 1,000 비용-의류 100,000 항목

    금액 차변 대변 월급 받음 1,000,000 자산 증가 현금 수익 발생 월급 과자 사먹음 1,000 비용 발생 간식 자산 감소 현금 옷 쇼핑 100,000 비용 발생 의류 부채 증가 카드 항목 수입 지출 월급 받음 1,000,000 과자 사먹음 (현금) 1,000 옷 쇼핑 (카드) 100,000 수입 1,000,000 지출 101,000 복식 부기로 표현해보면 차변과 대변을 통해 항목별 변동 내역 파악 가능
  16. 현금 999,000 카드 부채 100,000 비용-간식 1,000 비용-의류 100,000 항목

    금액 차변 대변 월급 받음 1,000,000 자산 증가 현금 수익 발생 월급 과자 사먹음 1,000 비용 발생 간식 자산 감소 현금 옷 쇼핑 100,000 비용 발생 의류 부채 증가 카드 항목 수입 지출 월급 받음 1,000,000 과자 사먹음 (현금) 1,000 옷 쇼핑 (카드) 100,000 수입 1,000,000 지출 101,000 복식 부기로 표현해보면 자산, 지출의 상태를 쉽게 확인 가능
  17. 복식 부기를 사용하면 • 자산과 부채를 따로 관리할 수 있음

    • 각 항목이 트랜잭션 로그 • 현재 자산의 상태를 파악하는 것이 단식 부기에 비해 편리 • 수입, 지출이 아닌, 각 자산별 항목으로 관리됨 • 자산의 출처와 흐름을 알 수 있음
  18. 복식 부기는 뭐로? • 데이터가 온전히 내가 제어할 수 있는

    상태이고 싶다 • 특정 제품에 종속되는 것이 싫었음 • 내가 원하는 지표를 빠르게 보고 싶다 • PC와 모바일을 가리지 않고 사용하고 싶다 • 스마트폰과 태블릿이 흥하던 시기
  19. 첫 복식부기 • Google Sheets를 이용 • 가장 기본적인 기능을

    구현 필요한 피벗 데이터는 바로 만들어서 시각화
  20. 처음에는 만족스러웠으나… • 관리하는 자산과 부채가 늘어나면서 복잡도가 증가 •

    입력이 매우 귀찮아짐 • 이쯤 되면 숙제처럼 느껴진다 • 게다가 금융사 앱은 뭐가 그렇게 불편한지…
  21. 귀찮다 = 자동화가 필요한 시점 • 나에게 귀찮다는 것은 자동화가

    필요함을 의미 • 거래의 흐름을 자동으로 기록할 수 있다면 참 편할 것 같다
  22. 거래 입력을 쉽게 할 순 없을까? • SMS 알람이나 금융

    앱의 푸시 메시지를 가로챈다면…? • 좋은 자동 입력 시스템으로 사용할 수 있을 것 같다 • 최근에는 이 방식으로 동작하는 Android용 가계부도 꽤 있다 [Web발신] 땡땡카드0*2*승인 김*웅 1,000원 일시불 01/23 01:23 훌레이스테이션 누적 2,000원
  23. 수집한 데이터를 어떻게 모을 것인가? • 모바일에 모아 놓긴 싫다

    • PC에서 보기 위해 동기화를 해야 하는 것이 싫다 • 따로 서버를 운영하기도 싫다 • 관리 비용을 늘리고 싶지 않다
  24. Google Apps Script를 이용한다면… Serverless가 없던 시절의 Serverless (2012년도) HTTP

    POST 응답이 Sheet의 새 항목으로 입력된다 20xx. Xx. Xx XX결제 1,000 37.4020015,127.1039283
  25. 미래가 없다 • Android에 종속적 • 해외 여행을 갈 때

    로밍을 하지 않는다면 받지 못하는 알람이 꽤 있다. • 게다가 Android는 앞으로 허가 받은 App만 SMS 권한을 가질 수 있게 한다고 한다 출처: https://android-developers.googleblog.com/2019/01/reminder-smscall-log-policy-changes.html 이제 가망이 없어
  26. API를 주세요 • 프로그래머라면 API가 굉장히 익숙하다 • 금융은 왜

    API가 없는 것일까? • 한국만 그런 것일까? Application Programming Interface
  27. 해당 API를 쓰는 업체가 분명 있지 않을까? • 그 업체를

    잘 이용한다면, 마치 API 미들웨어처럼 쓸 수 있지 않을까?
  28. 마침 최근에 자산 관리 서비스가 한국에 생겼다 • 뱅X샐X드, 구글

    플레이스토어 추천을 통해서 알게 됨 • 앞에서 언급한 은행권 API를 사용하는지 확실하지 않지만 • 등록한 나의 금융 자산의 거래 내역을 한 번에 조회 할 수 있다 • 광고 아닙니다. 관계자도 아닙니다. • 저는 넥슨 코리아 소속…
  29. API처럼 써보자 • 해당 서비스가 수집해주는 금융 데이터를 내가 다시

    수집한다면? • 마치 중앙화된 금융 자산 API처럼 쓸 수 있을 것이다! • 얼마 전부터 엑셀로 Export 할 수도 있다
  30. BaaS! BankSalad as a Service 앱 실행 거래내역 동기화 모여진

    거래의 차변, 대변 분류 작업만 수동으로 거래내역 내보내기 >_
  31. 이제 데이터 수집은 쉽게 할 수 있다! • 데이터 수집은

    반자동을 이루었으니 • 복식 부기를 다루는 것에만 집중할 수 있게 됨
  32. 복식 부기를 겉핥기로 만드니 아쉽다 • 복식 부기의 모든 것을

    이해하고 만드는 것이 아니다 보니… • 새로운 거래 패턴이 생기면 새로운 기능이 필요하다 • 마치 주어진 기획서 안 보고 구현하다가 나중에 아차! 하는 것 같다
  33. 잘 만들어진 복식 부기는 없을까? • Linux 환경에서 개발하면서 느끼는

    것은, Linux Ecosystem에는 없는 거 빼고 다 있다! • 텍스트 에디터, 네트워크, 파일, 매크로, … • 분명 누군가 잘 구현해 둔 복식 부기가 있을 것
  34. 다음 조건으로 탐색 • CLI로 동작할 수 있을 것 •

    데이터 구조가 변환에 용이할 것 • 어느 정도 활성화된 커뮤니티를 가지고 있는 오픈소스 프로젝트일 것 • (당연하지만) 다양한 거래를 지원할 것 Command Line Interface
  35. Ledger https://www.ledger-cli.org/ GitHub Star가 절대적인 기준은 아니지만 이슈와 커밋 빈도,

    상세한 메뉴얼 등에서 커뮤니티가 살아있다는 느낌을 받음
  36. 데이터 포맷이 어렵지 않아 쉽게 변환 가능 시스템이 유연해서 게임

    아이템(…) 관리에 사용해도 무리 없음 출처: https://www.ledger-cli.org/3.0/doc/ledger3.html
  37. 데이터 포맷이 어렵지 않아 쉽게 변환 가능 시스템이 유연해서 게임

    아이템(…) 관리에 사용해도 무리 없음 리포트를 뽑아볼 수 있으며, 원하는 항목만 필터링 할 수 있음 출처: https://www.ledger-cli.org/3.0/doc/ledger3.html
  38. 결론 • 복식 부기, 써보지 않겠어요? • 츄라이 츄라이 •

    본인이 프로그래머가 아니라고요? • 이 슬라이드에서 다루지 않은 좋은 서비스, 도구도 많습니다.