"1분반-Locauto"의 두 판 사이의 차이

cdc wiki
이동: 둘러보기, 검색
(시장상황에 대한 분석)
(설계)
141번째 줄: 141번째 줄:
  
 
==설계==
 
==설계==
===설계사양===
+
===사용자 요구사항===
====제품의 요구사항====
 
 
내용
 
내용
====설계 사양====
+
 
 +
===사용자 요구사항 만족을 위한 기능 정의 및 기능별 정량목표===
 
내용
 
내용
  
===개념설계안===
+
===기능 구현을 위한 세부기술 선택사항 (디자인)===
 +
내용
 +
 
 +
===시스템 설계===
 
내용
 
내용
  
153번째 줄: 156번째 줄:
 
내용
 
내용
  
===상세설계 내용===
+
===하드웨어 설계===
내용
+
* 소프트웨어 시스템으로, 별도의 물리적 하드웨어 설계가 요구되지 않는다.
 +
 
 +
 
 +
===소프트웨어 설계===
 +
'''Backend (Spring Boot 3.4.3)'''
 +
 
 +
주요 엔티티: User, Project, Asset, Label
 +
 
 +
ORM: Spring Data JPA (with QueryDSL)
 +
 
 +
인증: Supabase Auth JWT 인증 → Spring Security Filter 연동
 +
 
 +
'''* REST API 구조:'''
 +
:account-key-controller
 +
:: GET /api/account-keys account — key 조회
 +
:: POST /api/account-keys account — key 생성
 +
:: GET /api/account-keys/projects — 계정 프로젝트 목록
 +
:: DELETE /api/account-keys/{accountKeyId} — account key 삭제
 +
 
 +
:glossary-controller
 +
:: PUT /api/projects/{projectId}/glossaries/{glossaryId} — 단어집 수정
 +
:: DELETE /api/projects/{projectId}/glossaries/{glossaryId} — 단어집 삭제
 +
:: GET /api/projects/{projectId}/glossaries — 단어집 조회
 +
:: POST /api/projects/{projectId}/glossaries — 단어집 생성
 +
 
 +
:cli-controller
 +
:: POST /api/cli/{projectId}/localize — CLI 용 번역
 +
:: POST /api/cli/projects — 프로젝트 생성
 +
 
 +
:project-controller
 +
:: GET /api/projects — 프로젝트 리스트 조회
 +
:: POST /api/projects — 프로젝트 생성
 +
:: GET /api/projects/{id} — 단일 프로젝트 조회
 +
:: DELETE /api/projects/{id} — 프로젝트 삭제
 +
:: PATCH /api/projects/{id} — 프로젝트 정보 수정
 +
 
 +
:pull/push-controller
 +
:: POST /api/push — CLI PUSH
 +
:: GET /api/pull/{projectId} — CLI PULL
 +
 
 +
:resource-controller
 +
:: GET /api/resources/assets/{projectId}/{locale} — project locale 에셋 추출
 +
 
 +
:rule-controller
 +
:: GET /api/projects/{projectId}/rules — 프로젝트 번역 규칙 조회
 +
:: PUT /api/projects/{projectId}/rules — 프로젝트 번역 규칙 수정
 +
 
 +
:table-controller
 +
:: PUT /api/projects/{projectId}/tables/rows/{rowId} — 테이블 ROW 직접 수정
 +
:: POST /api/projects/{projectId}/tables/localize — 테이블 localize
 +
:: POST /api/projects/{projectId}/tables/columns — 테이블 COLUMN 추가
 +
:: GET /api/projects/{projectId}/tables — 번역 테이블 조회
 +
 
 +
:user-controller
 +
:: POST /api/users — user 생성
  
 
==결과 및 평가==
 
==결과 및 평가==

2025년 6월 18일 (수) 03:17 판

프로젝트 개요

기술개발 과제

국문 : SMB 소프트웨어 비즈니스를 위한 간편한 랜딩페이지 로컬라이제이션 툴

영문 : Easy landing page localization tools for SMB software businesses

과제 팀명

Locauto

지도교수

이경재 교수님

개발기간

2025년 3월 ~ 2025년 6월 (총 4개월)

구성원 소개

서울시립대학교 컴퓨터과학부 20199200** 정*혁(팀장)

서울시립대학교 컴퓨터과학부 20199200** 정*호

서울시립대학교 컴퓨터과학부 20199200** 최*훈

서울시립대학교 컴퓨터과학부 20209200** 이*우

서론

개발 과제의 개요

