<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>앱 on Ted Factory</title><link>https://tedfactory.com/tags/%EC%95%B1/</link><description>Recent content in 앱 on Ted Factory</description><generator>Hugo</generator><language>ko</language><lastBuildDate>Sat, 02 May 2026 09:57:07 +0900</lastBuildDate><atom:link href="https://tedfactory.com/tags/%EC%95%B1/index.xml" rel="self" type="application/rss+xml"/><item><title>Ladder Pick 개발 계획서</title><link>https://tedfactory.com/apps/ladder-pick/plan/</link><pubDate>Mon, 02 Mar 2026 00:00:00 +0900</pubDate><guid>https://tedfactory.com/apps/ladder-pick/plan/</guid><description>&lt;h1 id="ladder-pick--chatgpt-app-개발-계획"&gt;Ladder Pick — ChatGPT App 개발 계획&lt;a class="anchor" href="#ladder-pick--chatgpt-app-%ea%b0%9c%eb%b0%9c-%ea%b3%84%ed%9a%8d"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;프로젝트명&lt;/strong&gt;: &lt;code&gt;ted-mcp-servers&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;앱 이름(App Directory 표시)&lt;/strong&gt;: Ladder Pick&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;앱 언어&lt;/strong&gt;: 영어 우선 (UI / 툴 description / 프라이버시 정책 모두 영어, 계획 문서만 한글)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="공식-개발자-문서-참고-링크"&gt;공식 개발자 문서 참고 링크&lt;a class="anchor" href="#%ea%b3%b5%ec%8b%9d-%ea%b0%9c%eb%b0%9c%ec%9e%90-%eb%ac%b8%ec%84%9c-%ec%b0%b8%ea%b3%a0-%eb%a7%81%ed%81%ac"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;h3 id="핵심-문서필독"&gt;핵심 문서(필독)&lt;a class="anchor" href="#%ed%95%b5%ec%8b%ac-%eb%ac%b8%ec%84%9c%ed%95%84%eb%8f%85"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Apps SDK 홈&lt;/strong&gt;: &lt;a href="https://developers.openai.com/apps-sdk"&gt;https://developers.openai.com/apps-sdk&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Quickstart(Todo 예제 포함)&lt;/strong&gt;: &lt;a href="https://developers.openai.com/apps-sdk/quickstart"&gt;https://developers.openai.com/apps-sdk/quickstart&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;MCP Server 개념&lt;/strong&gt;: &lt;a href="https://developers.openai.com/apps-sdk/concepts/mcp-server"&gt;https://developers.openai.com/apps-sdk/concepts/mcp-server&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;MCP Apps in ChatGPT&lt;/strong&gt;: &lt;a href="https://developers.openai.com/apps-sdk/mcp-apps-in-chatgpt"&gt;https://developers.openai.com/apps-sdk/mcp-apps-in-chatgpt&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="설계--디자인"&gt;설계 / 디자인&lt;a class="anchor" href="#%ec%84%a4%ea%b3%84--%eb%94%94%ec%9e%90%ec%9d%b8"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;UX 원칙&lt;/strong&gt;: &lt;a href="https://developers.openai.com/apps-sdk/concepts/ux-principles"&gt;https://developers.openai.com/apps-sdk/concepts/ux-principles&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;UI 가이드라인&lt;/strong&gt;: &lt;a href="https://developers.openai.com/apps-sdk/concepts/ui-guidelines"&gt;https://developers.openai.com/apps-sdk/concepts/ui-guidelines&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;디자인 컴포넌트&lt;/strong&gt;: &lt;a href="https://developers.openai.com/apps-sdk/plan/components"&gt;https://developers.openai.com/apps-sdk/plan/components&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;툴 정의&lt;/strong&gt;: &lt;a href="https://developers.openai.com/apps-sdk/plan/tools"&gt;https://developers.openai.com/apps-sdk/plan/tools&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;유스케이스 리서치&lt;/strong&gt;: &lt;a href="https://developers.openai.com/apps-sdk/plan/use-case"&gt;https://developers.openai.com/apps-sdk/plan/use-case&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="빌드"&gt;빌드&lt;a class="anchor" href="#%eb%b9%8c%eb%93%9c"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;MCP 서버 셋업&lt;/strong&gt;: &lt;a href="https://developers.openai.com/apps-sdk/build/mcp-server"&gt;https://developers.openai.com/apps-sdk/build/mcp-server&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;ChatGPT UI 빌드&lt;/strong&gt;: &lt;a href="https://developers.openai.com/apps-sdk/build/chatgpt-ui"&gt;https://developers.openai.com/apps-sdk/build/chatgpt-ui&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;상태 관리&lt;/strong&gt;: &lt;a href="https://developers.openai.com/apps-sdk/build/state-management"&gt;https://developers.openai.com/apps-sdk/build/state-management&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;인증&lt;/strong&gt;: &lt;a href="https://developers.openai.com/apps-sdk/build/auth"&gt;https://developers.openai.com/apps-sdk/build/auth&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;예제 앱 모음(GitHub)&lt;/strong&gt;: &lt;a href="https://github.com/openai/openai-apps-sdk-examples"&gt;https://github.com/openai/openai-apps-sdk-examples&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;UI 라이브러리(GitHub)&lt;/strong&gt;: &lt;a href="https://github.com/openai/apps-sdk-ui"&gt;https://github.com/openai/apps-sdk-ui&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="배포--테스트--제출"&gt;배포 / 테스트 / 제출&lt;a class="anchor" href="#%eb%b0%b0%ed%8f%ac--%ed%85%8c%ec%8a%a4%ed%8a%b8--%ec%a0%9c%ec%b6%9c"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;배포 가이드&lt;/strong&gt;: &lt;a href="https://developers.openai.com/apps-sdk/deploy"&gt;https://developers.openai.com/apps-sdk/deploy&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;테스트 가이드&lt;/strong&gt;: &lt;a href="https://developers.openai.com/apps-sdk/deploy/testing"&gt;https://developers.openai.com/apps-sdk/deploy/testing&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;ChatGPT 연결&lt;/strong&gt;: &lt;a href="https://developers.openai.com/apps-sdk/deploy/connect-chatgpt"&gt;https://developers.openai.com/apps-sdk/deploy/connect-chatgpt&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;앱 제출 및 유지보수&lt;/strong&gt;: &lt;a href="https://developers.openai.com/apps-sdk/deploy/submission"&gt;https://developers.openai.com/apps-sdk/deploy/submission&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;앱 제출 가이드라인(정책 / 규칙)&lt;/strong&gt;: &lt;a href="https://developers.openai.com/apps-sdk/app-submission-guidelines"&gt;https://developers.openai.com/apps-sdk/app-submission-guidelines&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Developer Mode 설정&lt;/strong&gt;: &lt;a href="https://platform.openai.com/docs/guides/developer-mode"&gt;https://platform.openai.com/docs/guides/developer-mode&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="가이드--참고"&gt;가이드 / 참고&lt;a class="anchor" href="#%ea%b0%80%ec%9d%b4%eb%93%9c--%ec%b0%b8%ea%b3%a0"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;보안 &amp;amp; 프라이버시&lt;/strong&gt;: &lt;a href="https://developers.openai.com/apps-sdk/guides/security-privacy"&gt;https://developers.openai.com/apps-sdk/guides/security-privacy&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;메타데이터 최적화&lt;/strong&gt;: &lt;a href="https://developers.openai.com/apps-sdk/guides/optimize-metadata"&gt;https://developers.openai.com/apps-sdk/guides/optimize-metadata&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;트러블슈팅&lt;/strong&gt;: &lt;a href="https://developers.openai.com/apps-sdk/deploy/troubleshooting"&gt;https://developers.openai.com/apps-sdk/deploy/troubleshooting&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;API 레퍼런스&lt;/strong&gt;: &lt;a href="https://developers.openai.com/apps-sdk/reference"&gt;https://developers.openai.com/apps-sdk/reference&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;변경 로그&lt;/strong&gt;: &lt;a href="https://developers.openai.com/apps-sdk/changelog"&gt;https://developers.openai.com/apps-sdk/changelog&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="일반-참고"&gt;일반 참고&lt;a class="anchor" href="#%ec%9d%bc%eb%b0%98-%ec%b0%b8%ea%b3%a0"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Apps in ChatGPT(Help Center)&lt;/strong&gt;: &lt;a href="https://help.openai.com/en/articles/12503483-apps-in-chatgpt-and-the-apps-sdk"&gt;https://help.openai.com/en/articles/12503483-apps-in-chatgpt-and-the-apps-sdk&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;앱 디렉터리 제출(Help Center)&lt;/strong&gt;: &lt;a href="https://help.openai.com/en/articles/20001040"&gt;https://help.openai.com/en/articles/20001040&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;앱 디렉터리 브라우징&lt;/strong&gt;: &lt;a href="https://chatgpt.com/apps"&gt;https://chatgpt.com/apps&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id="목표"&gt;목표&lt;a class="anchor" href="#%eb%aa%a9%ed%91%9c"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;ChatGPT App Directory에 등록 가능한 &lt;strong&gt;&amp;ldquo;Ladder Pick&amp;rdquo;&lt;/strong&gt; 앱을 만듭니다.&lt;/li&gt;
&lt;li&gt;채팅 안에서 &lt;strong&gt;인터랙티브 위젯(iframe)&lt;/strong&gt; 을 통해 참가자 / 항목 입력 → 사다리(랜덤 매칭) 생성 → 결과 공개까지 완료할 수 있게 합니다.&lt;/li&gt;
&lt;li&gt;ChatGPT Developer Mode로 테스트 후, 최종적으로 &lt;strong&gt;App Directory 제출 / 승인 / Publish&lt;/strong&gt; 를 목표로 합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="전제--범위"&gt;전제 / 범위&lt;a class="anchor" href="#%ec%a0%84%ec%a0%9c--%eb%b2%94%ec%9c%84"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;MVP&lt;/strong&gt;: 인터랙티브 위젯(iframe UI) + MCP 툴 기반. 위젯에서 참가자 / 항목 입력, 결과 표시, 다시 섞기 등 핵심 인터랙션을 제공합니다.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;비범위(초기)&lt;/strong&gt;: 로그인 / 결제, 실시간 멀티플레이, 복잡한 애니메이션, 외부 데이터 연동.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;인증 불필요&lt;/strong&gt;: 외부 서비스 연동이 없으므로 OAuth / 인증 플로우 없이 시작합니다.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;안전 / 정책&lt;/strong&gt;: 외부 시스템에 쓰기(write) 동작 없음. 툴의 hint annotation:
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;readOnlyHint: false&lt;/code&gt; — 내부 상태를 생성 / 변경하므로 true가 아님&lt;/li&gt;
&lt;li&gt;&lt;code&gt;destructiveHint: false&lt;/code&gt; — 되돌리기 어려운 외부 영향 없음&lt;/li&gt;
&lt;li&gt;&lt;code&gt;openWorldHint: false&lt;/code&gt; — 공개 인터넷 상태 변경 없음&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="사용자-경험ux-시나리오"&gt;사용자 경험(UX) 시나리오&lt;a class="anchor" href="#%ec%82%ac%ec%9a%a9%ec%9e%90-%ea%b2%bd%ed%97%98ux-%ec%8b%9c%eb%82%98%eb%a6%ac%ec%98%a4"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;h3 id="기본-흐름인터랙티브-위젯"&gt;기본 흐름(인터랙티브 위젯)&lt;a class="anchor" href="#%ea%b8%b0%eb%b3%b8-%ed%9d%90%eb%a6%84%ec%9d%b8%ed%84%b0%eb%9e%99%ed%8b%b0%eb%b8%8c-%ec%9c%84%ec%a0%af"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;사용자가 &lt;code&gt;@Ladder Pick&lt;/code&gt; 또는 &amp;ldquo;play a ladder game&amp;quot;처럼 입력합니다.&lt;/li&gt;
&lt;li&gt;ChatGPT가 &lt;code&gt;create_game&lt;/code&gt; 툴을 호출하고, &lt;strong&gt;Ladder Pick 위젯&lt;/strong&gt; 이 iframe에 표시됩니다.&lt;/li&gt;
&lt;li&gt;위젯 내에서:
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Players&lt;/strong&gt; 리스트: 참가자 이름 추가 / 삭제 (기본 4명)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Items&lt;/strong&gt; 리스트: 결과 항목(상품 / 역할) 추가 / 삭제&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Options&lt;/strong&gt;: Reveal mode (All at once / One by one), Seed (auto / custom)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&amp;ldquo;Pick!&amp;rdquo;&lt;/strong&gt; 버튼 클릭 → 매칭 결과 생성&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;결과 영역:
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;All at once&lt;/strong&gt;: 전체 매칭 표 즉시 표시&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;One by one&lt;/strong&gt;: &amp;ldquo;Reveal Next&amp;rdquo; 버튼으로 한 명씩 공개&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&amp;ldquo;Reshuffle&amp;rdquo;&lt;/strong&gt; 버튼: 새 시드로 다시 섞기&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&amp;ldquo;Export&amp;rdquo;&lt;/strong&gt; 버튼: 결과를 텍스트로 복사&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id="텍스트-폴백"&gt;텍스트 폴백&lt;a class="anchor" href="#%ed%85%8d%ec%8a%a4%ed%8a%b8-%ed%8f%b4%eb%b0%b1"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;위젯 없이도 ChatGPT가 툴 호출 결과를 텍스트(표)로 보여줄 수 있습니다.&lt;/li&gt;
&lt;li&gt;예: &amp;ldquo;Ladder Pick, match A,B,C,D with 1st,2nd,3rd,4th&amp;rdquo; → 텍스트 표 응답&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="에러-케이스"&gt;에러 케이스&lt;a class="anchor" href="#%ec%97%90%eb%9f%ac-%ec%bc%80%ec%9d%b4%ec%8a%a4"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;참가자 &amp;lt; 2명 → 에러 메시지: &amp;ldquo;At least 2 players are required.&amp;rdquo;&lt;/li&gt;
&lt;li&gt;항목 개수 ≠ 참가자 수 → 에러 메시지: &amp;ldquo;Number of items must match number of players. You have {n} players and {m} items.&amp;rdquo;&lt;/li&gt;
&lt;li&gt;항목 비어있음 → 에러 메시지: &amp;ldquo;Items list cannot be empty.&amp;rdquo;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="기능-요구사항"&gt;기능 요구사항&lt;a class="anchor" href="#%ea%b8%b0%eb%8a%a5-%ec%9a%94%ea%b5%ac%ec%82%ac%ed%95%ad"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;h3 id="입력"&gt;입력&lt;a class="anchor" href="#%ec%9e%85%eb%a0%a5"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;참가자 목록(Players)&lt;/strong&gt;: 2~20명&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;결과 항목(Items)&lt;/strong&gt;: 참가자 수와 &lt;strong&gt;정확히 동일한 개수&lt;/strong&gt; (불일치 시 에러 반환)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;옵션&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;Reveal mode: &lt;code&gt;all&lt;/code&gt; | &lt;code&gt;one-by-one&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Seed: 자동 생성 또는 사용자 지정(재현 가능성)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="출력"&gt;출력&lt;a class="anchor" href="#%ec%b6%9c%eb%a0%a5"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;매칭 결과&lt;/strong&gt;: Player ↔ Item 1:1 매핑&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;사다리 표현&lt;/strong&gt;: Canvas 기반 시각적 사다리(수직선 + 가로 발판 + 색깔별 경로 애니메이션) 구현&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="상태--저장"&gt;상태 / 저장&lt;a class="anchor" href="#%ec%83%81%ed%83%9c--%ec%a0%80%ec%9e%a5"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;모듈 레벨 &lt;code&gt;Map&amp;lt;gameId, GameState&amp;gt;&lt;/code&gt;으로 프로세스 내 인메모리 관리&lt;/li&gt;
&lt;li&gt;게임 생성 시 고유 ID 발급, 이후 reshuffle / reveal_next에서 해당 ID로 조회&lt;/li&gt;
&lt;li&gt;영구 저장 없음(서버 재시작 시 초기화됨, 초기에는 이 정도로 충분)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="기술-설계"&gt;기술 설계&lt;a class="anchor" href="#%ea%b8%b0%ec%88%a0-%ec%84%a4%ea%b3%84"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;h3 id="아키텍처공식-구조-기반"&gt;아키텍처(공식 구조 기반)&lt;a class="anchor" href="#%ec%95%84%ed%82%a4%ed%85%8d%ec%b2%98%ea%b3%b5%ec%8b%9d-%ea%b5%ac%ec%a1%b0-%ea%b8%b0%eb%b0%98"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;ChatGPT Apps는 아래 두 요소로 구성됩니다:&lt;/p&gt;</description></item><item><title>개발 히스토리</title><link>https://tedfactory.com/apps/codebattle/history/</link><pubDate>Sat, 31 Jan 2026 00:00:00 +0900</pubDate><guid>https://tedfactory.com/apps/codebattle/history/</guid><description>&lt;h1 id="개발-히스토리"&gt;개발 히스토리&lt;a class="anchor" href="#%ea%b0%9c%eb%b0%9c-%ed%9e%88%ec%8a%a4%ed%86%a0%eb%a6%ac"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;코드배틀은 “한 번에 크게 만들기”보다는 &lt;strong&gt;MVP를 올리고, 느린 지점을 고치고, 행사를 지원하면서 확장&lt;/strong&gt;하는 방식으로 성장해 왔습니다. 특히 초창기에는 회사 일과 공부 사이에서 시간을 쪼개며 진행했고, 그 과정에서 “개발 히스토리를 문서로 남겨 컨텍스트를 유지하는 습관”이 큰 도움이 되었습니다.&lt;/p&gt;
&lt;h2 id="2017년-5월-21일--가위바위보-게임-mvp로-사이트-오픈"&gt;2017년 5월 21일 — 가위바위보 게임 MVP로 사이트 오픈&lt;a class="anchor" href="#2017%eb%85%84-5%ec%9b%94-21%ec%9d%bc--%ea%b0%80%ec%9c%84%eb%b0%94%ec%9c%84%eb%b3%b4-%ea%b2%8c%ec%9e%84-mvp%eb%a1%9c-%ec%82%ac%ec%9d%b4%ed%8a%b8-%ec%98%a4%ed%94%88"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;코드배틀의 1st MVP는 &lt;strong&gt;가위바위보 게임&lt;/strong&gt;이었습니다. 처음에는 웹페이지 하나와 API 하나로 시작했고, 사용자는 &lt;code&gt;onGameStart()&lt;/code&gt;, &lt;code&gt;onRoundStart()&lt;/code&gt; 같은 콜백 함수를 코드 영역에 작성해 “내 전략”을 주입하는 방식이었습니다.&lt;/p&gt;</description></item><item><title>Green Swagger</title><link>https://tedfactory.com/apps/archive/green-swagger/</link><pubDate>Thu, 15 Jan 2026 00:00:00 +0900</pubDate><guid>https://tedfactory.com/apps/archive/green-swagger/</guid><description>&lt;h1 id="green-swagger"&gt;Green Swagger&lt;a class="anchor" href="#green-swagger"&gt;#&lt;/a&gt;&lt;/h1&gt;

