1. データベース設計の基本(正規化とER図)

データベース設計と聞くと難しく感じるかもしれませんが、基本は**「データを整理整頓する」**ことです。そのための代表的な手法が「正規化」と「ER図」です。
正規化とは?
**「データの重複をなくし、スッキリさせること」**です。
例えば、一つのテーブルに「案件名」「担当者名」「担当者部署」「担当者連絡先」…と情報を詰め込むと、同じ担当者が複数の案件を持つたびに、部署や連絡先を何度も入力することになり、更新も大変です。
正規化を行うことで、以下のようなメリットがあります。
- データの整合性が保たれる: 更新漏れや入力ミスがなくなります。
- データ容量が軽くなる: 無駄な重複がなくなるため、アプリの動作が軽快になります。
- メンテナンスが楽になる: 仕様変更にも柔軟に対応できます。
ER図とは?
**「テーブル同士の関係性を表す地図」**のようなものです。
「顧客テーブル」と「案件テーブル」、「商品テーブル」と「在庫テーブル」など、複数のテーブルがどのように連携しているのかを視覚的に表現します。
ER図を作成することで、
- アプリ全体のデータ構造を俯瞰できる。
- テーブル間の関連付け(リレーション)が明確になる。
- 開発者以外の人にもデータ構造を説明しやすくなる。
といったメリットがあり、複雑なアプリを作る際の強力な武器になります。

2. AppSheet開発に特化したテーブル設計のコツ
AppSheetでアプリを作成する場合、一般的なデータベース設計の基本に加えて、いくつか意識すべきポイントがあります。
- 「KEY(キー)」を必ず設定する: 各行をユニークに識別するための列です。AppSheetでは
UNIQUEID()
関数で簡単に生成できます。これが無いと、データの更新や削除が正しく行えません。 - 「Ref(参照)」を使いこなす: テーブル同士を繋ぐAppSheetの最重要機能です。例えば、案件テーブルに「顧客ID」列を作り、顧客テーブルを参照させることで、ドロップダウンから顧客を選択できるようになります。これにより、入力の手間が省け、データの正確性も向上します。
- 「Enum(列挙型)」で選択肢を管理する: 「ステータス(未着手、対応中、完了)」や「カテゴリ」など、決まった選択肢から選ばせたい場合はEnumを使いましょう。入力規則を設けることで、表記ゆれを防ぎます。
- 画像や署名は別テーブルに分けることも検討する: 案件報告アプリなどで大量の画像を扱う場合、案件情報と同じテーブルに画像データを入れると、アプリの同期が遅くなる原因になります。画像専用のテーブルを作成し、案件IDで紐づけることで、パフォーマンスの低下を防げます。

