라이브러리란 무엇인가?

Seunggyu Jung·2023년 6월 3일
0
post-thumbnail

목차

1. 주제 선정 이유

2. 라이브러리란

  • 라이브러리의 정의
  • 라이브러리를 사용하는 이유
  • 라이브러리의 종류

3. 라이브러리와 프레임 워크의 차이점

4. 요약 정리 및 면접형 QnA

1. 주제 선정 이유

각종 프로젝트를 준비하는 과정에서 라이브러리의 중요성을 많이 언급되며, 실제 기업에서도 특정 라이브러리를 사용하여 프로젝트를 진행한 경험을 요구하는 경우가 많다고 느꼈을 것이다. 라이브러리가 정확하게 무엇이며 어떤 종류가 있으며, 왜 사용하는지에 대해 자세히 알아보고자 준비함


2. 라이브러리란

2-1. 라이브러리의 정의

  • 소프트웨어를 개발할 때, 컴퓨터 프로그램이 사용하는 '비휘발성 자원(리소스)'의 집합이다.
  • 사전적 용어인 도서관(library)와 비슷하게, 특정한 코드들(책들)을 모아둔 집합이라 생각하면 된다.
  • 이는 소프트웨어 개발시에 사용되는 프로그램의 구성요소로, 공통으로 사용될 수 있는 특정한 기능들을 모듈(module)화 한 것이다.
  • API와의 차이점 : API는 프로그래밍 언어에서 라이브러리를 사용할 수 있도록 소스코드 수준에서 인터페이스를 노출 시킨 것이지만, 라이브러리는 실제 실행되어 기능을 수행하는 단편화된 프로그램 이다.
  • 즉, 라이브러리는 완전한 프로램이 아니라 특정한 기능만을 수행하도록 제작된 프로그램이다.

2-2. 라이브러리를 사용하는 이유

  • 모든 기능을 직접 코딩하지 못하며, 시간을 절약하기 위해서이다.
    동일한 기능을 간단한 코드로 방법화시키는 라이브러리 코드를 본인이 직접짜기엔 너무 많은 시간을 소요되며, 실제로 정해진 기간내에 처리하기도 어렵기 때문이다.
  • 즉, 라이브러리를 사용할수 있으면, 보다 복잡한 코드를 짜는데 더 빠르고, 더 편리하게 할 수 있기에, 사용이 권장된다.

2-3. 라이브러리의 종류

  • 표준 라이브러리: 특정한 언어의 개발 환경에 기본적으로 포함된 것들로, 언어의 기본 기능을 확장시키는 역할을 담당한다.
    Python의 표준 라이브러리에는 문자열 처리, 파일 조작, 네트워크 통신 등 다양한 모듈들이 포함되어 있다.
    참고문헌 : https://docs.python.org/ko/3/library/index.html
  • 웹 개발 라이브러리 : 웹 개발의 편의성을 제공하는 역할을 한다.
    대표적인 예로 JavaScript의 경우, jQuery, React, Angular 등이 있다.
  • 데이터베이스 라이브러리 : 데이터베이스와 상호 작용하는 역할을 수행한다.
  • 그래픽스 및 시각화 라이브러리 : 데이터 시각화나 그래픽스 작업을 위해 사용하는 라이브러리
    대표적인 예로 JavaScript의 D3.js가 있다.
  • 상태관리 라이브러리: 애플리케이션의 상태를 보다 효과적으로 관리(상태 업데이트나 추적...)하기 위한 라이브러리
    대표적인 예로 Redux와 Recoil이 있다.

3. 라이브러리와 프레임 워크의 차이점

  • 주도권의 차이라고 설명할 수 있다.
  • 라이브러리의 경우, 개발자가 필요에 따라 선택적으로 사용할 수 있다.
  • 프레임 워크의 경우, 애플리케이션의 개발을 위한 일종의 뼈대 역할을 하기에, 개발자 프레임 워크에 맞춰서 개발을 해야한다.

3-1. React는 라이브러리인가 프레임 워크인가?

  • React는 '프레임 워크같은' 라이브러리라 정의할 수 있다.
  • React 개발당시, UI개발을 위한 라이브러리로 개발되었으나, React Router를 통한 라우팅 기능이나, Redux와 같은 다양한 상태관리 라이브러리와의 조합으로 점차 '프레임 워크화'되어간 것이다.
  • 즉, React는 프레임워크처럼 동작하는 라이브러리라고 소개하면 된다.

4. 요약 정리 및 면접형 QnA

Q1. 라이브러리에 대해 설명해주세요

  • 라이브러리는 재사용 가능한 코드의 집합을 의미합니다.
  • 해당 코드에는 특정 기능을 수행하는 함수, 클래스, 모듈 등으로 구성되어 있습니다.
  • 개발자가 필요에 따라 선택적으로 사용할 수 있다는 특징이 있습니다.
  • 프런트엔드 개발자인 저희에게 가장 익숙한 라이브러리에는 웹개발 라이브러리인 React와 상태관리 라이브러리인 Recoil과 Redux가 있습니다.

Q2. 혹시 Redux와 Recoil의 차이에 대해 설명가능하실까요?

  • Redux와 Recoil은 둘 다 상태 관리를 위한 라이브러리이지만, 사용 범위나 상태 업데이트 방식, 성능면에서 차이를 보입니다.
  • Redux의 경우, JavaScript 기반의 라이브러리(React, Angular, Vue)에서 모두 사용가능합니다. 반면 Recoil의 경우, Meta에서 React만을 위해 개발한 라이브러리여서 오로지 React에서만 작동가능합니다.
  • Redux는 Reducer를 활용한 일방적인 데이터 흐름으로 상태를 업로드 하지만, Recoil은 React의 useState와 유사하게 Atom이라는 상태 단위를 활용하여 상태를 업로드 합니다.
  • Recoil은 Redux보다 간단한 API를 제공하고 성능 최적화면에서도 React의 컴포넌트 라이프사이클과 잘 맞기에 우수합니다.

Q3. React는 라이브러리일까요, 아니면 프레임워크일까요?

  • React의 개념적으로 라이브러리가 맞습니다. 개발 초창기에 웹개발을 용이하게 하기 위해 개발된 웹개발 라이브러리 였으나, 다양한 상태관리 라이브러리를 함께 사용하고, 라우터를 활용한 라우팅이 가능해져서 컴포넌트간 보다 편리한 매핑이 가능해져 더이상 라이브러리가 아닌 프레임워크로 인식되는 경우가 있습니다.
  • 즉, React는 프레임워크처럼 동작하는 라이브러리라고 정의할 수 있습니다.
profile
감동을 주고픈 개발자(준비생)

0개의 댓글