&lt;img
 src="https://tedfactory.com/images/apps/green_swagger/green-swagger-icon-big.png"
 alt="Green Swagger 아이콘"
 style="display: block; width: 240px; margin-top: 20px;" /&gt;
&lt;img
 src="https://tedfactory.com/images/apps/green_swagger/green-swagger-promotion-img.png"
 alt="Green Swagger 프로모션 이미지"
 style="display: block; width: 520px; margin-top: 12px; margin-bottom: 20px;" /&gt;

&lt;p&gt;Green Swagger는 &lt;strong&gt;2024년 Gemini API Developer Competition&lt;/strong&gt;에 출품하기 위해 &lt;strong&gt;Flutter로 개발한 안드로이드 / iOS 앱&lt;/strong&gt;입니다. 앱은 “출시를 목표로 개발”까지는 했지만, 여러 이유를 검토한 끝에 &lt;strong&gt;출시하지 않기로 결정&lt;/strong&gt;했고 현재는 프로젝트를 보류한 상태입니다.&lt;/p&gt;
&lt;h2 id="대회에-왜-뛰어들었나"&gt;대회에 왜 뛰어들었나&lt;a class="anchor" href="#%eb%8c%80%ed%9a%8c%ec%97%90-%ec%99%9c-%eb%9b%b0%ec%96%b4%eb%93%a4%ec%97%88%eb%82%98"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;대회의 1등 상금이 &lt;strong&gt;무려 30만 달러&lt;/strong&gt;였고, 경품으로는 영화 백투더퓨쳐에 나올 법한 &lt;strong&gt;자동차&lt;/strong&gt;까지 걸려 있었습니다. 필자 입장에서는 “안 해야 할 이유를 찾기 어려운” 조건이었고, 결국 출품을 결심하게 됐습니다.&lt;/p&gt;</description></item><item><title>Apps</title><link>https://tedfactory.com/apps/</link><pubDate>Sun, 28 Dec 2025 00:00:00 +0900</pubDate><guid>https://tedfactory.com/apps/</guid><description>&lt;h1 id="apps"&gt;Apps&lt;a class="anchor" href="#apps"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;&lt;img src="https://tedfactory.com/images/apps/apps-hero.png" alt="Apps" /&gt;&lt;/p&gt;
&lt;p&gt;개인적으로 앱을 개발해 출시하고, 직접 운영하고 있습니다.&lt;/p&gt;
&lt;p&gt;이곳에는 모바일 앱, 웹서비스, 크롬 익스텐션 등 다양한 형태의 앱들이 모여 있습니다. 제가 개인적으로 기획부터 디자인, 개발, 배포, 운영까지 전 과정을 진행하며 겪었던 시행착오와 고민을 기록하고 공유합니다.&lt;/p&gt;
&lt;p&gt;특히 “런칭한 앱”만 다루지 않습니다. 출시를 포기했거나 운영을 종료한 앱들도, 그 과정에서 배운 점이 분명히 있었기 때문에 가능한 한 함께 정리해두려 합니다.&lt;/p&gt;
&lt;h2 id="다루는-내용"&gt;다루는 내용&lt;a class="anchor" href="#%eb%8b%a4%eb%a3%a8%eb%8a%94-%eb%82%b4%ec%9a%a9"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;기획: 아이디어를 검증하는 방법, 범위 설정, 우선순위, MVP 결정&lt;/li&gt;
&lt;li&gt;디자인: UX 흐름, UI 컴포넌트, 사용성 개선, 디자인 시스템 고민&lt;/li&gt;
&lt;li&gt;개발: 아키텍처, 기술 선택, 성능/안정성, 유지보수 전략&lt;/li&gt;
&lt;li&gt;출시/운영: 배포, 모니터링, 사용자 피드백, 지표/수익화, 개선 사이클&lt;/li&gt;
&lt;li&gt;중단/종료: 왜 멈췄는지, 무엇을 놓쳤는지, 다음엔 어떻게 할지&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="읽는-방법"&gt;읽는 방법&lt;a class="anchor" href="#%ec%9d%bd%eb%8a%94-%eb%b0%a9%eb%b2%95"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;왼쪽 사이드바에서 앱(또는 프로젝트)을 선택해 관련 글을 볼 수 있습니다.&lt;/li&gt;
&lt;li&gt;운영 경험은 시간이 지날수록 달라지기 때문에, 내용은 수시로 업데이트됩니다.&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Ladder Pick in ChatGPT</title><link>https://tedfactory.com/apps/ladder-pick/</link><pubDate>Mon, 02 Mar 2026 00:00:00 +0900</pubDate><guid>https://tedfactory.com/apps/ladder-pick/</guid><description>&lt;h1 id="ladder-pick-in-chatgpt"&gt;Ladder Pick in ChatGPT&lt;a class="anchor" href="#ladder-pick-in-chatgpt"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;h2 id="chatgpt-apps란"&gt;ChatGPT Apps란?&lt;a class="anchor" href="#chatgpt-apps%eb%9e%80"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://openai.com/index/introducing-apps-in-chatgpt/"&gt;&lt;strong&gt;ChatGPT Apps&lt;/strong&gt;&lt;/a&gt; 는 외부 서비스 제공자가 자신의 서비스를 ChatGPT에 통합할 수 있도록 OpenAI가 2025년 10월에 도입한 기능입니다. &lt;strong&gt;MCP(Model Context Protocol)&lt;/strong&gt; 를 기반으로 하고 있는데, MCP는 LLM이 외부의 기능(tools)을 호출할 수 있는 표준을 제공합니다. ChatGPT Apps는 여기서 한 단계 더 나아가, 외부 기능의 &lt;strong&gt;인터랙티브 UI와 로직까지&lt;/strong&gt; ChatGPT 채팅 화면 안에 통합될 수 있도록 확장한 것입니다. 즉, MCP를 통해 &amp;ldquo;LLM이 외부 기능을 사용하는 표준&amp;quot;이 마련되었고, 그 외부 기능의 범위가 단순한 데이터 조회나 실행을 넘어 사용자와 상호작용하는 UI까지로 넓어진 것이라 보면 됩니다. 여기에 더해 OpenAI는 &lt;a href="https://chatgpt.com/apps"&gt;App Directory&lt;/a&gt;라는 마켓플레이스를 열어, 다양한 앱을 많은 사람이 탐색하고 사용해 볼 수 있는 장을 마련했습니다. 개발자 입장에서는 자신이 만든 앱을 ChatGPT의 방대한 사용자 기반에 노출시키고, 앱을 통한 수익화를 기대해 볼 수 있는 환경이 된 것입니다.&lt;/p&gt;</description></item><item><title>Walkholic(워크홀릭)</title><link>https://tedfactory.com/apps/archive/walkholic/</link><pubDate>Wed, 14 Jan 2026 00:00:00 +0900</pubDate><guid>https://tedfactory.com/apps/archive/walkholic/</guid><description>&lt;h1 id="walkholic워크홀릭"&gt;Walkholic(워크홀릭)&lt;a class="anchor" href="#walkholic%ec%9b%8c%ed%81%ac%ed%99%80%eb%a6%ad"&gt;#&lt;/a&gt;&lt;/h1&gt;

