아티클

정해준

정해준

새로운 오픈 소스 ts-typekit를 소개해요.

안녕하세요 😊

오늘은 제가 최근에 시작한 오픈 소스 프로젝트 ts-typekit에 대해 가볍게 이야기해보려 해요.

ts-typekit을 시작한 이유

TypeScript를 사용하는 많은 개발자들이 공감할 수 있는 부분이지만, 내장 유틸리티 타입인 'Omit'은 때로는 예상치 못한 문제를 일으키곤 해요. 예를 들어, 존재하지 않는 키를 제거해도 오류를 발생시키지 않아 나중에 문제를 발견하고 수정하는 경우가 있죠.

또한, 기존 유틸리티 타입만으로는 원하는 타입을 만들기 어려워 커스텀 타입을 제작하는 일이 빈번한데요. 그런데, 커스텀 타입은 또 다른 컨벤션을 만들어내며, 문서화가 제대로 되어 있지 않으면 이해하는데 시간이 오래 걸리기도 해요. 이런 이유로, 아예 유틸리티 타입을 제공하는 라이브러리를 만들면 어떨까? 라는 생각에서 ts-typekit를 시작하게 되었어요.

ts-typekit의 현재와 미래

ts-typekit는 TypeScript 개발자들이 더 안전하고 유연한 코드를 작성할 수 있도록 돕는 것이 목표예요. 앞으로도 지속적으로 기능을 추가하고 개선해나갈 예정이에요. 더 다양한 유틸리티 타입을 제공하고, 피드백을 적극 반영해 기능을 개선해 나가면서 개발자들이 서로 의견을 나눌 수 있는 커뮤니티의 장으로 만들어 보려고 해요. 또한, 읽기 편안한 문서를 제공해서 사용자들이 쉽게 이해하고 활용할 수 있도록 할 계획이에요.

마치며

ts-typekit와 함께 더 나은 개발 환경을 만들어보는 것은 어떨까요?

개발을 하면서 필요하다고 생각했던 타입이 있다면, 주저하지 말고 이슈로 남겨주세요!

많은 분들의 이슈와 별을 기다리고 있으니, 한 번씩 둘러보시면 좋겠습니다!

Github

Reference

8
0
유진

유진

🕵🏻앱의 생명 주기를 같이 경험하고 배우고 싶은...

👩‍💻 안녕하세요

2018년도부터 운영해온 펀디라는 비영리 앱개발 프로젝트 스터디모임 단체 입니다

펀디9기 진행을 위한 참가자를 모집합니다

이번 펀디9기는 이전 기수와는 다르게 2025년도 포트폴리오는 기본 스터디와 예비창업패키지 참여 모두를 위한 프로젝트로 진행하게 되었습니다

​

💯 펀디9기 운영진들은 각자 23년도 24년도 예창패 통과하여 지원을 받고 사업을 진행중인분들과 청년창업사관학교 출신으로 사업 진행하고 계신분들이 회장 부회장 그리고 운영진으로 구성되다보니

​

🕵🏻 또한 운영진 외에도 전문가 세션으로 현재 팁스 운용 관계사나 투자사들과의 연대로 인해 사업계획서 작성과 IR피칭에 관하여 도움을 줄수 있는 분들도 초빙되어진 상황이다보니 처음이라 많이 미흡하겠으나 기대를 가지고 진행해보고자 합니다

🎗️ 사이드프로젝트로 재능만을 활용하여 스타트업 지분에 참여해보시죠~

🎶 많은 관심 부탁드립니다~ 🙇‍♀️

💻 포트폴리오나 스터디성으로 참여 희망 하는 참가자들로 프로젝트 진행하되 정부지원사업으로 창업에 관심있는 팀의 경우 예창패준비를 위한 지원을 별도 구성하는 내용으로 수정하였습니다

(범위가 조금 더 넓어졌을뿐 큰변화는 없습니다 🙏)

💪펀디 9기 프로젝트 팀빌딩 모집공고

https://cafe.naver.com/eofl7942/2181

6년 동안 총 25개의 웹/앱 프로젝트를 진행해온 펀디 9기 참가자를 모집합니다!

📌 세부정보

https://easytoremember.notion.site/Fun-D-9-8574e72d0a6643ffac1fd630a1e43271?pvs=4

추천인 코드 "JY"

참여하시면 기획, 디자인, 개발쪽으로 포트폴리오 제작 및 실제 프로젝트 진행을 하면서 예비창업패키지로 사업화까지 가이드해주고 있으니 많은 관심 부탁드려요~~

1
0
김주형

김주형

오늘의 스몰스텝 260 / 755

  • 지출내역을 관리하다보니 어제 스몰스텝 작성을 깜빡했습니다

    • 8월달 생산성 향상과 건강관리를 위해 식생활을 기록해봤는데.. 어마어마하게 많이 먹은거에 비해 살이 자꾸 빠져서 건강 관리를 하는데 신경썼습니다

    • 갑상선 기능 항진증과 반월상연골..?에 대한 검사가 필요하다고 하여 약 100만원을 더 벌어야 하는데.. 일을 하기 위해 돈을 벌기 위해 또 일을해서 건강관리를 하는.. 아주 이상한 사이클에 빠져있습니다

    • 저보다 훨씬 뛰어난 역량을 가진 분들도 정말 열심히 하시는데 이러지도 저러지도 못하여 많이 괴로웠습니다

    • 대신 프로젝트와 취업준비를 소홀히 했습니다

    • 스스로와의 약속을 소홀히 하여 너무나 부끄럽고 송구합니다

  • 반성하여 12시를 넘기지 않도록 노력하겠습니다..

  • 잘 되지 않을 때는 축적의 시간을 선물받아 감사할 수 있고, 잘 될 때는 최악에 대비하여 겸손할 수 있는 기회를 주신 하나님께 감사합니다

1
0
DongJun Shin

DongJun Shin

디스콰이엇에 좋은 서비스들이 너무 많다...

[세줄 요약]

  • 디스콰이엇에는 좋은 앱/서비스가 많지만 잘 알려지지 않은 것 같아 안타깝습니다.

  • 최근 한 서비스를 리뷰한 경험을 토대로, 앞으로 더 많은 디스콰이엇의 서비스들을 체험하고 리뷰하고자 합니다.

  • 리뷰 전에는 반드시 메이커의 허락을 구할 것이며, 부담스러우신 팀은 편하게 거절해도 됩니다.

안녕하세요.

본) 스타트업 전략기획자, 부) AI/노코드/경제 블로거로 활동 중인 신동준입니다.

디스콰이엇에서 많은 메이커 분들이 개발하신 좋은 앱/서비스를 혼자 이용해보다가

'헐? 이 서비스가 왜 더 잘 안되지?, 사람들은 왜 모를까?' 라는 생각을 하게 되었습니다.

그러던 중 디스콰이엇에서 처음 접한 pickyz팀의 '슈퍼알람'을 '24.09.02에 리뷰했고,

'갓생 앱'으로 키워드로 IT·컴퓨터 인기글로 노출되는 등 유명한 블로그는 아니지만 도움을 드렸다는 점에서 좋은 경험을 했습니다.

image.png

이 좋은 경험을 지속하기 위해 디스콰이엇에 올라오는 많은 서비스들을 직접 경험하고 리뷰를 하고자 합니다.

리뷰하기 전 댓글을 통해 리뷰해도 될지 문의드린 후 리뷰할 예정이고,

혹시 부담스러우신 팀은 편하게 말씀 부탁드립니다!

감사합니다!

7
4
William Jung

William Jung

철학자의 사고법

  • 철학자들은 서로 다른 생각들을 맞붙여 싸우게 함으로써 깊이 있는 이해를 도출한다.

  • 철학자 사고 과정은 아이디어를 해체하고 재구성하는 것을 포함한다.

  • 독립적인 사고는 기계적으로 아이디어를 암기하는 것과 다르다.

  • 사회적 유행과 무의식적 가정이 우리의 사고방식을 왜곡할 수 있다.

  • 독립적 사고와 사회적 수용은 대립하지만, 모두 중요하다.

5
0
Hayden

Hayden

디지털 마케팅도 식당 장사랑 다르지 않습니다

이전 글 보기
마케팅 불변의 법칙 ⓪ : 디지털 마케팅의 핵심, 측정

마케팅 불변의 법칙 ① : 답은 제품이 아니라 고객에게 있다
마케팅 불변의 법칙 ② : 마케팅은 제품이 아니라 인식의 싸움이다
마케팅 불변의 법칙 ③ : 신규 고객보다 기존 고객에 집중하라
마케팅 불변의 법칙 ④ : 우리 제품의 '팬'을 만드는 3가지 방법

마케팅 불변의 법칙 ⑤ : 입소문이 나도록 만들어라


안녕하세요. 마케터 헤이든입니다. 

어느덧 마케팅 불변의 법칙 중에서 마지막 법칙입니다.

이렇게 총 5편으로 이번 연재는 종료하겠습니다.

이번 글에서는 다섯 번째 불변의 법칙,

입소문이 나도록 만들어라!

라는 법칙과 그 방법에 대해 알아보겠습니다.

고객의 마음에 잔여 편익을 남겨라

지난 번 글에서 잠재고객 1000명보다 1명의 팬이 더 중요하다고 말씀드렸죠.

그러면서 팬을 만드는 비결 중 하나로 “안 쓰면 손해야!”라고 말하게 만들라고 말씀드렸습니다.

고객이 내는 비용보다 더 큰 가치를 제공해서 

고객이 우리 제품에 기대 이상의 가치를 느끼게 만들어야 된다는 것이죠.

고객이 ‘감동'을 하도록 만들어야 합니다.

고객이 비용을 낸 만큼, 딱 그만큼 가치를 얻었다고 생각하면, 

즉 비용 = 가치 라고 생각하면 고객은 감동을 느끼지 않아요. 

거래를 했다고 생각하고, 그 제품을 소비함과 동시에 가치를 잊어버리죠.

그 제품이 고객에게 준 가치가 등가 교환 되어서 사라지는 겁니다.

그런데 고객이 비용보다 더 큰 가치를 느끼게 되면, 

'잔여 편익'이 고객의 마음에 남게 돼요.

다들 그런 경험 해보셨죠? 식당에 갔는데 기본적인 맛도 있으면서 추가로 어떤 포인트에 감탄했을 때, 우리는 그 식당을 기억하게 됩니다. 또 가격이 생각보다 저렴한데 맛이 있다? 그러면 서비스가 별로여도 맛이 가격 대비 뛰어나기 때문에 또 기억하게 됩니다.