개발 과제 요약

  • SMB 소프트웨어 비즈니스를 위한 간편한 프로덕트 로컬라이제이션 툴이다.
  • 사용자는 CLI 및 WEB GUI을 조작하여 코드를 적용하여 페이지를 변환하고, SDK가 자동으로 번역 결과를 렌더링한다.
  • 웹앱을 통해 번역의 세부 사항 및 기타 설정을 변경한다.

개발 과제의 배경 및 효과

  • SMB는 글로벌 진출 기회를 이용하고 싶으므로, 로컬라이제이션을 하고 싶어 한다.
  • 그러나 '로컬라이제이션'이라는 과정은 굉장히 노동집약적이므로, 소규모의 소프트웨어 비즈니스는 리소스가 부족하다고 느낀다.
  • 본 프로젝트를 이용하면 ‘로컬라이제이션’의 과정을 자동화하여 코드 수정, 번역, 적용의 단계를 10분 안에 마칠 수 있다.
  • 브랜드와 문맥, 사용자 설정을 반영하는 AI 번역 서비스로 오류 없는 메시지를 명확히 전달한다.
  • 다만 모든 IT 프로덕트를 번역하는 서비스로 만들기에는 ‘컴퓨터과학종합설계’ 내에서는 어려우므로, 랜딩페이지에 집중하여 우선적으로 개발하려고 한다.

개발 과제의 목표 및 내용

목표

  • 자동화된 로컬라이제이션 환경 구축을 위한 CLI, SDK, 웹앱 개발
  • AI를 활용한 브랜드 톤 및 용어의 일관성 있는 자동 번역 제공
  • 번역 품질과 현지화 정확도 향상 및 관리 효율화
  • 쉽고 빠르게 사용 가능한 사용자 인터페이스 제공

CLI 개발

  • localize init: 번역 프로젝트 초기화
  • localize extract: 프로젝트의 문자열 데이터를 추출 및 문자열 데이터를 비교하여 변경사항 추적
  • localize push: 프로젝트 디렉토리의 추출된 문자열 데이터를 서버에 전송
  • localize pull: 서버에서 최신 번역 데이터를 받아 프로젝트 파일 내 저장
  • localize apply: 코드베이스를 읽으면서 문자열 자동 업데이트
  • localize translate: 서버에서 최신 번역 데이터를 받아 프로젝트 파일 내 문자열 자동 업데이트

SDK 개발

  • 초기화 시 사용자 locale 설정
  • TypeScript 타입 자동 생성 및 로컬라이제이션 파일 export
  • 언어 변경 기능 수동 제공
  • Next.js 프레임워크를 우선적으로 적용

서버 개발

  • CLI에서 전송된 데이터 수신 및 구조화 매핑
  • 번역 데이터 버전 관리 및 변경사항 추적
  • 웹앱 대시보드를 위한 CRUD API 제공
  • AI 번역 모델과 연계하여 문맥 기반 자동 번역
  • 텍스트 유형(제목, 버튼, 설명 등)에 따라 최적화된 번역 프롬프트 개발

대시보드 개발

  • 언어별 번역 데이터 입력 및 저장
  • 향후 검색 및 필터링 기능 확장 가능 구조 마련

관련 기술의 현황

관련 기술의 현황 및 분석

가. State of art

  • 자동 기계번역: 신경망 기계번역(NMT)의 품질 향상으로, 번역 워크플로우에 자동 번역을 도입하는 것이 일반화되었다. 2024년 기준 전체 번역 작업의 70%가 기계 번역의 도움을 받는 형태로 진행되고 있을 정도로 확대되었으며​, 이는 전년 대비 크게 증가한 수치이다. 기업들은 번역 초안을 AI가 생성하고 인간이 후기 편집하는 MTPE(Machine Translation Post-Editing)방식으로 생산성을 높이고 있다. 특히 GPT, Claude 등 대형 언어모델(LLM)기반 번역이 전통적인 번역 엔진을 능가하는 정확도를 보이며 새롭게 주목받고 있다.
  • 코드베이스 해석기: ​리액트(React)와 타입스크립트(TypeScript) 파일을 파싱하는 최신 기술은 주로 다음과 같은 도구와 라이브러리를 활용한다.
    • 타입스크립트 컴파일러 API (TypeScript Compiler API): 타입스크립트 자체에서 제공하는 컴파일러 API를 사용하여 TSX 파일을 파싱하고, 추상 구문 트리(AST)를 생성하여 코드 구조를 분석할 수 있다.​
    • Babel: Babel은 자바스크립트 컴파일러로, @babel/preset-react@babel/preset-typescript 프리셋을 사용하여 TSX 파일을 파싱하고 변환할 수 있다. 이를 통해 최신 문법을 구버전 자바스크립트로 트랜스파일하거나, 코드 분석을 위한 AST를 생성할 수 있다.​
    • ESLint: 코드 품질과 일관성을 유지하기 위한 린터 도구로, @typescript-eslint/parser를 사용하여 TSX 파일을 파싱하고, 코드 규칙을 적용하여 정적 분석을 수행할 수 있다.

