AI인사이트 로고AI인사이트
챕터 2

AI 코드 생성 프롬프트 패턴 — 요구사항을 코드로 변환하는 기술

AI에게 고품질 코드를 생성시키는 5가지 핵심 프롬프트 패턴(역할 지정, 단계적 분해, 제약 조건 명시, 예시 기반, 테스트 주도)을 실전 예제와 함께 다룹니다. Python, JavaScript, Java, Go 등 언어별 최적 프롬프트와 API 설계, DB 스키마, 프론트엔드 컴포넌트 생성까지 포괄합니다.

프롬프트가 코드 품질을 결정합니다

같은 AI 도구를 사용해도 결과물의 품질은 천차만별입니다. 어떤 개발자는 AI가 생성한 코드를 거의 수정 없이 사용하고, 어떤 개발자는 AI 코드를 결국 버리고 직접 작성합니다. 차이는 도구가 아니라 프롬프트에 있습니다.

"로그인 기능 만들어줘"라고 요청하는 것과 "OAuth 2.0 기반 소셜 로그인을 구현하되, refresh token 로테이션을 포함하고, CSRF 방어를 적용하며, 실패 시 retry 로직을 exponential backoff로 구현해줘"라고 요청하는 것은 전혀 다른 결과를 만들어냅니다.

이 챕터에서는 AI 코드 생성의 품질을 극적으로 향상시키는 5가지 핵심 프롬프트 패턴을 다룹니다. 각 패턴은 독립적으로 사용할 수도 있고, 조합하여 더 강력한 결과를 얻을 수도 있습니다.

패턴 1: 역할 지정 (Role Assignment)

AI에게 특정 전문가의 역할을 부여하면, 해당 관점에서 코드를 작성합니다. "시니어 개발자", "보안 전문가", "성능 최적화 전문가" 등의 역할은 AI의 코드 생성 방향을 근본적으로 바꿉니다.

왜 역할 지정이 효과적인가

역할을 지정하면 AI는 해당 역할의 관점에서 우선순위를 조정합니다. 시니어 개발자 역할을 부여하면 에러 처리, 엣지 케이스, 유지보수성을 자동으로 고려합니다. 주니어 개발자에게 설명하는 역할을 부여하면 코드에 상세한 주석과 단계별 설명이 추가됩니다.

역할 지정 기본 프롬프트

너는 10년 경력의 [언어/프레임워크] 시니어 개발자입니다. 프로덕션 환경에서 운영되는 코드를 작성하는 것처럼 다음을 구현해주세요:

[기능 설명]

다음 기준을 반드시 충족해야 합니다:

  • 모든 에러 케이스에 대한 처리
  • 타입 안전성 (TypeScript의 경우 strict 모드)
  • 의미 있는 변수명과 함수명
  • 핵심 로직에 대한 주석
  • 확장 가능한 설계

보안 전문가 역할 프롬프트

너는 OWASP Top 10을 숙지한 보안 전문가이자 백엔드 개발자입니다. 다음 기능을 보안 관점에서 구현해주세요:

[기능: 예) 사용자 인증 API]

반드시 포함해야 할 보안 조치:

  • 입력 값 검증 및 살균(sanitization)
  • SQL 인젝션 / XSS 방지
  • Rate limiting
  • 보안 헤더 설정
  • 민감 정보 로깅 방지

각 보안 조치가 어떤 공격을 방어하는지 주석으로 설명해주세요.

역할 조합 전략

하나의 역할만 부여하는 것보다, 상충되는 두 역할을 조합하면 더 균형 잡힌 코드를 얻을 수 있습니다.

이중 역할 프롬프트

다음 두 가지 관점을 동시에 충족하는 코드를 작성해주세요:

[관점 1 — 성능 엔지니어]: 응답 시간 100ms 이내, 메모리 사용 최소화, 불필요한 연산 제거 [관점 2 — 주니어 개발자 온보딩]: 코드를 처음 보는 개발자도 이해할 수 있는 가독성

기능: [구현할 기능 설명]

성능과 가독성이 충돌하는 지점에서는 어떤 선택을 했는지 주석으로 설명해주세요.

패턴 2: 단계적 분해 (Step-by-Step Decomposition)

