프로젝트에서 보기 →

1인 앱개발 Flutter로 한달동안 3개의 앱을 출시해본 과정, 구글 플레이스토어 심사, 앱소개, 그리고 느낀점!!

태그
기술
시작일
종료일
수정일

https://www.youtube.com/watch?v=VAb6EiZl5nU

description: |-

1. 이건 꼭 알아야 한다[^1]

[? 질문] Flutter로 1인 앱 개발자가 짧은 기간(한 달) 안에 실제로 앱을 여러 개 출시하는 과정은 어떤 흐름으로 진행되며, 구글 플레이 심사에서 무엇을 조심해야 하는가[^6]
[= 답] 앱 개발 후 Google Play 프로덕션 출시 → 약 7일 내외 검토(심사) → 승인 시 IARC(국제 연령등급) 관련 메일 수신 → (선택) AdMob 연동 완료 메일 수신 같은 형태로 흘러가며, 심사에서는 특히 메타데이터(앱 이름/설명 키워드) 정책 위반 같은 이유로 리젝트될 수 있으므로 표현을 조심해야 한다.[^6][^7][^9]

[? 질문] 한 달 동안 출시한 3개 앱은 각각 무엇이며, 어떤 문제의식/차별점을 기반으로 만들어졌는가[^4]
[= 답] (1) 모든 자연수 차수의 마방진을 생성하는 앱(특히 4의 배수가 아닌 짝수 차수의 난이도 있는 케이스까지 직접 알고리즘 구현), (2) 1차/2차 방정식 및 연립 1차 방정식을 풀고 풀이 과정을 보여주는 “방정식 선생님” 앱(해가 무수히 많은 경우 일반해까지 제시), (3) 합성곱(Convolution) 연산을 애니메이션과 필터 적용으로 직관적으로 이해시키는 학습/체험용 앱이다.[^29][^30][^33][^45]

[? 질문] Flutter로 1인 앱을 만들며 느낀 장점과 한계, 그리고 1인 앱으로 수익을 내는 시장 현실에 대한 결론은 무엇인가[^46]
[= 답] Flutter는 앱 개발 경험이 적어도 조금만 공부하면 빠르게 만들 수 있는 속도가 큰 장점이지만, 알람/고성능 이미지 처리/음성 변조 같은 고도화 기능은 결국 네이티브 코드와 모바일 GPU 등 플랫폼 레벨 접근이 필요해 보였다. 또한 시장은 과거(예: 2015년)처럼 단순 앱으로 큰돈을 벌기 어렵고, 대중 앱은 광고비 경쟁이 치열하며, 틈새 앱은 수요 자체가 작아 “작은 시작점에서 레드오션 경쟁”을 하게 될 수 있다는 고민을 남긴다.[^47][^48][^53][^54]

2. 큰 그림[^4]

이 콘텐츠는 유튜버(개발자)가 Flutter 입문 후 한 달 동안 3개의 앱을 직접 개발해 구글 플레이스토어에 출시해 본 실제 경험을, 심사 메일/리젝트 사례/앱 소개/개발 소감/시장에 대한 생각까지 포함해 시간 흐름대로 공유하는 기록이다.[^4][^6] 또한 “기능만 완벽하면 잘 될 것”이라는 제작 당시의 관점과, 출시 후 느낀 현실적인 제약(정책/기술/시장)을 함께 다룬다.[^31][^54]

  • 구글 플레이 심사(검토) 흐름과 메타데이터 정책 리스크: 프로덕션 출시 시 심사가 약 7일 걸릴 수 있고, 승인 메일은 예상과 달리 IARC 같은 “이상한 메일” 형태로 오기도 하며, 앱 이름/설명 키워드(예: ‘최고’)가 정책 위반으로 리젝트될 수 있다.[^6][^7][^10]
  • 세 앱의 공통 철학: 특정 소수에게 ‘정말 필요한’ 기능을 끝까지 구현: 마방진/방정식/합성곱처럼 대중적이진 않지만 누군가에게는 꼭 필요한 문제를 잡고, 특히 알고리즘적으로 까다로운 부분(짝수 마방진, 일반해 등)을 직접 해결한다.[^28][^30][^39]
  • Flutter의 빠른 생산성 vs 고급 기능에서의 네이티브 의존, 그리고 1인 앱 수익화의 난이도: 빠르게 만들 수 있지만 알람/고성능 연산/오디오 같은 영역은 네이티브가 필요해 보이며, 시장은 기업화·광고 경쟁으로 1인이 돈 벌기 어려워졌다는 인식이 제시된다.[^47][^49][^54]

3. 하나씩 살펴보기[^4]

3.1 인사, 근황: Flutter에 빠져 ‘시름을 전폐’하고 코딩만 한 한 달[^4]

📸 0:01

영상은 인사로 시작한다. 진행자는 자신을 “RGB 코딩”이라고 소개하고, 추석 인사를 건넨다.[^2][^3]
이어서 이전에 “플러터 앱개발에 입문했다”는 영상을 올린 뒤, 앱 개발의 재미에 빠져 한동안 다른 일을 제쳐두고 코딩만 하며 지냈다고 말한다.[^4]
그 결과 약 한 달 동안 총 세 개의 앱을 출시했고, 오늘 영상은 그 기간 동안 있었던 일들을 나누는 목적이라고 예고한다.[^4]

