오랜만에 블로그 써본다. 거의 7달 만이다. 7달 동안 많은 일이 있었는데, 1학기에 시험 못본줄 알았는데 더 떨어졌다던가 방학동안 물리한다고 환상의 X꼬쇼하고 아무것도 못건졌다던가 어쨌든 그렇게 자랑할만한건 아니다. 1년 약간 안되게 쓴 아이폰 5c (일명 ‘쓰레기’)를 버리고 아이폰 6로 갈아탔다. 아이폰 6로 바꾸면 모가 좋다?

  • 화면이 크고, 안깨졌다. (전꺼는 비맞기 싫어서 뛰다가 떨궈서… 나중에는 아예 디스플레이에서 유리가 떨어져 나갔다.)
  • iOS 12를 돌릴 수 있다. (어쨌든 최신은 아니다. 왜 애플은 iOS 13에서 아이폰 6를 지원하지 않을까? 다크모드 쓰고싶은데)
  • 훠어어어얼씬 빠르다.
  • (그리고 대충 더 낫다는 내용)

쨌든 이렇게 좋아졌으니, 아이폰에서도 백준을 하고 싶어졌다.

하지만, ideone같은 온라인 IDE의 모바일 지원이 그렇게 좋지는 않다. 코드 편집하려고 터치하면 바로 줌된다거나, 느리다거나 등등… 폰코딩은 아직도 먼 길이 남았다. 물론 앱 스토어에 괜찮은 것들이 있지만, 유료이고, 기능이 부족하기보다는 내가 필요없는 기능이 너무 많다.

그래서 한번 내가 직접 코드 에디터를 만들어 보기로 했다.

IDE 기능을 다 구현하는 것은 현실적으로 힘들 것이고, Cloud9 IDE를 위해 만들어졌고, ideone에도 사용된 Ace Editor를 iOS의 WKWebView에서 보여주는 방식으로 구현하는 중이다.

웹뷰 안의 Ace Editor는 (지금은) 거의 파일 탐색기가 붙어있는 껍데기 수준인 Swift로 만든 앱과 통신해서 iOS의 네이티브에 접근해야 할 때 Webkit Message Handler로 메시지를 보내는 방식으로 개발 방향을 잡았다. 이제 저어어엉말 핵심인 기능 (저장, Syntax Highlighting 등)은 구현했으니, Ace Editor Extension의 형태로 JS 코드를 분리하고, 파일 접근도 UIDocument를 쌩으로 접근하는 것이 아니라 subclassing을 해서 좋은 코드 구조를 만들어야 한다. 아, 단위 테스트와 UI 테스트도 코딩해야 한다.

과연 이 앱이 언제쯤 스토어에 올라갈지 모르겠다. 입구컷 당하면 개노답인데… 아직 완성은 멀었고, 지금 거의 Pre-Alpha 수준이다. 한번 그림으로 감상해 보자.

내가 개발을 얼마나 완료했는지 보고 싶으면, CodePad GitHub repo를 살펴보자. 아, 스타 넣는것도 잊지 말자.