필자는 매주 글을 쓰다보니 글쓰기 툴에 관심이 많은 편이다.

그러던 어느날 프리라이트 트래블러라는 기기를 알게 되었다. 아래 사진을 보면 알겠지만, 이북리더기처럼 E-잉크로 화면을 표시하는 글쓰기 툴이다.

500 (출처: Freewrite 공식 홈페이지)

안 그래도 노트북이 갈수록 무겁게 느껴지고 눈도 금방 피로해지던 필자에게 E-잉크 디스플레이의 휴대용 에디터는 너무나 매력적으로 느껴졌다. …그 가격을 보기 전까지는 말이다.

과연 이 정도 돈을 주고 사도 내가 잘 써먹을 수 있을까?

큰 맘 먹고 구매했는데 나랑 안 맞으면 어떡하지? 지금 유지하고 있는 글쓰기 워크플로우랑 잘 통합될 수 있을까? 무시할 수 없는 가격을 마주하자 고민이 생기기 시작한 것이다.

그럼에도 불구하고 어디서든 눈에 부담을 주지 않으면서 글에 집중할 수 있는 환경을 경험해보고 싶은 마음은 점점 더 커져만 갔다.

이윽고 종종 사용하던 이북리더기를 떠올리게 되었다.


1. 직접 만들어보면 되잖아?

나에겐 오닉스 포크 5라는 이북리더기가 있다. 6인치 화면에 안드로이드 기반으로 동작하는 기기이다. 마침 휴대용 접이식 블루투스 키보드도 있다. 이로서 나만의 휴대용 E-잉크 에디터의 하드웨어 구성은 갖춰진 것이다.

500

이제 필요한 것은 소프트웨어다.

일단 안드로이드 기반이니 Kotlin을 사용해 개발하기로 했다. 필자는 사실 Kotlin 개발 경험이 없다… 하지만 우리에겐 Gemini와 ChatGPT가 있지 않은가? 생성형 AI들이 친절하게 알려주며 필요한 코드를 제안해주니 든든했다.

AI 에이전트는 쓰지 않았다. 왜냐고? 이왕 개발하는 거, 직접 코드를 쳐보며 Kotlin 개발의 맛을 보고 싶었다. 개발자로서의 호기심이자 한 줌 남은 자존심이라 생각해주시길.

오닉스 포크 5는 2023년에 출시된 이북리더기로 안드로이드 11 환경에서 구동된다. 앱에 외부 라이브러리를 쓴다면 안드로이드 11과 호환되는지 확인이 필수다.

배터리는 1500mAh. 글쓰기 앱은 E-잉크 디스플레이를 계속해서 새로 고치므로 배터리 소모가 클 것이다. 글쓰기에 집중하는 시간을 확보하려면 배터리 낭비를 최소화해야 한다.

E-잉크 디스플레이는 주사율이 느려 화려한 애니메이션을 피해야 한다. 텍스트 입력에만 집중하게끔 단순하면서 효율적인 UI/UX를 구상해야 했다.

개발 초기에는 현재 글쓰기 워크플로우에 맞춰 마크다운 파일을 수정하는 단순한 기능만 구현했었는데, 생성형 AI의 꼬드김에 넘어가 결국 최종적으로 아래 기능들을 구현하게 되었다.

  1. GitHub 저장소 관리 화면
  • 저장소 추가(Clone) 및 삭제 기능
  • 저장소 추가 시 팝업 창에서 GitHub URL과 PAT 토큰 입력
  • GitHub 정보는 로컬에 저장
  1. 파일 선택 화면
  • 현재 로컬 저장소와 원격 저장소 Sync
  • 로컬 저장소에 있는 모든 마크다운 파일과 폴더 리스트로 표시
  • 현재 경로에 새 마크다운 파일 생성 기능
  • 파일 클릭 시 에디터 화면으로 전환
  • 파일 길게 누를 시 파일 삭제 확인 팝업창 표시 및 삭제 기능
  1. 에디터 화면
  • 마크다운 파일 수정
  • 현재 수정 중인 파일을 로컬 저장소에 주기적으로 자동 저장
  • 화면 좌측 하단에 현재 수정 여부 또는 Sync 상태 표시
  • 화면 우측 하단에 현재 파일의 글자 수 표시
  • Ctrl + s 단축키 입력 시 원격 저장소에 저장

위와 같은 구성으로 앱을 개발하고 실제 이북리더기 동작 테스트까지 2주 좀 안 되게 걸린 듯하다.


2. 의외의 복병은 Git Sync

위에서 잠깐 언급했지만, 필자가 기존에 쓰던 글들은 모두 GitHub 레파지토리로 관리하고 있었다. 그리고 이런 흐름을 E-잉크 에디터에도 그대로 적용하고 싶어 Git Sync 기능을 구현하게 되었다.