[!NOTE] 이 영상의 전개 방식
(1) 실제 출시 후 받는 메일 소개 → (2) 플레이스토어 심사 흐름/리젝트 경험 → (3) 3개 앱 소개(기능·차별점) → (4) Flutter/시장에 대한 느낀 점 순으로 진행된다.[^6][^31][^46]

3.2 앱 출시 후 ‘이상한’ 메일: IARC 연령등급 메일이 승인 신호였다[^6]

📸 0:22

진행자는 앱 출시를 성공하면 받게 되는 메일을 보여주며, 처음에 이 메일을 받았을 때 정체를 몰라 “이게 뭔가” 했다고 한다.[^6]
메일 내용은 IARC(International Age Rating Coalition), 즉 “국제 연령 등급 연합”으로 보이는 기관과 관련된 것으로, 전 세계 통합 연령 등급 제공을 위해 설립된 협력 기구라는 취지라고 설명한다.[^6] 다만 진행자는 “자세한 건 잘 모르겠다”고 덧붙인다.[^7]

특히 인상적인 지점은, 진행자가 처음 이 메일을 받았을 때 “혹시 내가 잘못한 게 있나”라고 생각했지만, 사실은 정상적으로 출시가 됐다는 의미의 메일이었다는 점이다.[^7]

3.3 AdMob(광고) 연동 메일: 광고 연결도 별도 완료 알림이 온다[^8]

📸 0:54

앱을 출시한 뒤에는 구글 애드몹(AdMob) 을 붙여 광고를 달 수 있다고 언급한다.[^8]
그리고 AdMob을 정상적으로 연결하면, 이번에는 “정상적으로 완료됐다”는 내용의 메일이 한글로 친절하게 온다고 한다.[^8]
즉, 출시 이후에도 “수익화 설정(광고 연결)” 과정에서 별도의 상태 알림 메일을 받게 된다는 경험담을 공유한다.[^8]

3.4 구글 플레이스토어 출시/심사 흐름: 프로덕션 검토가 약 7일 걸렸다[^6]

📸 0:22

진행자는 출시 과정을 “간단하게 흐름”으로 정리한다.[^6]

  • 앱을 개발 완료하면 마켓(예: 구글 플레이스토어)에 올린다.[^6]
  • 구글 플레이의 경우 프로덕션(Production) 출시로 올리면 “검토(심사)”가 진행된다.[^6]
  • 본인의 경험상 이 검토가 약 7일 정도 걸렸다고 말한다.[^6]

여기서 진행자는 “심사를 통과하셨습니다” 같은 직관적인 메일이 오는 게 아니라, 앞에서 말한 것처럼 IARC 관련 ‘이상한 메일’ 이 도착하는 방식으로 승인 신호를 받게 된다는 점을 다시 강조한다.[^7]

3.5 세 앱이 ‘거의 같은 날’ 동시에 출시된 이유: 의도치 않은 동시 출산(?)의 사연[^9]

📸 1:28

진행자는 자신이 웹 개발 경험은 있어도 앱 개발은 이번이 처음이라고 밝힌다.[^9]
그런데 세 앱이 “같은 날, 같은 일시”에 거의 비슷하게 출시되었다고 말하며, 본인도 의도한 것이 아니라고 한다.[^9]
그리고 “이렇게 된 사연이 있다”며 이후 리젝트(거절) 경험으로 이야기를 연결한다.[^9]

3.6 리젝트(거절) 경험: 구글 ‘메타데이터 정책’ 위반, ‘최고’ 키워드가 문제였다[^10]

📸 1:51

앱이 성공적으로 출시되면 IARC 메일이 오지만, 반대로 거절당하면 “리젝트” 메일을 보게 된다고 한다.[^10]
진행자는 첫 번째로 출시하려던 앱이 리젝트를 연달아 두 번 맞았다고 말한다.[^10]

거절 사유는 구글 메타데이터 정책 위반이었다.[^10]
진행자는 정책 예시로 “Best, Top, New, Discount, Sale, Free, Million downloads” 같은 과장/홍보성 키워드는 사용하면 안 된다는 취지를 언급한다.[^10]

그리고 본인이 실제로 사용한 문제 표현은 영어가 아니라 한글로 “최고” 였다고 한다.[^11]
그 이유는 자신이 만든 것에 대한 자부심이 있어서, “이 분야에서만큼은 내가 최고다”라는 마인드로 해당 키워드를 앱명/메타데이터에 썼다는 것이다.[^11]
하지만 구글이 이를 받아주지 않았고, 결국 표현을 수정해야 승인받을 수 있었다고 말한다.[^11]

3.7 앱명 수정으로 승인: ‘최고의 마방진 생성기’ → ‘강력한 마방진 생성기’[^11]

📸 2:10

진행자는 원래 앱 이름(혹은 주요 문구)이 “최고의 마방진 생성기”였는데, 리젝트 이후 구글 눈치를 보며 “강력한 마방진 생성기”로 수정해서 올렸다고 말한다.[^11]
그렇게 수정한 뒤에야 구글이 승인을 해주었다고 한다.[^11]