&lt;img
 src="https://tedfactory.com/images/apps/walkholic/walkholic-icon-big.png"
 alt="Walkholic(워크홀릭) 아이콘"
 style="display: block; width: 240px; margin-top: 20px;" /&gt;
&lt;img
 src="https://tedfactory.com/images/apps/walkholic/walkholic-promotion-img.png"
 alt="Walkholic(워크홀릭) 프로모션 이미지"
 style="display: block; width: 520px; margin-top: 12px; margin-bottom: 20px;" /&gt;

&lt;p&gt;Walkholic(워크홀릭)은 &lt;strong&gt;2015년경 구글플레이에 출시했었던 안드로이드 앱&lt;/strong&gt;입니다. 현재는 관리상의 이유로 구글플레이에서 삭제되었습니다.&lt;/p&gt;
&lt;p&gt;당시는 “걷기/달리기/자전거” 같은 기본 활동을 측정하고, 활동량이나 심박 등을 기록해 주는 피트니스 앱들이 본격적으로 유행하기 시작하던 시기였습니다. 마침 구글에서도 &lt;strong&gt;Google Fit API&lt;/strong&gt;를 제공하며 생태계를 만들기 시작했고, 그 흐름 속에서 &lt;strong&gt;Google Fit Challenge&lt;/strong&gt;라는 개발자 대회가 열렸습니다. 그리고 역시나(?) 필자는 참가를 했고, 앱을 개발하기 시작했습니다.&lt;/p&gt;</description></item><item><title>I am your AI</title><link>https://tedfactory.com/apps/iamyourai/</link><pubDate>Sun, 18 Jan 2026 00:00:00 +0900</pubDate><guid>https://tedfactory.com/apps/iamyourai/</guid><description>&lt;h1 id="i-am-your-ai---웹-학습-노트-작성-작업-자동화를-위한-ai-어시스턴트"&gt;I am your AI - 웹 학습, 노트 작성, 작업 자동화를 위한 AI 어시스턴트&lt;a class="anchor" href="#i-am-your-ai---%ec%9b%b9-%ed%95%99%ec%8a%b5-%eb%85%b8%ed%8a%b8-%ec%9e%91%ec%84%b1-%ec%9e%91%ec%97%85-%ec%9e%90%eb%8f%99%ed%99%94%eb%a5%bc-%ec%9c%84%ed%95%9c-ai-%ec%96%b4%ec%8b%9c%ec%8a%a4%ed%84%b4%ed%8a%b8"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;읽고, 묻고, 정리하고, 자동화까지 — 웹 브라우징의 모든 순간에 AI가 함께합니다.&lt;/p&gt;
&lt;p&gt;웹페이지를 빠르게 요약하고, 모르는 부분은 바로 질문하고, AI와 함께 노트를 작성하며 지식을 쌓아보세요. 반복적인 웹 작업도 자동화할 수 있습니다. 프롬프트를 직접 설정하며 나만의 AI 어시스턴트를 만들어 보세요.&lt;/p&gt;

