
Cim 프로젝트에서는 기존에 CimIc 구조체를 포함하는 방식으로 플러그인을 구현해왔습니다. 그러나 지금까지의 방식을 재검토한 결과, 플러그인 인터페이스의 역할과 진입점을 보다 명확하게 표현하기 위해 이름을 CimIcPlugin으로 변경할 예정입니다. 이번 글에서는 이름 변경의 배경, 네이밍의 의미, 그리고 향후 계획에 대해 소개하고자 합니다.
1. 이름 변경의 배경
플러그인 구현 방식의 개선
과거 Cim 프로젝트에서는 CimIc 구조체를 포함(composition)하는 방식으로 플러그인을 구현하여 입력 컨텍스트 관리를 수행했습니다. C 언어에는 클래스 개념이 없으므로 구조체 포함 기법을 사용하여 필요한 기능들을 확장해왔습니다. 하지만 기존의 CimIc 이름은 플러그인 인터페이스의 역할을 충분히 드러내지 못한다는 한계가 있었습니다. 또한, 플러그인 진입점을 위해 별도의 래퍼 함수를 사용했던 방식은 모듈의 역할과 책임을 다소 모호하게 만들었음을 확인하게 되었습니다.
기존에는 CimIc 구조체를 포함하여 플러그인 구현을 위한 별도의 래퍼 함수를 작성했지만, CimIc 자체의 기능만으로 플러그인 진입점을 제공할 수 있다는 점을 확인하였습니다. 이에, 플러그인 역할과 진입점을 보다 직관적으로 표현하기 위해 이름을 CimIcPlugin으로 변경하기로 결정했습니다.
2. 네이밍의 의미와 기대 효과
명확한 역할 표현
CimIcPlugin이라는 이름은 다음 세 가지 핵심 요소로 구성됩니다:
- Cim: Cim 프로젝트 내에서 통일된 접두어로 사용되어, 전체 모듈 간 일관성을 유지합니다.
- Ic: Input Context의 약어로, 해당 구조체가 입력 관련 기능을 수행함을 나타냅니다.
- Plugin: 플러그인 형태로 구현된 인터페이스임을 분명하게 표현하여, 플러그인 IME를 통한 입력 컨텍스트 관리 기능을 제공한다는 인상을 줍니다.
이러한 네이밍 조합은 개발자와 API 사용자가 이름만으로도 해당 모듈의 역할과 목적을 직관적으로 파악할 수 있게 합니다.
3. 향후 계획: 헤더 파일 분리 전략
Cim 프로젝트에서는 이름 변경과 동시에 모듈의 역할을 보다 명확히 하기 위해 헤더 파일 분리도 진행할 예정입니다.
기존의 cim.h 파일에서 관리하던 기능들을 분리하여, 각각의 역할에 맞는 세 개의 헤더 파일로 나눌 계획입니다:
- cim.h: 프로젝트 전반에서 공통적으로 사용되는 기본 구성 요소와 정의를 포함합니다.
- cim-ic.h: 이 헤더 파일은 ic 객체의 생성, 소멸, 포커스 관리, 이벤트 필터링 등 기본 API 함수들을 선언합니다. 내부에서는 불투명 핸들(opaque handle) 방식이 적용되어, 사용자는 오직 API 함수 호출을 통해 기능을 활용할 수 있습니다.
- cim-ic-plugin.h: 향후 플러그인 인터페이스를 담을 헤더 파일로, 플러그인 인터페이스를 정의하며 이름도 CimIcPlugin으로 변경할 예정입니다.
이러한 헤더 파일 분리는 애플리케이션에서 사용되는 기본 API와 Cim 지원 입력기(IME) 플러그인 인터페이스를 명확하게 분리하여, Cim 프로젝트의 모듈화와 유지보수성을 크게 향상시킬 것입니다.
이러한 변화가 Cim 프로젝트의 발전에 큰 도움이 될 것이며, 개발자들 간의 협업과 코드 유지보수를 더욱 원활하게 할 것으로 기대됩니다. 향후 구체적인 업데이트와 변경 사항에 대해 계속 공유할 예정이니, 여러분의 의견이나 경험을 댓글로 자유롭게 공유해 주세요!