이 경험을 통해, 앱의 기능과는 별개로 스토어에 노출되는 문구(메타데이터) 가 심사에서 민감하게 작동할 수 있음을 사례로 보여준다.[^10][^11]

[!WARNING] 플레이스토어 심사에서의 ‘메타데이터’ 리스크 포인트
진행자 경험상 ‘최고’ 같은 최상급/과장 표현이 메타데이터 정책 위반으로 해석되어 리젝트될 수 있었다.[^10][^11]

3.8 세 앱의 공통 탄생 배경: 특정 소수에게 ‘정말 필요한 최고의 앱’이 되고 싶었다[^12]

📸 2:45

리젝트와 수정 과정을 겪다 보니, 결과적으로 세 앱이 비슷한 시점에 출시되어 “같은 일시에 태어나 도원결의를 맺게 된 것 같다”는 비유를 쓴다.[^12]
이어서 본인의 개발 철학/의도를 설명한다.

  • 자신이 만드는 앱은 대중적인 앱은 아닐 수 있다.[^13]
  • 하지만 “특정 소수”에게는 정말 필요한, “최고의 앱”이 되겠다는 생각으로 만들었다고 한다.[^13]

여기서 ‘최고’라는 단어는 심사 메타데이터에서는 문제가 되었지만, 개발 동기 측면에서는 “필요한 사람에게 최고의 도구를 만들자”는 태도로 다시 등장한다.[^11][^13]

3.9 앱 1: 마방진 생성기 — 모든 자연수 입력에 대해 ‘제대로’ 만드는 앱, 특히 짝수 마방진 난이도[^14]

📸 2:54

진행자는 첫 번째 앱(마방진 생성기)의 문제의식을 설명한다.[^14]

  • “홀수 마방진”을 다루는 게임 같은 앱은 이미 있었다.[^14]
  • 하지만 마방진 자체를 모든 자연수 입력에 대해 제대로 만들어 주는 앱은 없었다고 말한다.[^14]
  • 특히 “4의 배수가 아닌 짝수 마방진”은 알고리즘이 복잡하다고 한다.[^15]
  • 그 복잡성 때문에 “챗지피티(=ChatGPT)”도 제대로 만들어내지 못하더라고 표현하며, 그래서 직접 만들었다고 한다.[^15]

이 대목에서 진행자는 단순히 “앱을 하나 만들었다”가 아니라, 기존 앱/도구들이 커버하지 못하는 알고리즘적 공백을 보고 본인이 구현으로 메웠다는 점을 강조한다.[^14][^15]

[!IMPORTANT] 진행자가 강조하는 차별화 축
이미 있는 유사 앱(홀수 마방진 게임형)이 아니라, “모든 자연수 차수”에 대해 생성이 가능한 ‘생성기’이며, 특히 구현이 어려운 “4의 배수가 아닌 짝수 차수”를 다룬다는 점이 핵심이다.[^14][^15]

3.10 세 앱 공통 제작 태도: “기능이 완벽하면 알아서 잘 될 것”이라고 생각했다[^31]

📸 3:18

진행자는 이번에 만든 세 가지 앱이 “다 이렇다”고 말하며, 공통적으로 기능이 완벽하면 알아서 잘 될 것이다라는 생각을 했던 것 같다고 돌아본다.[^31]
즉, 마케팅/포지셔닝보다 구현 완성도 자체에 무게를 두고 달려온 제작 방식이 드러난다.[^31]

그럼에도 “나름 고생하면서 만들었다”며, 나머지 앱들도 간략히 소개하겠다고 전환한다.[^32]

3.11 앱 2: ‘방정식 선생님’ — 1차/2차/연립 1차 방정식 풀이와 풀이 과정 설명[^33]

📸 3:27

두 번째 앱은 “방정식 선생님”이라는 앱으로 소개된다.[^33]
진행자는 “1차 방정식 참 쉽죠”라는 표현으로 가볍게 시작하면서도, 앱이 제공하는 기능들을 순서대로 보여준다.[^33]

3.11.1 1차 방정식 풀이[^33]

앱은 1차 방정식을 다루며, 진행자는 이것은 “간단하다”고 말한다.[^34]

3.11.2 2차 방정식 그래프 시각화[^35]

2차 방정식은 그래프로 그려주는 기능이 있다고 한다.[^35]

3.11.3 ‘풀이 보기’: 실제 선생님처럼 풀이 과정을 친절하게 제시[^35]

“풀이 보기”를 누르면, 진짜 수학 선생님이 알려주는 것처럼 풀이 과정을 친절하게 보여준다고 설명한다.[^35]

3.11.4 차별 포인트: 1차 연립방정식 풀이 + 해의 경우의 수(유일해/무수히 많음/없음) 처리[^36]

진행자는 이 앱의 차별 포인트로 1차 연립방정식을 풀어준다는 점을 든다.[^36]
특히 해가 무수히 많은 경우에는 일반해를 구해서 계산해 준다고 한다.[^36]
또한 사용자에게 결과를 다음처럼 알려주는 “친절한 샘”이라고 표현한다.

  • 유일한 해가 있으면 유일해가 있다고 알려줌[^38]
  • 해가 무수히 많으면 일반해를 구해줌[^38]
  • 해가 없으면 없다고 알려줌[^38]