나. 기술 로드맵

  • MVP 기능 구현
    • 웹 문자열 추출 엔진 개발: 사용자 코드베이스에서 본문 텍스트와 일부 속성값(alt, title 등)을 식별 및 추출.​
    • 추출된 텍스트를 구조화하여 백엔드로 전송하고 데이터베이스에 저장.​
    • 번역 API 호출을 통해 각 타깃 언어로 기계 번역된 초안 생성.​
    • 번역 완료 후, 수정된 텍스트를 코드베이스에 적용하는 기능 구현.

시장상황에 대한 분석

가. 경쟁제품 조사 비교

  • 글로벌 SaaS 스타트업을 위한 랜딩페이지 로컬라이제이션 툴과 유사한 기능을 제공하는 주요 경쟁 제품으로 Lokalise, Crowdin, Localazy, POEditor 등이 있으며, 자동 번역 엔진으로 Google Translate와 DeepL도 활용되고 있다.
  • vs 자동 번역 엔진
자동 번역 엔진은 Google Translate, DeepL과 같은 전문 번역 툴을 의미한다.
Pros: 자동 번역 엔진은 일반적인 상황에서 높은 번역 품질을 자랑하고 광범위한 언어 지원한다
Cons: 맥락 고려 부족으로 어색한 번역이 존재한다. 전문용어/업계용어 정확도 한계가 존재하며, 브랜드가 원하는 톤앤 매너로 일관성있게 번역하기 힘들다.
  • vs 로컬라이제이션 툴
로컬라이제이션 툴은 Lokalise, Crowdin 같은 앱의 에셋을 관리 및 번역을 도와주는 툴을 의미한다.
- Lokalise
Pros: 많은 통합 기능과 풍부한 기능 세트, 포괄적인 지원 옵션(이메일/헬프 데스크, 채팅, 지식 베이스, 24/7 실시간 지원 등)을 제공한다.
Cons: SMB가 진입하기에는 가격이 높다. 소규모 프로젝트에는 과복잡한 기능 셋이다.
- Crowdin
Pros: 오픈소스 프로젝트로 스타트업 개발자에게 친숙한 이미지를 쌓았고, 600여개의 통합을 내세워 자동화/개발 워크플로우에 강점이 있다.
Cons: 신속한 초기 설정이 불가능하다. 개발자나 일일히 코드베이스에서 sdk 문법에 따라서 작성해줘야한다. 따라서 작은 규모의 스타트업이 제대로 도입하기 위해서는 허들이 있다.

Locauto1.png

나. 마케팅 전략 제시

  • 포지셔닝: 경쟁사들은 각자 대상 고객(대기업/스타트업/개인)과 강조 포인트(풍부한 기능 vs 자동화 vs 가격 등)이 다르다. 우리 제품은 SMB를 위한 간편한 로컬라이제이션이라는 컨셉에 맞게, 쉬운 사용성, 즉각적인 결과(자동 번역), 가성비 등을 전면에 내세워 마케팅한다. 이를 통해 글로벌 시장을 노리는 스타트업에게 “낮은 진입장벽의 필요한 기능만 담은 최적화된 솔루션”으로 포지셔닝한다.
  • 초기 시장 진입 채널: 소규모 개발자들을 타겟하고 있으므로 인스타그램, 쓰레드, geek news 등의 마케팅 채널을 타겟팅한다.

개발과제의 기대효과

기술적 기대효과

  • 본 프로젝트를 통해 개발되는 로컬라이제이션 툴은 기존 대비 뛰어난 자동화 수준과 사용자 경험을 제공함으로써 여러 기술적 혁신을 이끌 것으로 기대한다.
  • 높아진 자동화로 인한 생산성 향상
기존 툴에서는 개발자가 소스 문구를 추출하고, 번역 완료 후 수동으로 사이트에 반영하는 작업이 필요했다. 반면 본 제품은 이러한 과정을 자동화하여, 번역 필요 문구 감지 → 기계번역 → 편집까지의 사이클을 최소한의 인력 개입으로 완료한다. 이를 통해 IT 프로덕트를 다국어로 개설하는 데 걸리는 시간이 획기적으로 단축된다 (과거 수일 소요 작업을 몇 시간 내로 단축).
  • 사용 편의성 혁신
