あの機能が使えない理由

「機能拡張」としてのサードパーティー製キーボードアプリの立ち位置を理解すれば、そのできること/できないことがおよそ浮かび上がってくる。有り体に言えば、APIに定義されていない処理は実現が困難ということになるが、それではわかりにくいため具体的な事例を挙げていこう。

キーボードを追加した後「フルアクセスを許可」を有効にしなければならないことは、まさに機能拡張による制約といえる。このスイッチをオンにすることにより、シェアードコンテナ(呼び出し元アプリと機能拡張とで各種データをやりとりするときに使用する領域)およびネットワークへのアクセスが可能になるからだ。画面には「開発元に情報を送信...」などと強めのメッセージが記載されているが、そのような機能が実装される可能性を踏まえてのものであり、実際に送信されなくても「フルアクセスを許可」することは必要だ。

キーボードを有効にしたあと「フルアクセスを許可」しなければ、サードパーティー製キーボードの機能は制限される

「フルアクセスを許可」しなければシェアードコンテナにアクセスできないため、アプリ独自の機能は大幅に制限される

ユーザインタフェースに制限が多いことも、機能拡張の仕様によるところが大きいと推測される。NSExtensionでは、アプリ間でデータをやり取りするためのプロパティキーを定義しており)、基本的には呼び出し側が想定した方法でしかリソースにアクセスできない。ソフトウェアキーボードと他のアプリをつなぐ処理はiOSが担っており、そこで定められた仕様を超える機能は実装が難しいのだ。

この文脈に従えば、「ATOK for iOS」や「Yahoo! キーボード」の両方が未変換文字列をカーソル近くに表示しながら変換作業を進める「インライン変換」をサポートしないことは説明がつく。もっとも、iOS標準のソフトウェアキーボードでは提供済の機能であるため、今後iOSがバージョンアップもしくはNSExtensionの仕様が変更されれば、難なく実現されるのかもしれない。Bluetoothキーボードで利用できないことについては情報がないが、外部ネットワークとのブリッジが必要となるため、現時点では非サポートとされているのではないだろうか。

ところで、「ATOK for iOS」がATOK PASSPORTに含まれないことは話が別だ。iOSアプリはApp Store外での決済が認められていないこともあり、WindowsやAndroidなどマルチプラットフォーム対応が前提のATOK PASSPORTでは対応が難しい。こちらについては、なんらかの方法でiOS対応が実現されることを期待して待つしかないだろう。