복잡한 기능을 한 번에 요청하면 AI는 중요한 부분을 빠뜨리거나 잘못된 가정을 하기 쉽습니다. 기능을 논리적 단계로 분해하여 순차적으로 요청하면 각 단계의 품질이 크게 향상됩니다.

3단계 분해법

어떤 기능이든 다음 3단계로 분해할 수 있습니다:

  1. 데이터 모델 — 어떤 데이터가 필요한가?
  2. 비즈니스 로직 — 데이터를 어떻게 처리하는가?
  3. 인터페이스 — 사용자/외부 시스템과 어떻게 소통하는가?

단계적 분해 프롬프트 (1단계 — 데이터 모델)

[기능 설명: 예) 온라인 예약 시스템]을 구현하려고 합니다.

1단계로 데이터 모델을 먼저 설계해주세요:

  • 필요한 엔티티 목록
  • 각 엔티티의 속성 (타입, 제약조건 포함)
  • 엔티티 간 관계 (1:N, N:M 등)
  • 인덱스가 필요한 필드

[기술 스택]: [예: PostgreSQL + Prisma]

아직 비즈니스 로직이나 API는 작성하지 마세요. 데이터 모델만 스키마 코드로 작성해주세요.

단계적 분해 프롬프트 (2단계 — 비즈니스 로직)

위에서 설계한 데이터 모델을 기반으로, 핵심 비즈니스 로직을 구현해주세요:

[핵심 유즈케이스]:

  1. [예: 예약 생성 — 시간 충돌 검증 포함]
  2. [예: 예약 취소 — 환불 정책 적용]
  3. [예: 예약 변경 — 가용 슬롯 재검증]

[비즈니스 규칙]:

  • [예: 같은 시간에 같은 자원은 중복 예약 불가]
  • [예: 취소는 24시간 전까지만 가능]
  • [예: 변경은 1회만 허용]

각 유즈케이스를 별도 함수로 분리하고, 순수 함수로 작성해주세요. 데이터베이스 호출은 인터페이스(repository 패턴)로 추상화해주세요.

단계적 분해 프롬프트 (3단계 — API 인터페이스)

위의 비즈니스 로직을 REST API로 노출해주세요:

[API 요구사항]:

  • RESTful 엔드포인트 (적절한 HTTP 메서드)
  • 요청/응답 스키마 (Zod 또는 Joi 검증)
  • 에러 응답 형식 통일 (status code + error code + message)
  • 페이지네이션 (커서 기반)
  • 인증/인가 미들웨어 적용 위치

각 엔드포인트의 성공/실패 응답 예시를 포함해주세요.

패턴 3: 제약 조건 명시 (Constraint Specification)

제약 조건을 명시하지 않으면 AI는 "동작하는 코드"를 생성합니다. 제약 조건을 명시하면 "올바르게 동작하는 코드"를 생성합니다. 이 차이는 프로덕션 환경에서 결정적입니다.

제약 조건의 4가지 차원

  1. 성능 제약: 응답 시간, 메모리, CPU 사용량
  2. 호환성 제약: 브라우저, Node 버전, 라이브러리 버전
  3. 코드 스타일 제약: 네이밍 컨벤션, 폴더 구조, 패턴
  4. 비즈니스 제약: 동시 사용자, 데이터 크기, 규정 준수

제약 조건 명시 프롬프트

다음 기능을 구현하되, 아래 제약 조건을 반드시 준수해주세요:

[성능 제약]:

  • API 응답 시간: 200ms 이내 (p99)
  • 메모리 사용: 512MB 이내
  • 동시 요청: 1000 RPS 처리 가능

[호환성 제약]:

  • Node.js [버전] 이상
  • 외부 라이브러리 최소화 (표준 라이브러리 우선)
  • ESM(ES Modules) 사용

[코드 스타일 제약]:

  • 함수형 프로그래밍 스타일 (불변성, 순수 함수)
  • 에러 처리: Result 패턴 (throw 대신)
  • 네이밍: camelCase, 동사로 시작하는 함수명

제약 조건을 충족하기 어려운 부분이 있다면 트레이드오프를 설명해주세요.

기존 코드베이스 스타일 매칭 프롬프트

다음은 우리 프로젝트의 기존 코드 샘플입니다:

[기존 코드 2-3개 함수 붙여넣기]

이 코드의 스타일과 패턴을 분석하고, 동일한 스타일로 다음 기능을 구현해주세요:

