SCIM
1. 개요
SCIM은 C++로 작성된 객체 지향 구조의 입력 방식 플랫폼이다. 높은 모듈화, 유연성, 단순한 프로그래밍 인터페이스를 제공하며, UCS-4/UTF-8 인코딩을 통한 국제화를 지원한다. SCIM은 다양한 입력 방식 라이브러리에 대한 통합 프론트엔드 역할을 하며, IIIMF 언어 엔진으로도 사용될 수 있다. 또한, 여러 운영 체제를 지원하는 것을 목표로 하며, 관련 프로젝트로 KDE와의 통합을 위한 SKIM, 악센트 문자 입력을 위한 t-latn-pre 및 t-latn-post가 있다.
| 명칭 | Smart Common Input Method |
|---|---|
| 종류 | 입력기 |
| 개발자 | James Su |
|---|---|
| 발표일 | 2002년 6월 22일 |
| 안정화 버전 | 1.4.18 |
| 안정화 버전 발표일 | 2017년 7월 31일 |
| 개발 언어 | C |
| 운영 체제 | 리눅스 *BSD |
|---|---|
| 플랫폼 | 해당 없음 |
| GNU GPL GNU LGPL |
| 웹사이트 | GitHub 저장소 |
|---|
-
입력기 -
금석문자경
금석문자경은 1997년 발매된 한자 글꼴 및 데이터베이스로, 다양한 버전 업데이트와 웹 데이터베이스 서비스 등을 제공하다가 2018년 사업이 종료되었다. -
입력기 -
구글 IME
-
C++로 작성된 자유 소프트웨어 -
클램윈
클램윈은 ClamAV 엔진 기반의 오픈 소스 백신 소프트웨어로, 트로이 목마, 바이러스, 멀웨어 등 다양한 악성 위협 분석 자료를 제공하며 예약 검사, 수동 검사, 컨텍스트 메뉴 통합 등의 기능을 지원하지만 실시간 감시 기능은 제공하지 않는다. -
C++로 작성된 자유 소프트웨어 -
VirtualDub
VirtualDub은 윈도우 운영 체제에서 실행되는 무료 오픈 소스 비디오 캡처 및 처리 유틸리티이며, AVI 파일을 주로 처리하고 플러그인을 통해 다른 파일 형식도 지원하며, 동영상 캡처, 편집, 비디오 처리 및 필터 기능을 제공한다.
2. 주요 특징
SCIM은 다음과 같은 주요 특징을 가지고 있다.
* C++로 작성된 완전한 객체 지향 구조를 가졌다.
* 고도의 모듈화를 통해 기능을 쉽게 추가하거나 변경할 수 있다.
* C/S 입력기 환경처럼 유연한 구조를 제공하며, 동적으로 로드 가능한 라이브러리를 사용한다.
* 단순한 프로그래밍 인터페이스를 제공한다.
* UCS-4/UTF-8 인코딩을 지원하여 다양한 언어를 처리할 수 있는 완전한 국제화 기능을 제공한다.
* 개발 속도를 높이는 유틸리티를 제공한다.
* 풍부한 기능의 GUI 패널을 제공한다.
* 통일된 설정 프레임워크를 제공한다.
* scim-hangul 0.3.0 이상 버전에서는 일본어 방식의 한자 입력을 지원한다.
* 특수 문자 입력 기능(자음 + F9 키)을 지원한다. (0.3.0~0.3.1 버전에서는 제거되었다가 0.3.2 버전에서 다시 추가되었다.)
2.1. 객체 지향 설계
SCIM은 원래 C++ 언어로 작성되어 완전한 객체 지향 구조를 가졌다. 1.4.14 버전 이후부터는 순수 C로 전환되었다. SCIM은 입력 방식 인터페이스를 여러 클래스로 추상화하고, 클래스를 단순화하고 서로 독립성을 높이려고 시도한다. 더 단순하고 독립적인 인터페이스를 통해 개발자는 더 적은 코드 줄로 자체 입력 방식을 작성할 수 있다.
SCIM은 '모듈화된' IM 플랫폼이며, 따라서 구성 요소는 동적으로 로드 가능한 모듈로 구현될 수 있으며, 필요에 따라 런타임 중에 로드할 수 있다. 예를 들어, SCIM용으로 작성된 입력 방식은 IMEngine 모듈이 될 수 있으며, 사용자는 IMEngine 모듈을 다시 작성하거나 재컴파일하지 않고도 다양한 인터페이스 모듈(FrontEnd)과 결합하여 다른 환경에서 사용할 수 있어 프로젝트의 컴파일 시간이나 개발 시간을 줄일 수 있다.
2.2. 모듈화 및 유연성
SCIM은 높은 모듈화를 통해 기능을 쉽게 추가하거나 변경할 수 있다. 동적으로 로드 가능한 라이브러리를 사용하여 C/S 입력기 환경처럼 유연한 구조를 제공한다. 구성 요소는 동적으로 로드 가능한 모듈로 구현될 수 있으며, 런타임 중에 필요에 따라 로드할 수 있다.
2.3. 단순한 인터페이스
SCIM은 개발자가 쉽게 입력기를 개발할 수 있도록 단순한 프로그래밍 인터페이스를 제공한다. 이를 통해 개발자는 더 적은 코드 줄로 자체 입력 방식을 작성할 수 있다.
SCIM은 입력 방식 인터페이스를 여러 클래스로 추상화하고, 클래스를 단순화하며 서로 독립성을 높이려고 시도한다.
2.5. 기타 특징
C++객체 지향 구조로 작성되었다. 모듈화 수준이 높고, 매우 유연한 구조를 가지고 있어 C/S 입력기 환경처럼 동적으로 로드하는 라이브러리를 사용할 수 있다. 단순한 프로그래밍 인터페이스를 제공하며, UCS-4/UTF-8 인코딩으로 완전한 국제화를 지원한다. 개발 속도를 높이는 다양하고 편리한 유틸리티 기능과 수많은 기능을 포함한 GUI 패널, 통합된 환경 설정 프레임워크를 제공한다. scim-hangul 0.3.0 이상의 버전에서 일본어 방식의 한자 입력을 지원하며, 특수 문자 입력 기능도 제공한다. (0.3.0~0.3.1까지는 이 기능이 제거되었으나 0.3.2 버전에서 다시 추가되었다. 자음 하나를 입력하고 F9 키를 누르면 된다.)
2.6. 한국어 관련 기능
scim-hangul 0.3.0 이상 버전에서는 일본어 방식의 한자 입력을 지원한다. 특수 문자 입력 기능(자음 + F9 키)도 지원하는데, 0.3.0~0.3.1 버전에서는 제거되었다가 0.3.2 버전에서 다시 추가되었다.
3. 아키텍처
SCIM은 원래 C++ 언어로 작성되었지만, 버전 1.4.14 이후부터는 순수한 C로 전환되었다. 입력 방식 인터페이스를 여러 클래스로 추상화하고, 클래스를 단순화하고 서로 독립성을 높이려고 시도한다. 더 단순하고 독립적인 인터페이스를 통해 개발자는 더 적은 코드 줄로 자체 입력 방식을 작성할 수 있다.
SCIM은 '모듈화된' IM 플랫폼이며, 따라서 구성 요소는 동적으로 로드 가능한 모듈로 구현될 수 있으며, 필요에 따라 런타임 중에 로드할 수 있다. 예를 들어, SCIM용으로 작성된 입력 방식은 IMEngine 모듈이 될 수 있으며, 사용자는 IMEngine 모듈을 다시 작성하거나 재컴파일하지 않고도 다양한 인터페이스 모듈(FrontEnd)과 결합하여 다른 환경에서 사용할 수 있어 프로젝트의 컴파일 시간이나 개발 시간을 줄일 수 있다.
SCIM은 XIM 또는 IIIMF와 유사한 고수준 라이브러리이지만, 이러한 IM 플랫폼보다 더 단순하다고 주장한다. 또한 XIM 또는 IIIMF와 함께 사용할 수 있다고 주장한다. IMmodules를 통해 GTK+, Qt 및 Clutter와 같은 기존 응용 프로그램 도구 키트의 입력 방식 인터페이스를 확장하는 데 사용될 수 있다.
4. 목적
SCIM 프로젝트는 다음과 같은 목표를 가지고 있다.
* 현재 사용 가능한 입력 방식 라이브러리에 대한 통합 프론트엔드 역할을 한다.
* IIIMF(입력 방식 프레임워크)의 언어 엔진 역할을 한다.
* 기존에 널리 사용되는 만큼 많은 입력 방식 프로토콜/인터페이스를 지원한다.
* 여러 운영 체제를 지원한다.
4.1. 통합 프론트엔드
uim 및 m17n 라이브러리와 연동할 수 있는 통합 프론트엔드 역할을 수행한다. 바인딩은 uim 및 m17n 라이브러리를 사용할 수 있다.
4.2. IIIMF 언어 엔진
IIIMF(입력 방식 프레임워크)의 언어 엔진 역할을 한다.
분류:입력기
4.3. 다양한 프로토콜/인터페이스 지원
SCIM은 기존에 널리 사용되는 만큼 많은 입력 방식 프로토콜/인터페이스를 지원한다. uim 및 m17n 라이브러리와 연동할 수 있으며, IIIMF(입력 방식 프레임워크)의 언어 엔진 역할을 한다.
--
5. 관련 프로젝트
SKIM과 t-latn-pre 및 t-latn-post는 SCIM 관련 프로젝트이다. SKIM은 SCIM을 K 데스크톱 환경에 통합하기 위한 것이고, t-latn-pre 및 t-latn-post는 악센트 문자를 쉽게 작성할 수 있는 입력 방식이다.
5.1. SKIM
SKIM은 SCIM을 K 데스크톱 환경에 더 긴밀하게 통합하기 위한 별도의 프로젝트로, GUI 패널(scim-panel-kde라고 함), KConfig 구성 모듈 및 자체 및 SCIM 모듈 libscim에 대한 설정 대화 상자를 제공한다. 또한 주문형 로드 가능한 작업을 지원하는 자체 플러그인 시스템을 가지고 있다.