第9回 成績管理表は「3層構造」で考える

フォーム・シート作成

第2章のテーマは、成績管理表の「設計思想」です。なぜこの構造にするのか、どんな考え方でシートを組み立てるのかを先に理解しておくと、この先関数を学ぶときに「なるほど、こういう理由があったのか」と腹落ちしながら進められます。

第9回で扱うのは「3層構造」。成績管理表づくりの土台となる、いちばん大事な考え方です。

なぜ「3層構造」が必要なのか

まずは「なぜわざわざ3層に分けるのか」という疑問からお答えします。

「全部1枚のシートにまとめて入力すればいいのでは?」と思う方もいるでしょう。たとえばこの方法を試したとすると、次のような問題が起きることが予想されます。

⚠️ 1シートにすべてまとめると起きる問題
  • 試合を重ねるほどデータが縦に伸び続け、管理が大変になる
  • 選手ごとの通算成績を出すのに、毎回手作業が必要になる
  • ランキングを更新するたびに、並び替えの手作業が発生する
  • 1箇所を直すと、芋づる式に別の箇所も直す必要が出てくる

こうした問題を解決してくれるのが、「入力・集計・表示を完全に分離する」という3層構造の考え方です。

入力層:データを受け取るだけのシート

🟢 入力層の役割

Googleフォームから送信されたデータを受け取り、そのまま記録するだけのシートです。ここは絶対に手動で編集しません。

例えば、こんな入力層のシートがあったとします。

タイムスタンプ 試合日 選手名 第一打席 第二打席
2026/5/11 15:32 2026/5/11 田中 三安 遊ゴ
2026/5/11 15:35 2026/5/11 鈴木 中2 右本
2026/5/11 15:38 2026/5/11 山田 三振 四球

フォームに入力するたびに、こうして1行ずつデータが積み上がっていきます。シーズンを通して試合を重ねれば、行数は数百に達することもあるでしょう。

📝 入力層のポイント

入力層は、いわば「生データの倉庫」です。データがどれだけ増えても心配いりません。集計はすべて、次の集計層の関数が自動でこなしてくれます。

集計層:成績を自動計算するシート

🔵 集計層の役割

入力層の生データを関数で集計し、打率・防御率・OPSといった成績指標を自動で計算するシートです。試合ごとの成績、年間成績、チーム成績という3種類をここで管理します。

例えば、こんな集計層のシートがあったとします。

選手名 打席 打数 安打 打率 OPS
田中 42 38 14 .368 .921
鈴木 38 35 11 .314 .812

ここに並ぶ数字は、すべて関数が自動で計算したものというイメージです。入力層に新しいデータが加わるたびに、リアルタイムで更新されていきます。

ランキング層:順位を自動表示するシート

🟠 ランキング層の役割

集計層の成績データを部門ごとに自動で並び替え、ランキング形式で表示するシートです。規定打席に到達した選手だけを表示するなど、条件付きの絞り込みもここで行います。

例えば、こんなランキング層のシートがあったとします。

順位 選手名 打率
1位 田中 .368
2位 鈴木 .314
3位 山田 .298

集計層の成績が更新されれば、ランキングも自動で並び替わります。手動での並び替え作業は一切必要ありません。

3層構造のまとめ

役割 あなたがやること
🟢 入力層 フォームの回答を記録 フォームに入力するだけ
🔵 集計層 成績を自動計算 何もしなくていい(自動)
🟠 ランキング層 順位を自動表示 何もしなくていい(自動)
✅ この記事のまとめ
  • 1シートにまとめると管理が大変になる → だから3層に分ける
  • 入力層:フォームのデータを受け取る倉庫
  • 集計層:関数で成績を自動計算する
  • ランキング層:成績を自動で並び替えて表示する
  • 入力するのはフォームだけ、あとはすべて自動

次回予告

次回のテーマは「なぜシートを分けるのか?設計思想の話」。3層構造の考え方をもう一歩掘り下げて、「どういう基準でシートを分けるべきか」という設計判断の軸を解説します。どんな判断基準が見えてくるのか、お楽しみに。

▶︎ 次回:【第10回】なぜシートを分けるのか?設計思想の話

コメント

タイトルとURLをコピーしました