追記:iOS8ではAndroidのIntentのようにアプリ間での遷移ができるようになりました。よって、この記事の主張は現在では当てはまりません。
iOSアプリのUIを設計するときに、設定をどこに配置するかで悩むことがあります。 iOSでアプリ設定を置く場所は、大きく2つに分けられます。
- 設定アプリ(Settings App)
- カスタムUI
1は、OSにプリインストールされているもので、作成するアプリ自体とは別のアプリになります。 この中に、 OSの基本設定に加えて、アプリ個別の設定を置くことができます。
2は、アプリ内に設定用の画面を配置したりします。項目が少なければ、設定のためだけの画面を用意しなくても、メインのUIに設定用のコントロールを配置すれば十分かもしれません。次の図は、Twitterアプリの設定画面です。
Appleのガイドライン では、頻繁にアクセスする項目は、カスタムUI、それほど頻繁にアクセスしない項目は、設定アプリに置くと良い、ということになっています。
設定アプリの利点
設定アプリ内に設定を置く場合は、Settings Bundleというリソースファイルを作成し、Xcodeの専用のエディタからデータ定義を作成すれば、それだけでデータ編集用のUI定義・表示まで行ってくれるので、実装コストは非常に低いです。十分なデータ型もそろっており、階層的に整理することもできるので、たいていの設定を記述するために十分な表現力を持っています。次の図は、Settings Bundleの作成画面です。
一方、カスタムUIを作成するとなると、それ専用のUIを作成して、NSUserDefaultsという設定保存用の場所にデータを保存するコードを記述する必要があります。技術的に難しいことはなにもありませんが、まあめんどくさいです。
設定アプリの欠点
しかしながら、設定アプリでの設定には、非常に大きな欠点があるとわたしは思います。 それは、設定画面への動線がどこにもないということです。 ユーザーは、設定画面を立ち上げて、下のほうにスクロールしたときに、はじめてそこにアプリ固有の設定があることに気付きます。 設定アプリ内で、アプリ個別の設定が表示される場所は、かなり長い画面の一番下側になりますので、まったく目立ちません。 設定アプリ内にアプリ用の設定があるかもしれないとユーザーが想像しなければ、ずっと気付かれないままになる可能性があります。 iOS 5.1より前であれば、URLスキームを使って、設定アプリに誘導することもできましたが、現在のiOSではそれもできません。
カスタムUIであれば、動線の設計は自由自在です。
結論
ユーザビリティーを考えるのであれば、設定アプリ内にアプリ固有の設定を置くべきではありません。