이처럼 고객이 지불하는 비용 대비하여서 더 큰 가치를 제공하면 고객은 감동을 느끼게 되고, 팬이 됩니다.

사람은 신기하게도, 좋은 것을 경험하게 되면 그걸 나누고 싶어합니다.

내가 좋아하는 사람, 잘 해주고 싶은 사람에게 그걸 공유하고 싶어집니다.

내가 사랑하는 사람은, 내 돈을 내서라도, 내가 경험한 걸 이 사람도 경험하도록 만들고 싶어해요.

우리는 우리 제품이 이런 존재가 되도록 만들어야 합니다.

고객이 주변 사람들을 데려오도록 만들면, 우리 제품은 절대로 망하지 않게 됩니다.

경쟁사보다 훨씬 더 빨리 성장하게 되고, 선순환 효과를 일으켜서 매출이 크게 늘어나게 됩니다.

이게 팬의 힘이고, 추천의 힘이지요.

오늘은 그러면 어떻게 이런 ‘입소문'을 내게 만들 것인가에 대해 구체적으로 알아보겠습니다.

'입소문'을 나타내는 이미지를 만들기 어려웠다..

손해를 감수하고 아낌없이 베풀어라

입소문을 내는 마케팅 불변의 법칙,

핵심이자 첫 번째는 바로 ‘아낌없이 베풀라'는 것입니다.

앞서 말씀드렸듯, 고객이 기대한 가치 이상의 무언가를 더 제공하는 것이 입소문을 내는 비결입니다.

식당으로 치면 단골 모으는 법이고, 디지털 프로덕트로 치면 우리 업계 용어로 ‘레퍼럴'이라고 하는 것이죠.

고객을 감동시키면 고객이 다른 고객을 알아서 데려옵니다.

우리는 무엇을 베풀 수 있을까요?

모든 방법을 총동원해야 합니다.

가격을 최대한 저렴하게 하는 것도 방법이겠죠? 가격 앞에 장사 없습니다.

알리, 테무가 초반에 어떻게 바이럴됐는지 기억나시나요? 

사람들이 알아서 “야, 알리 대박이더라.”, “테무 가면 뭐가 1000원이더라"하고 추천 바이럴 효과를 일으켰죠. 그걸 무의식 중에 자극하기 위해 두 회사 모두 귓속말로 속삭이며 추천해주는 콘셉트의 광고를 하기도 했고요.

경쟁사 대비해 더 저렴한 가격이나 할인을 제공하면 고객은 움직이게 됩니다.

그러나 단순 할인은 고객을 감동시키기는 어렵습니다.

대형 플랫폼처럼 50% 이상 파격 할인을 하면 고객이 가격만으로도 감동할 수도 있겠지만,

우리는 아직 영세한 스타트업이라서 그러기도 어렵죠.

섣불리 가격으로 승부를 봤다가 비용을 감당하지 못하고 망할 수도 있습니다.

당장 매출이나 투자금이 있다 하더라도, 경영은 6개월 이상의 현금흐름을 내다보고 해야 합니다.

그러면 가격 말고 무엇으로 고객을 감동시킬 수 있을까요?

우리가 어떤 ‘무료 서비스'를 제공할 수 있을지 고민해보세요.

미국의 백화점인 노드스트롬은 자신들이 취급하지도 않는 제품까지 환불해준 사례로 유명합니다.

한 고객이 자동차 타이어를 들고 와서 이것 좀 환불해달라고 하자,

노드스트롬은 패션의류 백화점으로 타이어를 팔지도 않으며 그 고객은 자신들의 고객도 아니었지만, 흔쾌히 환불해줬죠. 이는 전적으로 현장 직원의 결정이었고, 이 직원은 크게 포상을 받았으며 지금까지도 노드스트롬 직원들에게 모범 사례로 교육되고 있습니다. 노드스트롬은 ‘고객은 항상 옳다'는 슬로건을 내걸고 고객의 기대를 초과하기 위해 노력하자는 철학을 유지하고 있다고 합니다.

자사 철학을 나타내며 노드스트롬 매장에 걸려있는 타이어 조형물

마케팅 교과서들에 나오는 이런 거창한 사례가 아니어도,

아낌없이 베푸는 서비스를 제공하는 사례들은 우리 주변에서 흔하게 찾을 수 있습니다.

안경점들에서는 안경 나사를 조여주거나 렌즈를 아주 깨끗하게 닦아주는 서비스를 대부분 무료로 흔쾌히 제공합니다.

여기 서비스 좋네? 라고 생각하도록 만드는 겁니다.

고객을 한 번만 감동시키면 고객은 돌아오게 됩니다.

또 SaaS처럼 아직 대중적이지 않은 디지털 제품을 판매하는 기업들은 

무료 체험 또는 무료 컨설팅을 제공하는 경우가 많죠.

해당 분야 자체를 낯설어하는 고객이 많기 때문에 고객의 심리적인 장벽을 최대한 낮추는 것입니다.

이렇게 고객이 아무런 비용을 들이지 않고 편익만 취하도록 하는 전략은

우리에게 시간 등의 비용에서 분명히 일정 부분 마이너스이지만, 

고객이 비슷한 문제에 봉착했을 때 우리를 찾게 만드는 효과가 큽니다.

이런 전략을 택한다면, 

이렇게 잠깐 들른 고객을 어떻게 세일즈 리드로 기록해두고 나중에 전환할 수 있을지도 고민해봐야겠죠.

성공 또는 실패 경험을 공유하라

무료 세미나를 열거나 콘텐츠를 만들어서 우리의 경험과 노하우를 나누는 것도 하나의 방법입니다.

최근에 분야를 막론하고 마케팅 트렌드로 자리잡은 부분인데요.

IT 제품을 만드는 전문성이 있는 회사라면, 창업자나 팀원들이 온라인 세미나를 열어서

그동안 학습하고 실험한 내용을 공유할 수 있습니다.

사람들은 ‘다른 사람의 성공한 경험, 또는 실패한 경험'에 귀를 기울이기 마련입니다.

특히 우리가 비슷한 분야에서 고객을 유치해야 하는 회사라면, 

업계 관계자들이 관심 가질 만한 주제를 잘 선별해서 세미나를 개최하면 

시선을 모을 수 있고 B2B 리드 제너레이션도 할 수 있습니다.

여기서 역시 중요한 건, 정말 기꺼이 나누는 태도로 해야한다는 겁니다.

지식이 너무 값지다고 생각하면 몇 만원을 받는 유료 세미나로 개최할 수도 있겠죠?

그러나 이때부터 우리 회사는 교육 회사 이미지가 됩니다.

‘어, 저기는 세미나도 돈 받고 파네. 내용은 좋긴 한데. 유료 세미나는 좀…’

‘저기 요새 어렵나? 원래 제품이 잘 안 팔리나? 저런 거라도 파는구나.’

이런 이미지를 얻게 돼요.

진짜로 우리가 제품군 중 하나로 지식 콘텐츠를 가져가려는 회사나 창업자분이라면 당연히 문제 없겠지만, 우리는 지금 아낌없이 베풀면서 입소문을 내는 법에 대해 얘기하고 있죠.

우리 팬을 만들기 위해서는 인색한 태도를 보이면 안 됩니다.

무료로 나누고, 업계와 생태계에 기여하는 모습을 보여야 합니다.

커뮤니티에 기여하라

식당하시는 분들이 입을 모아 말씀하시는 게 하나 있습니다.

새벽마다 가게 앞에 청소하고 이웃 주변까지 청소하는 사장님은 100% 성공한다고요.

식당은 그 상권 전체가 살아야 우리 식당도 잘 되죠. 지역에 기여해야 나도 잘 되는 겁니다.

그러니 우리 가게 앞에만 청소하는 게 아니라 길거리까지 청소하는 걸 보면 그 사장님은 기본적인 자세가 되어있고, 가게가 잘되려면 어떻게 해야하는지를 알고 계신 것이죠.

마케팅 불변의 법칙입니다. 식당이든 디지털 제품이든 똑같습니다.

우리가 속한 시장, 업계 전체에 공헌하는 마음으로 헌신하면, 입소문이 나고 손님들이 더 많이 방문합니다.

꼭 기억하시길 바랍니다.

우리랑 비슷한 일을 하거나, 우리 고객과 교집합이 많은 집단이 모여있는 곳들이 있습니다.

요즘 말로 이런 걸 커뮤니티라고 하죠.

커뮤니티에 기여하는 것 역시 입소문 내는 좋은 방법입니다.

또 식당으로 예를 들어 보겠습니다.

우리 지역 상인회, 청년사장님 모임, 이런 데 나가서 자주 얼굴도 비추고 역할을 한다고 쳐볼게요.

누군가는 이런 활동을 탐탁치 않아 할 수 있습니다.

내 장사 하기에도 바쁜데 뭘 그런 걸 해? 관종 아니야? 한가해? 이런 소리를 듣기도 합니다.

그러나 대부분의 경우에는, 내 장사에 뭐라도 보탬이 되려고 그러시겠지요.

디지털 제품도 똑같습니다.

시간 낭비 같아도, 우리가 어떤 커뮤니티와 교집합이 있는지 잘 살펴본 다음 그 커뮤니티에 기여해보세요.

여기서 중요한 것 역시, 정말 공헌하는 마음으로 기여해야 한다는 겁니다.

모임에 나가서 맨날 자기 상품만 팔려고 하면, 결국 자산관리나 보험 파시는 분들처럼, 아 이 사람은 의도가 있어서 왔구나 하고, 다른 사람들이 멀리 하겠죠?

불변의 법칙입니다. 어디든 똑같습니다.

홍보만 하지 말고, 어떻게 하면 정말로 기여할 수 있을까 고민해보세요.

아까 말씀드렸던 것처럼, 내 성공담이나 실패담을 공유해보세요.

우선은 글로 써보고, 직접 세미나도 열어보고,

그러다보면 강의 기회가 들어오면 강의도 한 번 해보세요.

디지털마케팅에는 7차례 접점 규칙이라는 법칙이 있습니다.

고객이 우리 제품을 구매하기까지 평균 7차례 우리를 마주쳐야 한다는 겁니다.

광고든 홍보든 커뮤니티에서든, 7번 정도는 마주쳐야 그제서야 고객이 지갑을 연다는 겁니다.

그러니 우리는 어디든 기회가 있으면 눈에 띄어야 합니다.

그러나 눈에 띄려는 의도를 드러내면서 광고하듯 눈에 띄지 말고,

