顔認識モデルのダウンロードが終わると、KiFinderは登録用のシートを表示していた。でも、それを閉じることを止めるものは何もなかった。キャンセルでも、Escapeキーでも、シートの外をクリックしても、誰も登録されていない、照合対象が何もない状態のままReviewに放り出されてしまい、そもそも何のためのオンボーディングなのか分からなくなっていた。修正はシンプルな条件でシートをゲートするというもので、登録済みの人が誰もいないかどうかを見て、いなければCancelボタンを隠し、システムの「タップで閉じる」も無効にする。登録を完了する以外に抜け道はなくなる。すでに登録済みの人を登録し直す場合や、一人目が残っている状態で二人目を追加する場合は、これまで通り自由にキャンセルできる。そちらは必須の最初の一歩ではなく、本当の意味での任意の操作だからだ。
同じロジックが、想定していなかった角度からもう一度顔を出した。登録した最後の一人を削除したらどうなるか、という話だ。これまでは、名簿が空になった状態でReviewに戻され、アプリを再起動する以外に登録画面へ戻る手段がなかった。今回の修正で、最後の一人を削除すると同じ必須の登録シートが自動的に開き直るようになった。人が一人もいないライブラリは、そこに至った経緯がどうであれ、実質的に初回起動と同じ状態だからだ。
そのコードを触っているついでに、最初のオンボーディング実装のときから気になっていたことも直した。ウィンドウが起動時にとんでもなく縦長に開いてしまう問題で、高さにして3576ポイントほどにもなっていた。原因はオンボーディングのビューが有限の高さを持たず、フレームを際限なく埋めようとしていたことで、ウィンドウシステムが基準にできる高さがなかった。ルートのビューに明確な基準サイズを与えつつ、リサイズや最大化はこれまで通りできるようにしたことで直った。保存されるウィンドウサイズは今では1000×640という常識的な値に落ち着いている。