macOS上で動作するIMEを開発するために、Appleが公式で提供するInputMethodKitを利用して開発しました。
InputMethodKitでは主に、IMKInputController、IMKCandidates、IMKServerの3つのクラスを使い開発します。実際の開発中に、特にロジックが集中するIMKInputControllerのコードが肥大化し、コードの見通しが悪くなるという問題に直面しました。他にもIME開発特有のデバッグの煩わしさもありました。
そこで、コードの見通しをよくするためにThe Composable Architecture(TCA)を導入し、IMEのデバッグの煩わしさを軽減するために、fastlaneを使った自動化や、Repository層とUseCase層を採用したマルチモジュール構成で開発する方針を採用しました。
これらについて実際に書いたコードと一緒に以下の内容について解説します。