App Groupsと、アプリケーション定義ステートメントについて
iOS8から使えるApp Groupsという機能があります。
これは簡単にいうと、同一アカウントで開発されたアプリなら、共有領域にデータを保存することによって、複数のアプリからひとつのデータを読み書きできる機能になります。
保存できるデータ形式は、NSUserDefaultsやSQLiteやCore DataといったiOSアプリでよく使われる形式です。
App ExtensionsやApple Watchアプリと本体アプリ間のデータ共有の際にも使います。
今回はApp Groupsについて、仮想のアプリを使ったデモを簡単に紹介します。
App Groupsは、複数アプリ間でのデータ共有の際に効果的な機能なので、アプリは2つ以上必要になります。
また、この制作フローを通してAppleがiOSヒューマンインターフェイスガイドライン(以降、HIG)で推奨している「アプリケーション定義ステートメント」の重要性について、併せて説明したいと思います。
アプリケーション定義ステートメントについて、HIGには以下のように書かれています。
アプリケーション定義ステートメントは、アプリケーションの主要な目的とその対象を、簡潔かつ具体的に宣言したものです。
アプリケーション定義ステートメントを開発作業の早い段階で作成しておくと、構想や一連の機能を、ユーザに欲しいと思ってもらえる首尾一貫したプロダクトに変える上で役立ちます。開発工程全体を通して、アプリケーション定義ステートメントを使用して、組み込もうとしている機能や動作が意味のあるものかを判断します。
ひとつめのアプリ
まず、ひとつめのアプリを作っていきます。
HIGに則り、アプリケーション定義ステートメントをつくります。
詳細は割愛しますが、以下のようなフローから定義していきます。
- ユーザに好まれる可能性のあるすべての機能の洗い出し
- 対象ユーザの決定
- 対象ユーザの定義による機能の絞り込み
- 主目的と対象ユーザにとって本当に必要不可欠な機能だけになっているか、改めて確認
今回は次のアプリケーション定義ステートメントにしました。
- 登山中に簡単に現在地の標高が確認できるアプリ
そして、以下の機能を採用することにしました。
- 現在地の緯度経度を確認でき、そこから標高を確認できる機能
- 山の標高が一覧になっており、目的の山から現在地の標高差を割り出せる機能
- ウェアラブルデバイスとの相性も良いので、Apple Watchにも対応する
これらを元に、画面設計・デザイン・開発をし、作ったアプリが以下になります。
ふたつめのアプリ
アプリケーション定義ステートメント : 日の出日の入り時刻が確認できるアプリ
機能は以下にしました。
- 地図情報やGPS情報から、日の出日の入り時間が確認できる機能
ふたつめのアプリも地図情報やGPS情報が必要になっており、ひとつめのアプリと機能的に似ている部分が多くあります。
いっそのこと1つめのアプリに機能追加したほうが良いと考えがちですが、もう一度アプリケーション定義ステートメントを確認してください。
「登山中に簡単に現在地の標高が確認できるアプリ」です。
このステートメントと、ふたつめのアプリのステートメント「日の出日の入り時刻が確認できる」は、目的も使用頻度も違います。
対象ユーザーにとって、必要のない機能やUIは、ノイズでしかありません。
結果的にユーザーエクスペリエンスは確実に下がってしまうでしょう。
しかし、対象ユーザーや目的が異なるアプリでも、一部機能は共通にしたい場合があります。
そこで、ふたつめのアプリに以下の機能を追加することにします。
- ひとつめのアプリがインストールされていて、かつ、目的の山を設定している場合、App Groupsを使い目的の山の情報をふたつめのアプリで使用する
ふたつめのアプリは以下にようになりました。
いかがでしょうか。
実際にアプリを作る場合は、あの機能も入れたい、こういう機能があっても便利かも、などの意見が数多く出ます。
そこで、どのアイディアを採用するかの基準として、アプリケーション定義ステートメントが非常に重要な役割を持ちます。
また、App Groupsの対応も視野に入れることで、より良いアプリへの一助になると思います。
ぜひ活用してみてください。