진정성 있게 나누는 태도로 임해야 하는 것이지요.

눈에 최대한 띄어라,

그러나 아낌없이 베풀고자 하는 진정성 있는 태도를 유지해라.

다소 상반된 듯하지만, 말씀드렸듯이 어디에서든 똑같습니다.

입장 바꿔 생각해보면, 우리도 홍보만 하는 사람들은 불편하죠.

의도가 있는 사람, 물건 팔 생각만 하는 사람은 좀 멀리하게 됩니다.

우리 스스로도 그런 사람이 되면 안 됩니다.

어, 저 사람이랑 가까이 하면 배울 게 많다.

저 사람은 여러 경험이 많고 지식이 많구나. 저 사람이 얘기하면 들어보고 싶다.

그런 호감이 먼저 형성되어야, 그 사람이 파는 제품에 지갑을 열게 됩니다.

당연해보이지만 참 어려운 것이지요.

그래서 불변의 법칙입니다.

아낌없이 베풀어라, 그러면 저절로 입소문이 퍼지게 되고, 팬과 단골이 생긴다.

꼭 기억하시길 바랍니다.

이로써, 마케팅 불변의 법칙 0~5편 연재를 마무리하게 되었습니다.

한 번 복습해보겠습니다.


가장 기본이자 0번은, 디지털 마케팅의 핵심은 측정이다.

첫 번째 불변의 법칙, 답은 제품이 아니라 고객에게 있다.

두 번째 법칙, 마케팅은 제품이 아니라 인식의 싸움이다.

세 번째 법칙, 신규 고객보다 기존 고객에 집중하라.

네 번째 법칙, 팬을 만들어라.

다섯 번째 법칙, 입소문을 내려면 아낌없이 베풀어라.

이상 다섯 가지로 마케팅에서 절대 실패하지 않는 불변의 법칙을 말씀드렸습니다.

어떠셨나요? 

조금 뻔해보여도, 글을 읽으신 분의 마음 속에 마케팅의 기본으로 오랫동안 남아서

모든 마케팅 활동의 베이스 자산이 되기를 진심으로 기원하겠습니다.

그러면 오늘도, 생각해볼 거리를 드리며 마무리하겠습니다.

1번, 우리 회사는 잠재 고객에게 무엇을 나누고 기여할 수 있을지 고민해보세요. 

너무 감이 안 온다면, 내가 짧은 강의를 만든다면 어떤 지식과 경험을 공유할 수 있을지 한 번 고민해보세요.


2번, 내가 커뮤니티나 SNS에서 팔로우하는 비슷한 업계 사람들을 한 번 살펴보세요. 

그리고 내가 그 사람들을 팔로우하면서 귀기울이는 이유가 무엇인지, 

그 사람들은 최근 1년 동안 어떤 콘텐츠를 공유해왔는지, 

한 번 입장을 바꿔서 생각해보세요.

읽어주셔서 감사합니다.

다음 글로 인사드리겠습니다.

8
8
yeji Kim

yeji Kim

대학생 학습 copilot 에딧 1주차 개발일지

1주차 개발일지

안녕하세요! 강의록/기출문제 기반 학습 copilot 에딧을 만드는 김예지입니다. 조금 늦은 1주차 개발 일지를 가져왔어요.

지난주에는

  1. 디자인 시스템을 만들었습니다. 아직 기초적인 UI라 별 건 없지만, 추후 일관된 디자인을 유지하면서도 수정이 용이할 수 있게 위젯들을 컴포넌트화하려 했어요. 테마 색상을 지정할 수 있는 소소한 기능도 넣었답니다.

  2. 서버, db와 연동하여 기본적인 CRUD 기능을 구현했습니다.

  3. PDF 뷰어를 만들고, 페이지를 로딩하거나 새로고침 버튼을 누를 때마다 OCR이 이뤄지도록 했어요. OCR 내용은 사용자가 수정하거나, 메모를 덧붙일 수도 있게 했습니다.

여기까지 만들고 보니, 어떻게 해야 강의록-교과서-기출 문제를 연결할 수 있을지 고민이 되더라구요. 양이 많기 때문에 정보들을 잘 ‘요약’하고, 이들을 잘 ‘연결‘하는 게 핵심이라는 생각이 들었습니다. (Summary&linking)

결국 한정된 자료(강의록과 교과서 pdf) 내에서 ’의미론적 검색‘을 구현하는 게 관건인 것 같습니다.(시험 문제의 발문이라는 쿼리에 대해 답이 될만한 내용을 찾아주는 것처럼요.) RAG나 searchGPT의 방법론을 많이 참고해야 할 것 같아요.

강의록과 기출 문제 기반으로만 잘 만들어둬도, 응용 가능성은 클 것 같습니다. 이번주에는 summary&linking 방법을 구상하고, 적용 직전까지 검증해보는 게 목표에요! 그 이후에는 남은 UI와 세부 기능을 구현하면 MVP는 완성할 수 있을 것 같습니다.

UI는 조금만 더 보완해서 가까운 시일에는 앱 스크린샷과 함께 가져오겠습니다! 감사합니다🙂

6
0
김우정

김우정

경쟁을 뛰어넘는 법

3.png

우리가 사는 자본주의 세상에는 경쟁의 달인들이 참 많습니다. 경쟁의 목적은 승리입니다. 그럼 궁극적인 목표는 무엇일까요? 흔히 경제적 자유를 이야기하지만, 사실 승리의 결과는 계급의 상승입니다. 법적으로 신분이 없는 사회에서 우리는 스스로 계급을 추앙하죠.

현대의 첫 번째 계급은 타고난 배경입니다. 우리가 선택할 수 없죠. 그래서 소위 흙수저 출신이 선택할 수 있는 두 번째 계급은 학벌입니다. 공부에 대한 취미가 있건 없건 명문대학에 진입하기 위해 청춘을 불태우죠. 이 무한 경쟁에서 자유로운 사람은 별로 없습니다. (댓글 링크에 계속)

1
1
손민지

손민지

이제 피그마 내려놓고 전단지 돌립니다

메이커 스프린트 1기가 끝난지도 벌써 두 달이 조금 넘었네요.

정말 우당당탕한 7,8월을 보냈는데요, 그동안 제품 만들고 팔(려고 노력)면서 느낀 점을 간단하게 소개합니다.

기회가 된다면 여러 편의 글에 나눠 하나씩 더 자세히 이야기하도록 하겠습니다.

  1. CRM? 버린다. 자동화? 버린다. 일단 얼굴보고 만나자.

    • CRM 찾기를 포기하고 시작된 카톡방 홍수 상태......가능하면 무조건 찾아뵙겠다고 하고, 미팅 후 단톡방부터 만듦. 메일 베이스의 기존 CRM은 우리 고객에게 적용할 수가 없음.....

  2. 전단지 직파의 효과가 은근 있다. 좀 부끄럽긴 한데 금방 익숙해진다.

    • 일단 발로 뛰는게 가장 응답률이 높다. 리소스를 많이 쓰더라도 사무실에 앉아서 기다리는 것보다 타율이 높음.

  3. Sales가 아니라 Help를 하자

    • 제품 사용하라고 하는 대신 6시간 동안 노션 셋업을 도와주고 옴.

    • 사실 우리가 뭘 help할 수 있을지 아직은 잘 모르겠다. 일단은 노션과 엑셀을 활용한 DT와 운영 컨설팅 정도.

    • 여전히 전환은 어렵지만 그래도 관계는 생긴다. 이 관계들을 어떻게 구매까지 끌고 나갈 수 있을까?

  4. 리드 타임의 존재를 뼈저리게 느끼는 중....

    • 스며들기(?)까지 시간이 많이 걸린다. 세일즈란 결국 스며드는 일인 걸까..?

  5. 고객들이 반응하는 것과 우리가 그들에게 필요할 것이라 여기는 것 사이에 갭이 꽤 크다. 생각보다 작은 것들로 만족하는데, 너무 작아서 우리는 그냥 스치고 지나가 버린다.

    • 그래서 고객을 만나고 오면 배의 시간을 할애해서 회고를 하라고 하나보다.

  6. 인바운드로 도입 문의가 오기까지는 최소 4번의 접촉이 필요한 것 같다.

    • 그래서 어떤 채널이 쓸모 없고 어떤 채널이 쓸모 있는지 인과 관계를 파악하기가 매우 까다롭다. 단번에 구매로 이어지는 마케팅 수단이라는 게 있을까? 일단 자주 접촉하는 것만이 유일한 방법이라고 생각….

    • 인바운드로 들어온 고객사 미팅에서 물어봤더니 1. 옛-날에 홈페이지 보고 2. 이번 업데이트 뉴스 보고 3. 인스타 DM 본 다음 4. 일주일 뒤 연락함….인스타 DM 효과 없다고 접으려고 했는데 다시 끌려왔다.

  7. 사용 의사를 내보여도, 실제로 회원 가입 안하고 회원 초대 안하고…사용은 더 안하고….어떻게 잡아다 붙잡아 놔야할까

    • 일단 실천하고 있는 방법은 릴리즈노트 주면서 왜 안쓰냐고 물어보기. 이때가 답장 제일 잘해주는 골든 타임임. 제품 개발 관련한 부분이던 유저 리서치건 이때 와다다다다 물어봐야함

    • 중요한 고객이면 자꾸 안부 묻는 척하면서 전화하기

    • 기능 개발에 필요한 유즈 케이스 카톡으로 물어보면서 안부 체크 (은근 답장 잘해줌)

    • 실내 배너랑 탁상 배너 등 혜택이나 상품 제작해서 보내준다고 하고 문제 상황 물어보기

  8. 박람회는 가장 저렴하게 Suspect를 확보할 수 있는 길이었다

    • 올해 초에 나간 박람회에서 4일동안 약 200건의 Suspect / Lead를 찾았다. 기간과 금액 대비 정말 저렴하다. 일단 얼굴을 바로 보고 설명할 수 있는게 엄청난 장점. 내년에 무조건 나간다 (근데 진짜 체력적으로 너무 힘들다…..근데 값지다……흑)

    • 업계 특성상 사장님 설득해봤자 소용없고 트레이너 개인을 설득해야 한다.

    • 근데 트레이너들은 관심이 없다….그래서 사장님 마음만 탄다…내 애도 탄다….뭐랄까 공부 못하는데 잘 할 마음도 없는 자식을 바라보는 학부모 느낌.

    • 센터에 관심있는 트레이너 1명을 뚫는 것이 중요하다. 피어 프레셔로 동료가 쓰면 사장님이 쓰라고 할 때보다 쓸 확률이 큰 것 같기도.

  9. 성공 후기를 모으는 것이 중요하다는 걸 늦게 알았다. 파트너 트레이너가 돈을 얼마나 벌었는지, 재구매가 얼마나 일어났는지 얼굴과 센터명 박힌 인터뷰 영상, 리뷰, 후기를 많이 많이 받아야 한다.

  10. 트레이너 시장 카르텔을 찾아서….

    1. MOU 맺고 인스타에 인증하고 트레이너 관련 교육 코스도 등록함.

    • 인스타 안하던 대표님 인스타 시작. 곧 카톡 프사도 바꿀 예정. 인간 개조 공장 스프린트.

    • 학연 지연 혈연 다 끌어다 써서 크고 작은 기회들을 만들고 잡아 채는 싸움인가보다.

  11. 트레이너는 교육과 마케팅에만 돈을 쓴다

    • 온라인 교육, 오프라인 세미나를 준비하고 있다. 상대적으로 제품에 관심 보일 확률이 큰 ‘교육 듣는’ 트레이너에게 접근하기 위한 방법.

  12. 직거래가 최고다.

    • 대기업 사내 헬스장 들어가려고 하다가 부러짐. 이해관계자가 여럿일 수록 어렵다. 일단 우리가 접촉해야 하는 트레이너 얼굴 한 번 보기가 말도 안되게 어려움. 신선한 야채를 저렴하게 사려면 농산물 직거래해야 하는 것처럼 직거래 해야한다.

  13. 병원, 비만 클리닉, 영양사… 고객 건강 관리가 필요한 조직에 다 연락해보려고 하는 중.

    1. 접촉면을 넓히는 것과 뾰족한 타겟에 집중하는 것 사이에서 균형 잡기가 참 어렵다. 트레이너에게만 집중적으로 세일즈해야하는 것 같기도 하고, 아닌 것 같기도 하고…..선택과 집중을 못하고 있는 건가? 우리 팀 주된 싸움 토픽 중 하나.

  14. 개척 영업을 하는 이유는 소개 영업의 소중함을 알기 위해서이다.

    • 보험왕 유튜브를 봤다. 개척 영업이라는 말을 처음으로 들었다. 그날을 기점으로 미팅나가는 틈틈이 전단지를 돌리고 있다. 소개 영업의 소중함을 느끼면서 주변 사람에게 더 적극적으로 연락해서 누구 소개시켜달라고 조르게 되는 효과가 있다.