[새로 구현할 기능]

특히 다음 패턴을 동일하게 유지해주세요:

  • 에러 처리 방식
  • 로깅 패턴
  • 함수 시그니처 스타일
  • import 순서와 그루핑

패턴 4: 예시 기반 (Example-Driven)

입력과 출력의 예시를 제공하면, AI는 추상적인 설명보다 훨씬 정확하게 의도를 파악합니다. 특히 데이터 변환, 파싱, 포맷팅 같은 작업에서 예시 기반 프롬프트는 설명 기반 프롬프트보다 2~3배 정확한 결과를 생성합니다.

입출력 예시 기반 프롬프트

다음 입력을 주어진 출력 형식으로 변환하는 함수를 작성해주세요:

[입력 예시 1]:

{"user": {"name": "김철수", "orders": [{"id": 1, "amount": 15000}, {"id": 2, "amount": 23000}]}}

[출력 예시 1]:

{"userName": "김철수", "totalAmount": 38000, "orderCount": 2, "averageAmount": 19000}

[입력 예시 2]:

{"user": {"name": "이영희", "orders": []}}

[출력 예시 2]:

{"userName": "이영희", "totalAmount": 0, "orderCount": 0, "averageAmount": 0}

[입력 예시 3 — 엣지 케이스]:

{"user": {"name": null, "orders": null}}

[출력 예시 3]:

{"userName": "Unknown", "totalAmount": 0, "orderCount": 0, "averageAmount": 0}

위 3가지 예시를 모두 만족하는 함수를 [언어]로 작성하고, TypeScript 타입 정의도 함께 제공해주세요.

API 응답 변환 프롬프트

외부 API 응답을 우리 앱의 내부 모델로 변환하는 어댑터를 작성해주세요:

[외부 API 응답 (실제 샘플)]:

[실제 API 응답 붙여넣기]

[우리 앱 내부 모델]:

interface [모델명] {
  [필드 정의]
}

변환 시 주의사항:

  • 날짜: ISO 8601 → Unix timestamp
  • 금액: 문자열 → 숫자 (소수점 2자리)
  • null/undefined 필드에 대한 기본값 처리
  • 알 수 없는 enum 값에 대한 폴백 처리

패턴 5: 테스트 주도 (Test-Driven Prompting)

테스트를 먼저 작성하고 "이 테스트를 통과하는 구현을 만들어줘"라고 요청하면, AI는 명확한 목표를 가지고 코드를 생성합니다. 이 방식은 TDD(Test-Driven Development)의 원칙을 AI 코드 생성에 적용한 것입니다.

테스트 주도 코드 생성 프롬프트

다음 테스트가 모두 통과하는 구현을 작성해주세요:

// 정상 케이스
test('[함수명] - 정상 입력 처리', () => {
  expect([함수명]([정상 입력])).toEqual([기대 출력]);
});

// 경계값
test('[함수명] - 빈 입력 처리', () => {
  expect([함수명]([])).toEqual([기대 출력]);
});

// 에러 케이스
test('[함수명] - 잘못된 입력 시 에러', () => {
  expect(() => [함수명]([잘못된 입력])).toThrow([에러 타입]);
});

// 성능
test('[함수명] - 대용량 데이터 처리', () => {
  const largeInput = Array.from({length: 100000}, (_, i) => i);
  const start = performance.now();
  [함수명](largeInput);
  expect(performance.now() - start).toBeLessThan(100); // 100ms 이내
});

구현 시 다음을 고려해주세요:

  • 시간 복잡도: O(n log n) 이하
  • 공간 복잡도: O(n) 이하
  • 불변성 유지 (입력 배열 변경 금지)

테스트 먼저 생성 프롬프트

다음 기능에 대한 테스트를 먼저 작성해주세요 (구현은 아직 하지 마세요):

테스트 범주:

  1. 정상 동작 (happy path) — 3개 이상
  2. 경계값 (boundary) — 빈 값, 최대값, 최소값
  3. 에러 케이스 — 잘못된 입력, 네트워크 실패, 타임아웃
  4. 동시성 — 같은 리소스에 대한 동시 접근
  5. 멱등성 — 같은 요청을 2번 보냈을 때 결과 동일

테스트 프레임워크: [예: Jest / Vitest / pytest] 각 테스트에 명확한 설명(describe/it)을 붙여주세요.

