K Kibo 받기

서드파티 키보드가 처음 열릴 때만 굼뜬 이유

한 세션에서 처음 올라오는 키보드는 프로세스를 새로 띄우는 비용을 그대로 치릅니다. 그다음부터는 그 작업 대부분을 건너뛰기 때문에 차이가 느껴집니다. 그 시작 단계에서 실제로 무슨 일이 벌어지는지 정리했습니다.

한 세션에서 서드파티 키보드가 처음 올라올 때는 프로세스를 새로 띄우는 작업을 전부 치르고, 그 뒤의 등장들은 그 대부분을 건너뜁니다. 지연이라고 부르는 것은 이 둘의 차이입니다. 키보드가 느린 것이 아니라 켜지는 중입니다.

키보드 확장은 필요할 때 실행되는 별도의 프로세스입니다

키보드 앱은 사실 두 가지입니다. 홈 화면에 있는 앱 본체와, 그 안에 담겨 배포되는 키보드 확장입니다. 확장은 글자를 치고 있는 앱의 일부도, 본체 앱의 일부도 아닌 자기만의 프로세스입니다. iOS는 입력란이 키보드를 요구할 때만 실행했다가 키보드가 사라지면 종료합니다. 그래서 콜드 스타트에는 키 한 칸이 그려지기 전에 해야 할 일이 있습니다.

같은 세션에서 두 번째로 입력란을 누를 때는 이 대부분이 이미 정리되어 있습니다. 프로세스가 아직 살아 있을 수도 있고, 시스템이 남겨 둔 것들 덕분에 같은 작업을 다시 하지 않아도 됩니다.

유난히 오래 걸리는 경우

줄일 수 있는 부분과 없는 부분

줄일 수 있는 쪽은 거의 전부 첫 화면이 그려지기 전에 얼마나 많은 일을 하느냐입니다. 이미지로 만든 이모지 격자는 해독에도 메모리에도 비용이 크지만, 같은 화면을 글자로 구성하면 그 비용이 거의 사라집니다. 사진 배경은 본체 앱에서 가져올 때 한 번 줄여 두면 확장이 원본을 여는 일이 없어집니다. 고른 테마와 소리, 켜 둔 언어만 읽고 나머지는 첫 화면 뒤로 미루는 것도 같습니다.

반대로 어떤 키보드도 할 수 없는 것은 미리 켜져 있는 일입니다. 백그라운드에서 돌 수도, 메모리에 남겨 달라고 요청할 수도, 메모리 상한을 올릴 수도 없습니다. 모든 서드파티 키보드가 같은 조건 안에 있습니다.

첫 한 박자와 구분해야 하는 증상

첫 등장에서 잠깐 걸리는 것은 구조에서 나오는 정상적인 부분입니다. 반면 그 지연이 등장할 때마다 반복되거나 키보드가 떴다가 곧바로 사라진다면 시작 비용이 아니라 메모리 상한 쪽 이야기입니다. 배경에 띄워 둔 앱을 정리해 보면 두 경우를 구분할 수 있습니다.

자주 묻는 질문

처음 한 번만 느리고 그 뒤로는 괜찮은 이유가 무엇인가요?

키보드 확장은 입력란이 필요로 할 때 iOS가 실행하는 별도의 프로세스입니다. 첫 등장은 프로세스 실행, 설정 읽기, 자원 불러오기, 키 배치를 전부 치르고 뒤이은 등장은 이미 끝난 작업을 다시 쓰기 때문입니다.

재시동한 직후에 더 오래 걸리는 이유는 무엇인가요?

캐시가 비워져 자원을 저장 장치에서 다시 읽어야 하고, 그 첫 실행이 기기가 동시에 시작하는 다른 작업들과 경쟁하기 때문입니다.

키보드가 떴다가 바로 사라지는 것도 같은 문제인가요?

아닙니다. 그 증상은 확장이 메모리 상한을 넘겨 종료되는 경우이지 시작이 느린 것이 아닙니다. 배경에 띄워 둔 앱을 정리하고 사진 배경을 꺼 두면 대체로 나아집니다.

키보드를 미리 올려 두어 항상 빠르게 만들 수는 없나요?

없습니다. 키보드 확장은 백그라운드에서 돌 수도, 자기를 메모리에 남겨 둘 수도 없습니다. 늘 켜져 있는 키보드는 입력하지 않는 동안에도 돌아가는 키보드이고, iOS는 그것을 허용하지 않습니다.

내 키보드에서 직접 써보기

Kibo는 진짜 기계식 키음과 다양한 테마, RGB 백라이트 효과를 갖춘 iPhone용 무료 키보드입니다. 계정도 광고도 없고, 전체 접근 권한을 꺼둔 상태에서도 작동합니다.

App Store에서 받기

관련 가이드

전체 가이드