요즘 심심하면 체험 PT를 받으러 다닙니다. 무료도 가고 돈 내고도 가요. (회당 2-3만원) 전단지 줄 때도 있고 안줄 때도 있습니다. 그러다 보면 트레이너들의 관심사를 진짜 이해하고 싶어지더라고요. 뭐가 고민이고 어떤 생각을 하고 사는지. 업무를 하면서 어떤 깨달음을 얻어 왔는지.

고객들을 어렴풋이 유형짓고 이해하기까지는 생각보다 깊은 골짜기가 있네요. 조만간 트레이너 사이의 베스트 셀러나 전자책이라도 사서 봐야겠어요 허허

덤으로 트레이너 티어를 구분할 수 있게 됐습니다. 최근에 헬스장 등록해서 OT 받았는데, 트레이너 뽑기 운이 안좋아서 좀 실망했네요…..(하지만 제 엉덩이는 불탔습니다. 최근에 서핑을 시작했는데 강사님이 힙 쓰러스트 도움된다고 열심히 해봤습니다. 저 초보긴 한데 서핑 좋아하시는 분 있다면 알려주세요 같이 고성가요….)

13
4
Richard Lim

Richard Lim

📄데이터 이력서 자랑대회 (Feat. Notion)

데이터 커리어를 꿈꾸는 취준생부터, 현업에 있는 전문가까지

모두 참여할 수 있는 데이터 이력서 자랑대회에 여러분을 초대합니다 :)

데이터와 AI가 세상을 바꾸고 있는 지금,

현재 수많은 사람들이 자신만의 커리어를 새롭게 만들거나 재정의하고 있어요.

데이터 이력서 자랑대회는 데이터 및 AI 분야에서 진심으로 커리어를 쌓고자 하는 사람들이 서로의 경험을 공유하며 함께 성장하기 위해 시작되었어요.여러분의 커리어 여정을 통해 배운 점들, 겪은 도전들, 그리고 앞으로의 목표에 대해 이력서를 통해 마음껏 자랑해 주세요.

앞으로 일주일간 매일 하루에 한번씩 이력서 자랑대회 소식을 전해드릴게요.

참여하고 싶은 분들은 👇아래의 링크를 클릭해주세요.

데이터 이력서 자랑대회

데이터 커리어를 꿈꾸는 취준생부터 현업에 있는 전문가까지 모두 참여할 수 있어요!

2
0
박서진

박서진

때론 조용한 응원이 가장 큰 힘이 된다

image.png

어제 올린 메이커로그가 하루 만에 인기 탭에 올라가고, 폭발적인 반응을 얻었다.

(물론, 오랜만에 디스콰이엇을 다시 시작한 나의 입장에서만 그렇게 느낄지도..)
다들 사업을 시작하는 마음을 아셔서 그런지,
한마음 한뜻으로 응원해 주시는 느낌이 들어 정말 힘이 났다.

오늘은 세팅이 완료되자마자 빠르게 시작할 수 있도록 비즈니스 미팅들을 최대한 많이 잡느라
댄스 플랫폼 진행 상황에는 신경을 많이 쓰지 못했다. 하지만 든든한 개발자님이 혼자 UI/UX 공부까지 하시면서 알아서 잘 준비해 주신 덕분에 다른 사업 준비에 집중할 수 있었다.

그 결과, 다행히 고객사를 확보할 수 있었고, 빠른 시일 내에 성과를 낼 수 있을 것 같다.
또한, 함께 시너지를 낼 수 있는 마케팅 에이전시 사업도 추가로 고려 중이다.
마케팅 에이전시가 가장 전문성이 필요한 영역이었기에, 이 부분을 도와줄 분들도 찾고 있다.

비즈니스 미팅이 끝나자마자 정기 미팅을 진행했는데, 나의 목표가 팀원들에게는 다소 벅차게 느껴진 것 같아 걱정이 되었다. 생각해 보니, 나는 빠르게 세팅을 완료하고 더 큰 목표를 향해 나아가려 하지만, 이런 과정을 해본 적 없는 팀원들에게는 첫 시작조차 버거울 수 있다는 생각이 들었다.

결국 정기 미팅 후에 혼란스러워하던 한 팀원이 1:1 미팅을 요청했다.


아직 우리는 시작 단계에 있고,
모두 처음 경험하는 과정이니 충분히 그렇게 느낄 수 있다고 공감했다.

앞으로 내가 어떻게 해야 이런 고민을 덜어드릴 수 있을지 더욱 집중해야겠다는 생각이 들었다.

그래서 일을 더 쉽게 만들 방법론을 모색하고, 팀원들이 쉽게 따라 할 수 있는 가이드라인을 제시하는 방향으로 진행할 계획이다. 팀원들의 부담을 덜어주기 위해선 내가 더 공부하고 더 열심히 준비해야 한다. 하나라도 놓치지 않도록 정신 바짝 차리자.

6
0
Iron Sungchul Shin

Iron Sungchul Shin

혹시 여행 좋아하세요?

안녕하세요.

세시간전을 서비스하는 모먼트스튜디오 대표 신성철입니다.

오랜만에 디스콰이엇에 글을 올리네요.

여름 휴가시즌도 지났고, 여행을 다들 좋아하시고 하시고자 하실거라 생각해

간단한 설문조사 하나 부탁드리고자 합니다.

여러분들의 잠깐의 시간이 저희 서비스에 굉장히 도움이 될 것이고,

여러분들의 이야기가 저희 뿐만 아니라 여러분들의 여행에도 도움이 될 것이라 생각하여

누구보다 작은 진심이신 여러분들께 이렇게 시간을 내어주시길 부탁드립니다.

잠깐 시간을 내어서 설문 조사에 참여해주시면 더욱 멋진 서비스로 보답드리겠습니다.

설문 조사 링크 👇🏻👇🏻

슬램덩크.png

세시간전

여행 크리에이터들의 수익화를 위한 플랫폼

2
0
정영헌

정영헌

문제 정의를 넘어 "올바른 문제 해석 및 적합한 솔루션 제시"까지

안녕하세요, Product Lover 정영헌입니다.

지난 여름방학 중에 가장 인상깊었던 활동을 고르자면, 단연 아산나눔재단에서 진행한 ‘아산 두어스 대학생 창업 부트캠프’입니다.

저의 꿈은 “전 세계 사람들이 사랑하는 프로덕트를 만드는 것”입니다. 꿈에 한 발짝 더 다가가고자, 아산 두어스에 참가해 “글로벌 시장에서 외국인 사용자를 대상으로 PMF를 찾는 경험”을 하고 싶었습니다.

5주라는 짧은 프로그램 기간 동안 해외 사용자들을 대상으로 “문제 정의 → 가설 수립 → 액션 및 검증 → 결과”라는 플로우를 경험해볼 수 있었습니다.

가장 인상깊었던 순간은 “사용자 인터뷰에서 찾은 문제를 ‘정확히 해석’해 ‘미국시장의 특성과 문화를 고려한 솔루션을 도출’한 경험”입니다.

대표적 예시로, “한국에서 온 유학생은 문화 차이 때문에 취업 네트워킹 기회에서 소외되거나 놓침”이란 사용자 문제를, 처음에는 “네트워킹을 대체하는 구직자와 기업 간 AI 매칭 솔루션”으로 풀고자 했습니다.

하지만 이는 가장 중요한 점을 놓쳤는데,

바로 미국의 시장문화적 특성을 간과한 채, "네트워킹 기회에서 소외되거나 놓침”을 “네트워킹이 문제네? 그러면 네트워킹을 대체해버리면 되지 않을까?”라고 생각한 것입니다.

자료를 찾아본 결과, 미국 대학생의 78%가 네트워킹을 통해 취업한다는 통계를 발견했습니다. 네트워킹을 통한 서로에 대한 신뢰와 추천이 이미 문화로 자리잡은 미국에서 AI를 통한 매칭이 이를 대체할 것이란 솔루션 가설은 현실성이 너무 떨어져 보였습니다.

