デフォルトでは、アプリのすべてのテーブルの所有者はアプリの作成者で、これらはアプリのすべてのユーザーと共有されます。たとえば Order Capture 販売アプリでは、Products
、Customers
、Orders
のテーブルはすべて、アプリのすべてのユーザー(組織の販売員)に対して共通です。これは、一般的なデータベース アプリケーションのパターンであり、(スプレッドシート内の)テーブルが一元的な共有データベースの情報に対応する、というものです。企業のアプリではこのパターンがよく見られます。
しかし、ユーザーごとの個別のデータが必要なアプリもあります。次に例を示します。
- メモ機能付きの製品カタログ: 製品カタログは共通のものですが、各ユーザーはアプリを使用して個々の製品に関するメモを取ることができます。メモは各ユーザーだけのものです。
- 学校のテスト練習アプリ: 問題は共通ですが、各生徒の答えは本人だけが見ることができます。
- 運動アプリ: ワークアウトのプログラムは共通ですが、各ユーザーは自分の進捗状況を記録できます。
ユーザーごとに非公開データを利用できる機能は、アプリ作成者が構築したアプリを広く配布する場合に特に重要です。アプリのユーザーはおそらくアプリの作成者を知らず、アプリの作成者に自分の個人情報にアクセスしてほしくありません。
AppSheet は、限定公開テーブルを使用した非公開データをサポートしています。
限定公開テーブルを構成する
限定公開テーブルの定義方法は、AppSheet アプリの他のテーブルと同じです。列構造を持ち、スプレッドシート(または他のデータソース)によって定義されます。ただし、テーブルには(共有ではなく)限定公開と明示的にマーク付けされます。
限定公開テーブルを構成するには、以下の操作を行います。
- アプリエディタでアプリを開きます。
- [Data]
に移動し、リストから構成したいテーブルを選択し、テーブル ヘッダーの [Table settings]
をクリックします。
以前のエディタを使用する場合
- [Security] セクションを開きます。
- [Shared?] オプションを無効にします。
- 変更を保存します。
限定公開テーブルを持つアプリでは、ユーザーのログインを必須とします。
アプリを使用する各ユーザーは、アプリ内で各限定公開テーブルの非公開のコピーを取得します。このコピーはユーザーのクラウド ストレージ アカウントに保存され、元々のテーブル定義でアプリ作成者が指定したデータによって初期化されます。限定公開テーブルの名前の形式は、{appTemplate.Name}_{appTable.Name}
です。限定公開テーブルのデータにアクセスできるのは、それを作成したユーザーだけです。各ユーザーの変更は、独立して行われます。
あるユーザーが、別のデバイスから同じアカウントでログインしてアプリにアクセスする場合、それぞれのデバイスから同じ限定公開テーブルを使用できます。これが、限定公開テーブルを各デバイスでローカルに保存するのではなく、クラウド ストレージに保存することの利点です。
他のすべての点で、アプリは通常と同じように動作します。
制限と注意点
限定公開テーブルは、ワークブック内の唯一のワークシートである必要があります。アプリには多数のワークブックとワークシートを含めることができますが、各限定公開テーブルは自身のワークブック内で唯一のワークシートである必要があります。
考慮すべき他の点は、限定公開テーブルがアプリの変更をより複雑なものにするということです。ユーザーが限定公開テーブルを持つアプリを使い始める場合、列構造を含めてその時点での元のワークシートのコピーを取得することになります。アプリの所有者が列構造を更新する場合(列の追加、削除、並べ替えなど)、その変更は既存のユーザーには適用されません。これにより、既存のユーザーのアプリが誤動作を起こす恐れがあります。列構造が最終的なものであり、将来変化する可能性が低いことを確認してからユーザーに限定公開テーブルを持つアプリを提供する必要があります。