개요
Kivy는 Python 프로그래밍 언어를 기반으로 개발된 자유·오픈소스 GUI(그래픽 사용자 인터페이스) 애플리케이션 프레임워크이다. 멀티터치(multitouch) 입력과 자연스러운 사용자 인터페이스(Natural User Interface, NUI)의 신속한 개발을 목표로 하며, 데스크톱, 모바일, 임베디드 플랫폼을 포함한 다양한 환경에서 동일한 코드를 재사용·배포할 수 있도록 설계되었다.
역사
Kivy는 이전 프로젝트인 PyMT의 발전된 형태로 출발하였다. 최초 릴리스는 2011년 2월 1일이었으며, 2012년에는 Python 3.3 포팅을 위해 Python Software Foundation으로부터 5,000달러의 보조금을 지원받았다. 또한 Raspberry Pi 지원은 Bountysource를 통한 기금으로 진행되었다. 안정 버전은 2024년 12월 26일 기준으로 2.3.1이 공개되어 있다.
기술적 특징
Kivy 프레임워크는 다음과 같은 주요 요소를 포함한다:
- 마우스, 키보드, TUIO 및 운영체제별 멀티터치 이벤트 등 광범위한 입력 지원
- OpenGL ES 2를 기반으로 하는 그래픽 라이브러리(Vertex Buffer Object와 셰이더 사용)
- 멀티터치를 지원하는 다양한 위젯 제공
- 커스텀 위젯 설계를 위한 중간 언어인 Kv 언어(Kv language) 제공
Kivy는 Python과 Cython으로 작성되었으며, MIT 라이선스 하에 배포된다. Android, iOS, Linux, macOS, Windows에서 실행이 가능하다.
Kv 언어
Kv 언어는 Kivy 프레임워크에서 사용자 인터페이스와 상호작용을 기술하기 위해 설계된 전용 마크업 언어이다. 이를 통해 화면의 레이아웃과 위젯 구성을 선언적으로 정의할 수 있으며, Python 코드와 별도로 UI를 설계할 수 있다는 특징이 있다. Python에서 기본 위젯 클래스를 정의한 뒤 Kv 언어로 인터페이스를 구성하는 방식이 일반적으로 사용된다.
관련 프로젝트
Kivy 조직은 프레임워크 자체 외에도 여러 관련 라이브러리와 도구를 개발·유지 관리한다. 주요 항목은 다음과 같다:
- Buildozer: Android 및 iOS용 범용 Python 패키징 도구
- Plyer: 플랫폼별 API에 대한 Python 래퍼
- Python for Android: Android용 Python 애플리케이션 빌드 및 패키징 툴체인
- Kivy for iOS: iOS용 Kivy 애플리케이션 빌드 및 패키징 툴체인
- KivyMD: Kivy용 Material Design 위젯 세트
- Kivy Garden: 커뮤니티가 유지 관리하는 위젯 및 라이브러리 저장소
이 밖에도 Kivy는 Google Summer of Code 프로그램에 Python Software Foundation 산하에서 참여한 이력이 있다.
사용 분야
Kivy는 멀티터치 상호작용이 필요한 애플리케이션 개발에 주로 활용된다. 모바일 앱, 데스크톱 GUI, 임베디드 기기용 인터페이스 등 다양한 영역에서 사용되며, 특히 Python 기반의 신속한 프로토타이핑과 크로스플랫폼 배포를 필요로 하는 개발 환경에서 채택되고 있다. 공식 사이트는 kivy.org이며, 소스 코드는 github.com/kivy/kivy에서 확인할 수 있다.