기술적으로 아무리 뛰어나도 최종 사용자가 어려움을 느끼면 도입이 망설여진다. 본 제품은 진입장벽을 최소로 빠르게 적용할 수 있는 쉬운 UI/UX를 지향하여, 소규모 스타트업에서도 쉽게 직접 다국어 페이지를 만들 수 있게 된다. 이는 곧 기업 로컬라이제이션 프로세스의 민주화로 이어져, 프로덕트의 글로벌 대응이 가능한 업무 혁신을 가져온다

경제적, 사회적 기대 및 파급효과

  • IT 프로덕트에 번역을 도와주는 솔루션으로 발전되었다고 가정해보자.
  • 여러 조사에 따르면 전 세계적으로 약 3만 800여 개의 SaaS 기업이 활동 중이며​, 그중 절반 이상은 직원 10명 미만의 소규모 팀으로 이루어진 스타트업들이다. 이러한 시장에서 기업들의 예상 사용량을 추산해보자.
  • 가격 모델은 월 $20의 구독료에 번역 사용량 기반 요금이 추가되는 형태라고 가정한다.
이를 고려하여 고객당 연간 수익을 산정하면 다음과 같다.
우선 기본 구독료로 연 $240의 고정 수익이 발생한다. 한 고객당 3개 언어로 500단어씩 단어당 $0.02를 사용한다고 가정하면 약 $30의 번역 사용량 요금이 발생한다.
  • 연간 반복 수익으로 계산된다고 가정하고, 5%의 기업이 사용한다고 가정하면 ($240 + $30) * 30800 * 0.05 = $415,800의 연간 반복 수익이 일어날 것으로 예상된다.

기술개발 일정 및 추진체계

구성원 및 추진체계

  • 정민혁 (팀장) : 프로젝트 총괄 및 Web GUI, CLI/SDK 개발
  • 정인호 : CLI, SDK 개발
  • 최용훈 : 백엔드 개발
  • 이종우 : AI, Web GUI

설계

사용자 요구사항

내용

사용자 요구사항 만족을 위한 기능 정의 및 기능별 정량목표

내용

기능 구현을 위한 세부기술 선택사항 (디자인)

내용

시스템 설계

내용

이론적 계산 및 시뮬레이션

내용

하드웨어 설계

  • 소프트웨어 시스템으로, 별도의 물리적 하드웨어 설계가 요구되지 않는다.


소프트웨어 설계

Backend (Spring Boot 3.4.3)

주요 엔티티: User, Project, Asset, Label

ORM: Spring Data JPA (with QueryDSL)

인증: Supabase Auth JWT 인증 → Spring Security Filter 연동

* REST API 구조:

account-key-controller
GET /api/account-keys account — key 조회
POST /api/account-keys account — key 생성
GET /api/account-keys/projects — 계정 프로젝트 목록
DELETE /api/account-keys/{accountKeyId} — account key 삭제
glossary-controller
PUT /api/projects/{projectId}/glossaries/{glossaryId} — 단어집 수정
DELETE /api/projects/{projectId}/glossaries/{glossaryId} — 단어집 삭제
GET /api/projects/{projectId}/glossaries — 단어집 조회
POST /api/projects/{projectId}/glossaries — 단어집 생성
cli-controller
POST /api/cli/{projectId}/localize — CLI 용 번역
POST /api/cli/projects — 프로젝트 생성
project-controller
GET /api/projects — 프로젝트 리스트 조회
POST /api/projects — 프로젝트 생성
GET /api/projects/{id} — 단일 프로젝트 조회
DELETE /api/projects/{id} — 프로젝트 삭제
PATCH /api/projects/{id} — 프로젝트 정보 수정
pull/push-controller
POST /api/push — CLI PUSH
GET /api/pull/{projectId} — CLI PULL
resource-controller
GET /api/resources/assets/{projectId}/{locale} — project locale 에셋 추출
rule-controller
GET /api/projects/{projectId}/rules — 프로젝트 번역 규칙 조회
PUT /api/projects/{projectId}/rules — 프로젝트 번역 규칙 수정
table-controller
PUT /api/projects/{projectId}/tables/rows/{rowId} — 테이블 ROW 직접 수정
POST /api/projects/{projectId}/tables/localize — 테이블 localize
POST /api/projects/{projectId}/tables/columns — 테이블 COLUMN 추가
GET /api/projects/{projectId}/tables — 번역 테이블 조회
user-controller
POST /api/users — user 생성

결과 및 평가

완료 작품의 소개

프로토타입 사진 혹은 작동 장면

내용

포스터

-

관련사업비 내역서

내용

완료작품의 평가

내용

향후계획

내용

특허 출원 내용

-