AppSheet を使用すると、以下のセクションで説明しているように、お持ちのデータからアプリを作成できます。
はじめに: AppSheet で使用する Google スプレッドシートを準備する
AppSheet で使用する Google スプレッドシートを準備する方法をご覧ください。
関連情報: Best practices with Sheets and AppSheet
Google スプレッドシートを AppSheet で使用するための準備
データを準備する
AppSheet を最大限に活用するには、アプリにとって利用しやすい形にデータを整えます。このトピックで説明している基本概念を理解すれば、データの管理が容易になり、アプリをよりよく活用できるようになります。
- 基本概念
- データはどのように変更されるか
- 必要なテーブルは何か
- 賢くふるまう: 繰り返しを避ける
- 各行に一意の ID を付与する
- リストを避ける
- レコード間の関係
- 1 対多の関係
- 多対多の関係
- スプレッドシートにデータを配置する
基本概念
まず、データに関する最も基本的な概念を確認しましょう。
データはレコードで構成されている
レコードはスプレッドシートで単一の行として格納されます。これはアプリにおける 1 件分のデータであり、個々の顧客、特定の現場、単一の商品などを表します。
ここで行う必要があるのは、各タイプのレコードを他のタイプのレコードと分離することです。そのためには、レコードのタイプごとに独自のテーブルが必要です。
テーブルはレコードのコレクションである
テーブルは、同じタイプのレコードのコレクションです。たとえば、Customers テーブル(以下を参照)、Job Sites テーブル、Products テーブルを使用します。テーブルとは、人、もの、場所、イベントなど、現実世界の物事を擬似的に表すものだと考えてください。
列はレコードの属性である
各テーブルの行は、同じ列のセットを共有しています。これらの列は、レコードを説明する属性である、Name、Address、Date、ID などのフィールドです。
各行の各列には独自の値が格納されますが、列構造全体がテーブル全体としてのパラメータと要件を決定します。
テーブルはフォームのようなものだと考えてください。フォームでは、フォームに入力する全員に同じ質問を提示しますが、回答は人によって異なります。このフォームからテーブルを作成する場合、各質問が列になり、各人の回答がそれぞれの行に入れられます。
データはどのように変更されるか
変更されるのは、テーブル内の行データです。アプリを使用する際には、新規 Customer の追加、既存の Customer の住所の変更、古い Customer の削除を行うことがあります。実際、アプリで行われるほぼすべての操作は、行の追加、更新、削除によって行われます。しかし、列の構造は変わりません。
必要なテーブルは何か
最初に行うべきことは、必要なテーブルは何かを見極めることです。複数の異なる質問があり、それぞれデータ型が異なるため、通常は複数のテーブルを使用します。
テーブルを作成するための優れた方法は、アプリ用のスプレッドシートを 1 つ作成して、テーブルごとにワークシートを追加することです。Customers
や Project Locations
など、テーブルに含まれるレコードの種類を基にワークシートに名前を付けます。
たとえば、本を管理する図書館アプリには、Books
のテーブルと Checkouts
のテーブルが必要でしょう。
次に、各テーブルの列を決定します。各レコードに必要な情報は何ですか?どんな質問をする必要がありますか?
この図書館アプリの Books
テーブルには、Title
、Author
、Publisher
、Copyright
日付の列があります。Checkouts
テーブルには、Checkout
日付、Return
日付、Title
、Patron
の名前、利用者の Email
の列があります。
賢くふるまう: 繰り返しを避ける
多数の行で繰り返し使用される値を持つ列のセットがある場合、それらの列を独自のテーブルに配置することをおすすめします。
これらの列セットは通常、現在の行に関連する人または場所を示します。ここで、その情報を更新する必要があると考えてみてください関連するすべての行で 1 つずつ情報を変更しなければならないため、おそらくは途中でミスをおかすでしょう。
該当する情報を 1 か所に集めたほうがはるかに簡単です。幸いなことに、AppSheet では他の行から行を参照できます。これは次のセクションで説明します。
Name
と Email
という列を持つ、Patrons
という新しいテーブルを作成しましょう。こうすることで、ある利用者が記録されているすべての Check Out
行でその利用者の情報を変更するのではなく、1 か所で情報を更新できます。
各行に一意の ID を付与する
各行を一意に識別できるのは重要なことです。列の一つを、行ごとに異なる値を持つ一意の識別子、つまり主キーとしてください。
これには、名前と住所を選ぶのが当然だと思われるかもしれませんが、常に最適な選択肢であるとは限りません。同じ名前の人物が複数人いる可能性や、住所が変更される可能性があります。これが、一見ランダムな顧客 ID や注文番号を使用する理由です。
同様に、すべてのテーブルに ID 列を設けることをおすすめします。
Patrons
テーブルには、主キーとして使用する ID
列があります。こうすれば、Alex Green という名前の利用者が 2 人いる場合、この 2 人が偶然に相手のアカウントで本を借りることが防がれます。Books
と Check Out
にも、それぞれ主キーとして ID 列が設けられます。
リストを避ける
スプレッドシートなどのテーブルでは、セルごとに 1 つの値しか格納できません。レコードのリストすべてを入れることはできません。たとえば、Cats
列を作成する場合、スプレッドシートの単一のセルに複数の猫をリストすることはできないため、回避策が必要です。
最初は、Cat 1
、Cat 2
、Cat 3
などの複数の列を使用するのが良い解決策だと思うかもしれません。しかし、こうして猫の数を決めてしまうと、後から新しい列を追加するのが難しくなる可能性があります。
より優れた解決策は、新しいテーブルを作成することです。必要なのが各行に 1 つの情報のみである場合、テーブルを丸ごと作成するのは愚かに思えるかもしれませんが、この方法は非常に柔軟です。参照列を使用して、この新しいテーブルの行を他のテーブルの行に接続できます。
レコード間の関係
複数のテーブルがある場合、たいていはなんらかの方法でそれらを接続する必要が生じます。あるテーブルの行にある、別のテーブルの行への参照を使用するか、または関連する行のリストを作成します。これらの関係は、参照または省略形で Ref
と呼ばれる特別な種類の列を使用して作成されます。
Ref
列は、ある行の主キーをその値として取ります。列に Book
のような名前を付けた場合、AppSheet は自動的に Books
テーブルの行へのキーがその列に含まれているはずだと判断します。その場合アプリで、ある行からその関連行(およびその逆)に直接リンクできるようになります。
Check Out
テーブルには、従来の Title
列ではなく、Book
列を含めるようにします。こうすることで、Check Out
行に本へのリンクが表示されるようになります。同様に、テーブルに Patron
列を含めると、Patrons
テーブルの行を参照できるようになります。
1 対多の関係
関連する行のリストを作成する必要がある場合、何も心配はいりません。AppSheet では関連する行のリストが自動的に作成されます。
Books
テーブルのレコードにレビューのリストを含める場合は、各 Review
レコードから本を参照する必要があります。そうしてアプリで本を確認すると、関連するレビューのリストが表示されます。
次に、Reviews
テーブルを追加します。このテーブルには、ID
、Book
、Reviewer
、Star Rating
、Comments
の列があります。Books
テーブルには何も追加する必要はありません。アプリで本を確認すると、関連する Reviewer
行へのリンクが表示されます。
多対多の関係
各レコードにもう一方のテーブルのレコードのリストが含まれている 2 つのテーブルが必要な場合は、もう少し高度なトピックが関わってきます。これを行う方法については、他のさまざまなこととあわせて、データ モデリングやデータベースの設計についてのより一般的なガイドで学ぶことができます。次に紹介するのは AppSheet 固有のガイドではありませんが、書かれている原則は同様に当てはまります。
スプレッドシートにデータを配置する
ここまではデータの整理方法について学びました。次に、スプレッドシートの設定方法に関するヒントをいくつかご紹介します。5 Tips for Building Better Spreadsheets for your AppSheet Mobile Apps をご覧ください。
スプレッドシートにデータがある場合、AppSheet がヘッダーとして認識できるように、列ヘッダーが太字になっていることを確認してください。
さらにこれらの列には、明確で具体的な名前が付けられていることに注目してください。これは、列に Column
、Column1
、Column2
という名前を付けるよりもはるかに役立ちます。
列の各セルでデータ型の形式が一貫していることを確認します。新しいデータは新しい行として追加する必要があります。AppSheet において、新しいデータとして解釈できるのは行のみです。列として追加された場合は機能しません。
要点: AppSheet が単一のテーブルを情報のメインソースとして読み取っていることを確認します。非構造化データ、多形式の列、テーブル外のデータの使用は避けます。
AppSheet でデータを管理する
次のようにして AppSheet でデータを管理します。
- 次の説明に従って、アプリでデータを追加して編集する
- スライス: 基本情報の説明に従って、データスライスを追加して編集する
- ユーザー設定を行う