언어별 코드 생성 프롬프트

Python

Python 코드 생성 프롬프트

Python으로 다음 기능을 구현해주세요:

Python 스타일 가이드:

  • PEP 8 준수
  • Type hints 전체 적용 (파라미터 + 리턴 타입)
  • Docstring (Google 스타일)
  • dataclass 또는 Pydantic 모델 사용
  • f-string 사용 (format() 대신)
  • pathlib 사용 (os.path 대신)
  • 컨텍스트 매니저 활용 (with 구문)

불필요한 클래스 사용을 피하고, 함수 중심으로 구현해주세요. Python 3.10+ 기능(match/case, union type |)을 적극 활용해주세요.

JavaScript / TypeScript

TypeScript 코드 생성 프롬프트

TypeScript (strict mode)로 다음 기능을 구현해주세요:

TypeScript 스타일 가이드:

  • any 타입 사용 금지
  • interface 우선 (type은 유니온/유틸리티 타입에만)
  • const assertion 활용
  • 제네릭으로 재사용성 확보
  • Zod로 런타임 타입 검증
  • async/await (Promise 체인 대신)
  • optional chaining (?.) 및 nullish coalescing (??) 활용

모든 export 함수에 JSDoc 주석을 추가해주세요. ESM (import/export) 사용, CommonJS (require) 금지.

Java

Java 코드 생성 프롬프트

Java로 다음 기능을 구현해주세요:

Java 스타일 가이드:

  • Java 17+ 기능 활용 (sealed class, record, pattern matching)
  • Optional 적극 사용 (null 반환 금지)
  • Stream API 활용 (for 루프 최소화)
  • 불변 객체 우선 (final 필드, record 타입)
  • 체크 예외 최소화 (RuntimeException 하위 커스텀 예외)
  • Builder 패턴 또는 정적 팩토리 메서드

인터페이스와 구현체를 분리하고, 의존성 주입(DI) 가능하도록 설계해주세요.

Go

Go 코드 생성 프롬프트

Go로 다음 기능을 구현해주세요:

Go 스타일 가이드:

  • Effective Go 가이드 준수
  • 에러 처리: errors.New() + fmt.Errorf("%w", err) (panic 금지)
  • 인터페이스: 소비자 측에서 정의 (최소 인터페이스 원칙)
  • 고루틴 사용 시: context.Context 전파, sync.WaitGroup/errgroup 활용
  • 구조체: 제로값이 유효한 설계
  • 테스트: table-driven tests 패턴

표준 라이브러리 우선 사용, 외부 의존성 최소화해주세요. 패키지 레이아웃은 Standard Go Project Layout을 따라주세요.

Python·Java 개발자를 위한 코드 생성 프롬프트

위의 언어별 프롬프트가 일반적인 스타일 가이드를 다뤘다면, 여기서는 실무에서 가장 자주 만나는 프레임워크 조합별 코드 생성 프롬프트를 제공합니다. Node.js/Express 환경에 익숙하지 않은 Python·Java 개발자가 바로 복사해서 사용할 수 있습니다.

[Python/FastAPI] REST API 코드 생성 프롬프트

다음 요구사항에 맞는 REST API를 FastAPI로 구현해 주세요:

  • 엔드포인트: /users (CRUD — 생성, 조회, 수정, 삭제)
  • ORM: SQLAlchemy 2.0 (async 세션)
  • 데이터베이스: PostgreSQL
  • Pydantic v2 모델로 입력 검증 (UserCreate, UserUpdate, UserResponse 분리)
  • async/await 패턴 사용
  • 에러 처리: HTTPException + 커스텀 에러 스키마
  • 의존성 주입: Depends()로 DB 세션 관리

프로젝트 구조도 함께 제안해 주세요 (routers/, models/, schemas/, crud/ 분리).

[Python/Django] REST API 코드 생성 프롬프트

다음 요구사항에 맞는 REST API를 Django REST Framework로 구현해 주세요:

  • 리소스: /api/v1/products (CRUD)
  • Django ORM 모델 + 마이그레이션
  • ModelSerializer로 직렬화
  • ViewSet + Router 패턴
  • 필터링: django-filter 사용 (카테고리, 가격 범위)
  • 페이지네이션: PageNumberPagination
  • 인증: TokenAuthentication

