データベース設計・AppSheet活用

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型)

【作成手順】

  1. AppSheetにログインし、「Create」から新しいアプリを作成
    • 「Start with existing data」を選択し、準備したGoogleスプレッドシートを選びます。
  2. データのインポートとテーブル設定
    • AppSheetが自動でスプレッドシートを読み込み、テーブルが作成されます。
    • 「Data」メニューで各列の型(Type)が適切か確認します。(例:「報告日」は Date、「添付ファイル」は Image になっているか)
    • 「報告ID」列のKEY設定にチェックが入っていることを確認します。
  3. ビュー(画面)の調整
    • 「UX」メニューでアプリの見た目を整えます。
    • 「View type」で「deck(一覧)」や「detail(詳細)」など、見せたい形式を選びます。
    • 一覧画面に表示する項目や、並び順(報告日の降順など)を設定します。
  4. 動作確認と保存
    • 右側のプレビュー画面で、実際にデータを入力・保存できるか試してみましょう。
    • 問題なければ「Save」ボタンを押してアプリを保存します。

たったこれだけで、基本的な日報アプリの完成です! まずは簡単なアプリ作成を通して、AppSheetの操作に慣れることから始めましょう。


2. 具体的なアプリ開発事例(写真付きでbefore/afterを紹介)

ここでは、AppSheetでどのような業務改善が可能なのか、具体的な事例をご紹介します。

【事例:紙とExcelで行っていた現場のヒヤリハット報告】

  • Before(改善前)
    • 現場担当者は、紙の報告書に手書きで記入し、事務所に戻ってからExcelに転記していた。
    • 写真の整理も大変で、報告書と写真が紐づいていなかった。
    • リアルタイムでの状況把握ができず、対策が後手に回りがちだった。
    (ここに、手書きの報告書や煩雑なExcelシートのイメージ写真を挿入)
  • After(AppSheetで改善後)
    • スマートフォンから直接ヒヤリハット内容を報告。その場で撮影した写真も添付可能に。
    • 報告されたデータは即座にデータベースに反映され、管理者はいつでも最新状況を確認できる。
    • 「未対応」「対応中」「完了」のステータス管理で、対応漏れがなくなった。
    • 蓄積されたデータを分析し、危険箇所の傾向把握や再発防止策の検討に活用。
    (ここに、スマートフォンで操作しているAppSheetアプリの画面キャプチャや、グラフ化されたダッシュボードのイメージ写真を挿入)

3. 便利な関数(Formula)や自動化(Automation)のTips集

AppSheetの真価は、関数(Formula)と自動化(Automation)を使いこなすことで発揮されます。ここでは、すぐに使える便利なTipsをいくつかご紹介します。

便利な関数 (Formula) 編

関数用途使用例
USEREMAIL()現在ログインしているユーザーのメールアドレスを取得します。報告者名を自動で入力する際に初期値として設定する。
TODAY()今日の日付を取得します。報告日の初期値として設定する。
CONCATENATE()複数のテキストを連結します。「[案件名] – 顧客名」のような表示を自動で作成する。
IFS()複数の条件分岐を設定します。(ExcelのIF関数に似ています)案件の進捗状況に応じて、「未着手」「進行中」「完了」の表示を切り替える。
ANY(SELECT(...))関連テーブルから特定の条件に合う値を1つだけ取得します。案件テーブルに顧客IDを入力した際、顧客マスタから顧客名を自動で引っ張ってくる。

4. AppSheet その他の機能

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

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