# iPhone으로부터 외부의 MySQL DB서버에 액세스하는 방법
Category: "DB-Tracklayer개발, 개발, 프로그래밍" , Tags: Cocoa, Connector, iPhone, MySQL, Objective-C
DB-Tracklayer의 iPhone판(iPhone용MySQL클라이언트 응용 프로그램)실현을 향해서,
사장님으로부터 새로운 미션으로써「iPhone으로부터 외부MySQL DB서버에 액세스하는 라이브러리를 구축해라!」라고 하는 지령이 온 것입니다. (※일부의 코멘트는 과장하고 있습니다.)
액세스 라이브러리라고 하는 것은, 까다로운 부분(데이타의 교환)뿐이고, 쉽게 즐길수 있는 부분(GUI, 애니메이션 등)은 일체 없습니다.
게다가 이것을 실현할 수 없으면, iPhone판의 기획 자체가 백지가 되어버리고 만다는 무언의 압력도 함께입니다. 책임이 막대합니다.
여담은 여기까지 하고, iPhone으로부터 MySQL DB서버의 정보를 취득하는 방법입니다만,
주로 2종류의 실현 방법을 들 수 있습니다.
하나는, MySQL DB서버와 iPhone을 중개하는 별도의 서버를 준비하는 방법입니다.
PHP등에는 이미 MySQL용의 클라이언트 라이브러리가 있으므로, 거기로부터 DB에 액세스하고, 결과를 HTTP에서 iPhone에 돌려주는 방법입니다.
이 방법은 중개 서버만 만들어 버리면, HTTP통신을 할 수 있는 다양한 단말에서 실현가능하기 때문에, 간단히 구현할 수 있어서 응용력이 높습니다만, 그 반면, 중개 서버를 경유하기 때문에 속도면이나 서버 부하, 서버 운용비등이 문제가 됩니다.
(원래부터 닫은 네트워크 환경상에서라면 중개 서버에 액세스하는 것은 불가능합니다만.)
그리고 또 하나는 iPhone으로부터 직접 DB서버에 접속하는 방법입니다.
MySQL에는 MySQL Connector라고 불리는 클라이언트 라이브러리가 준비되어 있어서,
이것을 사용하면 DB에 직접 접속할 수 있습니다.
중개 서버는 이용하지 않으므로, 속도면이나 운용비용으로 곤란을 겪을 것은 없습니다만,
공식으로 준비되어 있는 라이브러리는 기존의 메이저한 플랫폼에 한정되어 있어, iPhone전용의 라이브러리는 현시점에서는 존재하지 않았습니다.
단, 소스가 공개되어 있으므로, 이번은 이것을 iPhone용에 특수 제작하기로 했습니다.
iPhone용의 개발에는 Objective-C이라고 하는 언어를 사용합니다만, 이것은 C언어의 상위호환이므로, C언어의 소스는 그대로 컴파일 할 수 있습니다.
원래 mac os용의 거동도 소스에 있으므로, 거기를 잘 이용하고, iPhone에서 동작하도록 소스를 수정하고, 컴파일을 실시했습니다.
실제의 iPhone단말기로부터 MySQL DB서버에의 접속도 무사히 실시할 수 있었습니다.
그런데 다음에, 이번에 사용한 MySQL Connector(libmysql)는 C언어를 사용해서 액세스합니다만, 이대로라면, iPhone에서 이용하는 Cocoa touch프레임워크와 서로 잘 맞지 않으므로, Cocoa touch에 적합하게 wrapper class의 제작을 행했습니다.
주로, C언어의 문자열형 (char*)과 NSString*형과의 상호변환, 문자코드 변환, 메모리 관리 등을, 클래스 라이브러리에서 흡수하도록 하고 있습니다.
단지, 실제로 사용해 보면 아마 모자란 부분이 많이 많이 나올것이라고 생각하기 때문에, 수시로 수정을 더해 갈 예정입니다.


