ExcelとGoogleスプレッドシートで作るゲーム
遊びをつくる執筆にClaudeを使用しています。

「スプレッドシートでゲームが作れる」と聞いて、半信半疑な人は多いかもしれません。しかし実際には、セルの条件付き書式・関数・スクリプトを組み合わせることで、数字当てゲーム、クイズ、RPG風のステータス管理、さらには簡単なボードゲームまで動かすことができます。プログラミング言語の習得が不要な点も、ゲーム作りへの入口として魅力的です。 この記事では「ExcelやGoogleスプレッドシートで実際に何ができるのか」「どちらを選ぶべきか」「どう作り始めるか」という三つの問いに順に答えます。コードを書いたことがない人でも手を動かせるよう、具体的な手順と失敗しやすい点を合わせて示します。
この記事の目次
スプレッドシートのゲーム制作でできること・できないこと
スプレッドシートをゲームエンジンとして使う場合、大きく三つの層に分けて考えると整理しやすくなります。
関数だけで動く層は、入力されたセルの値を読んで別のセルに結果を返すだけのゲームです。数字当て(=IF(A1=B1,"正解","外れ")の応用)、クイズ(答えをシート外に隠して照合)、すごろく的な進行管理(VLOOKUP・INDEXで分岐)などがここに入ります。外部のプログラミング知識は一切不要で、関数の組み合わせだけで完成します。
条件付き書式を使う層では、セルの色や文字スタイルが値に応じて変わるため、マス目の状態変化を「見た目」として表現できます。○×ゲームや簡易迷路の壁・通路の表示がわかりやすい例です。ゲームの「グラフィック」をセルの背景色で代替する発想です。
スクリプトを使う層では、GoogleスプレッドシートならGoogle Apps Script(GAS)、ExcelならVBAやOfficeスクリプトを使います。ボタンを押したらマクロが走り、セルの内容を書き換える・乱数を発生させる・時間を計測するといった操作ができます。プログラムを書く必要がありますが、文法は比較的シンプルで、JavaScriptに近いGASはWeb制作の経験者にも馴染みやすいです。
逆に、スプレッドシートが苦手なことも把握しておく必要があります。リアルタイム入力(キーボードを押した瞬間にキャラが動く)、なめらかなアニメーション、音声再生などはほぼ対応できません。「ターン制で、プレイヤーがセルに値を入力するか、ボタンをクリックして進める」という形式に向いています。
ExcelとGoogleスプレッドシート、どちらを選ぶか
両者は似ていますが、ゲーム制作の用途では判断基準がいくつかあります。
共有・公開のしやすさ
Googleスプレッドシートはブラウザだけで動き、URLを渡せば誰でもすぐ遊べます。インストール不要でプレイヤーのハードルが低いため、他者に遊んでもらう前提ならGoogleスプレッドシートが有利です。Excelはファイルを配布する形になるため、マクロのセキュリティ警告が出てプレイヤーが戸惑うことがあります。
スクリプトの書きやすさ
Google Apps ScriptはJavaScriptベースで、Web上の解説が豊富です。ExcelのVBAはVB系の独自文法で、慣れるまで時間がかかる人もいます。一方、VBAは長い歴史があるため、スプレッドシートゲームの先行事例や解説記事の数ではVBAが多い印象があります。どちらも無料で使えます(Excelは有料ソフトですが、Microsoft 365のWeb版はブラウザで無料利用可能)。
複数人同時プレイ
Googleスプレッドシートはリアルタイムでセルが同期されるため、二人が別々のPCから同じシートを開いて交互に入力することで、ターン制の対戦ゲームを作れます。オンライン対戦を実装するのが難しいブラウザゲームと比べると、これは大きな利点です。
判断まとめとして、「すぐ公開してプレイしてもらいたい・関数中心で作る」ならGoogleスプレッドシート、「オフラインでしっかり動作させたい・VBAの学習コンテンツが豊富にある環境で学ぶ」ならExcelが選択肢になります。
実際に作り始める手順
ここではGoogleスプレッドシートで数字当てゲームを作る流れを示します。関数だけで完成するため、スクリプトは不要です。
- 新しいスプレッドシートを開く。シート名を「ゲーム」に変更します。
- 答えのセルを用意する。B1に=RANDBETWEEN(1,10)と入力します。シートを開いた瞬間に1〜10のランダムな整数が入ります。プレイヤーに見えないよう、B1のフォントを白にしてセルの背景色も白にします。
- 入力欄を作る。A3に「あなたの予想:」と書き、B3を入力欄にします。
- 判定を表示する。C3に次の式を入れます。=IF(B3="","数字を入れてください",IF(B3=B1,"正解!",IF(B3<B1,"もっと大きい","もっと小さい")))
- 試行回数を数える。A5に「試行回数:」、B5に=COUNTA(B3:B3)と書いても良いですが、複数回の試行を記録したいならB3から下に入力していくよう案内し、=COUNTA(B3:B100)で回数を数えます。
この構成でも「ヒントが出る・正解が見えない・試行回数がわかる」という数字当てゲームの骨格が成立します。見た目を整えるなら条件付き書式で正解セルを緑にする、誤答を赤にするなどを追加します。
関数とスクリプトを組み合わせるときの注意点
関数だけで作っているうちは問題になりにくいですが、GASやVBAを使い始めると失敗しやすいポイントがあります。
乱数の固定が代表例です。RANDBETWEENはシートが再計算されるたびに値が変わります。GASで「スタートボタンを押したとき一度だけ乱数を生成してセルに書き込む」という方法に切り替えると、プレイ中に答えが変わるトラブルを防げます。
スクリプトの実行権限も最初に戸惑う点です。GASは初回実行時にGoogleアカウントの認証を求めます。自分のスプレッドシートを他者に共有する場合、スクリプトの編集権限と実行権限の設定を分けることが重要です。誤って編集権限を渡してしまうと、答えが見えるセルも変更できる状態になります。
セルへの直接書き込みとパフォーマンスも注意点です。GASでセルを一つずつループして書き換えると処理が遅くなります。まとめてsetValuesで書き込む方法がパフォーマンス的に優れています。100マスのボードを初期化する処理など、セル数が増える場面では特に意識が必要です。
作ったゲームをブラウザゲームとして公開するには
スプレッドシートゲームをそのまま外部に公開すると、URLを知っていれば誰でもシートを編集できる状態になりかねません。「閲覧のみ」で共有すれば見られますが、プレイヤーが値を入力できなくなるため、ゲームとして成立しません。
この問題を解決する方法の一つが、GASのウェブアプリとして公開する形です。GASでHTMLページを生成し、スプレッドシートをバックエンドのデータ管理に使う構成にすると、見た目はブラウザゲーム・中身はスプレッドシートという形が実現します。出力されたHTMLファイルを手元に保存し、ブラウザゲームのプラットフォームに登録することもできます。
ゲームの見た目やロジックが固まったら、HTMLとJavaScriptで同じ動きを再実装することも選択肢の一つです。スプレッドシートで設計・検証を行い、最終的にブラウザゲームに移植するという流れは、プログラミングの学習にも役立ちます。スプレッドシートは「ゲームの試作と論理の検証をする場所」として使い、完成品はHTMLファイルとして仕上げる、という役割分担を意識すると作業が整理されます。
次の行動
Googleスプレッドシートを開き、まず=RANDBETWEEN(1,10)を一つのセルに書いてみてください。それだけで乱数が動いていることが確認でき、数字当てゲームの中核部品が手に入ります。動く仕組みが見えてきたら、条件付き書式やGASを一つずつ加えてゲームを育てていきましょう。HTMLに書き出せる段階まで来たら、アソバース(https://aso-verse.com)にZIPまたはHTMLファイルとして投稿することで、他のプレイヤーに遊んでもらえます。
参考資料
- Google Apps Script 公式ドキュメント(Google Developers)
- Microsoft Office スクリプト 公式ドキュメント(Microsoft Learn)
- Excel VBA リファレンス(Microsoft Learn)