&lt;p style="margin-top: 8px; margin-bottom: 20px;"&gt;
 &lt;a href="https://chromewebstore.google.com/detail/i-am-your-ai/dajfnkohhomckmeakoikehhojpphmaej" target="_blank" rel="noopener noreferrer"&gt;크롬 웹 스토어 - I am your AI (상세 페이지)&lt;/a&gt;
&lt;/p&gt;

&lt;h2 id="필자가-이-앱을-만들고-출시한-이유"&gt;필자가 이 앱을 만들고 출시한 이유&lt;a class="anchor" href="#%ed%95%84%ec%9e%90%ea%b0%80-%ec%9d%b4-%ec%95%b1%ec%9d%84-%eb%a7%8c%eb%93%a4%ea%b3%a0-%ec%b6%9c%ec%8b%9c%ed%95%9c-%ec%9d%b4%ec%9c%a0"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;생각해보면 컴퓨터를 사용할 때 웹브라우저를 사용하는 비율이 상당히 높습니다. 일을 할 때나 공부를 할 때나 놀 때나 결국 대부분의 정보와 작업 흐름이 브라우저 안에서 일어납니다. 그렇다면 &lt;strong&gt;AI 기반의 브라우저 확장 도구&lt;/strong&gt;를 잘 만들면, 필자처럼 &amp;ldquo;웹에서 시간을 많이 쓰는 사람&amp;quot;의 퍼포먼스를 여러 방면에서 끌어올릴 수 있고, 비슷한 니즈를 가진 분들에게도 충분히 유의미한 앱이 될 수 있다고 판단했습니다.&lt;/p&gt;</description></item><item><title>미션 오목(TAKE FIVE)</title><link>https://tedfactory.com/apps/archive/take-five/</link><pubDate>Tue, 13 Jan 2026 00:00:00 +0900</pubDate><guid>https://tedfactory.com/apps/archive/take-five/</guid><description>&lt;h1 id="미션-오목take-five"&gt;미션 오목(TAKE FIVE)&lt;a class="anchor" href="#%eb%af%b8%ec%85%98-%ec%98%a4%eb%aa%a9take-five"&gt;#&lt;/a&gt;&lt;/h1&gt;

