지난 2개월간 일련의 XE 관련 프로젝트들을 진행하면서 XE 구성요소들에 대한 다방면의 지식을 습득할 수 있었습니다.
다른 CMS와는 달리 XE는 구성요소들이 레이아웃, 모듈, 위젯, 애드온 등으로 세분화되어 구성되어 있으며, 각 요소들도 기능별, 성격별로 구성 파일들이 세분화되어 있습니다.
XE 개발을 처음 시작하려고 마음먹은 개발자가 처음 맞닥들이게 되는 난관은 수많은 디렉토리와 파일들에 대한 부담감입니다.
저도 역시 처음에 그랬습니다. 참조를 하려고 게시판 모듈을 뜯어봤는데, conf에 lang, queries 등등 정체불명의 디렉토리들과 board.admin.model.php은 무엇이며... [...]
초반 갖은 삽질을 통해 각 파일 및 디렉토리의 용도를 파악했다고 하더라도 곧바로 또 다른 불편함을 느끼게 되는데, 바로 프로젝트 시작의 지루함(?)입니다.
XE의 가장 큰 구성요소라 할 수 있는 모듈 제작에 착수하려면 기본적으로 처음 세팅에 다음 요소들이 필요합니다.
- conf 디렉토리 : 모듈정보 및 환경설정 파일을 저장
- lang 디렉토리 : 언어 관련 파일을 저장
- tpl 디렉토리 : 뷰(View) 표시를 위한 HTML 템플릿 파일을 저장
- module.class.php : 모듈 최상위 클래스
- module.admin.view.php : 관리자 뷰(View)를 관장하는 클래스
- module.admin.controller.php : 관리자 제어를 관장하는 클래스
여기에 DB라도 쓸라 하면, queries 디렉토리와 schemas 디렉토리도 추가됩니다. 폼 유효성 검증 기능을 사용하려면 ruleset 디렉토리도 생성해야 합니다.
당연히 위에 나열된 요소들은 모듈에 따라 서로 다르게 구현되어 있지만, 기본적으로 같은 공통 요소가 있습니다. 예를 들어, 관리자 페이지에서 모듈 목록을 보여주고 삽입/수정/삭제 하거나 권한설정, 스킨설정 등의 부분이 공통된 요소이며, 이들은 모든 모듈에 공통적으로 들어가는 기능들이라고 할 수 있습니다.
처음 몇 번은 이미 만든 모듈을 복사해서 모듈명만 바꿔 사용을 했으나, 이내 이런 단순반복성 노가다를 자동화 할 필요를 느끼게 되었습니다. (저는 어렵고 힘든 일보다 단순하고 지루하고 반복적인 일을 극도로 싫어합니다...)
보통 윈도 MFC 프로그래밍과 같은 대규모(?) 프로젝트를 시작하는데, 메모장을 열고 하나부터 열까지 필요한 내용을 다 써 나가는 개발자는 없을 것입니다. 보통 Visual Studio에서 프로젝트를 생성하고, 자동 생성된 템플릿 파일에 만들려는 프로그램의 성격에 맞도록 코드를 수정하고 추가해 가면서 프로젝트를 진행해 나갈 것입니다.
여기에 착안하여 XE버전의 Visual Studio.. 만큼은 아니더라도, 기본 템플릿 정도는 자동으로 생성해 주는 프로그램을 만들어 보기로 작정했습니다.
기본 틀만이라도 자동으로 생성해주면, 생각을 구현으로 옮기기까지 시간이 그만큼 단축되어 생산성이 향상되는 효과를 기대할 수 있기 때문입니다.
일주일동안 퇴근 후 남는 짧막한 시간을 활용하여 XE Wizard라는 모듈을 만들어 보았습니다. 개발자 정보와 생성할 요소들을 체크하면 모듈을 자동으로 생성해 줍니다. 파일과 디렉토리 생성 뿐만 아니라, 파일 내용 기본 템플릿도 자동 생성해 주는 기능을 갖추고 있습니다.
▲ XE Wizard 모듈생성 탭
(XE Wizard도 XE 내에서 동작하는 하나의 '모듈'입니다.)
▲ 자동 생성된 디렉토리와 파일들
▲ 자동 생성된 관리자 뷰 클래스 파일(module_name.admin.view.php)
XE 1.7.x 버전에서 최적화되어 동작하도록 제작했으며, 앞으로는 1.5.x 버전이 아닌 1.7.x 버전을 베이스로 개발을 해 나갈 것이므로 하위 버전 호환성은 검증하지 않았으며, 지원할 예정은 없습니다.
추후 필요에 따라 모듈생성기능 뿐만 아니라 위젯이나 애드온, 레이아웃과 같은 다른 요소를 자동 생성해주는 기능도 추가해 갈 예정입니다.
Visual Studio 만큼의 성능은 아니더라도, 기본 템플릿을 생성해 주는 기능만으로도 충분히 생산성의 향상을 기대할 수 있을 듯 합니다.