3.11.5 입력 방식: 랜덤 생성 + 셀 클릭 직접 입력 + 복잡한 식을 만들어 전달[^37]

계수(값) 입력은

  • 랜덤으로 뽑는 방식도 가능하고[^37]
  • 셀을 직접 클릭해 각 계수에 해당하는 숫자를 넣을 수도 있다고 한다.[^37]

더 나아가 “복잡한 방정식도 만들어서 선생님한테 전달할 수 있다”는 식으로, 문제를 구성해 공유/전달하는 사용 흐름을 보여준다.[^37]

3.11.6 구현 난이도/투입 공수: 연립 1차 방정식 알고리즘에 특히 많은 공을 들였다[^39]

진행자는 앞서 마방진 앱에서도 연립 1차 방정식을 푸는 기능을 “탑재”했다고 언급하며, 이 기능에 정말 많은 공을 들였다고 말한다.[^39]
알고리즘도 상당히 어려운 것이 들어가 있다고 한다.[^39]

하지만 동시에 “이 앱이 수요가 있을까”는 잘 모르겠다고 솔직하게 말한다.[^40]
즉, 구현적 성취/난이도와 시장 수요 사이의 불확실성을 본인도 인지하고 있음을 드러낸다.[^40]

[!TIP] (콘텐츠 내 암묵적 교훈) 기능 구현의 난이도 ≠ 시장 수요 확실성
진행자는 연립방정식 일반해 처리처럼 어려운 기능을 구현했지만, 실제 수요가 있을지는 “잘 모르겠다”고 말한다.[^39][^40]

3.12 앱 3: 합성곱(Convolution) 이미지 필터 — ‘사진 편집’이 아니라 원리 이해를 돕는 앱[^41]

📸 4:31

세 번째 앱은 “합성곱 이미지 필터”이며, 진행자는 이를 “합성곱 기반의 이미지 필터”라고 부른다.[^41]
중요한 전제는 이 앱이 일반적인 “사진 편집 앱”이 아니라, 합성곱 원리에 대해 궁금한 사람들을 위한 앱이라는 점이다.[^41]

진행자는 딥러닝을 공부한 사람이라면 합성곱 신경망(CNN) 을 들어봤을 것이라고 말하면서, 합성곱 연산은 CNN뿐 아니라 컴퓨터 비전, 신호 처리 등 다양한 분야에 응용된다고 설명한다.[^42]

3.13 합성곱을 ‘애니메이션으로’ 보여주려 한 문제의식: 수학 공식만으로는 이해가 어려웠다[^43]

📸 5:10

진행자가 이 앱을 만든 계기는, 본인이 합성곱을 처음 공부할 때 연산이 수학 공식으로만 적혀 있어서 연산 과정이 이해가 안 갔다는 경험 때문이다.[^43]
그래서 “연산 과정을 애니메이션으로 시각화해서 보여줄 수 있으면 누구나 쉽게 이해할 수 있을 텐데”라는 생각을 했고, 그 결과 앱으로 만들어봤다고 말한다.[^44]

즉, 이 앱은 “필터 결과를 예쁘게 만들자”보다 “연산 메커니즘을 직관화하자”가 1차 목표인 학습 도구 성격이 강하다.[^41][^44]

3.14 합성곱 연산 시각화 1: 제로 패딩과 스트라이드 1의 애니메이션[^45]

📸 5:26

진행자는 현재 화면이 “제로 패딩”에 “스트라이드 1”을 적용했을 때의 연산 과정을 보여주는 것이라고 말한다.[^45]
이어서 패딩을 1로 하면 입력 행렬의 테두리를 0으로 한 칸 채우는 것이라고 설명한다.[^45]

그 상태에서 애니메이션을 보면,

  • 필터(커널)가 한 칸씩 이동하면서
  • 합성곱 연산을 수행하는 과정을 보여준다고 한다.[^45]

3.15 합성곱 연산 시각화 2: 스트라이드 2, 패딩 1이면 ‘두 칸 이동’으로 달라진다[^45]

📸 5:26

같은 예시에서 스트라이드를 2로, 패딩을 1로 주면 동작이 달라진다.[^45]
진행자는 “이제 두 칸을 이동한다”고 말하며, 커널이 이동하는 간격이 바뀌는 모습을 시각적으로 보여준다.[^45]
이렇게 구성함으로써 “누구나 쉽게 이해할 수 있게” 만들어 놓았다는 것이 설명의 결론이다.[^45]

3.16 왜 ‘계산기’만으로는 부족했는가: 숫자로 보면 와닿지 않아 ‘이미지 필터’로 확장[^45]

📸 5:26

진행자는 “합성곱 계산기”처럼 숫자만으로 연산 결과를 보는 기능도 언급한다.[^45]
그러나 숫자로만 보면 “실질적으로 와닿지 않기 때문에” 합성곱 기반의 이미지 필터 기능을 만들었다고 말한다.[^45]
즉, 추상적인 행렬 연산을 실제 이미지 변화로 연결해 체감시키려는 설계다.[^45]