&lt;img
 src="https://tedfactory.com/images/apps/take_five/take_five_icon_big.png"
 alt="미션 오목(TAKE FIVE) 아이콘"
 style="display: block; width: 240px; margin-top: 20px;" /&gt;
&lt;img
 src="https://tedfactory.com/images/apps/take_five/take_five_promotion_img.png"
 alt="미션 오목(TAKE FIVE) 프로모션 이미지"
 style="display: block; width: 520px; margin-top: 12px; margin-bottom: 20px;" /&gt;

&lt;p&gt;미션 오목(TAKE FIVE)은 &lt;strong&gt;2014년경 구글플레이에 출시했었던 안드로이드 게임&lt;/strong&gt;입니다. 현재는 관리상의 이유로 구글플레이에서 삭제되었습니다.&lt;/p&gt;
&lt;p&gt;당시는 캔디크러쉬 같은 퍼즐 게임들이 유행하던 시기였는데, 문득 “오목은 익숙한 룰인데도 제대로 선점한 게임이 없지 않나?”라는 생각이 들었습니다. 그래서 단순한 오목을 그대로 구현하기보다, &lt;strong&gt;재미있는 컨셉과 ‘미션’ 구조를 입힌 오목&lt;/strong&gt;을 만들어 보기로 했습니다.&lt;/p&gt;
&lt;h2 id="컨셉-ufo-2대가-땅따먹기를-하는-오목"&gt;컨셉: UFO 2대가 ‘땅따먹기’를 하는 오목&lt;a class="anchor" href="#%ec%bb%a8%ec%85%89-ufo-2%eb%8c%80%ea%b0%80-%eb%95%85%eb%94%b0%eb%a8%b9%ea%b8%b0%eb%a5%bc-%ed%95%98%eb%8a%94-%ec%98%a4%eb%aa%a9"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;게임의 기본 룰은 “가로 / 세로 / 대각선으로 다섯 칸을 먼저 점령하면 승리”라는 오목 규칙을 따르되, 말(돌) 대신 &lt;strong&gt;UFO 2대가 격자 공간에서 땅을 점령하면서 이동&lt;/strong&gt;하는 형태였습니다.&lt;/p&gt;</description></item><item><title>코드배틀(Code Battle)</title><link>https://tedfactory.com/apps/codebattle/</link><pubDate>Sun, 18 Jan 2026 00:00:00 +0900</pubDate><guid>https://tedfactory.com/apps/codebattle/</guid><description>&lt;h1 id="코드배틀code-battle"&gt;코드배틀(Code Battle)&lt;a class="anchor" href="#%ec%bd%94%eb%93%9c%eb%b0%b0%ed%8b%80code-battle"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;코드배틀(Code Battle)은 &lt;strong&gt;필자가 운영 중인 웹사이트&lt;/strong&gt;로, 내 코드와 상대 코드가 &lt;strong&gt;턴(TURN) 단위로 1:1 대결&lt;/strong&gt;을 벌이는 게임입니다. 게임은 여러 개의 라운드(ROUND)로 구성되고, 라운드는 여러 개의 턴으로 구성됩니다. 각 턴에서 “나의 선택”과 “상대의 선택”이 승/패와 점수를 만들고, 그 결과가 누적되어 라운드 승/패와 게임 승/패가 결정됩니다.&lt;/p&gt;

