ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • iOS 프로젝트 세팅을 해보자..! (feat. SwiftLint)
    Lesson-Learned/tech 2023. 12. 20. 13:00

    안녕하세요 MADII의 iOS 개발팀의 이오입니다 🐥

     

    드디어 마디가 본격적으로 개발 단계에 진입했습니다.

    오늘은 Xcode에서 iOS 프로젝트 세팅하는 과정에 대해 소개합니다!

    프로젝트를 만들고, SwiftLint 설정까지 해보려고 합니다.

     


    Step.0 프로젝트 만들기!

    Xcode 버전은 15.0.1입니다. 새로운 버전의 시작화면이 훨씬 예뻐졌네요..!

     

     

    우리 마디 앱은 iOS 앱이기 때문에, iOS 앱 프로젝트를 만들어줍니다!

     

     

    Interface는 SwiftUI로 구성할 예정입니다.

    Project의 기본 정보를 잘 입력해주고 넘어갑니다!

     

    그리고 저는 프로젝트를 생성할 때는 Git repository를 만들지 않고,

    gitignore까지 추가한 이후에 git init을 진행하는 편이기 때문에!

    기본 Create Git은 설정하지 않고 넘어가도록 합니다.

     

     

    폴더 위치까지 잘 정해서 프로젝트를 만들었다면..!

    짜라잔!

     

    이렇게 프로젝트가 만들어집니다~!~!!

     

     


    Step.1 기본 설정

    🍎  최소 버전 설정

     

    마디가 제공할 기기 설정과 함께 최소 버전 16.0도 설정합니다.

    마디는 왜 iOS 최소 버전을 16.0으로 설정했을까요?

     

     

    (링크에서 위 사용 현황을 확인할 수 있습니다.)

    2023년 5월 30일 측정한 결과,

    대부분의 사용자가 iOS16을 사용하고 있었습니다.

     

    또한, 최소 버전을 선택할 때,

    주로 현재 버전의 한 단계 낮은 버전을 선택하는 경우가 많다는 점을 고려했습니다.

     

    현재(2023년 12월) iOS 최신 버전은 17.1.2 로,

    마디의 최소 버전을 16.0으로 설정해도

    대부분의 사용자가 사용할 수 있을 것이라고 생각했습니다.

     

    기존 운영 중이던 서비스의 버전을 올리는 것이 아니고,

    새로운 서비스를 제공하는 시점이기 때문에

    너무 낮은 버전까지 제공할 필요는 없을 것이라고 판단해

     

    최종적으로 마디의 최소 버전을 16.0으로 설정하게 되었습니다.

     

    🌙  방향, 라이트/다크 버전 설정

    마디의 기본 방향과 상태바 스타일을 설정해주는데요!

    마디는 현재 기본 세로 방향만 제공할 예정이기 때문에,

    다른 설정을 해제해줍니다.

     

    그리고 다크 모드로 디자인을 진행했기 때문에,

    상태바 스타일을 Dark Content로 설정해주었습니다.

     

    추가로 Info.plist 또는 Info 에서

    Key인 Appearance의 Value를 Dark로 설정합니다.

    만약, Light모드로 개발하는 경우 Light로 설정해주면 됩니다.

     

     

    ☘️  http 연결 설정

    마디 이전 시소 개발 시절에는 https가 아닌 http로 통신을 진행했었는데요.

    보통 본격적인 서비스 제공 전에는 http를 주로 사용하게 되지만,

    기본적으로 http 통신을 제한하고 있기 때문에!

     

    Info에 App Transport Security Settings에서

    Allow Arbitrary Loads YES로 바꿔줍니다.

    기본적으로 NO로 세팅되어 있습니다.

     

     

    하지만, 이번 마디 프로젝트에서는 http를 사용하지 않을 예정이라,

    따로 설정해주지 않았습니다.

     

     


    Step.2 SwiftLint 설정하기

    iOS 개발팀 내부에서 프로젝트 진행 중에

    Code Convention을 지키기 위해 하는 일은..!

    SwiftLint를 설정해 사용하는 것입니다.

     

    기존에는 단순히 말로 Code Style에 맞춰 쓰자고만 했다면,

    SwfitLint를 사용해 Code Style을 통일할 수 있었습니다.

     

    SwiftLint의 Github에서도 설치 및 설정 방법을 확인할 수 있지만,

    마디에서 어떻게 설정하고 있는지 소개하겠습니다.

     

    🎈 SwiftLint 설치

    brew를 사용하고 있다면 간단하게 터미널에서

    brew install swiftlint

     

    를 입력해 설치해줍니다!

     

    CocoaPod, Mint 등을 이용할 수 있는데,

    자세한 방법은 SwiftLint 페이지에 자세히 설명하고 있습니다.

     

    🔖  내 프로젝트에 설정하기

    Xcode에서 TARGETS의 'Build Phases' 탭으로 넘어갑니다.

    왼쪽 위의 + 버튼을 이용해 새로운 Script를 추가하고,

    Compile Sources 위로 이동해줍니다.

     

     

    이제 새로 추가한 SwiftLint Script 내부에 다음 코드를 입력하고

    다음으로 넘어갑니다~

    if which swiftlint > /dev/null; then
      swiftlint
    else
      echo "warning: SwiftLint not installed, download from https://github.com/realm/SwiftLint"
    fi

     

    👥  .swiftlint.yml 파일을 추가합시다!

    프로젝트 최상단 위치에 .swiftlint.yml 파일을 추가합니다.

    아래처럼 제일 위에 위치해주어야합니다!

     

    그리고 파일 내부에 적용할 규칙들을 추가해줍니다.

    마디에서 사용하고 있는 규칙들은 다음과 같습니다.

     

    대부분의 규칙을 사용하면 좋지만,

    어쩔 수 없는 이유로 비활성화하는 규칙들도 있고,

    기본값은 비활성화되어 있지만 추가로 사용하는 규칙도 있습니다.

     

    여기서 .swiftlint.yml을 구성할 수 있는 방법을 설명하고 있고,

    아래 링크에서는 각 규칙에 대한 설명을 하고 있습니다.

     

    각 프로젝트의 상황에 맞게 구성하여 사용하면 될 것 같습니다~

     

    Rule Directory Reference

     

    realm.github.io

     

    🧨  아니 그런데 왜 error를..?

    그동안 잘 사용해오던 SwiftLint가 에러를 던지고 있다니..!!

     

     

    Script의 내용을 잘못 썼나 싶었는데,

    SwiftLint에서 친절하게 에러의 상황에 대해 설명해주고 있었습니다.

     

    바로 ENABLE_USER_SCRIPT_SANDBOXING

    NO로 직접 설정해주어야 한다는 것입니다.

     

    이번에는 PROJECT로 넘어가서 Build Setting에 갑니다.

    여기 내용이 많기 때문에 적당히 검색해서 아래 내용을 찾아줍시다!

     

    'User Script Sandboxing'을 찾았다면, 이 내용을 'No'로 변경해줍니다.

     

    이제 더 이상 에러는 뜨지 않겠죠..?

     

    🚨  아니 그런데 왜 또 적용이 안되는거야?
    (그것은 내가 homebrew를 사용했기 때문..)

    더이상 에러가 뜨지 않을 것이라 생각했지만..

    아무리 빌드해봐도 Lint가 적용되지 않았습니다.. 도대체 왜??

     

    바로 내가 brew로 swiftlint를 설치 했기 때문이었는데요.

    역시나 SwiftLint가 에러를 잘 안내해주고 있었습니다!

     

    그래서 다음 코드를 Script에 추가해주어야합니다!

    if [[ "$(uname -m)" == arm64 ]]; then
        export PATH="/opt/homebrew/bin:$PATH"
    fi

     

    그러면 최최최최종 Script는 이렇게 완성됩니다..! (휴 힘들었다)

     

     

    🎉  오예 SwiftLint 적용 완료!

    위의 모든 과정을 잘 거쳐 왔다면,

    이제 코드 스타일에 맞지 않는 코드가 있다면

    lint나 error를 던질 것입니다!!

     

    (빌드하면 바로 린트가 적용됩니다. 가끔 코드를 쓰면서도 적용됨!)

     

     


    여기까지 마디 iOS 프로젝트의 기본 세팅을 진행해보았습니다!!

    단순히 설정 하나 하나를 하기보다는,

    각 설정에 대한 근거를 생각하면서 진행한다면

    더 나은 프로젝트를 만들 수 있을 것이라 생각합니다. ☺️

     

    앞으로도 iOS 개발을 진행하면서 많은 코드와 경험을 공유하겠습니다!

    마디 파이팅!! 🥳🥳

Designed by Tistory.