Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Boost‐SwiftUI‐2025年01月14日(화).md

유정주 JeongJu Yu edited this page Jun 10, 2025 · 1 revision

원본 텍스트 파일

2024年01月14日(화).txt


스터디 시간 및 참여자

  • 2025年01月14日 Tue PM 9:08 ・ 64Minutes 29seconds
  • 고병학 권승용 김대황 유정주 이창준 정종인 홍승현
  • 클로버노트를 이용해 회의 내용을 기록하고, Claude를 이용해 요약, 편집했습니다.

iOS 개발 스터디 논의 내용 정리 (2025年01月14日)

앱 숏컷과 시리 통합 구현 사례

앱 숏컷 프로바이더 구조

  • 앱 숏컷 프로바이더에 인텐트 타입을 정의하여 자동으로 단축어 연결
    • 사용자가 시리에게 말할 수 있는 명령어 구문을 프레이즈로 정의
    • 애플리케이션 네임은 시스템에서 자동 제공
    • 파라미터는 enum 타입만 지원 (구조체나 기본 타입은 직접 매핑 불가)

숏컷 파라미터 처리의 제약사항

  • 숫자 값 처리의 한계
    • Int 타입 파라미터의 경우 시리 음성 인식에서 제대로 처리되지 않는 문제
    • Measurement 타입을 사용하여 해결 (예: 온도, 수치 입력)
    • 값 범위 제한(Inclusive Range)은 Measurement 타입에서 직접 지원하지 않음
    • 별도 validation 로직 필요

인텐트 실행 흐름 제어

  • 포그라운드 실행 제어
    • OpenAppIntent의 openAppWhenRun 값으로 앱 실행 여부 결정
    • ForegroudContinuableIntent 프로토콜로 동적 앱 실행 제어 가능
    • perform 함수 내에서 에러를 throw하여 앱 실행 흐름 제어

개발 시 발견된 특이사항

  • enum 타입 제약
    • 도메인 모델의 enum을 앱 숏컷용 enum으로 직접 사용 불가
    • 별도의 앱 숏컷용 enum 정의 및 변환 로직 필요
    • 컴파일 타임에 정적으로 정의되어야 하는 제약 존재

라이브 액티비티 구현 사례 (포모도로 타이머)

기본 구현

  • Observable 패턴 활용
  • 타이머 기능 구현
    • 실행/중지 기능
    • 1초 단위 업데이트

위젯과 라이브 액티비티의 한계

  • 실시간 업데이트의 제약
    • 초 단위의 명확한 업데이트 어려움
    • 이벤트 기반 업데이트 방식
    • 1초마다 폴링으로 해결 가능한 케이스도 존재

구현 시 고려사항

  • 보일러플레이트 코드 활용
    • Live Activity 타겟 추가 시 자세한 주석과 함께 기본 코드 제공
    • 시뮬레이터와 실기기 간 동작 차이 존재

앱 모듈화 경험 공유

모듈화 성과

  • 빌드 시간 최적화
    • 기존 3분에서 18초로 단축
    • 변경사항이 있는 모듈만 빌드
    • 프리뷰 빌드 속도 개선

모듈 구조화 전략

  • 피처 모듈화와 레이어 모듈화 적용
  • 공통 기능은 Common Feature 모듈로 분리
    • HealthKit 피처
    • 배너 피처
    • 웹 컨텐츠 피처 등

로컬라이제이션(다국어 지원) 구현 인사이트

로컬라이제이션 워크플로우와 협업

  • Localizable 서비스를 활용한 체계적 관리 시스템 구축
    • 기획자가 문자열 키와 각 언어별 문자열을 업로드
    • 디자이너가 Figma의 디자인과 Localizable 키를 매핑하여 UI 대응
    • 개발자가 4+1개 언어에 대한 구현 및 검증 진행
    • 팀원 간 실시간 피드백으로 부자연스러운 부분 개선

로컬라이제이션 도구 및 비용

  • Figma와 Localizable 연동 기능
    • 프리미엄 요금제 필요 (월 약 80만원)
    • 현재는 비용 문제로 기획자가 수작업으로 키와 문자열 관리
    • 디자이너와 개발자는 수동으로 동기화 작업 진행

문자열 처리 전략

  • 클라이언트 단의 문자열 조합 지양
    • 플랫폼별 문자열 처리 방식 차이로 인한 유지보수 어려움
      • iOS, Android, Web에서 각각 다른 방식으로 문자열 처리
      • 단순해 보이는 문자열 결합도 플랫폼별 차이로 복잡도 증가
    • 완성된 문장 단위로 관리하는 것을 권장
    • 매개변수가 필요한 경우 placeholders 활용
      • String의 init을 사용하여 매개변수 처리

다국어 특수성 처리

  • 일본어/중국어의 문장 부호 처리
    • 일반 마침표가 아닌 특수 문자 사용
    • 문자 자체에 포함된 여백으로 인한 레이아웃 이슈
    • 해당 언어 사용자에게는 자연스러운 현상으로 판단하여 별도 예외 처리 하지 않음

디자인 고려사항

  • 동적 텍스트 크기 대응
    • 언어별 텍스트 길이 차이를 고려한 레이아웃 설계
    • 디자인 단계에서 동적 크기 변화 고려
    • 디자이너와 개발자 간 긴밀한 협업 필요

접근성 대응

  • 영국 접근성 법적 요구사항 준수
    • 텍스트 크기 100%에서 400%까지 지원
    • 50% 단위로 증가하는 텍스트 크기 옵션
    • 웹에서 먼저 적용 후 앱으로 확장 예정

SPM 모듈화 구현 시 고려사항

  • Objective-C 코드가 있는 경우의 제약
    • Swift와 Objective-C 간 순환 참조 이슈
    • SPM 내부에서 Swift와 Objective-C 코동 사용 불가
    • 의존성 그래프 신중한 설계 필요

기술적 이슈 및 크래시

Objective-C 관련 크래시

  • 메서드 missing 크래시
    • 재현이 어려운 케이스 존재
    • 화면 전환 시점의 크래시
    • init 메서드 관련 크래시

Clone this wiki locally

AltStyle によって変換されたページ (->オリジナル) /