3.17 컬러 이미지 합성곱 필터의 원리: RGB 3채널을 행렬로 보고 채널별 연산 후 정규화[^45]

📸 5:26

진행자는 컬러 이미지가 레드/그린/블루 3가지 채널로 구성되어 있고, 각 채널은 행렬로 표현될 수 있다고 설명한다.[^45]
또한 각 컬러 채널은 0~255 범위의 밝기(강도) 정보를 갖는다고 말한다.[^45]

필터 적용 흐름은 다음으로 설명된다.

  1. 각 채널(R/G/B)별로 합성곱 연산을 수행한다.[^45]
  2. 연산 결과가 0~255 범위에 들어오도록 정규화(normalization) 를 수행한다.[^45]
  3. 그 결과 다른 이미지로 변환된다.[^45]

이 설명을 통해, 필터가 “이미지를 변환한다”는 말이 실제로는 채널별 행렬 연산과 값 스케일 조정으로 이뤄진다는 점을 전달한다.[^45]

3.18 필터 예시 1: 가우스 블러 — 가우시안 정규분포 형태, 중심이 크고 가장자리가 작다[^45]

📸 5:26

진행자는 필터가 “가지는 특성을 추출”한다고 말하며, 대표 예시로 가우스 블러(Gaussian Blur) 를 든다.[^45]
가우스 블러 필터는 가우시안 정규분포에 따라 만들어진 필터라고 설명한다.[^45]

  • 가우시안 분포는 중심값이 가장 크고, 가장자리로 갈수록 값이 작아진다.[^45]
  • 필터도 동일하게 가운데 값이 가장 크고 사이드로 갈수록 값이 작다.[^45]

이렇게 만들어진 필터를 적용하면,

  • 중심점이 강조되고[^45]
  • 주변이 퍼지는 느낌, 즉 스무스하게 “뽀샵이 되는 느낌”의 결과가 나온다고 묘사한다.[^45]

3.19 필터 예시 2: 엣지 검출(소벨 X/Y)과 다양한 프리셋, 그리고 커스텀 필터 제작[^45]

📸 5:26

진행자는 엣지 검출 필터로 소벨 X, 소벨 Y 같은 필터도 언급한다.[^45]
또한 다양한 프리셋을 적용하면서 “이미지가 어떻게 변하는구나”를 테스트할 수 있다고 한다.[^45]

더 나아가,

  • 필터 값(커널 값)을 직접 입력해서
  • “나만의 새로운 필터”도 만들어 볼 수 있다고 설명한다.[^45]

즉, 이 앱은 단순히 정해진 필터를 쓰는 것이 아니라 “합성곱 커널을 설계해보는 실험 환경”을 제공한다는 방향성이 드러난다.[^45]

3.20 필터 예시 3: 밝기 증가, 중앙 밝게·주변 어둡게(비네팅 느낌) 등[^45]

📸 5:26

진행자는 또 다른 예로,

  • 전체적으로 밝아지는 필터[^45]
  • 중앙을 밝게 하고 주변을 어둡게 하는 필터[^45]

같은 효과도 보여준다. 또한 이미지를 다른 이미지로 바꿔서 테스트할 수도 있다고 말한다.[^45]
이는 사용자가 다양한 입력 이미지에서 커널 효과를 비교하며 학습할 수 있도록 하는 사용 시나리오다.[^45]

3.21 “재밌을 수 있지만 설명이 어렵다”: 이해 기반 사용자에게는 기능 업데이트 계획[^45]

📸 5:26

진행자는 이 앱이 누군가에게는 “재밌는 앱”이 될 수 있을 것 같다고 말한다.[^45]
하지만 동시에 “설명하기가 어려운 앱” 같다는 점을 토로한다.[^45] (즉, 스토어 소개/마케팅 난이도도 암시)

그리고 조건부 계획을 제시한다.
이 앱을 이해하고 재밌게 써주는 사용자가 있다면,

  • 커스텀 필터 저장 기능[^45]
  • 사용자 사진첩 사진에 필터 적용 기능[^45]

을 업데이트로 추가해 볼 생각이라고 말한다.[^45]

3.22 세 앱을 Flutter로 개발/출시하며 느낀 점: 장점(빠른 제작)과 단점(깊게 파면 아쉬움)[^46]

📸 8:22

세 앱을 만들어 출시해보니 느낀 점이 있었다며, 장단점을 이야기하겠다고 한다.[^46]

3.22.1 Flutter의 장점: 앱개발을 몰라도 조금만 공부하면 빠르게 만들 수 있다[^47]

진행자가 먼저 꼽는 장점은,

  • 앱 개발을 할 줄 몰라도
  • 조금만 공부해도
  • 빠르게 뭔가를 만들 수 있다

는 점이다.[^47]
“이 점에서 정말 장점을 가지는 것 같다”고 표현한다.[^47]

3.22.2 Flutter의 아쉬움: 기능을 깊게 파고들면 네이티브가 필요해진다[^47]

하지만 진행자처럼 기능에 깊게 파고들다 보면 아쉬운 점들이 있다고 말한다.[^47]
이후 구체 사례를 세 가지 축으로 든다: 알람, 이미지 고성능 처리(GPU), 음성 변조.[^48][^52]