다시 말해 문제를 잘못 해석한 결과, “AI를 통한 매칭의 신뢰성 > 네트워킹을 통한 사람 대 사람으로서의 신뢰성”이라는 잘못된 전제를 솔루션에 포함시키게 된 것입니다.

문제를 현지의 시장문화적 특성을 고려한 후 올바르게 해석한 결과, 네트워킹을 대체하는 것이 아닌 “네트워킹에 필요한 초기 탐색 비용 절감을 도와주는 구직자와 기업 간 AI 매칭 플랫폼”을 솔루션으로 제시할 수 있었습니다.

솔루션의 기대효과로 “구직자는 자신이 원하는 기업의 직무를 쉽게 찾아 네트워킹을 시도할 수 있는 기회의 폭을 늘리고, 기업은 JD에 적합한 지원자 탐색에 대한 리소스 낭비를 줄일 수 있음”을 제시했습니다.

결과적으로, “시장과 문화적 특성을 살리면 솔루션을 통해 고객에게 제공하는 가치를 더 극대화할 수 있음”을 배웠습니다.

이번 아산 두어스에서 얻은 가장 큰 자산은 문제를 정의하는 것을 넘어 “문제를 올바르게 해석하고 이에 적합한 솔루션을 제시하는 법”을 배운 것입니다.

계속 끊임없이 도전하며 성장하겠습니다. 감사합니다 :)

아산두어스3.JPG
4
0
씨마스터300

씨마스터300

“UIKit이 좋아 SwiftUI가 좋아?”, “평소에? 아니면 오늘?” (수수 TCA + SwiftUI 적용기)

수수에서 경조금을 언제 받았는지 기록하세요!

안녕하세요. 옥수수 팀에서 iOS 개발을 담당하고 있는 정다함입니다. 이 글은 옥수수 iOS 팀이 SwiftUI + TCA를 적용하기까지의 고민과, 장단점에 대해서 설명하려고 합니다.

SwiftUI는 처음이라 (SwiftUI + TCA를 선택하기 까지)

1. 기술스택 정하기 == 첫 단추 끼우기

프로젝트에서 제일 중요한 순간이 있다면, 기술 스택을 정할 때입니다. 기술 스택에 따라서 사용하는 아키텍처나 디자인 패턴 등 복합적이고도 다양한 것들이 초기에 세팅했던 기술들에 의존성이 생깁니다. 그렇기 때문에 어떤 기술을 선택해야 하는지에 대해 충분한 고민과 팀원들과 상의를 해야 합니다.

image.png

SwiftUI 와 UIKit의 기술 선택에 있어서 어떤 기술을 선택할까에 대한 질문을 했을 때 아래와 같은 장단점들을 정리할 수 있었습니다.

UIKit 장점

  1. 오래된 프레임워크이다. 우리가 구현할 많은 코드들이 인터넷에 존재할 가능성이 농후하다.

  2. 자주 써왔고 프레임워크에 대한 관성과 직관이 있다.

UIKit 단점

  1. 이미 아는 기술이라 새로운 인사이트를 느끼지 못할 수도 있다.

  2. UIKit이 SwiftUI보다 View를 만드는데 느리다.


SwiftUI 장점

  1. UIKit보다 View 만들기 쉽고 빠르다.

  2. 새로운 프레임워크를 공부할 수 있다.

SwiftUI 단점

  1. 비교적 젊은 프레임워크이다. 우리가 직면하는 문제에 답을 찾기까지 오랜 시간이 걸릴 수 있다.

  2. 처음 배우는 프레임워크

  3. 어쩌면 UIKit보다 개발기간이 오래 걸릴 수 있다.


수수 앱의 특성상 안드로이드가 이미 출시된 상황입니다. “빠른 개발을 위해서 어떤 프레임워크를 써야 하는가?”에 대한 대답은 UIKit이었습니다. 당장이라도 내일 작업을 시작해야 했다면 UIKit을 적용하는 게 맞았습니다.

하지만 수수 팀은 SwiftUI에 대한 힘을 믿었습니다. 비록 시작 단계에서는 UIKit 보다 오래 걸려도 나중에 가면 SwiftUI가 그 진가를 발휘할 것이라 생각했습니다. 또한 프로젝트를 통해서 한 단계 더 지식을 배울 수 있다는 생각도 의견도 지배적이었습니다.

(UIKit으로 auto layout 잡기 너무 힘들어요...)

image.png

2. 엄마 저는 커서 “테스트 용이, 일관된 코드, 유지보수 용이”한 아키텍쳐가 될래요(Architecture 정하기)

세상에는 정말 많은 Architecture가 있습니다. MVC, MVVM, MVP, Clean Architecture... 등등.

아키텍처를 선택함에 있어서 유연한 코드 구조, 책임 분리 두 가지를 가장 크게 염두 하였습니다. 매시브 해지는 Domain Logic과 Service Logic을 어떻게 테스트하며 관리해야 할까라는 주제는, 많은 아키텍처들이 생겨난 이유입니다. 그 해답으로서 Clean Architecture와 TCA를 고민하였습니다. 둘의 각각의 장단점이 있었는데, TCA의 가장 큰 단점은 “러닝 커브”였습니다. 아무래도 SwiftUI와 TCA를 한 번에 적용하기 위해서는 공부가 많이 필요했습니다. 하지만 “TCA의 일관된 코드 작성”, “코드 작성의 강제성 부여” 이 두 가지가 가장 크게 다가왔습니다. 사람마다 작성하는 코드 스타일도 다른 것이 후에 다른 사람 코드를 읽었을 때 어지럼증을 유발합니다. 이를 TCA의 힘으로 강제성을 부여함으로써 일관된 코드 작성을 할 수 있다고 생각했습니다. 결론적으로 TCA를 적용하면, 모두가 비슷한 스타일과 방식으로 코드를 작성하게 될 것입니다. 따라서 유지 보수와 디버깅의 작업 강도가 낮아질 것이라 생각했습니다.



image.png

TCA로 일관된 코드 작성하기

1. Component 분리를 통한 코드 재활용성 높이기

개발을 하다 보면 썼던 Component를 재사용 하는 경우가 빈번합니다. 이는 단순히 누르는 버튼부터, 복잡한 기능을 수행하는 커스텀 버튼(유저가 직접 TextField를 입력하여 선택할 수 있는)까지 재사용되는 경우가 있습니다. 수수 프로젝트에서도 비슷한 경우가 있었습니다.

아래는 그 예입니다. 순서대로

  • 단일 버튼 선택, Custom TextField를 만들 수 있음.

  • 여러 개의 버튼을 선택할 수 있음

  • 중복 버튼 선택, Custom TextField를 만들 수 없음.

image.png

image.png

image.png

TCA는 이러한 반복되는 Component와 Generic을 활용하여 우아하게 처리할 수 있습니다. 보이는 비즈니스 로직의 요구사항은 추상화 하면 다음과 같습니다.

  • 공통사항

    • CustomTextField가 존재 가능

    • Item List는 Description을 통해서 사용자에게 정보를 표시

    • 선택된 버튼이 다시 선택될 경우 선택 해제

  • 단일 선택 타입

    • 버튼을 선택하지 않으면 다음 버튼이 비활성화

  • 복수 선택 타입

    • 버튼을 선택하지 않아도 다음 버튼 활성화

위와 같은 제약 사항들은 Reducer의 initial State을 통해서 맵핑할 수 있습니다. view를 그리기 위한 아이템들과, 선택했을 때 Parent Reducer State에게 Shared할 수 있도록 만듭니다.

public struct SSSelectableItemsReducer<Item: SSSelectableItemable> {

	// code ....
  public struct State {
  /// 생성자에 모든 변수들은 @Shared처리 되어서 부모에서 Shared로 선언되어야 합니다.
  /// - Parameters:
  ///   - items: defaults아이템들을 나타냅니다. 이는 SSSelectableItemable을 따라야 합니다.
  ///   - selectedID: 선택된 아이템들의 ID(Int)를 나타내는 Shared 변수 입니다.
  ///   - isCustomItem: 사용자 입력을 통한 새로운 아이템을 받을지 여부를 나타냅니다.
  ///   - multipleSelectionCount: 몇개의 아이템이 선택가능하게 만들어 줍니다.
  ///   - regexPatternString: Custom Item을 만들 시 RegexPattern을 입력받습니다.
  ///
  ///    isCustomItem을 Nil로 할 경우 "직접 입력" 버튼이 추가되지 않습니다.
	  public init(items: Shared<[Item]>, selectedID: Shared<[Int]>, isCustomItem: Shared<Item?>, multipleSelectionCount: Int = 1, regexPatternString: String? = nil) {
	    _items = items
	    _selectedID = selectedID
	    _isCustomItem = isCustomItem
	    self.multipleSelectionCount = multipleSelectionCount
	    self.regexPatternString = regexPatternString
	  }
	  // code ...
	}
	// code ....
}
public protocol SSSelectableItemable: Identifiable, Equatable {
  var title: String { get }
  var id: Int { get }

  /// 커스텀 아이템의 Title을 변경할 때 사용합니다.
  mutating func setTitle(_ val: String)
}


또한 View의 Action이 이뤄지는 행위 또한 간단하게 처리할 수 있습니다. 이미 선택된 버튼이라면 선택을 해제하고, MultipleSelection타입에 따라서 다양한 기능을 할 수 있게 합니다.

  case let .view(.tappedItem(id)):

    // 이미 선택된 버튼일 때
    if state.selectedID.contains(id) {
      state.selectedID = state.selectedID.filter { $0 != id }
      let curSelected = state.selectedID
      return .run { send in
        await send(.delegate(.selected(id: curSelected)))
      }
    }

    // 한개의 버튼을 선택하는 화면일 때
    else if state.multipleSelectionCount == 1 {
      state.selectedID = [id]
      let curSelection = state.selectedID
      return .send(.delegate(.selected(id: curSelection)))
    }

    // 여러개의 버튼을 선택할 수 있을 때
    return .send(.inner(.multipleSelection(id: id)))

  case let .inner(.multipleSelection(id)):
    if state.selectedID.count + 1 <= state.multipleSelectionCount {
      state.selectedID.append(id)
    }
    return .run { [ curSelection = state.selectedID] send in
      await send(.delegate(.selected(id: curSelection)))
    }

아래는 각각 초기값을 init할 때의 예시입니다. 각각 상황에 맞는 Custom View를 손쉽게 만들 수 있습니다.

