Jiwift

[iOS/Swift] 라이브러리 수정하고 Git + Pod으로 관리하기 본문

라이브러리/CocoaPods

[iOS/Swift] 라이브러리 수정하고 Git + Pod으로 관리하기

지위프트 2023. 6. 7. 22:22
반응형

[iOS/Swift] 라이브러리 수정하고 Git + Pod으로 관리하기 | by 김지태 | Jun, 2023 | Medium

미디엄에 작성한 제 글을 티스토리로 이동했습니다.

 

들어가며

 앱을 만들다보면 UI/UX에 대해서 많은 라이브러리를 사용하게됩니다. 단순한 라이브러리들은 기능만 잘 수행하면되는데, 차트와 캘린더같이 큰 라이브러리들은 다양한 꾸밈 옵션을 제공하기도합니다.

 

 하지만 라이브러리는 불특정 다수를 위해 만들어젔기 때문에 우리 앱에서 필요한 기능을 충족하지 않는 경우가 생깁니다.

(로직적 기능은 생각하는 수준에서 지원되지만, 디자인은 기존 기능으로 부족한 경우가 있습니다.)

 

 예를들어 서비스 메인 기능이 [일기, ToDo, 가계부]면서 ‘우리만의 특별한 기능과 디자인을 넣어야겠다’는 생각이 있다면, 차트와 달력 같은 기능을 직접 구현할 수 있다고 생각됩니다. 반대로 그렇지 않은 서비스에서 간단한 기능이지만 디자인은 ‘우리 앱 디자인은 살려야지!’라고 생각한다면 라이브러리를 사용하는 것이 효율적입니다. 

 

 위에서 설명했듯이 로직적 기능은 생각하는 수준 안에서 준비되어있기 때문에 문제가 크게 없지만 디자인과 유저 사용 방향은 기획, 디자인에 따라서 많이 다르기에 기본 제공 옵션이 아닌 라이브러리를 수정하는 상황이 생깁니다.

(로직적으로 수정할 일이 적은 것 뿐이지 없는 것은 아닙니다.)

 

저는 라이브러리를 사용하면서 위 상황을 겪어보았고, 아래는 제가 했던 방법들을 간단하게 작성해보았습니다.

 

1. 라이브러리가 가능한 범위들을 보여주며 기획자, 디자이너를 설득하고 라이브러리에 맞게 디자인과 기능을 변경한다. 

-> 시간이 부족한 경우에는 어쩔 수 없지만, 시간이 있음에도 계속 위와 같이 진행한다면 결국 앱도 개발자도 발전할 수 없다.

2. 간단하지만 라이브러리를 수정하는 것보다 만드는 것이 빠른 경우, 라이브러리 Code를 참고한다.

-> 처음에는 라이브러리가 필요해 보여서 적용하고 Custom을 진행했는데, 너무 멀리 돌아가는 것 같아서 라이브러리 코드를 참고해 해당 기능만을 위한 코드를 따로 작성하고 라이브러리를 사용하지 않았던 경험이있다.

3. 라이브러리가 꼭 필요한 상황이지만 1% 부족한 경우

-> 라이브러리를 사용하지만 해당 기능 Class에 함수를 찾아서 수정을 적용한다. 

 

 

 우리는 위 글을 통해서 라이브러리를 사용하면서 생길 수 있는 상황을 제 경험을 통해서 알게되었습니다. 이 다음부터는 수정하는 방법과 생기는 상황을 소개하도록 하겠습니다.

 

라이브러리 수정

1. extension

라이브러리를 extension을 통하여 특정 기능을 추가합니다. 라이브러리의 새로운 기능을 추가하지만 기본 동작을 건들지는 않습니다.

2. 라이브러리 직접 수정

 라이브러리를 직접 수정하는 방법은 매우 간단합니다. pod을 통해서 설치된 라이브러리는 위 사진에서 보이듯이 Xcode에서 코드를 확인하고 수정할 수 있습니다.

 이 경우 코드가 수정되었기 때문에 깃과 같은 환경에서도 백업이되고 팀원들과 공유될 수 있습니다. 하지만 라이브러리를 새로 설치하는 과정에서는 수정 사항이 날라가기 때문에 실수하지 않게 조심해야합니다. 

 

 

3. Git Fork

이 방법은 Git Fork입니다. 이 글에서 소개하려고 했던 방법입니다. 여러 상황들을 보여주기 위해서 멀리 돌아온 기분이네요. 

 

 일단 수정을 원하는 라이브러리를 본인 Git으로 Fork합니다.

 

 Fork된 라이브러리를 원하는 이름으로 Branch를 생성하고 원하는 환경에 Clone 받아서 수정할 준비를 합니다.

 

 Clone 받은 코드에 원하는 수정 사항을 적용하고 Commit합니다. 내가 Fork하고 Branch도 따로 생성했기 때문에 다른 사람들에게 피해가 가지 않습니다.

 

 수정 사항을 반영하고 Commit, Push까지 완료했다면 Github에도 반영이 완료되었는지 확인을 진행합니다.

여기까지는 기존 코드를 새로 브랜치따서 깃에 다시 올리는 것과 다른게 없습니다.

 

다음은 수정된 라이브러리를 다운 받는 방법입니다.

 

 우리가 알던 방법으로 라이브러리를 받는다면 "pod 'Chars'"라고 작성합니다. 우리는 생성 + 수정한 브랜치를 바라보게해야합니다.

 

깃 커밋을 보면 SHA 값을 확인할 수 있습니다. 값을 복사합니다.

 

pod 라이브러리, :git => 내깃주소, :commit => 커밋SHA

그리고 위와 같은 양식으로 podfile을 수정합니다.

 

 

pod 'Charts', :git => 'https://github.com/wlxo0401/Charts.git', :commit => '63d96cfe459835b2d3d9043600e1331051761016'

위는 실제로 제가 적용한 설정입니다.

 

install은 기존 사용법과 다르지 않습니다. pod을 제대로 설치했다면 우리가 수정한 브랜치 내용이 반영된 라이브러리가 받아질 것입니다.

 

처음이 어렵지 한번하면 매우 쉬운 방법으로 라이브러리를 수정하고 팀원들과 공유할 수 있습니다.

반응형