&lt;p style="margin-top: 8px; margin-bottom: 20px;"&gt;
 &lt;a href="https://codebattle.online/" target="_blank" rel="noopener noreferrer"&gt;코드배틀 사이트 (https://codebattle.online/)&lt;/a&gt;
&lt;/p&gt;

&lt;h2 id="코드배틀은-무엇인가what"&gt;코드배틀은 무엇인가(What)&lt;a class="anchor" href="#%ec%bd%94%eb%93%9c%eb%b0%b0%ed%8b%80%ec%9d%80-%eb%ac%b4%ec%97%87%ec%9d%b8%ea%b0%80what"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;코드배틀의 핵심은 “정답을 맞히는 코딩”이라기보다, &lt;strong&gt;전략을 코드로 구현해 상대를 이기는 구조&lt;/strong&gt;입니다. 단순히 문제를 풀고 끝나는 것이 아니라, 상대의 패턴을 분석하고, 다음 턴을 예측하고, 그 예측을 코드로 반영해 &lt;strong&gt;대결의 흐름을 만든다&lt;/strong&gt;는 점이 특징입니다.&lt;/p&gt;</description></item><item><title>스마트 브라우저</title><link>https://tedfactory.com/apps/archive/smart-browser/</link><pubDate>Tue, 13 Jan 2026 00:00:00 +0900</pubDate><guid>https://tedfactory.com/apps/archive/smart-browser/</guid><description>&lt;h1 id="스마트-브라우저"&gt;스마트 브라우저&lt;a class="anchor" href="#%ec%8a%a4%eb%a7%88%ed%8a%b8-%eb%b8%8c%eb%9d%bc%ec%9a%b0%ec%a0%80"&gt;#&lt;/a&gt;&lt;/h1&gt;

&lt;img
 src="https://tedfactory.com/images/apps/smart_browser/smart_browser_icon_big.png"
 alt="스마트 브라우저 아이콘"
 style="display: block; width: 240px; margin-top: 20px;" /&gt;
&lt;img
 src="https://tedfactory.com/images/apps/smart_browser/smart_browser_promotion_img.jpg"
 alt="스마트 브라우저 프로모션 이미지"
 style="display: block; width: 520px; margin-top: 12px; margin-bottom: 20px;" /&gt;

&lt;p&gt;스마트 브라우저는 &lt;strong&gt;2012년경 구글플레이에 출시했었던 안드로이드 브라우저 앱&lt;/strong&gt;입니다. 현재는 관리상의 이유로 구글플레이에서 삭제되었습니다.&lt;/p&gt;
&lt;p&gt;이 앱은 2012년에 열렸던 “&lt;strong&gt;구글 핵페어&lt;/strong&gt;”라는 행사에 출품하기 위해 개발했습니다. 당시에는 모바일 시장이 한창 전쟁터이면서도, 지금만큼 완전히 성숙하기 전이었습니다. 개인적으로 안드로이드 폰에서 &lt;strong&gt;크롬 브라우저를 쓰면서 아쉬웠던 지점들&lt;/strong&gt;이 있었고, 마침 핵페어에 참여하게 되면서 “그럼 내가 원하는 브라우저를 직접 만들어보자”는 마음으로 프로젝트를 시작했습니다.&lt;/p&gt;</description></item><item><title>피아노 키보드</title><link>https://tedfactory.com/apps/archive/piano-keyboard/</link><pubDate>Mon, 12 Jan 2026 00:00:00 +0900</pubDate><guid>https://tedfactory.com/apps/archive/piano-keyboard/</guid><description>&lt;h1 id="피아노-키보드"&gt;피아노 키보드&lt;a class="anchor" href="#%ed%94%bc%ec%95%84%eb%85%b8-%ed%82%a4%eb%b3%b4%eb%93%9c"&gt;#&lt;/a&gt;&lt;/h1&gt;

&lt;img
 src="https://tedfactory.com/images/apps/piano_keyboard/piano_keyboard_icon.png"
 alt="피아노 키보드 아이콘"
 style="display: block; width: 240px; margin-top: 20px;" /&gt;
&lt;img
 src="https://tedfactory.com/images/apps/piano_keyboard/piano_keyboard_promotion_image.png"
 alt="피아노 키보드 프로모션 이미지"
 style="display: block; width: 520px; margin-top: 12px; margin-bottom: 20px;" /&gt;

&lt;p&gt;피아노 키보드는 &lt;strong&gt;2011년경 구글플레이에 출시했었던 안드로이드 키보드 앱&lt;/strong&gt;입니다. 현재는 관리상의 이유로 구글플레이에서 삭제되었습니다.&lt;/p&gt;
&lt;p&gt;이 앱은 노룩(No Look) 키보드의 경험에서 출발했습니다. 노룩 키보드는 아이디어 자체는 흥미로웠지만, 현실적으로 &lt;strong&gt;사용하기 너무 어려웠습니다.&lt;/strong&gt; 그래서 이번에는 “학습 비용이 낮고, 써보면 재미를 바로 느낄 수 있는 키보드”를 만들어 보고자 했고, 그 결과 &lt;strong&gt;피아노 건반을 컨셉으로 한 키보드&lt;/strong&gt;를 기획하고 개발했습니다.&lt;/p&gt;</description></item><item><title>Archive</title><link>https://tedfactory.com/apps/archive/</link><pubDate>Sun, 11 Jan 2026 00:00:00 +0900</pubDate><guid>https://tedfactory.com/apps/archive/</guid><description>&lt;h1 id="archive"&gt;Archive&lt;a class="anchor" href="#archive"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;이곳은 &lt;strong&gt;한때 스토어(예: Google Play / App Store)나 웹으로 출시·런칭했었지만 지금은 내렸거나 운영을 종료한 프로젝트들&lt;/strong&gt;, 그리고 &lt;strong&gt;출시를 목표로 개발했지만 결국 출시를 포기했거나 잠정 보류한 프로젝트들&lt;/strong&gt;을 모아두는 공간입니다. 대상은 구글플레이용 안드로이드 앱에만 한정되지 않고, iOS 앱이나 웹서비스 등 다양한 형태를 포함할 수 있습니다. “성공 사례만 모아두는 포트폴리오”보다는, 개발을 하며 겪었던 시행착오와 선택의 기록을 더 솔직하게 남기고 싶어서 만들었습니다.&lt;/p&gt;
&lt;p&gt;사실 앱을 만든다는 것은 코드를 작성하는 것만으로 끝나지 않습니다. 무엇을 만들지 정하는 기획, 디자인과 UX 흐름, 개발 과정에서의 기술 선택, 출시 준비와 스토어 등록, 운영 중 사용자 피드백 대응, 그리고 어느 시점에서 “계속 갈 것인지/멈출 것인지”를 판단하는 결정까지 모두 포함됩니다. 그리고 많은 경우, 가장 큰 배움은 &lt;strong&gt;멈추는 과정&lt;/strong&gt;에서 생기기도 합니다. 왜 예상처럼 흘러가지 않았는지, 어떤 가정을 잘못 두었는지, 무엇이 부족했는지, 다음에는 무엇을 더 일찍 검증해야 하는지 같은 것들이죠.&lt;/p&gt;</description></item><item><title>노룩(No Look) 키보드</title><link>https://tedfactory.com/apps/archive/nolook-keyboard/</link><pubDate>Sun, 11 Jan 2026 00:00:00 +0900</pubDate><guid>https://tedfactory.com/apps/archive/nolook-keyboard/</guid><description>&lt;h1 id="노룩no-look-키보드"&gt;노룩(No Look) 키보드&lt;a class="anchor" href="#%eb%85%b8%eb%a3%a9no-look-%ed%82%a4%eb%b3%b4%eb%93%9c"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;img src="https://tedfactory.com/images/apps/nolook_keyboard/nolook_keyboard_icon_big.png" alt="노룩(No Look) 키보드 아이콘" width="320" style="display: block;" /&gt;
&lt;p&gt;노룩(No Look) 키보드는 &lt;strong&gt;2011년경 구글플레이에 출시했었던 안드로이드 키보드 앱&lt;/strong&gt;입니다. 현재는 관리상의 이유로 구글플레이에서 삭제되었습니다. 하지만 제게는 이 앱이 단순한 “옛날 앱”이 아니라, &lt;strong&gt;사이드 프로젝트로 앱을 개발해서 실제로 출시해 본 첫 경험&lt;/strong&gt;이었기 때문에, 아카이브에 꼭 기록으로 남기고 싶었습니다.&lt;/p&gt;
&lt;p&gt;기획의 출발점은 꽤 개인적인 경험이었습니다. 버스에서 스마트폰 키보드로 무언가를 작성하다가 멀미를 했던 적이 있는데, 그때 문득 “스마트폰을 보지 않고도 키보드 타이핑을 할 수 있으면 좋지 않을까?”라는 생각이 들었습니다. 결국 “시선은 전방(혹은 멀리)을 두고, 손가락의 감각만으로 입력할 수 있는 키보드”라는 컨셉을 잡고 개발을 시작했습니다.&lt;/p&gt;</description></item></channel></rss>