프레임워크 Framework & 라이브러리 Library 프레임워크 Framework & 라이브러리 Library
🏝

프레임워크 Framework & 라이브러리 Library

빵집을 차리고 싶어요.
notion imagenotion image
 
  1. 내가 직접 창업하면? 레시피, 공간, 재고관리, 메뉴 만들기 등등 멘땅에서 챙길 게 너무 많아요.
  1. 그럼 만약 프랜차이즈의 가맹을 받는다면?
notion imagenotion image
 
 
서비스를 개발할 때도 마찬가지 입니다!
 

기본적으로 활용할 수 있는 프레임워크 & 라이브러리

 
 
notion imagenotion image
 
예를 들어, https://blurha.sh
notion imagenotion image
💡
실력 있는 PM은 자신의 프로덕트에 활용 할 만한 좋은 라이브러리를 발굴해 낸다.
 
프레임워크와 라이브러리를 사용하지 않을 것과 사용한 것의 차이 : 코드의 양
  • 라이브러리를 사용하지 않았을 때 : 좌우 고관절을 33도로 틀면서 종아리 근육을 20퍼센트의 힘으로 수축시키면서 달팽이관의 기울기에 비례하여 상체의 척추와 등근육을 팽창시키고 안구의 간상세포로 기울기를 보정하며 다리 사이로 충분한 높이의 사물을 확인한 뒤, 뒤꿈 치 뼈에 체중을 실어 넘어짐을 방지하면서 무릎을 발목보다 수직선 상의 앞으로 이동시킨 후, 체중의 70퍼센트가 뒤로 쏠렸을때,......
  • 라이브러리를 사용했을 때 :앉아
 

앱 프레임워크

iOS 앱을 만들 때, 애플이 제공한 소스를 다 가져다 쓴다면?
 

OS를 만드는 기업들이 프레임워크를 만듭니다.

 
애플은 세상의 개발자들이 좋은 앱을 많이 만들어서 애플의 생태계를 키우기를 원하기 때문에 애플이 직접 프레임워크를 다 만들어 두는 것. "가져다 쓰시고 빠르게 만들어보세요~"
그래서 애플이 직접 코딩해둔 것들을 싸놓은 게 프레임워크임.
 
 
예를 들면, 어떤 APP이던 똑같은 프로세스로 앱이 실행된다.
  • 앱을 만들 때, 앱을 시작하는 그 순간 OS가 해주는 것들→ 그런 것들은 개발자가 따로 코딩하지 않음.
  • 왜? 이미 OS의 프레임워크에서 다 준비해둠. (모든 서비스가 다 공통으로 이용하는 것들에 대해서는 이미 iOS와 안드로이드가 만들어둠.)
notion imagenotion image
 
notion imagenotion image
notion imagenotion image
 
언어마다 가장 많이 쓰는 코드들을 그 언어로 적어둔 것들을 꾸러미로 만든 것이 프레임워크임.
프레임워크는 코드의 더미임.
 
💡
프레임워크 | Framework : 재사용 가능한 수 많은 클래스들과 라이브러리들을 융합한 채로 제공 → 소프트웨어 개발에 있어 뼈대의 역할
 
💡
라이브러리 | Library : 소프트웨어 개발 시 사용되는 프로그램의 구성요소로, 공통으로 사용될 수 있는 특정한 기능들을 모듈화한 것
 
iOS 앱 개발할 때는 Objective-C / Swift로 개발하면서 Cocoa와 같은 iOS 프레임워크를 적절하게 활용한다.
안드로이드 앱 개발할 때는 Java / Kotlin으로 개발하면서 Android의 프레임워크를 적절하게 활용한다.
 
안드로이드 프레임워크
notion imagenotion image
 
