Yahoo! からiOS向けソフトウェアキーボードアプリ「Yahoo! キーボード」が公開された。どのアプリからも利用できるうえに無償ということもあり、その注目度は高い。しかし、App Storeで公開されるアプリであるがゆえの制約はある。ここでは、その「制約」について解説したい。

限定的な機能拡張

iOS 8からサードパーティー製ソフトウェアキーボードが"解禁"された背景には、「機能拡張(App Extensions)」の導入がある。アプリ間連携とも呼ばれるこの機構は、アプリ間におけるデータ連係のポリシーを定義し、API(NSExtension)も整備される。表面上は単独動作するアプリであり、App Store経由での配布も可能だが、単独動作するかどうかは必ずしも重要視されない。

プログラムとしての機能拡張の実体は、アプリに格納されたモジュールにある。このモジュールが他のプログラム(システムプロセスを含む)と連係することにより、ふだんは単独動作するアプリの機能を外部アプリに提供できる。キーボードアプリの実体は内部のモジュールにあり、というわけだ。

「Yahoo! キーボード」にせよ「mazec for iOS」にせよ、アプリ単独で起動したときには設定画面や使い方の説明程度の機能しか利用できない。サードパーティー製キーボードアプリの場合、外部アプリと連係することではじめて本来の機能を提供する特殊なアプリ、ということもできる。

従来のiOSは、アプリの資源(プログラム部分や各種ファイル)が峻別される「サンドボックス構造」が厳守され、アプリ間で可能な処理はかなり限定的だったが、機能拡張という仕組みがOSに用意されることによりできることの幅が格段に広がった。ただし、それは「機能拡張」として定められた範囲内であり、システム領域まで柔軟にアクセスできるPCとは次元が異なると理解すべきだろう。

iOS 8からサードパーティー製ソフトウェアキーボードが"解禁"され、App Storeでの配布が可能になった

キーボードの表面(スキン)を変更できるなど、iOS標準のソフトウェアキーボードにない機能が用意されている(画面は「Yahoo! キーボード」)