3.23 고도화 기능 사례 1: 알람(재부팅 후에도 지정 시각에 울림) — 커스텀은 네이티브 코드 필요[^48]

📸 9:02

진행자는 “플러터로 알람 기능을 구현”하는 상황을 예로 든다.[^48]
여기서 말하는 알람은 단순한 앱 내 타이머가 아니라, 핸드폰을 껐다가 켜도 사용자가 지정한 시각에 알람 메시지가 울리도록 하는 기능이다.[^48]

  • 네이티브 플러그인이 “있긴 한데”[^48]
  • 이를 커스텀하게 개발하려면 결국 네이티브 코드를 직접 만져야 할 것 같다고 말한다.[^48]

즉, 플러그인으로 가능한 영역은 있으나, 요구사항이 복잡해질수록 플랫폼 종속 코드를 피하기 어렵다는 판단이다.[^48]

3.24 고도화 기능 사례 2: 이미지 필터 성능 — 모바일 GPU 가속을 위한 네이티브 구현 필요성[^49]

📸 9:14

진행자는 자신이 이미지 필터 앱을 Flutter로 만들긴 했지만, 이를 더 고성능으로 제대로 만들려면 네이티브 코드를 통해 모바일 GPU 가속을 쓸 수 있게 만들어야 할 것 같다고 말한다.[^49]

또한 현재 앱은 연산 과정을 “순차적으로” 보여주지만, 실제 그래픽 카드에서는 이를 병렬로 한 번에 연산해버린다고 설명한다.[^50]
따라서 픽셀 정보가 많은 고해상도 이미지를 빠르게 처리하려면 네이티브 코드에서 모바일 GPU 자원을 활용하도록 만들어야 할 것 같다는 결론을 덧붙인다.[^51]

이 대목은 “학습용 시각화”와 “실무급 성능”이 목표일 때 요구되는 기술 스택이 달라질 수 있음을 보여준다.[^49][^51]

3.25 고도화 기능 사례 3: 음성 변조 — 여전히 네이티브 기능이 필요해 보인다[^52]

📸 9:47

진행자는 음성 변조 같은 앱을 만든다고 할 때도 네이티브 기능이 “아직까지 좀 필요한 것 같다”고 말한다.[^52]
즉, 오디오 처리도 Flutter 단독으로는 한계가 있다고 체감하는 맥락이다.[^52]

3.26 기술적 결론: 정말 고도화된 기능을 만들려면 네이티브 공부가 필요[^53]

📸 9:58

앞선 사례들을 종합해 진행자는 결론을 낸다.

[= 정말로 고도화된 기능을 만들려면 네이티브 공부를 좀 해야 될 것 같다]고 말한다.[^53]
이는 Flutter의 생산성 장점을 인정하면서도, 궁극적으로는 플랫폼 레벨 이해가 필요하다는 현실 인식이다.[^53]

3.27 시장을 살펴본 뒤 느낀 점: 1인 앱개발로 돈 벌기 어려운 시기[^54]

📸 10:09

진행자는 앱을 출시해 시장을 살펴보니 또 느낀 점이 있었다며, “1인 앱 개발로 돈 벌기가 굉장히 어려운 시기”라고 말한다.[^54]

과거 사례로 2015년을 언급하며,

  • 계산기, 손전등 같은 앱을 만들어서도 큰 돈을 버는 사례가 있었다고 한다.[^54]

하지만 지금은 상황이 달라졌다고 본다.[^54]

3.28 왜 어려워졌나: 앱의 기업화 + 대중 앱의 광고 투자 경쟁(상위 노출 경쟁)[^54]

📸 10:09

진행자는 현재는 앱들이 “기업화된 회사”에서 만들어지고 있다고 말한다.[^54]
또한 수요가 많은 대중적인 앱들은 광고에 엄청나게 투자해서 상위 노출을 두고 “엄청난 경제(=경제적) 경쟁”을 벌인다고 설명한다.[^54]

즉, 개인 개발자가 품질만으로 상위에 노출되기 어려운 구조, 그리고 마케팅 비용 경쟁이 강해졌다는 인식이 깔려 있다.[^54]

3.29 ‘틈새시장 공략’ 조언의 딜레마: 마이너 앱은 찾는 사람도 작고, 시작점이 작아 레드오션처럼 느껴짐[^54]

📸 10:09

진행자는 “1인 앱 개발은 틈새시장을 공략하라”는 말을 들어본 적이 있다고 한다.[^54]
그러나 문제는 마이너한 앱은 찾는 사람 자체가 굉장히 작고, 시작이 너무 작다 보니 경쟁을 하더라도 결국 “레드오션 속에서 경쟁을 해야겠다”는 느낌이 들었다고 말한다.[^54]

여기서 진행자의 고민은 다음과 같이 읽힌다.

  • 대중 시장: 수요는 크지만 광고비/경쟁이 심해 진입이 어려움[^54]
  • 틈새 시장: 경쟁이 덜할 것 같지만 수요가 작아 성장이 어려움[^54]