3. よくある失敗例と改善策
ここでは、初心者が陥りがちなデータベース設計の失敗例と、その解決策を紹介します。
失敗例 | なぜ問題なのか? | 改善策 |
何でも1つのテーブルに詰め込んでしまう | データが重複し、更新が大変。アプリの動作も重くなる。 | 正規化を行い、関連する情報ごとにテーブルを分割する。(例:「案件テーブル」と「担当者テーブル」に分ける) |
KEY(キー)を設定していない | どの行を更新・削除すれば良いかAppSheetが判断できず、予期せぬエラーの原因になる。 | 各テーブルにKEYとなる列を用意し、UNIQUEID() などで一意の値を設定する。 |
手入力で関連データを入れている | 「株式会社」と「(株)」など表記ゆれが発生し、後でデータを集計できなくなる。 | Ref(参照)機能を使い、ドロップダウンから選択させる形式にする。 |
ステータス管理をただのテキスト入力にしている | 「完了」「済」「終了」など、人によって入力する言葉がバラバラになり、正確な進捗管理ができない。 | **Enum(列挙型)**を使い、「未着手」「対応中」「完了」などの選択肢をあらかじめ定義しておく。 |
AppSheet活用
データベースの準備ができたら、いよいよアプリ作成です。AppSheetは、プログラミングの知識がなくても、アイデアを素早く形にできるノーコードプラットフォームです。ここでは、基本的なアプリの作成手順から、業務を劇的に効率化する関数・自動化のテクニックまで、幅広くご紹介します。
1. 初心者向けチュートリアル(基本的なアプリの作成手順)
まずは「日報アプリ」を例に、アプリ作成の基本的な流れを体験してみましょう。
【準備するもの】
- Googleアカウント
- 以下のような項目を持つGoogleスプレッドシート
報告ID
(KEYに設定。UNIQUEID()
関数で自動入力させます)報告日
(Date型)報告者
(Text型)今日の業務内容
(LongText型)所感
(LongText型)添付ファイル
(Image型 or File型)
【作成手順】
- AppSheetにログインし、「Create」から新しいアプリを作成
- 「Start with existing data」を選択し、準備したGoogleスプレッドシートを選びます。
- データのインポートとテーブル設定
- AppSheetが自動でスプレッドシートを読み込み、テーブルが作成されます。
- 「Data」メニューで各列の型(Type)が適切か確認します。(例:「報告日」は
Date
、「添付ファイル」はImage
になっているか) - 「報告ID」列のKEY設定にチェックが入っていることを確認します。
- ビュー(画面)の調整
- 「UX」メニューでアプリの見た目を整えます。
- 「View type」で「deck(一覧)」や「detail(詳細)」など、見せたい形式を選びます。
- 一覧画面に表示する項目や、並び順(報告日の降順など)を設定します。
- 動作確認と保存
- 右側のプレビュー画面で、実際にデータを入力・保存できるか試してみましょう。
- 問題なければ「Save」ボタンを押してアプリを保存します。
たったこれだけで、基本的な日報アプリの完成です! まずは簡単なアプリ作成を通して、AppSheetの操作に慣れることから始めましょう。
2. 具体的なアプリ開発事例(写真付きでbefore/afterを紹介)
ここでは、AppSheetでどのような業務改善が可能なのか、具体的な事例をご紹介します。
【事例:紙とExcelで行っていた現場のヒヤリハット報告】
- Before(改善前)
- 現場担当者は、紙の報告書に手書きで記入し、事務所に戻ってからExcelに転記していた。
- 写真の整理も大変で、報告書と写真が紐づいていなかった。
- リアルタイムでの状況把握ができず、対策が後手に回りがちだった。
- After(AppSheetで改善後)
- スマートフォンから直接ヒヤリハット内容を報告。その場で撮影した写真も添付可能に。
- 報告されたデータは即座にデータベースに反映され、管理者はいつでも最新状況を確認できる。
- 「未対応」「対応中」「完了」のステータス管理で、対応漏れがなくなった。
- 蓄積されたデータを分析し、危険箇所の傾向把握や再発防止策の検討に活用。
3. 便利な関数(Formula)や自動化(Automation)のTips集
AppSheetの真価は、関数(Formula)と自動化(Automation)を使いこなすことで発揮されます。ここでは、すぐに使える便利なTipsをいくつかご紹介します。
便利な関数 (Formula) 編
関数 | 用途 | 使用例 |
USEREMAIL() | 現在ログインしているユーザーのメールアドレスを取得します。 | 報告者名を自動で入力する際に初期値として設定する。 |
TODAY() | 今日の日付を取得します。 | 報告日の初期値として設定する。 |
CONCATENATE() | 複数のテキストを連結します。 | 「[案件名] – 顧客名」のような表示を自動で作成する。 |
IFS() | 複数の条件分岐を設定します。(ExcelのIF関数に似ています) | 案件の進捗状況に応じて、「未着手」「進行中」「完了」の表示を切り替える。 |
ANY(SELECT(...)) | 関連テーブルから特定の条件に合う値を1つだけ取得します。 | 案件テーブルに顧客IDを入力した際、顧客マスタから顧客名を自動で引っ張ってくる。 |
4. AppSheet その他の機能

月間売上金額のビュー(例)
※集計不要で月別の売上が確認可能です

スケジュール カレンダービュー(例)
※予定のステータス別に色分けが可能です