GIFやLive Photosをキーボードの背景にできますか
静止画をキーの背後に敷くことと、動く画像を敷くことは、まったく別の問題です。キーボード拡張が写真は読めても動画クリップを再生できない理由、Live Photosの正体、そして発光の演出だけは動ける理由を説明します。
キーの背後に自分で選んだ写真を置けると分かれば、次に浮かぶ疑問は当然のものです。動くものではなぜ駄目なのか。カメラロールにあるGIFも、押し込むと数秒の動きを再生してくれるLive Photosも、静止画からの自然な発展に見えます。しかしそうはなりません。理由は機能の入れ忘れというより、すべてのキーボード拡張がぶつかる壁のほうにあります。
結論
iOSのキーボードで背景を設定する仕組みは、どれも同じ形をしています。静止画を一枚受け取り、それを描く、という形です。GIFやLive Photosを動く背景として敷くことは、この形の外にあります。将来のアップデートで追加されるのを待っている設定ではなく、拡張そのものにかかっている制限から来ている、というのが実情です。
キーボード拡張は静止画一枚でも余裕がない
キーボードは単独のアプリではありません。テキスト入力欄に触れた瞬間にiOSが起動する拡張として動き、しかも毎回コンマ数秒で使える状態になっている必要があります。それを成立させるためにiOSは、拡張が一度に使えるメモリに通常のアプリよりはるかに低い上限を課し、超えた瞬間に容赦なく終了させます。iPhoneのカメラで撮った写真は、縮小する前なら一枚で数十メガバイトに達することがあります。写真を背景にできるキーボードが、選んだその瞬間に一度だけ縮小し、拡張には元のファイルを開かせない作りになっているのは、このためです。
静止画が上限をくぐるのは読み込みの一度きりです。動く画像は、そうはいきません。GIFの各フレームも、Live Photosのクリップの各フレームも、前のフレームがまだ描画中か破棄の途中にある状態で復号され、メモリ上に保持される必要があります。しかもキーボードが画面に出ているあいだずっとです。これは静止画の問題を大きくしただけのものではなく、拡張のメモリの見積もりがそもそも想定していない、種類の違う継続的な負担にあたります。
Live Photosの正体は、静止画をまとった動画クリップ
Live Photosは、少し賑やかな写真のようなものだと思われがちです。実際には、静止画一枚と、シャッターを切った前後およそ三秒の短い動画クリップ、そして音声が組になったものです。写真Appの中で静かに並んでいるのは、その静止画のほうです。動きを再生するというのは、その動画クリップを実時間で復号することであり、動画プレイヤーと同じ種類の処理を、キーボードが開いているあいだずっと回し続けることを意味します。拡張が一度払って終われる費用ではありません。
メモリの上限を脇に置いたとしても、それは打鍵のたびに継続して発生する処理です。しかも、タップを正確に受け取って文字を遅れずに描くという、キーボード本来の仕事と同じ資源を奪い合います。
発光の演出は動くのに、写真は動かせない理由
ここが最も矛盾して見える部分です。キーボードによっては、キーの上を流れたり脈打ったり波紋を広げたりする発光の演出が、入力していないあいだも動き続けます。それが動けるなら、写真も同じようにできそうに思えます。
この二つは素材が根本的に違います。色の流れや粒子の演出は、コードで描かれています。数個の数値から、図形やグラデーション、粒子をフレームごとに計算し直しているだけなので、全体を一本の軽いタイマーの上で、しかも控えめな固定のフレームレートで回せます。復号すべき動画ファイルはどこにも存在しません。対してGIFやLive Photosは、あらかじめ録画されたフレームの列であり、ディスクから読み出して次々に復号する必要があります。手続き的なアニメーションが安いのは、拡張が単純な計算をしているからです。録画されたクリップの再生が高いのは、拡張が展開処理をしているからで、その展開処理こそ、拡張のメモリ上限が吸収できない持続的な負担にあたります。
「アニメーション背景」を掲げるアプリについて
動く背景を売り文句にしていたり、ライブラリからGIFを選ばせたりするキーボードアプリは時々あります。実際に起きているのはたいてい二つのどちらかです。GIFやLive Photosから一枚のフレームを静かに抜き出し、ごく普通の静止画の背景として使っている。これは妥当な回避策を実際以上に見せているだけの話です。もう一つは、本当にアニメーションを試みて、一瞬だけ表示されたあとiOSに終了させられ、文章の途中で標準キーボードに落ちる。どちらも従来の意味での不具合ではなく、メモリの上限が本来の役目を果たしている姿です。
動きが欲しいときの現実的な選択肢
- GIFやLive Photosから最も見栄えのする一枚を選んで静止画として保存し、通常の手順で背景にします。気に入った画像は残り、拡張には維持できない処理を求めずに済みます。
- 入力中に見える動きが目的なら、写真のアニメーションではなく発光の演出を探すほうが確実です。あちらは手続き的に描かれるため、同じ負担がかかりません。
- 背景が単調に感じるだけであれば、模様や質感のある静止テーマは、単色の平面よりずっと生きた印象になります。アニメーションは要りません。
よくある質問
GIFをiPhoneのキーボードの背景に設定できますか
できません。キーボードの背景の仕組みは、どれも静止画一枚を受け取る形になっています。GIFを動かし続けるには、キーボードが開いているあいだ周期ごとに新しいフレームを復号する必要があり、キーボード拡張に許されたメモリと処理の量をはるかに超えます。
Live Photosを動く背景として使えますか
使えません。Live Photosは静止画一枚と、およそ三秒の動画クリップが組になったものです。静止画のほうを表示するのは通常の写真の背景と同じですが、動きを再生するには入力中ずっと動画の復号を回し続ける必要があり、これはキーボード拡張が維持できる処理ではありません。
写真は動かせないのに、キーボードの発光はなぜ動けるのですか
発光はコードで描かれているからです。図形やグラデーションをフレームごとに計算し直しているだけなので、復号すべきファイルがなく、軽いタイマー一本で動きます。GIFやLive Photosは録画済みのフレームの列で、順に展開する必要があり、同じメモリ上限が許さない重い継続的な負担になります。
自分のキーボードで試す
Kiboは、本物のメカニカルキー音とテーマ、RGBバックライト効果を備えたiPhone向けの無料カスタムキーボードです。アカウント登録も広告もなく、フルアクセスをオフにしたままでも使えます。