GGWiki
새 문서
현재 판이에요 · #708 AI 조사: 게임 제작 도구 문서 · GGWiki 자동 ·

플러그인

개요

플러그인(plug-in)은 호스트 응용 프로그램과 서로 응답하며 특정한 주문식 기능을 제공하는 컴퓨터 프로그램이다. 소프트웨어 컴포넌트이자 컴퓨터 프로그램의 일종으로, 기존 소프트웨어 응용 프로그램에 특정 기능을 추가하는 역할을 한다. 애드인(add-in), 애드온(add-on), 확장(extension) 등으로도 불린다. 응용 프로그램이 플러그인을 지원하는 주된 이유는 서드파티 개발자가 응용 프로그램을 확장하는 기능을 만들 수 있게 하거나, 뜻밖의 기능을 지원하거나, 응용 프로그램의 크기를 줄이기 위해 사용되지 않는 기능을 로드하지 않게 하거나, 호환되지 않는 소프트웨어 라이선스 문제로 인해 소스 코드를 응용 프로그램에서 분리하기 위함이다[1][2][3].

역사

플러그인 개념은 1970년대 중반 유니시스 VS/9 운영 체제를 구동하는 유니박 시리즈 90 메인프레임 컴퓨터의 EDT 문서 편집기에서 처음 등장하였다. 이 편집기는 프로그램 실행 기능을 제공하여 외부 프로그램이 메모리 내의 편집 세션 버퍼에 접근할 수 있게 하였으며, 플러그인 프로그램이 편집기 호출을 통해 버퍼 상에서 문서 편집 서비스를 수행할 수 있게 하였다. 워털루 포트란 컴파일러는 이 기능을 활용해 EDT에서 편집된 포트란 프로그램의 상호작용 컴파일을 가능하게 하였다[2][3].

개인용 컴퓨터 소프트웨어 가운데 플러그인 기능을 갖춘 초기 사례로는 1987년 출시된 매킨토시의 하이퍼카드(HyperCard)와 쿼크익스프레스(QuarkXPress)가 있다. 1988년에는 실리콘 비치 소프트웨어(Silicon Beach Software)가 디지털 다크룸(Digital Darkroom)과 슈퍼페인트(SuperPaint)에 플러그인 기능을 도입하였으며, 이 때 에드 봄케(Ed Bomke)가 "플러그인"이라는 용어를 만들어냈다[2][3].

기능과 사용법 개요

작동 원리

호스트 응용 프로그램은 플러그인이 사용할 수 있는 서비스를 제공한다. 여기에는 플러그인이 호스트 응용 프로그램에 스스로를 등록하는 방식과 플러그인과 데이터를 교환하는 프로토콜이 포함된다. 플러그인은 호스트 응용 프로그램이 제공하는 서비스에 의존하며 보통 단독으로 작동하지 않는다. 반면 호스트 응용 프로그램은 플러그인과 독립적으로 동작하므로, 최종 사용자는 호스트 응용 프로그램을 변경하지 않고도 플러그인을 동적으로 추가하거나 업데이트할 수 있다[3].

프로그래머는 일반적으로 플러그인을 공유 라이브러리(shared library) 형태로 구현하며, 이는 실행 시점에 동적으로 로드된다. 하이퍼카드는 이와 유사한 기능을 지원했으나, 플러그인 코드를 하이퍼카드 문서(스택)에 포함시키는 방식을 더 흔히 사용하였다. 이로 인해 하이퍼카드 스택 자체가 독립적인 응용 프로그램이 되어, 추가 설치 과정 없이 단일 엔티티로 배포 및 실행이 가능하였다. 또한 파이썬(Python)이나 루아(Lua) 같은 스크립트 언어로 작성된 단순 스크립트 파일의 디렉터리를 로드하는 방식으로 플러그인을 구현하기도 한다[3].

헬퍼 응용 프로그램

웹 브라우저 문맥에서 헬퍼 응용 프로그램(helper application)은 어도비 리더(Adobe Reader)나 어반뷰(IrfanView)처럼 브라우저 기능을 확장하는 별도의 프로그램이다. 일반적인 플러그인이 호스트 응용 프로그램의 주소 공간에 로드되는 것과 달리, 헬퍼 응용 프로그램은 별도의 주소 공간을 가진 독립된 응용 프로그램이다. 이로 인해 확장이 호스트 응용 프로그램을 크래시시킬 가능성이 차단된다[3].