// 한개의 버튼을 선택할 수 있을 때
createEnvelopeSelectionItems = .init(
  items: relationHelper.defaultRelations,
  selectedID: relationHelper.selectedID,
  isCustomItem: relationHelper.customRelation,
  multipleSelectionCount: 1,
  regexPatternString: RegexPatternString.relationship.regexString // "^[가-힣|a-z|A-Z| ]{1,10}$"
)
// 여러개의 버튼을 선택할 수 있을 때

 createEnvelopeSelectionItems = .init(
  items: additionalSectionHelper.defaultItems,
  selectedID: additionalSectionHelper.selectedID,
  isCustomItem: .init(nil),
  multipleSelectionCount: 20
)

2. 복잡한 흐름 제어하기

간혹 코드를 작성하다 어려운 문제를 맞닥뜨리는 경우가 종종 있습니다. 수수 팀의 경우 Button 형 TextField 서비스 로직을 만드는 데 곤욕을 겪었습니다. 수수 팀의 Button 형 TextField의 경우 다음과 같은 순서의 요구사항이 있었습니다.

image.png

  • Empty State

    • 사용자가 아무것도 누르지 않은 경우(TextField에 아무것도 쓰여지지 않은 경우)에 “직접입력” 표시

    • 만약 선택된 버튼이 있다면, 선택을 해제시켜야 함

  • Edit State

    • 현재 입력된 TextField를 지울 수 있는 Button 표시

    • 저장하여 SavedState로 바뀔 수 있게 함

    • 정규식을 통해 문자열 정책의 위배되는 경우 저장 버튼을 누르지 못하게 방지

  • Saved State

    • 편집 버튼을 통해서 Edit State으로 이동

    • “x” 버튼을 통해 EmptyState으로 이동

버튼에 다양한 상태들이 존재했고 버튼이 현재 사용자에게 보여주는 상태마다 처리해야 할 서비스 로직과 행동이 있었습니다. TCA에서는 이러한 다양한 상태와 분기를 손쉽게 처리할 수 있었습니다.

(1) EmptyState에서 버튼을 누를 경우의 Action들

EmptyState에서 버튼을 누를 경우 Custom Item들에 대해서 초기화에 관한 로직을 수행합니다.

화면 기록 2024-09-02 오후 11.09.38.gif

case .view(.tappedAddCustomTextField):
  return .send(.inner(.startAddCustomRelation))

case .inner(.startAddCustomRelation):
  state.selectedID = []
  state.isAddingNewItem = true
  state.customTitleText = ""
  state.customItemSaved = false
  return .none

(2) EditState에서 버튼을 누를 경우의 Action들

TextField가 바뀌었을 때 regex를 검사하고 이것이 맞는지 Regex에 부합하는지 아닌지 확인합니다. 또한 SaveButton을 누를 경우 Save State로 전환합니다.
화면 기록 2024-09-02 오후 11.13.15.gif

case let .view(.changeTextField(text)):
  state.customTitleText = text
  if let regexString = state.regexPatternString,
     let regexPattern = try? Regex(regexString) {
    return !text.contains(regexPattern) ?
      .send(.delegate(.invalidText(text))) : .none
  }
  return .none

        
case .view(.tappedTextFieldSaveAndEditButton):
  state.customItemSaved.tog      gle()
  state.isCustomItem?.setTitle(state.customTitleText)
  return .none

(3) Save State에서 서비스 로직

저장 상태에서 Edit상태로 바꿀 수 있고, 또한 저장 상태에서 Default State로 넘어갈 수 있습니다.

화면 기록 2024-09-02 오후 11.14.55.gif

 case .view(.tappedTextFieldSaveAndEditButton):
  state.customItemSaved.toggle()
  state.isCustomItem?.setTitle(state.customTitleText)
  return .none
 
case .view(.tappedTextFieldCloseButton):
	state.customTitleText = ""
	if state.customItemSaved {
		state.isAddingNewItem = false
	}
	return .none

3. 다른 컴포넌트와 조합하기 쉬움

다른 컴포넌트와 Compositional하게 배치할 수 있다는 장점입니다. 수수는 TextFeild에서 10글자를 넘게 되면, Toast를 전달합니다. Parent reducer가 상기의 SUSUSeletableView와 ToastView를 연결하는 것은 정말 간단합니다. 위의 SUSUSelectableReducer는 TextField가 정규식에 맞지 않은 경우 delegateAction으로 정규식이 부합하지 않는다는 Action을 보냅니다. 이를 그림으로 그려보면 다음과 같습니다.

image.png

Show toast 를 하기 위해서 scopee된 SelectableRedcuer의 delegateAction을 처리해주면 됩니다.

