저자 서문
이 책은 엘리스 랩(Ellis Labs)의 코드이그나이터 플랫폼상에서 웹 애플리케이션을 효율적으로 개발하는 법을 가르치는 데 목표를 두고 있다. 코드이그나이터는 객체지향적 모델-뷰-컨트롤러(MVC, Model-View-Controller) 개발 플랫폼이다. MVC에 대한 더 자세한 사항은 http://en.wikipedia.org/wiki/Model-viewcontroller를 참고하라. 이 책을 쉽게 이해하려면 최소한 PHP 프로그래밍 언어, 그중에서도 PHP 객체지향 프로그래밍(PHP OOP)과 그 사용 방법, 그리고 MySQL과 친숙해야 한다.
코드이그나이터(이 책에서는 주로 CI라고 부른다)는 애플리케이션 개발 플랫폼으로서 PHP를 사용해 웹사이트와 웹 애플리케이션을 개발하는 사람들을 위한 도구다. 코드이그나이터는 영리한 애플리케이션 개발 프레임워크로, 고성능과 적은 용량이 뒷받침하는 유연하고도 확장 가능한 핵심부를 갖고 있다. 코드이그나이터는 OSL 3.0 오픈소스 라이선스를 지원하며, 엘리스 랩이 개발, 관리하며 전 세계의 개발자들이 참여하는 강력한 생태계로 이뤄져 있다. 코드이그나이터의 첫 공개 버전은 2006년 2월 28에 나왔으며, 웹 애플리케이션 개발자들로부터 매우 좋은 반응을 얻었다. 2010년 11월에는 유명한 깃허브(GitHub) 커뮤니티 프로젝트에서 코드이그나이터 개발 프로젝트를 추가하면서 점점 더 많은 전 세계 개발자들의 관심을 얻고 있으며, 이에 따라 더 정교하고 더 많은 기능을 가진 애드온을 제공하는 사람들이 나타났다.
잠시 뒤 소개하겠지만, 고급 웹 애플리케이션을 개발하는 데 있어 MVC 개발 패턴과 객체지향 개발 프레임워크에 기반한 웹 개발 트렌드가 점점 더 강해지고 있다. 코드이그나이터가 바로 그런 프레임워크다. 코드이그나이터가 갖고 있는, 작지만 고성능의 OOP 핵심부로 인해 코드이그나이터의 인기는 점점 상승하고 있다. 이 OOP 핵심부를 이용해서 독창적이고 재사용 가능하며 명확한 명명 규칙(naming conventions)을 가진 애플리케이션을 만들 수 있다. 또한 사용자 클래스가 CI 클래스를 상속하기 때문에 이 모든 기능을 확장하는 작업도 매우 용이하다. 이와 함께 점점 더 많은 애플리케이션 플러그인과 추가 라이브러리들이 이용 가능해지고 있다(여기에는 CMS나 쇼핑 카트, 테이블 데이터 내비게이터 같은 애플리케이션 위주 솔루션에서 사용할 수 있는 뷰/컨트롤러/모델/라이브러리/헬퍼 등이 포함된다).
MVC라는 개념은 정보의 표현과 이 정보와 상호작용하는 사용자를 분리하는 사용자 인터페이스를 지원하는 애플리케이션 프레임워크 혹은 개발 패턴을 의미한다. 그동안 성공적인 웹 애플리케이션 개발에서 MVC를 개발 구조로 채택해왔다. 모델(Model)은 애플리케이션 데이터로 구성하며 이를 조작하는 서비스를 제공한다. 컨트롤러(Controller)는 주로 웹 브라우저를 이용하는 사용자로부터 받아들이는 입력을 처리한다. 그리고 이 웹 브라우저가 뷰를 출력한다. 브라우저는 컨트롤러로부터 HTTP 프로토콜을 통해 이미 렌더링한 뷰를 전달받아 출력한다. 컨트롤러가 애플리케이션의 심장이다. 이 컨트롤러가 모델/데이터베이스 업데이트, 비즈니스 관련 계산을 수행하고, 뷰를 그려서 사용자에게 보여주며, 또한 클라이언트가 보낸 AJAX(Asynchronous JavaScript and XML) 비동기 요청을 처리한다. 뷰(View) 코드는 사용자 입력 로직과 표현할 대상을 정의한다. 컨트롤러는 이를 HTML과 자바 스크립트의 형태로 브라우저에게 제공해 그리게 한다. 브라우저는 이 뷰 코드를 HTTP 응답을 통해 전달받아 직접 렌더링한다. 이 컨텐츠를 실행하는 브라우저는 텍스트, 차트, 다이어그램, 이미지가 섞인 데이터를 사용자에게 제공한다.
드루팔(DRUPAL) 같은 오래된 CMS(Content Management System, 컨텐츠 관리 시스템)처럼 CMS의 기능성과 관리에 중점을 둔 기존의 웹 개발 플랫폼도 있다. 컨텐츠 중심의 프로젝트에서는 이런 플랫폼이 매우 유용할 수도 있다. 하지만 프로젝트가 새로운 많은 기능을 개발해야 하는 경우, 즉 많은 입력과 특화된 UI 동작이 필요한 웹 애플리케이션을 만들어야 하는 경우에는 이런 플랫폼이 그다지 매력적이지 못하다. 프로젝트의 요구사항이 작은 용량과 빠른 반응성과 고성능을 요구한다면 코드이그나이터가 훌륭한 결과를 보여줄
수 있다.
그러므로 유연성, 코드 재사용, 가벼운 기반구조, 개발자의 창의력 발휘, 명확한 코드, 고성능, 최소한의 용량, 빠른 학습 곡선의 관점에서 요약하자면 코드이그나이터가 최상의 선택으로 보인다. 더욱이 점점 더 커지고 있는 전 세계적인 개발자 커뮤니티 덕분에 언제나 활발한 개선 작업이 이뤄진다는 장점도 있다.
옮긴이의 말
이 책은 최근 PHP 개발자들에게 많은 각광을 받고 있는 코드이그나이터 프레임워크에 관한 서적이다.
코드이그나이터 프레임워크는 최근 유행하는 MVC 구조를 채택하고 있다. 명시적으로 컨트롤러, 모델, 뷰의 구조를 사용하며, 그 외 라이브러리와 헬퍼라는 지원 시스템을 통해 내, 외부에 존재하는 리소스를 참조한다.
또한 이 책은 많은 유용한 예제를 제공한다. 예를 들어 페이스북, 플리커닷컴(flickr.com) 같은 유명한 소셜 네트워크와 연동하는 예제는 실제 웹사이트 구축 시에 많은 참고가 되리라 생각한다.
이 책의 예제를 무리 없이 사용하려면 먼저 최소한의 웹 서버와 데이터베이스를 설정할 수 있어야 한다. 저자가 사용하는 MySQL과 phpMyAdmin을 사용하길 권하며(PHP는 물론 기본 사항이다), 간단한 웹 서버, PHP.ini, 데이터베이스 서버에 관한 기본적인 설정을 할 수 있으면 좋다.
각 장에서 예제를 실행하는 데 필요한 설정 사항을 간단하게나마 각주로 밝혀놓았으니 서버 설정 연습도 할 겸 참고하기 바란다. 모쪼록 이 책을 통해 코드이그나이터에 대해 많은 정보를 얻길 기원한다.
--- 본문 중에서