3. Application Framework Layer
3–1. Activity Manager : 액티비티의 생명주기를 호출, 공통적인 네비게이션 백스택을 제공 (onStart(), onResume(), onCreate(), onStop(), onPause(), onDestroy(), onRestart() 메서드가 호출되는 것을 관리)
3–2. Resource Manager : 문자열, 그래픽, 레이아웃 파일 등 리소스를 찾아주는 역할
3–3. View System : 리스트, 그리드, 텍스트 뷰, 버튼, 웹 뷰 등 뷰들의 집합
3–4. Content Provider : 안드로이드 4대 컴포넌트 중 하나, 어플리케이션이 다른 어플리케이션으로부터 데이터를 엑세스하거나, 자신의 데이터를 공유하는 게 가능하게 함
3–5. Package Manager : 현재 디바이스에 설치된 어플리케이션과 관련된 정보를 가지고 있음
3–6. Notification Manager : 모든 어플리케이션의 상태표시줄에 커스텀 알럿 창을 보여주게 함(FCM 기능 구현시 이용한다.)
3–7. Window Manager : 화면에 대한 정보, 배치 등을 관리하는 시스템 서비스(투명한 액티비티를 만들거나 화면의 크기를 구할 때 쓰임)
3–8. Telephony Manager : 단말기의 상태에 대한 정보를 얻을 수 있는 서비스
3–9. Location Manager : 단말의 위치 값을 지속적으로 얻을 수 있는 서비스(위치 기반 서비스를 만들 때 쓰임)
 

웹 프레임워크 & 라이브러리

웹 개발에서는 가장 기본적으로 Javascript로 개발하는데,
이 때 프레임워크를 활용한다.
notion imagenotion image
notion imagenotion image
notion imagenotion image
 
 

 
 
  • 웹 만들 때 javascript로 할 거면 jquery 라이브러리 쓰면서
notion imagenotion image
notion imagenotion image
Bootstrap
 
💡
우리의 front-end가 어떤 library를 사용하는지 미리 알아보는 건 정말 중요하다. 만약 이 라이브러리가 뭔지를 안다면? 이미 있는 UI와 피쳐들이 뭔지 & 어떻게 수정하면 되는지 안다. -> 개발자와 소통하기가 좋고, 기획서를 만들 때 그걸 참고해서 이야기한다.
notion imagenotion image
 
notion imagenotion image
 
오브젝티브 C | Objective-CApple의 전통적인 객체 지향 프로그래밍 언어이며, Apple의 Cocoa(Cocoa Touch)를 사용하기 위한 기본 언어
스위프트 | Swift
2014년 6월, WWDC(애플 세계 개발자 회의)에서 처음 소개 ( 오픈소스 → https://swift.org )
현대 프로그래밍 언어가 갖고 있는 기능을 많이 포함 ( feat. 클로저, 다중 리턴 타입, 네임스페이스, 제네릭스, 타입 유추, ... )
C 또는 Objective-C 코드와 함께 프로그래밍 가능
향후 발전이 기대되는 현대 언어였으나, JS의 발전으로 예측 불가
 
 
→ 대신에 해당 앱만의 내용물에 대해서는? 그건 이제 우리 개발자가 적어야곘지? 그걸 프레임워크가 빈칸으로 내비둔다.
이런 식으로 프레임워크에서는 시점을 기준으로 나누어둔다.
 
notion imagenotion image
(해당 이름은 OS마다 프레임워크 마다 다를 것이지만.. 그럼에도 불구하고 시점만 알면 개발자가 알아서 볼 것임.)
ex. viewwillappear → viewdidappear → viewwilldisappear → viewdiddisappear
 
이 각각에 대해서 코드를 넣어둔 것이 그 개발자의 업무였음.
 

프레임워크와 라이브러리는 어떤 차이가 있나요?

결론: 누가 누구를 호출하느냐의 차이 (who calls who)
notion imagenotion image
프레임워크에서는 프레임워크 코드가 우리 코드를 호출하고, 
라이브러리에서는 우리 코드가 라이브러리를 호출한다.
 
notion imagenotion image
  • 프레임워크 : 특정 프로그램을 개발하기 위한 여러 요소들과 메뉴얼인 룰을 제공하는 프로그램
  • 라이브러리 : 프로그램을 개발하기 위해 쓰는 공구와 같은 도구들
  • 공통점 : 프로그램을 쉽게 만들 수 있게 하는 공통된 목적이 있음
  • 차이점 : 자유도, 프레임워크는 꼭 써야되는 것과 지켜야되는 룰이 있다. 라이브러리는 쓰든 안 쓰든 자기 마음이다.
둘은,이미 만들어 둔 소스 코드라는 점에서 같은 것임.
 
 
  • 프레임워크는 자동차 : 중복해서 여러개를 쓸 수 없음.
  • 라이브러리는 망치 : 여러개를 함께 씀. 근데 너무 막 가져다가 씀. 왜냐면 서로 충돌 할 수는 있음.
notion imagenotion image
 
notion imagenotion image
 
notion imagenotion image