@Reducer
struct ParentReducer { 

var body: some ReducerOf<Self> { 
Reduce{ state, action in 
switch action { 
//...
  case let .createEnvelopeSelectionItems(.delegate(.invalidText(text))):
    return ToastRegexManager.isShowToastByName(text) ?
      .send(.scope(.toast(.showToastMessage("경조사 명은 10글자까지만 입력 가능해요")))) : .none
// ....
}

개발해 보고 나서 느끼는 TCA 총평

장점

  • 코드 재사용률 상승(컴포넌트를 잘 만들었을 경우)

  • 일관된 코드 작성(협업 시 가독성 증가)

  • 유지보수 용이

  • 유닛테스트 작성 용이

단점

  • 보일러 플레이트 코드 증가(Button이 누르는 동작 하나 만드는 것에 새로운 Action case 도입 등…)

  • 높은 러닝 커브 (버전이 업그레이드되면서 많은 것들이 바뀌어서 옛날 자료가 많음)

  • 정해진 형식을 “무조건” 따라야 함

  • 자주 바뀌는 버전(버전을 올릴 시 migration guide를 참조하여 해결해야 함)

제가 경험해 본 TCA의 장단점을 요약하자면 다음과 같았습니다. TCA가 모든 SwiftUI의 아키텍쳐의 필수 사항은 아니지만, 일관된 코드작성과 코드 재사용률 관점에서는 메리트가 뛰어나다고 생각합니다. 이를 통해 빠른 개발도 가능했던 것 같습니다.

iOS코드가 보고 싶다면?

SwiftUI + TCA를 활용하여 SUSU가 어떻게 만들어졌는지 상세하게 알고 싶다면, 아래 GitHub을 확인해주세요!

➡️ 수수(SUSU)가 궁금할 땐

앱스토어

구글 플레이스토어

인스타 (@team.oksusu)

➡️ 이전 메이커로그 보러가기

💌경조사비, 너로 정했다!💌

수수의 What을 찾아서💰

사이드 프로젝트에서 MVI 써본 썰

Android에서 iOS(같은) DatePicker 만들어버리기

돈이 없다.. 그래서 우리는 Reactive를 선택했다. (극한의 가성비)

수수 SUSU

경조사비 관리 기록 장부 서비스

11
10
윤민석

윤민석

Mincho 프로젝트의 이번주 #6 - 작가님..9800자 쪽지보냈습니다!!

이전 글에서 문서화 작업을 하고 있다고 말씀드리고 소식이 잠시 끊겼었습니다.

이제 배포를 하기위해 문서화 작업들을 주로 하고 있어요.

  • README 파일들을 작성

  • dev.to 같은 외국 블로그에 소개하기 위한 글

  • Vanilla Extract의 커뮤니티에 소개하기 위한 글

그도 그럴만한게 저는 다른 프로젝트를 보아도 문서화에 공을 엄청나게 들이는 편입니다.

이번 프로젝트도 마찬가지입니다.

근데 제가 봐도 양과 들어간 지식의 양이 엄청나게 넓고 디테일해요...

image.png

아무래도 디자인, CSS, 각종 웹환경과 방법론, 구현체등등 글에서 다루어야 하는 내용 자체가 많다보니 제가 봐도 어색하고 퇴고가 반드시 필요하다 느꼈습니다.

그래서 다양한 곳을 통해 베타리딩을 실행하고, 피드백을 받았는데요.

EasyLogic Studio나 Flitter의 개발자님들처럼 프론트에 대한 많은 고민을 하시던 분들이 많으셔서 유용했습니다.

그리고 그 중에는 정말 감동적인 리뷰(9800자 쪽지)도 있었습니다.

제가 부족하다 느끼는 부분들을 하나하나 다 훑어주시는 엄청난 글 구성 능력자..!

image.png

사실 양이 너무 많아서 저도 대부분의 리뷰가 옳다고 느끼면서도 반영을 하지는 못했는데요.

발표자료에 쓸때도 유용한 피드백이라 레퍼런스로 계속 써도 좋겠다는 생각이 들었습니다.

이렇게 적극적인 독자분을 만날 수 있는건 행운인 것 같네요.

흠흠.. 저도 디콰 여러분에게 사소한팁을 하나 풀어보겠습니다!!

LLM을 이용해 글을 평가하고 싶을때 이렇게 해보세요.

다음 글을 읽고, 박평식처럼 평론을 해줘.

Screenshot 2024-09-01 at 01-59-09 Phind - ## 1. What is CSS in JS CSS in JS is a technique that allows you to write CSS styles directly within your JavaScript(or TypeScript) code. Instead of creating separate CSS files you can define styles along[...].png

박평식님이 별 7개라면..나름 괜찮죠??

혹시 뼈가 뿌러지고 싶을정도로 솔직한 답변을 받고 싶다면?

"신랄하게"를 넣어보십시오.

다음 글을 읽고, 박평식 스타일로 신랄하게 평론을 해줘.

저는 괜히 해봤다가 가루가 되버려서 올리지 않겠습니다 =3=3

그럼 다음주는 디콰 줌 미팅을 주제로 만나요.

- 끝 -

Mincho

디자인시스템을 위한 CSS in JS 프레임워크

2
0
마이크로팩토리

마이크로팩토리

앱 개발은 큰 틀부터, 디테일은 나중에 수정

나무가 아니라 숲 부터 보자

앱을 의뢰받아 만들다보면 특히 초기 메이커 분들은 전체적인 부분보다 디자인을 변경한다거나 픽셀을 변경하거나 하는 디테일한 부분에 집중하시는 편인거 같습니다. 아무래도 익숙하지 않고 난이도가 있다보니 그런거 같아요.

그러다보니 앱 플로우가 전체적으로 이상해질때도 있고, 누락되거나 커뮤니케이션 미스로 인한 재작업 등으로 인하여 완성도가 조금 아쉽거나 작업 시간이 길어지는 일들이 생기더라구요. 물론 의사소통에 공을 들여 최대한 해결하려고 하지만 100프로 만족을 드리긴 쉽지 않은거 같아요.

하지만 해결되는데 도울 수 있다면 모두가 이득이라는 생각이 들었습니다. 물론 근본적인 해결책도 아니고 큰 도움이 안 되겠지만, 제가 앱을 만들때 초기에 큰 틀을 잡을때 흐름을 정리해봤어요. 참고하시거나 다른 좋은 방법을 찾아서 만족스러운 결과물을 받았으면 좋겠습니다. 피드백도 환영해요! 

바탕 작업

이미 출시된 앱들 중에서 카테고리 상관 없이 편하다고 소문난 토스, 쿠팡 같은 앱들을 최대한 써보며 연구합니다. 전체적인 것들 (화면 플로우, 액션 등에서 유저 편의성과 설득성 등) 위주로 여러 사항들을 수집하며 좋은 점, 안 좋은 점, 아쉬운 점, 보완점 등을 생각해요.

요구사항 정리하기

기존에 요구사항을 정리해요 혼자 작업하는 경우에는 최대한 간단히 작업하지만 의뢰거나 다른 사람과 함께 작업하는 경우 요구사항을 대화를 하며 다시 확인하고 작성하거나 재정리 해요

제가 예전에 실무에서 만들어놓은 요구 사항을 정리해 작성한 게 있는데 반응이 좋으면 추가로 컨텐츠로 제작해서 올리겠습니다

데이터 기반으로 생각하기 (초급자는 비추천)

요구 사항을 토대로 주요 화면들의 데이터 구조를 간단히 정의하며 각 데이터가 어떤 식으로 만들어지고 이루어져있는지 생각하거나 별도로 남깁니다

갑자기 왠 데이터냐 하는 의문이 드시겠지만 사실 앱은 데이터로 이루어져 있어요 그렇다보니 데이터 기반으로 앱을 생각하는게 논리 구조상 가장 좋다고 생각합니다 물론 생각하기 어렵다거나 너무 복잡하다면 생략하셔도 좋고 개발자나 GPT 에 피드백 받으며 작업해도 좋아요

에를 들어 단순히 로그인 기능이 필수인 게시판 앱을 만들어본다고 가정해볼께요 각 게시글은 필수적으로 유저의 데이터가 포함되어야 합니다 그러면 게시판에 글을 쓰려면 유저 데이터가 먼저 등록되고 관리되어야겠죠?  이런 식으로 각 데이터가 어떤 식으로 꼬리를 물고 있는지 생각합니다.

페이지 작업

필요한 화면들을 페이지화 해요. 꼭 필요한 정보들은 보여주게 하고 필요 이상의 것들이나 필요 없다고 느껴지는 것들은 별도의 화면 구성으로 빼거나 생략하고 필수적인 화면 플로우에서 제외시킵니다.

예를 들어 상품 페이지가 있고 해당 상품 페이지에 자유롭게 넣을 수 있는 상품 설명이 있다고 가정해볼게요. 

상품 설명이 자유롭다 보니 이미지도 들어가고 텍스트도 들어가서 엄청 길 수도 있겠죠? 그런 상품 설명이 장바구니 페이지나 결제 페이지 같은 상품 데이터가 나오는 페이지에 전부 나온다면 어떨까요? 매 화면마다 꽉꽉 차서 사용성이 떨어질거에요. 

그래서 상품 상세 페이지 외에는 상품 설명이 나오지 않게 합니다. 상품 설명을 보여주는게 필요하다면 ’상세 보기‘ 같은 버튼을 만든 뒤 터치 시 상품 설명같은 상품에 부가적인 나오는 정보들이 나오는 상품 상세 페이지로 이동시켜줘요

요소 배치

화면의 각 요소의 위치를 더욱 잡아줘요. 

한 페이지에도 데이터 기반의 여러 요소가 있습니다. 같은 범주거나 이웃해야 하는 요소는 모이게 하고 다른 범주거나 이웃하지 않아야 하는 요소는 떨어트려요. 그리고 기존의 앱들이 어떻게 배치한 건지 최대한 참고하여 크게 다르지 않게 합니다. 기존 앱들과 크게 다르지 않게 하여 유저들에게 익숙함을 줘서 피로하지 않게 하기 위함이에요. 물론 기획에 따라 새로움을 계속 줘야하는 경우는 예외입니다.

예를 들어 게시판 기능을 구현한다고 하면 글에 대한 정보, 글쓴이의 정보, 댓글의 정보, 댓글을 쓴 사람의 정보 등으로 나눠질거 같아요. 제목은 제일 먼저 배치한 뒤 닉네임, 프로필 사진 등의 글쓴이의 정보, 글쓴 시간, 글의 내용, 댓글 섹션, 댓글의 내용과 댓글을 쓴 유저의 정보 등을 기존의 앱들을 참고하고 필요한 정보는 모으거나 떨어트려줍니다. 

상호 작용

각 요소들의 상호작용을 생각해요. 어디를 누르면 어떻게 반응한다 라는 것을 최대한 직관적이고 편리하게 합니다. 

예를 들어 어떤 요소(버튼이나 아이템)을 누르면 다른 페이지로 이동한다던지, 상,중, 하단에 모달 창이 뜬다 던지 하는 것들입니다. 

일반적으로 앱이 크게 복잡하거나 특이한게 없다면 각 요소 터치 시 페이지 이동을 위주로 편의성과 설득력을 생각하는 편 이에요.

예를 들어 게시판 앱의 경우 글쓴이의 유저 정보를 모아놓은 섹션이 있다면 해당 정보를 터치 시 글쓴이 정보 페이지로 이동시켜요. 글쓴이의 유저 정보, 글쓴이가 쓴 글, 댓글 리스트를 보여주는 페이지를 구성하여 보여줍니다.

3
0
[삭제된 사용자]

UI 디자인: 새로움과 익숙함 사이의 고민

📸 감성 사진을 쉽고, 자연스럽게

‘퓨리즘 (purithm)’은 일상 사진을 자연스럽고 감성적인 사진으로 만들어주는 필터 앱인데요.

기획자, 디자이너, 개발자로 구성된 저희 팀은 2개월간 퓨리즘 이용자들이 예쁜 사진을 더 쉽게 탐색할 수 있는 방법을 고민했어요.

이번 글에서는 디자이너인 제가 퓨리즘의 사용성을 높이기 위해 고민했던 부분을 공유하려고 합니다!😊

🎨 필터 앱을 만들게 된 계기

기획자 한나

저는 평소에 예쁜 필터를 찾아 각종 sns와 필터 앱을 돌아다니는 필터 유목민이었어요. 필터 작가마다 보정 스타일이 달라 구경하는 재미가 쏠쏠했지만, 원하는 필터를 찾아 이곳저곳을 헤매는 게 번거로웠죠. 그래서 '필터 모음집'이라는 아이디어를 떠올렸습니다! 필터 작가들의 작품을 한 공간에서 모아볼 수 있게 하는거죠. 이 초기 아이디어를 바탕으로 ‘IT 개발 동아리, CMC’ 에서 기획 발표를 했고, 저와 뜻이 맞는 디자이너, 개발자들과 ‘퓨리즘’을 만들게 되었답니다. 현재 출시된 버전은 MVP 단계로, 팀원들이 직접 필터 작가가 되어 20개 이상의 예쁜 필터를 만들었어요. 앞으로는 기능 개선과 함께 다양한 필터를 꾸준히 업데이트 할 예정이에요!

여기까지 퓨리즘의 기획 배경입니다!

정리하자면, 퓨리즘의 핵심 가치는 ‘필터의 다양성’이에요.

디자이너인 저는 이 가치를 사용자들에게 전달하기 위해 여러 디자인 챌린지 과정을 거쳤는데요🧐

그중 [필터 상세페이지 개선] 과정을 소개해 드릴게요.

🖼️ 필터의 매력을 더 잘 보여주는 상세 페이지 UI

1. 기존 필터 앱의 상세 페이지 UI, 이게 최선일까?

설문조사를 통해 필터 이용자들이 텍스트 정보(후기, 필터 소개글)보다는 이미지 정보(원본 사진 비교, 예시 사진 보기)에 집중한다는 사실을 알게 되었어요.

스크린샷 2024-09-02 오후 5.52.47.png

이에 따라 이미지에 집중할 수 있는 상세 페이지 UI를 고민했죠.

대부분의 필터 앱은 사진과 텍스트를 번갈아 보여주는 '세로 스크롤' 형태의 UI를 사용하고 있는데요.

하지만 저는 기존의 세로 스크롤 UI(👇)가 정말 최선인지 의문이 들었어요🧐🧐

스크린샷 2024-09-02 오후 7.15.19.png

2. 일상에서 아이디어 찾기

더 나은 방법을 고민하던 중, 아이폰의 기본 사진첩에서 영감을 얻었습니다.

[사진을 페이지에 가득 채우는 방식]이었죠.👇

스크린샷 2024-09-02 오후 6.36.56.png

필터 소개글이나 후기와 같은 부가적인 정보는 따로 두고, 사진 자체에만 집중하게 만들었어요.

또한 인터랙션 기능을 통해 보정 전후 사진을 비교하거나 필터가 적용된 예시 사진들을 쉽게 볼 수 있도록 했습니다.

3. 가설 검증을 위한 A/B 테스트

가설

핸드폰의 기본 사진첩처럼

[사진을 페이지에 가득 채워 보여준다면]

이미지 정보를 더 쉽게 탐색할 수 있을 것이다.

하지만 걱정되는 부분도 있었어요.

‘사진 위주의 UI를 보고 필터에 대한 정보가 부족하다고 느끼지는 않을까?’

‘사용자들이 인터랙션 기능을 쉽게 사용할 수 있을까?’

제가 세운 가설을 검증하기 위해 A/B 테스트를 시행했어요.

첫 번째는 제가 만든 새로운 UI, 두 번째는 기존 필터 앱과 비슷한 세로 스크롤 형태의 UI에요.

스크린샷 2024-09-02 오후 6.33.45.png

결과적으로 첫 번째 UI가 더 많은 투표를 받았어요!!👍

첫 번째를 뽑은 이유로는 ‘사진을 크게 볼 수 있어서 좋아요, 보정 전후 비교를 쉽게 할 수 있어 좋아요’ 등이 있었어요. 특히 ‘원본 비교 기능’에 긍정적인 반응을 보였답니다.

그리고 ‘필터 정보가 부족하다고 느끼진 않을까?’라는 우려는 다행히 기우에 불과했어요.

오히려 두 번째 UI를 보며 ‘글은 어차피 안 읽어요, 글이 오히려 사진 탐색을 방해하는 것 같아요’ 등의 피드백을 했어요.

4. 사용자 피드백 바탕으로 디자인 개선하기

A/B 테스트를 통해 가설 검증에 성공했지만, 보완할 점이 산더미였어요🫠

그중 가장 큰 페인포인트는 사용자들이 인터랙션 기능에 익숙하지 않다는 것이었어요.

상하로 스와이프하면 필터가 적용된 예시사진들을 볼 수 있도록 했는데요.

왼쪽에 인디케이터 컴포넌트를 넣으면 당연히 상하 스와이프 기능을 인지할 거라고 생각했는데, 그게 아니었어요.

그래서 페이지네이션 컴포넌트를 상단에 배치해 스와이프 기능을 더 쉽게 인지할 수 있도록 했어요.

가독성도 함께 개선했어요.
사진을 크게 보여주다 보니 텍스트 요소들을 둘 여백이 부족했어요.

그래서 사진 위에 텍스트를 배치하고 shadow로 가독성을 보완했는데요.
하지만 사용자들은 사진 위에 텍스트가 있다는 것을 바로 인지하지 못하더라구요. (히트맵에도 터치가 아예 없는게 보이죠?👇😂)
그래서 불필요한 정보(‘맑은 날에 어울려요’와 같은 필터 설명 문구)를 빼고 그 자리에 후기와 작가의 필터소개글을 배치했어요.

스크린샷 2024-09-02 오후 6.12.08.png

📝 레슨런

1. 새로움과 익숙함의 밸런스 맞추기

새로운 경험을 제공하려는 노력은 중요하지만, 익숙함을 무시해서는 안 된다는걸 배웠어요.

예를 들어, 사진에 집중할 수 있는 UI를 만들면서도, 사용자들이 정보와 기능에 쉽게 접근할 수 있도록 직관적인 컴포넌트를 사용하거나 정보를 적절하게 그룹핑하는 것이죠.

이처럼 새로운 디자인을 사용자 경험에 자연스럽게 녹아들게 하는 것이 중요함을 알았습니다!

2. 검증을 통해 확신 얻기

검증되지 않은 디자인은 위험을 수반할 수 있지만, 이를 피드백과 테스트를 통해 보완할 수 있었어요.

A/B 테스트를 통해 새로운 UI가 사용자들에게 긍정적으로 받아들여질지 확인했으며, 이 과정에서 얻은 피드백을 반영해 디자인을 더욱 개선할 수 있었습니다.

테스트를 반복하고 데이터를 기반으로 판단함으로써 디자인에 대한 확신을 키울 수 있었어요.

📈 퓨리즘의 개선 계획

기본부터 챙기기

현재는 사용자가 필터 보정값을 일일이 적용해야 하는데요👇

스크린샷 2024-09-02 오후 6.39.48.png

퓨리즘의 첫 데모데이에서 방문객들이 이 점을 가장 불편하게 여기는 것을 발견했어요.

이런 번거로움이 사용자에게 큰 허들이 된다는걸 저희 팀 모두가 동의하고 있답니다😂

그래서 앞으로는 사용자들이 앱 내에서 자신의 사진에 필터를 바로 적용할 수 있도록 할 예정이에요!

퓨리즘의 업데이트 기대해주세요!📸🫧🫧

자세한 디자인 과정이 궁금하다면?👇

4
5
Nocoder

Nocoder

[전달완료, 마감] AI 자동화 사례 50개 공유해요!

인원초과로 마감합니다!

아직 못 받으신 분들은 노코더 뉴스레터를 참고해주세요!

10분 투자해서 앞으로 (같은) 일하지 마세요!

제목 추가 (13).png

AI를 가장 잘 활용하는 방법은 무엇일까에 대해서 고민을 많이 했어요.

누구나 AI로 돈을 벌 수 있다는 것은 확신할 수 없었지만,

누구나 AI를 이용해서 시간을 벌 수 있을 것이라는 확신을 얻을 수 있었어요.

이번에는 개발자든, 개발자가 아니든, 직장인이든, 프리랜서든 활용할 수 있는 자동화 사례 모음집을 공유드릴게요!

자동화 워크플로우, 필요한 도구들, 몇몇 데모까지 담았습니다.

  1. 이 포스트를 업보트해주세요.

  2. 댓글에 "노코더 메이커 클럽"이라고 남겨주세요.

다음 주 월요일까지 전달드릴게요!

우리 모두 AI에게 일시키고 시간을 벌어봐요 :)

54
75
완주손

완주손

너무 많은 데이터.. 원하는 파일 찾는 게 너무 힘들다면?

여러분은 필요한 자료가 있을 때 어떻게 찾으세요?

아무리 파일을 잘 정리해도, 필요한 자료가 생겼을 때 바로 찾기란 쉽지 않은 일입니다.

특히 윈도우는 기본 파일 탐색기가 로딩도 길고, 원하는 정보를 찾기 어렵기 때문에 효율이 떨어지는 경우가 많습니다.

image.pngWindows 파일 탐색 너무 불편..

저는 이런 문제를 해결하기 위해 Windows 무료 앱인 'Everything'을 이용합니다.

Everything

Everything은 컴퓨터에 있는 데이터를 효과적으로 검색하고 관리할 수 있는 툴입니다.

image.png(저는 Everything을 ctrl+alt+space에 매핑해두고, mac의 spotlight처럼 활용하고 있습니다)

Everything을 설치하면 MFT의 변경사항을 실시간으로 모니터링 하여,

파일 및 폴더를 수정하거나 추가할 때 즉시 업데이트 됩니다.

덕분에 방대한 데이터도 즉시 검색이 가능합니다.

👀 Everything 장점 정리

✅ 인덱싱에 의존하는 기본 검색과 달리, 검색 결과가 매우 즉각적이다.

✅ 최소한의 리소스를 사용하여 컴퓨터 성능에 영향을 주지 않는다.

✅ 무료로 사용 가능하다.


저도 Everything을 쓰고 훨씬 업무 효율이 좋아졌습니다.

하지만 여전히 해결되지 않은 부분이 하나 있습니다.

다양한 작업을 하다 보면 여러 저장소에 데이터가 흩어져 있는 경우가 많습니다.

이로 인해 필요한 자료가 어디에 있는지 헷갈릴 때가 많습니다.

메일이었나? 노션? Teams? Slack? Loop..?

이런 경우에는 각각의 플랫폼을 따로 검색해야 하다 보니,

쓸데없이 시간을 많이 뺏기게 되었습니다. 파일이 어디에 있는지 찾기도 어렵고요.

image.png입사 초반에 가장 많이 했던 고민 Top 1

실제 직장인 업무 시간의 25%를 파일과 콘텐츠를 찾는데 사용한다고 합니다.

출처: McKinsey 2013, The social economy: Unlocking value and productivity through social technologies USA- Yankelovich, Skelly, & White, Inc. Source: Adobe, International Labor Organization; U.S Bureau of Labor Statistics; Business Software Alliance

이 문제만 해결해도 업무 효율이 크게 개선될 수 있다고 판단했습니다.

자료를 찾는 데 소모되는 시간을 줄이면, 더 중요한 일에 집중할 수 있는 시간이 늘어나기 때문입니다.

그래서 저희 팀은 ‘Optain’으로 이 문제를 해결하고자 합니다.

Optain은 사용하면 여러 플랫폼에 분산된 자료를 한 번에 검색할 수 있어, 시간을 절약하고 업무 효율을 크게 높일 수 있습니다.

Optain

image.png위의 이미지와 같이 원하는 프로그램을 연동시켜주면,

image.png로컬 데이터와 클라우드 데이터, 메일 등을 한 번에 검색할 수 있습니다.

쉽게 말해 ’Everything + 클라우드 데이터‘라고 생각하시면 됩니다.

Optain은 현재 Waitlist를 모집하고 있습니다.

관심 있으신 분들은 아래 웹사이트에서 Waitlist 등록해주시면 감사하겠습니다.

(Waitlist를 등록해주시면 Beta 버전이 나왔을 때, 빠르게 알려드리도록 하겠습니다)

데이터와 자료를 많이 다루시는 분들이라면 Optain이 특히 유용하실 거라 생각합니다.

특히, 디스콰이엇 이용하시는 분들은 많은 데이터와 자료를 다루실 거라 생각하여,

꼭 여러분의 소중한 의견과 솔직한 피드백을 듣고 싶습니다.

커피챗을 주셔도 되고 댓글을 남겨주셔도 됩니다.

무엇이든 남겨주시면 성심성의껏 답변드리겠습니다.

감사합니다!

3
0
김경환

김경환

스케줄러 앱 글로벌 피처드 소식 🌏

thumbnail.jpg

작은 앱 '스케줄러'가 최근 캐나다 앱스토어에 피처드(오늘의 앱 선정)된 것에 이어 인도, 태국 등에도 피처드가 되었습니다 🙌 10개국 이상에서 노출이 크게 늘어나서 정확히 어느 나라에 피처드가 된 것인지 파악이 되지는 않지만, 노출 규모로 보았을 때 캐나다, 인도, 태국에서 피처드가 된 것으로 보입니다 🌈

8월 25일부터 31일까지 100만에 가깝게(96.5만) 노출되었고, 그에 따라 다운로드도 늘어났습니다. 우리나라를 제외한 다른 나라에서는 아직 리뷰도 없고 언어도 한국어와 영어만 지원하기 때문에 다운로드 전환이 상당히 낮은 편이지만, 세계 여러 나라에 대표 작은 앱인 '스케줄러'를 조금이나마 알릴 수 있게 돼 대단히 기쁩니다 😎

이번 앱스토어 피처드 덕분에 당분간은 '작은 앱'을 알리는 일보다 '작은 앱'을 개선하고 사용자 님들께 필요한 기능을 디자인 & 개발하는 일에 집중할 수 있게 된 것이 가장 좋네요! 응원해주신 동료 분들께 언제나 감사드립니다 🙏

막바지 더위에 언제나 건강 잘 챙기시고, 

행복한 한 주 보내시길 바라겠습니다! 😊✨

-

-

-

'미리 알림'부터 '애플 기본 캘린더'까지 쉽게 연동.

12가지 위젯.

아이폰, 아이패드, 맥 달력 앱 스케줄러 📆

https://apps.apple.com/kr/app/id6467635137

-

-

- 

💡 '작은 앱 프로젝트'의 미션 

전 세계 사람들에게 '필요한 기능'만 제공하는 '작은 앱' 생태계를 제공한다.

4
0