iOS/Swift

[Swift] 프레임워크와 라이브러리 (1)

YEN_ 2024. 2. 26. 10:11

 

2024.02.23 - [iOS/SWIFT] - [Swift] iOS 커스텀 프레임워크 생성하고 사용하기

2024.02.26 - [iOS/SWIFT] - [Swift] 프레임워크와 라이브러리 (1)

2024.02.27 - [iOS/SWIFT] - [Swift] 프레임워크와 라이브러리 (2) UIKit SnapKit으로 비교하기

2024.02.29 - [iOS/SWIFT] - [Swift] 프레임워크와 라이브러리 (3) 접근제한자

 

 

 

 

 

프레임워크와 라이브러리.

개발을 공부하고 있다면 아마 공부 시작 3일만에도 들어볼 수 있는 단어라고 생각해요

 

그 만큼 많은 사람이 사용하고, 언급하고, 만들어지고 있죠?

 

 

🩵 프레임워크?

앱의 기본적인 구조와 실행 흐름을 정의하는 골조(뼈대)
정의된 이 틀 안에서 개발할 수 있다

 

프레임워크라는 것은 일종의 규칙입니다

이 규칙에 따라서 개발해야 하는 가이드를 제공하는 거라고 할 수 있겠네요

 

개발자는 프레임워크를 사용해서 프레임워크의 규칙을 따라 개발해야 하기 때문에

프레임워크가 애플리케이션의 흐름을 제어하고 개발자는 그걸 따라 가는 거죠

 

예를 들면 이런겁니다

 

어느 프레임워크에서 Car라는 컴포넌트가 만들어져 있고, 우리는 이 프레임워크를 사용하고 있다고 생각해봐요

그러면 해당 프레임워크를 import 해서 Car 컴포넌트를 활용해주기만 하면 되는겁니다

운전을 할 수도 있고, 주차장을 만들어 볼 수도 있겠죠

 

만약 주차장 만들기와 운전하기. 이 2개를 전부 하나의 프로젝트에서 구현한다고 해볼게요

그리고 또, Car 컴포넌트가 포함된 프레임워크가 없었다면?

우리는 직접 몽키스패너를 들고 자동차부터 만들어야 합니다..

 

 

 

이렇게 

프레임워크는 커다란 틀, 규칙을 정의하여 개발자가 이 규칙을 따르게 함으로써

일관된 방식으로 개발할 수 있게 돕고, 생산성도 높여줍니다

위와 같은 예시를 보면 컴포넌트를 활용한 재사용성에도 큰 도움이 되겠네요!

 

 

 

✔️ 제어의 역전

 

이런 상황을 IoC, Inversion of Contorl. 제어 역전이라고 합니다

 

보통은 개발자가 앱의 흐름을 주도하고, 제어하는 게 일반적이지만

이 주도권을 프레임워크에 약간 옮겨서 프로젝트의 부담을 줄여주는 거에요

 

대신 앱의 코드는 프레임워크의 코드에 기반하여 수동적으로 작성되겠죠?

그래서 제어(를 담당하는 주체가)역전 되었다~ 라고 합니다

 

 

 

 


 

🩵 라이브러리?

특정한 기능을 수행하는 코드의 모음
개발자가 선택적으로 사용한다

 

 

라이브러리는 유용한 도구를 모아둔 폴더같은 거라고 표현해볼게요

 

도구이기 때문에 전반적인 흐름에는 영향을 주지 않습니다

그러나 이 흐름을 진행하는데 도움을 줄 수는 있겠죠?

 

개발자가 직접 어떤 도구를 사용할지 정해서, 그 도구로 조금 더 나은 생산성을 가져가는 겁니다

 

 

예를 들어볼게요!

 

집 인테리어를 한다고 할 때, 못을 박고 싶어요

 

도구가 없다면 우리는 이걸 주먹 꽉 쥐고 쾅쾅 두드려서 박아야 할 겁니다ㅠㅠ

무지하게 아프고 상처가 나는 비효율을 감수할 수 밖에 없죠, 도구가 없으니까요!!

 

하지만 망치, 적어도 튼튼하고 그립감 좋은 돌덩이라도 있으면 상황은 달라질거에요

못을 박는 행위를 할 때, 더 나은 과정이 될 겁니다

 

 

 

다시 한 번 말하지만,

이러한 도구는 개발 흐름에 도움을 줄 지언정 그 구조에 영향을 주지는 않아요!

못을 박는데 반드시 망치가 필요한 건 아니죠, 주먹으로 하는게 좀 힘들 뿐이지

 

하지만 도구를 사용한다면 생산성, 효율성의 수준을 높게 끌어올려줄 겁니다!!!!

 

 

 

 


 

프레임워크는 구조에 영향을 주는 규칙

라이브러리는 유용한 도구의 모음 이라고 (개인적으로) 정의해봤는데요

 

이 차이점을 눈에 확 들어오게 파악할 수 있는 예시가 있어요

바로 UIKit과 SnapKit입니다

 

UIkit은 애플의 대표적인 프레임워크이고 SnapKit은 오토 레이아웃을 조금 더 쉽게 작성하게 만들어주는 라이브러리에요

 

다음 게시글에서는 이 UIKit 과 SnapKit을 사용하여 프레임워크, 라이브러리의 차이점에 대해 코드와 함께 작성해보겠습니다

~ヾ(^∇^)

 

 

2024.02.23 - [iOS/SWIFT] - [Swift] iOS 커스텀 프레임워크 생성하고 사용하기

2024.02.26 - [iOS/SWIFT] - [Swift] 프레임워크와 라이브러리 (1)

2024.02.27 - [iOS/SWIFT] - [Swift] 프레임워크와 라이브러리 (2) UIKit SnapKit으로 비교하기

2024.02.29 - [iOS/SWIFT] - [Swift] 프레임워크와 라이브러리 (3) 접근제한자

 

 

 

https://javaprogrammernotes.blogspot.com/2015/03/inversion-of-control-dependency.html