무엇을 만들 수 있는가 / 대상 사용자

플러그인은 다양한 분야의 응용 프로그램에서 기능을 확장하는 데 쓰인다. 주요 용례는 다음과 같다[2][3].

디지털 오디오 워크스테이션 및 오디오 편집 소프트웨어: 오디오 플러그인을 통해 소리 생성, 처리, 분석 기능을 확장한다. 아도르(Ardour), 오다시티(Audacity), 큐베이스(Cubase), FL 스튜디오, 로직 프로 X(Logic Pro X), 프로 툴스(Pro Tools) 등이 대표적이다.

이메일 클라이언트: 이메일 암호화 및 복호화 기능을 제공한다. 프리티 굿 프라이버시(Pretty Good Privacy)가 예이다.

비디오 게임 콘솔 에뮬레이터: 에뮬레이트 대상 기기의 개별 서브시스템을 모듈화한다. 예를 들어 PCSX2 에뮬레이터는 플레이스테이션 2의 비디오, 오디오, 광학 드라이브 등을 각각 별도 플러그인으로 구현한다.

그래픽 소프트웨어: 파일 형식 지원 및 이미지 처리를 확장한다. 포토샵 플러그인이 대표적이다.

방송 및 라이브 스트리밍 소프트웨어: OBS 스튜디오와 같은 오픈 소스 소프트웨어가 사용자별 필요에 맞춰 플러그인을 활용한다.

미디어 플레이어: 파일 형식 지원 및 필터 적용을 확장한다. 푸바2000(foobar2000), GStreamer, 퀸테센셜(Quintessential), VLC, 윈앰프(Winamp), XMMS 등이 있다.

패킷 스니퍼: 패킷 포맷 디코딩을 확장한다. 옴니피크(OmniPeek)가 예이다.

원격 센서 프로그램: 서로 다른 센서 유형의 데이터 처리를 확장한다. 옵틱스(Opticks)가 예이다.

텍스트 편집기 및 통합 개발 환경(IDE): 프로그래밍 언어 지원 및 개발 프로세스 향상을 위해 플러그인을 사용한다. 비주얼 스튜디오(Visual Studio), RAD 스튜디오, 이클립스(Eclipse), 인텔리J IDEA(IntelliJ IDEA), 제이에디트(jEdit), 모노디벨로프(MonoDevelop) 등이 플러그인을 지원한다. 비주얼 스튜디오 자체도 비주얼 스튜디오 툴스 포 오피스(Visual Studio Tools for Office) 및 비주얼 스튜디오 툴스 포 애플리케이션(Visual Studio Tools for Applications)을 통해 다른 응용 프로그램에 플러그인될 수 있다.

웹 브라우저: 과거에는 실행 파일 형태의 플러그인을 사용하여 동영상 및 프레젠테이션 포맷을 재생하였다. 어도비 플래시 플레이어(Adobe Flash Player), 자바 가상 머신(Java applet용), 퀵타임(QuickTime), 마이크로소프트 실버라이트(Microsoft Silverlight), 유니티 웹 플레이어(Unity Web Player) 등이 있었으나 현재는 모두 사용 중단(deprecated)되었다. 브라우저 확장(browser extension)은 별도의 설치 가능 모듈 유형으로 현재에도 널리 쓰인다.

관련 기술 비교: 플러그인 vs 브라우저 확장 vs 애플릿

자료는 웹 브라우저 환경에서 과거 플러그인(실행 파일 기반)이 사용 중단되고 브라우저 확장이 널리 쓰임을 명시하고 있다. 브라우저 확장은 별도의 설치 가능 모듈 유형으로 플러그인과 구분된다. 또한 애플릿(applet)은 소형 소프트웨어 응용 프로그램으로 플러그인과 별개 개념으로 다루어진다[2][3].

이 문서는 GGWiki AI가 공개 자료(아래 출처)를 조사해 새로 쓴 초안입니다. 틀린 내용은 편집하거나 이의 제기로 알려 주세요.