3.30 앞으로의 계획과 마무리: 더 대중적인 앱을 목표로, 의견 요청[^54]

📸 10:09

진행자는 이러한 고민은 앱을 계속 만들어 보면서 더 고민하게 될 것 같다고 말한다.[^54]
그리고 다음에는 지금보다 “조금 더 대중적인 앱”을 목표로 만들어보겠다고 계획을 밝힌다.[^54]

끝으로 시청에 대한 감사 인사, 댓글로 생각을 남겨달라는 요청, 그리고 본인이 만든 앱도 심심풀이로 사용해보면 좋겠다는 권유로 영상을 마무리한다.[^55][^56][^57]

4. 핵심 통찰[^4]

  1. [h Flutter의 ‘빠른 제작 가능성’은 1인 개발의 실행력을 크게 올리지만, 목표가 고급 기능으로 갈수록 네이티브 역량이 병목이 될 수 있다.] Flutter만으로도 빠른 프로토타입과 출시가 가능하나, 알람/고성능 이미지 처리/오디오처럼 OS·하드웨어 자원과 밀접한 기능은 네이티브 이해가 필요하다는 결론에 도달한다.[^47][^53]

    • 실행 시사점
      • “핵심 기능이 네이티브 의존적인가?”를 초기 기획에서 체크하고, 필요한 경우 플러그인 조사/PoC를 먼저 해본다.[^48][^49]
  2. [h 플레이스토어 심사는 ‘기능’뿐 아니라 ‘말(메타데이터)’에서도 리젝트가 날 수 있다.] ‘최고’ 같은 표현이 정책 위반으로 리젝트될 수 있었고, 문구 수정(최고→강력) 후 승인된 사례가 이를 증명한다.[^10][^11]

    • 실행 시사점
      • 앱명/설명/스크린샷 문구에서 최상급·과장·순위 암시 표현을 사전에 제거하고, 정책 예시 키워드를 체크리스트화한다.[^10]
  3. [m “기능이 완벽하면 알아서 잘 될 것”이라는 믿음은 개발을 밀어붙이는 동력이지만, 출시 후에는 수요·설명 난이도·노출 경쟁이 성패를 좌우할 수 있다.] 진행자는 합성곱 앱이 “설명하기 어렵다”는 점을 언급하며, 기능 외 요소(이해 장벽/커뮤니케이션)의 중요성을 드러낸다.[^31][^45]

  4. [h 틈새시장 공략은 정답이 아니라 트레이드오프다.] 대중 앱은 광고 경쟁이 심하고, 마이너 앱은 수요의 절대량이 작아 시작점이 너무 작다는 딜레마를 제기한다.[^54]

    • 실행 시사점
      • “틈새”를 선택하더라도 사용자가 어디에 모여 있는지(커뮤니티/검색 키워드/학교·전공 등) 유입 경로를 먼저 설계해야 한다.[^54]
  5. [m 알고리즘적으로 어려운 문제(짝수 마방진, 연립방정식 일반해, 합성곱 시각화)를 해결하는 과정은 개인 개발자의 강점이 될 수 있다.] 진행자는 기존 앱 공백, 도구(ChatGPT)의 한계 등을 언급하며 “직접 구현”을 선택한다.[^15][^39]

5. 헷갈리는 용어 정리[^6]

IARC: International Age Rating Coalition. 전 세계 통합 연령 등급 제공을 위해 설립된 협력 기구로 소개되며, 진행자는 앱 출시 승인 시 관련 메일을 받았다고 말한다.[^6][^7]
AdMob: 구글 광고 플랫폼. 앱에 광고를 붙이고 정상적으로 연결하면 완료 메일을 받는다고 한다.[^8]
메타데이터 정책(구글): 앱 이름/설명 등 스토어 표시 정보에서 과장/홍보성 키워드(예: Best, Top 등)를 제한하는 정책으로, 진행자는 ‘최고’라는 표현 때문에 리젝트를 경험했다.[^10][^11]
프로덕션(Production) 출시: 구글 플레이스토어에서 실제 사용자에게 배포되는 출시 트랙으로 설명되며, 이 단계에서 검토(심사)가 진행되고 약 7일이 걸렸다고 한다.[^6]
합성곱(Convolution): CNN뿐 아니라 컴퓨터 비전/신호처리 등에서 쓰이는 연산이며, 앱에서는 패딩/스트라이드에 따른 연산 과정을 애니메이션으로 보여준다.[^42][^45]
패딩(padding): 입력 행렬 주변을 값(영상에서는 0)으로 채워 크기/연산 결과에 영향을 주는 설정으로 설명된다.[^45]
스트라이드(stride): 커널이 입력 위를 이동하는 간격. 스트라이드 1은 한 칸씩, 스트라이드 2는 두 칸씩 이동하는 식으로 설명된다.[^45]
정규화(normalization): 채널별 합성곱 연산 결과를 0~255 범위로 맞추는 과정으로 설명된다.[^45]
GPU 가속: 고해상도 이미지처럼 픽셀 정보가 많은 데이터를 빠르게 처리하기 위해 모바일 GPU 자원을 활용하는 방식으로, 네이티브 코드로 접근해야 할 것 같다고 언급된다.[^49][^51]


