라이브러리
요리할 때 육수나 양념장을 매번 새로 만들지 않고 시판 양념을 꺼내 쓰듯, 자주 쓰는 유용한 기능들을 모아둔 코드 공구함이에요.
정의 프로그래밍을 할 때 자주 쓰이는 기능들을 미리 만들어서 모아둔 코드 묶음이에요. 바퀴를 매번 처음부터 다시 발명할 필요 없이, 다른 사람이 잘 만들어 둔 유용한 도구를 내 프로그램에 가져와 필요할 때마다 꺼내 쓸 수 있어요.
왜 라이브러리가 필요할까요?
집을 지을 때 문고리나 창문, 나사못까지 직접 깎아서 만드는 목수는 없어요. 이미 규격에 맞게 튼튼하게 만들어진 부품을 사 와서 조립하는 것이 훨씬 빠르고 안전하기 때문이에요.
프로그래밍 세계도 마찬가지예요. 버튼을 눌렀을 때의 애니메이션, 복잡한 통계 계산, 날짜 형식 변환 같은 기능은 거의 모든 프로그램에서 반복해서 쓰여요. 이런 공통 기능을 누군가 최적화된 코드로 짜서 예쁘게 포장해 둔 상자가 바로 라이브러리예요.
개발자는 이 상자를 내 프로젝트로 가져와서 함수를 호출하기만 하면 돼요. 덕분에 반복적인 기초 작업에 드는 시간을 획기적으로 줄이고, 우리 서비스만의 핵심 아이디어를 구현하는 데 온전히 집중할 수 있어요.
프레임워크와는 어떻게 다를까요?
개발을 공부하다 보면 라이브러리와 '프레임워크'라는 말을 항상 함께 듣게 돼요. 두 개념을 가르는 가장 핵심적인 기준은 '누가 프로그램의 주도권을 쥐고 있는가'예요.
라이브러리는 필요할 때마다 개발자가 직접 골라 쓰는 공구예요. 가구가 필요할 때 공구함에서 드라이버나 톱을 꺼내 내 마음대로 쓰고 다시 정리해 두는 것과 같아요. 전체 작업 순서와 흐름은 여전히 개발자가 결정해요.
조금 더 정확히 말하면, 프레임워크는 이미 뼈대가 완성된 조립식 키트와 같아요. 정해진 틀과 순서에 맞춰 정해진 빈칸에 내 코드를 채워 넣어야 하죠. 도구를 내가 능동적으로 부르면 라이브러리이고, 만들어진 틀이 내 코드를 수동적으로 불러서 실행하면 프레임워크예요.
오픈소스 생태계와 편리한 관리
오늘날 전 세계의 개발자들은 자신이 시간 들여 만든 훌륭한 라이브러리를 인터넷에 무료로 공개하고 함께 발전시켜 나가요. 이를 오픈소스 생태계라고 불러요. 덕분에 초보 개발자나 스타트업도 대기업 못지않은 강력한 기능을 빠르게 구현할 수 있게 되었어요.
이 수많은 라이브러리는 '패키지 매니저(Package Manager)'라는 관리 도구 덕분에 명령어 한 줄만 입력하면 인터넷에서 자동으로 다운로드되어 내 프로그램에 쏙 연결돼요. 스마트폰에서 앱스토어를 통해 필요한 앱을 터치 한 번으로 내려받는 것과 똑같아요.
다만 무작정 남의 코드를 많이 가져다 쓰면 프로그램이 무거워지거나 예기치 못한 오류와 보안 문제가 생길 수 있어요. 따라서 신뢰할 수 있고 지속적으로 업데이트되는 도구를 선별해서 쓰는 지혜가 필요해요.
🤔 흔한 오해
라이브러리는 프로그램의 전체적인 뼈대와 규칙을 강제한다.
규칙과 흐름을 강제하는 것은 프레임워크예요. 라이브러리는 개발자가 필요할 때만 자유롭게 불러서 쓰는 독립적인 부품에 불과해요.
🧺 일상에서 만나요
자주 쓰는 기능들을 모아둔 코드 공구함으로, 개발자가 필요할 때마다 능동적으로 꺼내 쓰는 도구예요.