만약 앱을 실행하면 자동으로 원격 저장소 내용을 동기화하고, 에디터 화면에서 Ctrl + S를 입력하면 현재 수정 내용이 GitHub 레파지토리에 Push되는 것이다.

앱 개발 초기에는 JGit이라는 외부 라이브러리의 Git Pull, Git Commit, Git Push 기능 정도로 간단하게 원하는 Sync가 가능할 거라 예상했지만 오산이었다.

앱에서 주기적으로 로컬에 자동 저장되는 파일 버전과 원격 저장소의 파일간의 충돌을 막는 것은 그리 쉬운 일이 아니었다. 결국 아래와 같은 워크플로우가 필요했다.

  1. git fetch 기존에 로컬 수정이 있는지 확인
  2. 로컬 수정이 있다면 git commit 후 push
  3. 로컬 수정이 없다면 현재 remote가 로컬의 조상인지 확인 remote의 최신본으로 갱신

3. 앞으로 개선해야 할 점

이렇게 개발한 앱은 지금 이 아티클을 작성할 때에도 사용할 정도로 만족스럽긴 하지만, 앞으로 개선해야 할 점이 분명히 있다.

일단, GitHub 레파지토리 정보를 더 쉽게 가져올 수 있는 방법을 찾아야 한다. 아까 저장소 관리 화면에서 저장소를 추가하려면 GitHub URL과 인증 토큰을 입력해야 한다고 했다. URL도 그렇지만 인증 토큰은 굉장히 긴 문자열이기 때문에 하나하나 키보드로 입력하기 어렵다.

지금은 개인적으로 사용 중이므로 개발용 PC와 이북리더기를 USB로 연결한 다음, PC의 터미널에서 adb 명령어로 URL과 인증 토큰을 이북리더기에 보내는 방식으로 저장소를 추가한 상태이다. 하지만 이건 임시방편일 뿐이므로 앞으로 개선해야 한다.

그리고 이건 하드웨어 한계 또는 최적화가 요구되는 지점일 수도 있는데, 블루투스 키보드를 너무 빠르게 입력하면 에디터에서 가끔 입력이 누락되는 경우가 있다.

하지만 이건 오히려 글에 집중할 수 있는 특징으로 볼 수도 있다. 커서를 이리저리 옮겨가며 글자를 입력했다 지웠다 반복하던 기존의 글쓰기 방식에서, 조금 더 차분하게 글을 써내려갈 수 있는 환경으로 바뀌었다고 생각해보려 한다. 물론 이건 필자가 E-잉크 에디터로 이제 막 아티클 하나를 써본 시점에서의 감상이므로 추후에 얼마든지 개선이 필요한 점으로 뒤바뀔 수 있을 것이다.

500


마무리

생성형 AI 덕분에 도전의 문턱이 낮아졌다고들 이야기 한다. 그리고 필자도 그 의견에 깊게 공감한다. AI가 도와주지 않았더라면 익숙치 않은 Kotlin으로 E-잉크 마크다운 에디터 앱 개발은 엄두도 못 냈을 테니 말이다.

물론 이번 에디터 앱을 개발하면서 시행착오도 많았다. AI에게 무작정 구현해달라고 말하기 전에 지금 정말 필요한 기능은 무엇이고 고려해야 할 점은 무엇인지 스스로 먼저 생각하고 AI와 논의해야 원하는 방향에 근접한 결과물을 비교적 빠르게 얻을 수 있었다.

마지막으로 E-잉크 에디터를 사용해보니 느낀 점을 몇 가지 공유해보겠다.

첫 번째는 아티클을 처음부터 끝까지 쓸 수 있는 환경은 아니란 것이다. 기술 아티클 특성 상 인터넷 조사나 사진 첨부 등이 필요한데, 이런 작업까지 E-잉크 에디터에서 할 수는 없었다. 필요한 정보를 미리 조사한 다음 뼈대를 구성하는 것은 PC나 노트북에서 하고, E-잉크 에디터 환경에서 그 속의 내용을 채우는 것이 맞을 것이다.

두 번째는, 그럼에도 불구하고 글 쓰는 속도가 빨라졌다는 것이다. E-잉크 에디터 환경에서는 알림이나 인터넷 같은 방해 요소가 없어 더 빨리 글에 집중할 수 있었기 때문이다. 여기에 덧붙여 글을 다 쓰고 나서 느껴지는 눈의 피로감도 PC를 사용할 때보다 체감상 50%는 줄었다. 집중에 필요한 시간과 눈의 피로도가 크게 줄었다는 점에서 참 만족스럽다.

여러분도 만약 글쓰기에 관심이 있고 마침 안드로이드 기반 이북리더기가 있다면 도전해보시길 바란다.