/ 第4章
Chapter 04

仮想列の魔術と代償
Virtual Column の便利さと重さを理解する

AppSheetの仮想列(バーチャルカラム)は、元データを汚さずに計算結果を追加できる便利な機能です。 ただし、便利だからといって多用すると、同期速度や操作感に大きな負担をかけます。 この章では、使いどころ避けどころをセットで理解します。

この章のゴール

仮想列を「便利な計算列」として知るだけでなく、 いつ使うべきか、いつ避けるべきかまで判断できるようになることです。

便利な点

元のスプレッドシートに列を増やさなくても、 アプリ側だけで表示用・計算用の値を作れるのが大きな魅力です。

注意点

仮想列は同期のたびに計算されるため、 複雑な式や大量の仮想列はアプリ全体を重くする原因になります。

仮想列とは何か

仮想列(Virtual Column)とは、 元のスプレッドシートやデータベースには存在しないが、AppSheetの中だけで計算して作られる列です。

たとえば「姓」と「名」を結合した「フルネーム」や、 条件によって変わるステータス表示などを、データ本体に手を加えずに作れます。

先に押さえたいポイント
・元データには保存されない
・AppSheet側で計算される
・表示用・補助用に便利
・同期時の計算コストに注意が必要
Data Flow
物理列(元データ)
山田
太郎
App Only
仮想列(AppSheet)
フルネーム
山田 太郎
※スプレッドシートには保存されません

実践:フルネームの生成

仮想列の最も分かりやすい例が、複数列をまとめて1つの表示用列を作るケースです。 ここでは、「姓」と「名」を結合して「フルネーム」を作ります。

設定イメージ

テーブル設定で Add Virtual Column を選ぶ
列名を「フルネーム」にする
App Formula に結合式を入れる
詳細画面や一覧画面で表示列として使う

この例が向いている理由

フルネームは、表示の都合で欲しい値です。 元データとしては「姓」「名」が別々に入っている方が管理しやすく、 画面上だけまとめて見せたい時に仮想列が活躍します。

App Formula
CONCATENATE([姓], " ", [名])
結果: 山田 太郎

演算子を使った書き方も可能

[姓] & " " & [名]
文字列の結合は CONCATENATE() でも & でも表現できます。 見やすい方を選んで構いません。

使うべき場面・避けるべき場面

仮想列が向いている場面

表示用に複数列をまとめたい
一時的な補助情報を作りたい
元データをできるだけシンプルに保ちたい
少量データで、軽い式だけを使う

仮想列を避けたい場面

大量データに対して毎回重い計算をしたい
SELECT() などを多用する複雑な集計を入れたい
結果がほとんど変わらないのに毎回計算させている
同じような仮想列が複数テーブルに大量にある

初心者向けの覚え方

「画面を見やすくするための軽い補助」は仮想列向き、 「毎回計算すると重い本格処理」は物理列や元データ側の数式向き、 と覚えると判断しやすくなります。

【警告】パフォーマンスへの代償

仮想列の最大の注意点は、同期(Sync)のたびに計算が実行されることです。

物理列なら、元データに既に値が入っているため、その値を読み込めば済みます。 しかし仮想列では、AppSheet が各行に対して式を評価しなければなりません。 データ件数が多く、式が複雑になるほど、その負荷は目に見えて大きくなります。

Performance Monitor

物理列メインの設計
Virtual Columns: 2

1.4s Sync Time
NORMAL

仮想列の多用
Virtual Columns: 25+

16.2s Sync Time
HIGH LOAD
重要な考え方: 同じ結果を毎回計算しなくてよいものは、仮想列ではなく元データ側で持つ方が軽くなります。 特に件数が増える業務アプリでは、最初は軽く見えても後から急激に重くなることがあります。

実務での使い分け

仮想列で持つとよいもの

表示用のフルネーム
軽い文字列加工
一時的な補助ラベル
少量データ前提の簡易計算

物理列や元データ側で持つべきもの

ほとんど変わらない集計結果
大量レコードに対する複雑な計算
業務上の基幹値として残す必要があるもの
後で外部連携や分析にも使う値

判断に迷った時の基準

表示のためだけか

画面を見やすくする目的だけなら、仮想列が候補になります。

毎回計算が必要か

毎回計算する意味が薄いなら、元データ側の保持を検討します。

件数が増えても耐えるか

将来のデータ量を考えて、軽い設計を選ぶことが重要です。

第4章のまとめ

仮想列は、AppSheetの中だけで値を作れる便利な仕組みです。 画面を見やすくしたり、補助的な情報を作ったりするには非常に役立ちます。

ただし、便利さの裏で、同期のたびに計算コストが発生することを忘れてはいけません。 次の章では、この土台の上で、ユーザーにとって見やすい画面をどう作るか、Views の考え方に進みます。