참고(콘텐츠 정보)[^1]

  • 제목: 1인 앱개발 Flutter로 한달동안 3개의 앱을 출시해본 과정, 구글 플레이스토어 심사, 앱소개, 그리고 느낀점!![^1]
  • 채널: RGB코딩 RgbitCode[^1]
  • 길이: 11분 10초[^1]
  • 링크: https://www.youtube.com/watch?v=VAb6EiZl5nU[^1]

[^1]: "1인 앱개발 Flutter로 한달동안 3개의 앱을 출시해본 과정, 구글 플레이스토어 심사, 앱소개, 그리고 느낀점!!" / 채널: "RGB코딩 RgbitCode" / 길이: "11분 10초" / https://www.youtube.com/watch?v=VAb6EiZl5nU [^2]: @[00:01] "안녕하세요" [^3]: @[00:05] "RGB 코딩입니다" [^4]: @[00:11] "…플러터 앱개발에 입문… 코딩만 하면 살았습니다… 약 한 달 동안 총 세 개 앱을 출시…" [^6]: @[00:22] "출시를 성공하게 되면은 이런 메일… IARC… 국제 연령 등급 연합…" [^7]: @[00:44] "처음에… 잘못한게 있나… 그게 아니라 정상적으로 출시…" [^8]: @[00:54] "구글 애드몹… 정상적으로 연결… 완료됐다고 메일…" [^9]: @[01:28] "…앱 개발은 이번에 처음… 같은 날 같은 일시에… 세 개…" [^10]: @[01:51] "거절당하면… 리젝트… 구글 메타데이터 정책… 베스트 탑… 키워드 사용하면 안 된다…" [^11]: @[02:10] "저는 한글로 최고… 원래 최고의 마방진… 강력한 마방진 생성기… 수정… 승인을…" [^12]: @[02:45] "…같은 일시에 태어나 도원 결의…" [^13]: @[02:50] "…대중적인 앱은 아니지만 특정 소수… 정말 필요한 최고의 앱…" [^14]: @[02:54] "홀수 마방… 있었… 모든 자연수 입력… 제대로… 앱이 없었…" [^15]: @[03:05] "4의 배수가 아닌 짝수 마방진… 알고리즘 복잡… 챗지피도… 직접 만들었습니다" [^31]: @[03:18] "기능이 완벽하면 알아서 잘 될 것이다…" [^32]: @[03:22] "…고생하면서 만들었는데… 소개…" [^33]: @[03:27] "자 방정식 선생님…" [^34]: @[03:33] "1차 방정식… 간단…" [^35]: @[03:38] "2차 방정식 그래프로… 풀이 과정을…" [^36]: @[03:46] "…차별 포인트… 1차 연립 방정식을 풀어 줍니다… 일반 해…" [^37]: @[03:54] "…랜덤… 셀을 직접 클릭… 복잡한 방정식도… 전달…" [^38]: @[04:11] "…해가 많은 경우 일반해… 유일 해… 해가 없으면…" [^39]: @[04:18] "…연립일차 방정식을 풀어지는 기능… 정말 많은 공… 알고리즘… 어려운…" [^40]: @[04:25] "…수요가 있을까… 잘 모르겠더라고요" [^41]: @[04:31] "자 마지막으로 합성공 이미지 필터… 사진 편집 앱은 아니고… 원리…" [^42]: @[04:47] "…합성곱 신경망… 컴퓨터 비전… 신호 처리…" [^43]: @[05:10] "…수학 공식… 연산 과정 이해가 안 가는…" [^44]: @[05:15] "…애니메이션… 시각… 누구나 쉽게… 만들어 봤어요" [^45]: @[05:26] "제로 패딩… 스트라이드… 패딩 1… 영으로… 스트라이드 2… 두 칸 이동… RGB 채널… 0~255… 정규화… 가우스 블러… 소벨… 커스텀… 저장/사진첩 적용 업데이트…" [^46]: @[08:22] "…플러터 통해서 개발… 느낀 점…" [^47]: @[08:41] "장점… 조금만 공부해도 빠르게…" [^48]: @[09:02] "플러터로 알람 기능… 네이티브 플러그인… 커스텀… 네이티브 코드…" [^49]: @[09:14] "…이미지 필터… 고성능… 네이티브 코드… 모바일 GPU 가속…" [^50]: @[09:33] "…순차적으로… 실제 그래픽 카드… 병렬로 한 번에…" [^51]: @[09:39] "…고해상도 이미지… 네이티브… 모바일 GPU 자원…" [^52]: @[09:47] "음성 변조… 네이티브 기능…" [^53]: @[09:58] "결론… 고도화된 기능… 네이티브 공부…" [^54]: @[10:09] "…1인 앱개발로 돈 벌기… 어려운 시기… 2015년… 계산기 손전등… 지금은 기업화… 광고 투자… 틈새… 마이너… 시작이 작다… 레드 오션… 대중적인 앱 목표…" [^55]: @[10:55] "시청해 주셔서 감사…" [^56]: @[10:58] "…생각을 남겨…" [^57]: @[11:01] "…제 앱도… 사용… 감사합니다"

← 프로젝트에서 보기