urls.py, views.py, serializers.py, models.py를 각각 작성해 주세요.

[Java/Spring Boot] REST API 코드 생성 프롬프트

다음 요구사항에 맞는 REST API를 Spring Boot 3로 구현해 주세요:

  • 엔드포인트: /api/users (CRUD)
  • JPA + Hibernate (Spring Data JPA Repository)
  • DTO 패턴 적용 (요청 DTO, 응답 DTO, Entity 분리)
  • Bean Validation으로 입력 검증 (@Valid, @NotBlank, @Email 등)
  • 글로벌 예외 처리 (@ControllerAdvice + @ExceptionHandler)
  • MapStruct 또는 수동 매핑으로 Entity ↔ DTO 변환

Controller, Service, Repository, DTO, Entity 레이어를 분리해서 작성해 주세요.

[Java/Spring WebFlux] 리액티브 API 코드 생성 프롬프트

다음 요구사항에 맞는 리액티브 REST API를 Spring WebFlux로 구현해 주세요:

  • 엔드포인트: /api/orders (생성, 조회, 상태 변경)
  • R2DBC + PostgreSQL (리액티브 DB 접근)
  • Mono/Flux 반환 타입
  • 함수형 엔드포인트(RouterFunction) 방식
  • 에러 처리: onErrorResume, onErrorMap 패턴

블로킹 코드가 없는 완전한 리액티브 파이프라인으로 작성해 주세요.

API 설계 프롬프트

RESTful API 설계 프롬프트

다음 도메인의 RESTful API를 설계해주세요:

도메인: [예: 전자상거래 주문 관리]

[핵심 리소스]:

  1. [예: 주문(Order)]
  2. [예: 상품(Product)]
  3. [예: 고객(Customer)]

설계 요구사항:

  • RESTful 원칙 준수 (적절한 HTTP 메서드, 상태 코드)
  • 일관된 URL 패턴 (/api/v1/resources)
  • HATEOAS 링크 포함
  • 페이지네이션 (커서 기반 + 페이지 기반 선택)
  • 필터링, 정렬, 필드 선택 쿼리 파라미터
  • 에러 응답 표준 (RFC 7807 Problem Details)
  • Rate limit 헤더 포함

각 엔드포인트의 요청/응답 예시를 JSON으로 작성해주세요. OpenAPI 3.0 스펙 YAML도 함께 생성해주세요.

DB 스키마 설계 프롬프트

데이터베이스 스키마 설계 프롬프트

다음 요구사항의 데이터베이스 스키마를 설계해주세요:

[DBMS]: [예: PostgreSQL] [ORM]: [예: Prisma / TypeORM / SQLAlchemy]

[엔티티 목록]:

  1. [엔티티명] — [설명] — [예상 레코드 수]
  2. [엔티티명] — [설명] — [예상 레코드 수]

[관계]:

  • [엔티티A] → [엔티티B]: [관계 설명]

[쿼리 패턴] (자주 실행되는 쿼리):

  1. [예: 특정 사용자의 최근 주문 10개 조회]
  2. [예: 기간별 매출 집계]
  3. [예: 상품별 재고 검색 (전문 검색)]

설계 시 고려사항:

  • 정규화 수준 (3NF 기본, 성능 필요 시 비정규화 명시)
  • 인덱스 전략 (위 쿼리 패턴 기반)
  • soft delete vs hard delete
  • audit 필드 (createdAt, updatedAt, deletedAt)
  • UUID vs auto-increment

ORM 스키마 코드와 마이그레이션 SQL을 모두 제공해주세요.

프론트엔드 컴포넌트 생성 프롬프트

React 컴포넌트 생성 프롬프트

다음 UI 컴포넌트를 React + TypeScript로 구현해주세요:

[Props 인터페이스]:

interface [컴포넌트명]Props {
  [prop 목록과 타입]
}

[동작 명세]:

  • [상태 1]: [동작 설명]
  • [상태 2]: [동작 설명]
  • [에러 상태]: [동작 설명]

[스타일]: [예: Tailwind CSS] [접근성]:

  • 키보드 네비게이션 지원
  • ARIA 속성 적용
  • 스크린 리더 호환

[추가 요구사항]:

  • 반응형 (모바일 → 데스크탑)
  • 다크 모드 지원
  • 애니메이션 (framer-motion 또는 CSS transition)
  • Storybook 스토리 포함

