AppSheetまとめ
1. AppSheetの概観と基本概念
1.1 AppSheetとは
AppSheetはGoogleが提供するノーコードアプリ開発プラットフォームで、プログラミングの知識がなくてもデータ入力フォームやレポート表示、ワークフロー機能などを備えた業務アプリを作成できます。ブラウザベースのWebアプリとして提供され、スマートフォンやタブレットからもインストール不要で利用でき、ホーム画面に追加するとネイティブアプリのように扱えます。
1.2 データモデルの基本
AppSheetで作成するアプリは「テーブル」「列」「行」で構成され、データソースの構造がそのままアプリのバックエンドになります。主キー(Key)列を設定して行の一意性を保ち、他テーブルとリレーションを設定することで複数テーブル間の参照や関連付けが可能になります。
2. データソースの接続
2.1 対応するデータソース
- スプレッドシート: Google SheetsやMicrosoft Excel(OneDrive/SharePoint)が代表的です。SheetやExcelファイルのテーブルを利用してアプリを構築できます。
- データベース: MySQL、PostgreSQL、Google BigQueryなどのSQL系データベースに接続可能です。
- クラウドサービス: Salesforce、Airtable、Dropbox、Boxなど様々なクラウドサービスと統合できます。
- 統合コネクタ: JiraやServiceNowなどと連携するためのコネクタが用意されています。
2.2 Google Sheetsの接続方法
- Google Sheetsを開き、AppSheetアドオンをインストールします。
- シートからAppSheetアドオンを起動し、アプリを自動生成させます。
- エディタにアクセスして列の型や主キーなどを確認・修正します。
2.3 Excelファイルの接続方法
- OneDriveまたはSharePoint上のExcelファイル(.xlsx形式)を選択します。
- AppSheetエディタからデータソースとして登録し、各テーブルの列定義を行います。
- ファイル編集中はAppSheet側と同時編集できないので、他のユーザーが閉じていることを確認します。
2.4 データソース追加と削除
アプリ作成後でも新規データソースを追加できます。Dataタブから「+ New source」を選択し、認証を行ったうえでテーブルとして取り込みます。不要になったデータソースは依存テーブルを削除してから管理画面から削除します。
3. アプリの作成手順
3.1 作成フロー
- スプレッドシート設計: テーブル構造と列を計画し、主キーや必要な列を定義したシートを用意します。
- AppSheetに取り込む: My Appsページやアドオンからデータを指定して新規アプリを生成します。
- データ構造の調整: エディタ内で列の型を選択し、キーや参照列の設定を行います。
- ユーザーエクスペリエンスの定義: ビューのレイアウト、ナビゲーション、アクションを設定します。
- 動作ルールや自動化の追加: 条件付き表示やロジック、ワークフローを設定します。
- セキュリティと共有: 必要なユーザーにアプリを共有し、アクセス制御を整えます。
3.2 データの取り込み
データを取り込む際、AppSheetは列名をヘッダ行として認識し、その下の行をデータとみなします。1列目を主キーに自動設定する場合が多いですが、手動で別の列をKeyに設定することもできます。
4. UI設計とビューのカスタマイズ
4.1 ビューのタイプ
- デッキビュー: モバイル向けカード形式。アイコンや画像とともにデータを一覧表示。
- テーブルビュー: スプレッドシートのような行列レイアウトでデータを表示。
- カンバンビュー: Kanban形式でカテゴリごとに項目を整理。
- カレンダービュー: 日付列を利用したスケジュール表示。
- ギャラリービュー: 画像をメインにして視覚的にデータを見せる。
- ダッシュボード: 複数ビューを1画面に組み合わせ、関連テーブルを一気に閲覧可能。
- フォームビュー: データ入力用フォーム。列の順序や入力制限を設定できる。
4.2 ビューの作成と設定
Viewsタブから新しいビューを追加し、対象データ、表示形式、位置(Main/Detail/Ref)を選択します。ビューの配置順序やタブの並び替えも自由に行えます。
4.3 UIテーマとアクセント
テーマカラー、背景色、フォント、文字サイズを選んでアプリの見た目をカスタマイズできます。端末のロケールに合わせた日付表示なども設定可能です。
5. フォームとテーブルの設定
5.1 列の型と検証
AppSheetでは列ごとにデータ型を指定します。テキスト、数値、日付/時刻、ブール、画像、位置情報など多様な型が用意され、検証ルールや必須項目を設定できます。
5.2 フォームビューのオプション
- 複数ページ: 入力内容をセクションごとに分けて入力しやすくする。
- デフォルト値: 式(expression)を使って初期値を設定し、ユーザーの手間を減らす。
- 入力順序: カラムを並び替えたり、表示/非表示を制御する。
- 自動保存と再オープン: 入力完了後に自動で保存し、次の空白レコードに進む動作を設定できる。
5.3 テーブルビューの使い分け
一覧表示のテーブルビューでは、グループ化やフィルタリングを設定できます。ユーザーが自分で並び替えやフィルターを行うこともできます。
6. アクションの設定
6.1 アクションの種類
- ナビゲーションアクション: 他のビューやアプリへ移動します。例えば詳細画面から編集画面へ飛ぶなど。
- データ変更アクション: レコードの追加・更新・削除を行います。単一レコードや複数レコードを対象にでき、計算した値を入力することも可能。
- 外部サービスアクション: Webhook送信やメール送信など外部サービスとの連携を行います。
- グループ化アクション: 複数アクションを一つのボタンにまとめ、順番に実行します。
6.2 トリガーと表示位置
アクションは明示的にボタンとして表示したり、条件に応じて自動的に実行するよう設定できます。表示条件や背景色を表す「Format Rules」を使って、特定の条件下でアクションを強調することも可能です。
6.3 条件付きルール (Format Rules)
特定の条件を満たした行に対して、アイコン変更や色付け、背景変更などの装飾を施せます。例えば在庫切れの行を赤背景で表示し、アクションボタンを目立たせるなどです。
7. 式 (Expressions) の活用
7.1 Expressionの概要
AppSheetではスプレッドシートのような式を使って動的な値を計算できます。式エディタでは入力補完やエラー検出が用意されています。
7.2 よく使われる式
- SELECT / FILTER: 条件に応じた行の抽出。
- LOOKUP / ANY: 他テーブルから関連する値を取得。
- IF / SWITCH: 条件分岐による値の変更。
- TODAY / NOW: 現在の日付・時刻を取得。
7.3 バーチャルカラム
実際のデータソースには存在しない計算列を追加できる機能です。式を設定して自動計算した結果を一覧やフォームに表示します。
8. 自動化 (Automation) の基本
8.1 Automationの構造
自動化は「Bot」「Event」「Process」「Task」の4コンポーネントから構成されます。
- Bot: 全体の仕組みを束ねるコンテナ。条件に合致したときに起動します。
- Event: トリガー条件。テーブルのデータ変更、スケジュール、Webhookなどがあります。
- Process: イベント時に実行する手順。データ操作や条件分岐などをまとめます。
- Task: メール送信や通知、外部API呼び出しなど具体的な作業を定義します。
8.2 Botの例
- データが追加されたときに担当者にメール通知を送る。
- 一定期間ごとに集計レポートを生成しPDFを送付する。
- 条件に合致したレコードの値を自動更新する。
8.3 エラー処理
Processでは条件判定やブランチを設定できるため、失敗時の処理やリトライ設定なども柔軟に行えます。
9. アプリの公開と共有
9.1 公開アプリと制限付きアプリ
- 公開アプリ: ログイン不要で誰でもアクセスできるアプリ。検索エンジンにインデックスされる可能性があるため機密情報には不向きです。
- 制限付きアプリ: 招待したユーザーのみアクセスでき、GoogleアカウントやMicrosoftアカウントによる認証が必要です。
9.2 共有の手順
- AppSheetエディタのShareボタンをクリックし、ユーザーのメールアドレスを入力して招待します。
- ユーザーごとに権限(Viewer/Editorなど)を設定します。
- 必要に応じてユーザーサインインを必須にするかどうか決定します。
9.3 高度な公開設定
- 社内限定アクセスを構成して、特定のドメインアカウントのみ利用可能にできます。
- アプリのテンプレートとしてコピー可能設定を有効にし、他ユーザーが自分のデータソースで再利用できるようにするなど、共有方法の幅が広がります。
10. セキュリティ設定の概要
10.1 認証とアクセス制御
認証方法として、Googleアカウント、Microsoftアカウント、Oktaなど外部IDプロバイダーと連携することもできます。アプリはHTTPS経由で通信し、データはバックエンドのデータソースに保持されます。
10.2 セキュリティフィルター
アプリ内のデータをユーザーごとに制限するにはセキュリティフィルターを設定します。フィルター条件としてUSEREMAIL()を使い、ログインユーザーに関連する行のみ表示・編集できるようにします。
10.3 データアクセスと監査
AppSheetのサーバーはデータソースへの読み書きアクセスを行いますが、内部にデータを保存せず、必要時にのみデータソースと通信します。監査ログ機能を有効にすると、誰がどの操作を行ったか記録できます。
11. オフラインモードと同期
11.1 オフライン利用
モバイルアプリは初回起動時にオンラインでアクセスする必要がありますが、その後はキャッシュされたデータとアプリ構成でオフライン動作が可能です。現場作業やインターネット環境が不安定な場合に活躍します。
11.2 オフライン設定
- App can start when offline: アプリを完全オフラインで起動できるようにします。
- Store content offline: 画像やファイルなどのコンテンツを端末に保存します。
- Sync on start: アプリ起動時に自動で同期を行う設定です。
- Delayed Sync: ユーザーが明示的にSyncボタンを押すまで変更を送信しない設定。通信量を抑えたい場合に有効です。
- Automatic updates: 新しいバージョンが公開されている場合、一定時間ごとに自動でアプリ構成を更新します。
11.3 デルタ同期
デルタ同期は、前回同期から変更があった部分だけを送受信する機能です。データ転送量の削減と高速な同期を実現します。
12. ベストプラクティスと応用
12.1 設計時の注意
- スプレッドシートに不要な空行や空列を残さず、不要なセルを削除しておく。
- 主キーの重複や空白を避けるために初期値を自動生成したり、ユニークキーの設定を行う。
- 親子テーブルのリレーションを適切に構成し、子テーブルの参照整合性を保つ。
12.2 運用上のコツ
- 大規模データベースを扱う際はビューやセキュリティフィルターで読み込むデータ量を減らし、パフォーマンスを向上させる。
- ExpressionやAutomationを増やしすぎると複雑さが増すため、コメントや説明文を残して管理しやすくする。
- アプリの利用状況やエラーログを定期的にチェックし、改善点やバグを早期に発見・修正する。
12.3 拡張機能
- AppSheet APIを使用して他システムと連携する。
- Google Apps Scriptと組み合わせて、AppSheetからGASを呼び出したり、GASからAppSheetのデータを取得したりする。
- 外部WebhookやWebhook URLを使ってサードパーティサービスとの連携を行う。
まとめ
AppSheetはデータソースの準備からアプリ構築、ユーザーインターフェースの設計、アクションと自動化、公開・共有、セキュリティ、オフラインモードまで、幅広い機能を直感的に利用できるノーコードプラットフォームです。シンプルな業務アプリから高度なワークフローを持つアプリまで柔軟に構築でき、少ないコードや設定で素早く本番運用に導入できるのが魅力です。上述のポイントを押さえ、ベストプラクティスを意識することで、より効率的でユーザーにとって使いやすいアプリを構築することができます。