프롬프트 패턴 조합 — 실전 예제

5가지 패턴은 개별로도 강력하지만, 조합하면 프로덕션 수준의 코드를 한 번에 얻을 수 있습니다. 다음은 모든 패턴을 조합한 종합 프롬프트입니다.

5패턴 통합 프롬프트 (실전)

[역할]: 너는 결제 시스템을 10년간 개발한 시니어 백엔드 엔지니어입니다.

[기능 분해]: 1단계 — 결제 요청 수신 및 검증 2단계 — PG사 API 호출 (타임아웃, 재시도 포함) 3단계 — 결제 결과 저장 및 이벤트 발행

[제약 조건]:

  • 응답 시간: 3초 이내 (PG사 응답 포함)
  • 동시 결제: 100건/초 처리 가능
  • 멱등성: 같은 주문에 대한 중복 결제 방지
  • 감사 로그: 모든 결제 시도 기록

[예시]: 입력: {orderId: "ORD-001", amount: 50000, method: "card"} 성공 출력: {paymentId: "PAY-xxx", status: "completed", processedAt: "..."} 실패 출력: {paymentId: null, status: "failed", error: {code: "PG_TIMEOUT", message: "..."}}

[테스트]:

  • 정상 결제 → 성공 응답 + DB 저장 + 이벤트 발행
  • PG사 타임아웃 → 3회 재시도 후 실패 응답
  • 중복 요청 → 첫 번째 결제 결과 반환 (새 결제 안 함)
  • 금액 0 이하 → 검증 에러 (PG사 호출 전 차단)

흔한 프롬프트 실수와 교정법

실수 1: 너무 모호한 요청

  • 나쁜 예: "채팅 기능 만들어줘"
  • 좋은 예: "WebSocket 기반 실시간 채팅을 구현해주세요. 1:1 채팅, 읽음 확인, 오프라인 메시지 큐잉이 필요합니다. 동시접속 1000명 기준으로 설계해주세요."

실수 2: 기술 스택을 명시하지 않음

  • 나쁜 예: "로그인 구현해줘"
  • 좋은 예: "Next.js App Router + NextAuth.js로 Google/GitHub OAuth 로그인을 구현해주세요. 세션은 JWT 기반, 데이터베이스는 PostgreSQL + Prisma입니다."

실수 3: 에러 처리를 요청하지 않음

  • 나쁜 예: "파일 업로드 API 만들어줘"
  • 좋은 예: "파일 업로드 API를 만들어주세요. 파일 크기 제한(10MB), 허용 타입 검증(jpg/png/pdf), 바이러스 스캔 실패 처리, 스토리지 풀 시 에러, 업로드 진행률 콜백을 포함해주세요."

실수 4: 기존 코드와의 통합을 고려하지 않음

기존 코드 통합 프롬프트

다음은 기존 프로젝트의 관련 코드입니다:

[기존 코드 1 — 인증 미들웨어]:

[코드]

[기존 코드 2 — 에러 핸들러]:

[코드]

위 기존 코드와 호환되는 새로운 기능을 구현해주세요. 기존 미들웨어와 에러 핸들러를 재사용하고, 동일한 패턴을 따라 작성해주세요.

핵심 요약

패턴 핵심 원리 최적 사용 상황
역할 지정 AI의 관점과 우선순위 설정 코드 품질 기준이 명확할 때
단계적 분해 복잡도를 단계별로 분산 멀티 레이어 기능 구현
제약 조건 명시 비기능 요구사항 구체화 프로덕션 코드, 성능 중요
예시 기반 입출력 샘플로 의도 전달 데이터 변환, 포맷팅
테스트 주도 기대 동작을 테스트로 정의 비즈니스 로직, 알고리즘

5가지 패턴 중 하나만 적용해도 코드 품질이 눈에 띄게 향상됩니다. 익숙해지면 상황에 따라 2~3개를 조합하여 사용해보세요. 다음 챕터에서는 생성된 코드의 품질을 한 단계 더 끌어올리는 코드 리뷰와 리팩토링 프롬프트를 다룹니다.


다음 챕터 미리보기: 코드 리뷰·리팩토링 프롬프트 — AI에게 시니어 개발자 역할 맡기기