🚀 はじめに:せっかくのハイスコアが消えてしまう!?
これまでの記事で、JavaScriptを使って[迷路ゲーム]や[シューティングゲーム]を作ってきましたね。
自分の書いたコードでキャラが動くのは感動的ですが、一つ大きな弱点があることに気づきましたか?
それは……「ブラウザを更新(リロード)すると、すべて初期化される」こと。
- 「苦労してレベルを上げたのに!」
- 「ハイスコアを出したのに記録に残らない!」
これは、JavaScriptの変数(メモリ)が「一時的な記憶」しか持てないからです。
ゲーム機で言えば、電源を切ったら消えてしまう状態ですね。これを解決し、電源を切っても(ブラウザを閉じても)データを残すために必要なのが「データベース(Database)」です。
今回は、現役サーバーエンジニアの視点から、ゲーム開発に欠かせない「データベースの基本」と「データの設計図(テーブル設計)」について解説します。
1. データベース(DB)とは?「巨大で高機能なエクセル」と思えばOK
エンジニアの世界では「DB(ディービー)」と略されますが、
正体は「データを整理整頓して保存しておく専用の倉庫」です。
イメージしづらい場合は、Excel(エクセル)を思い浮かべてください。
- Excel: 人間が目で見てデータを管理するもの
- データベース: プログラムが高速にデータを読み書きするもの
ゲームのセーブデータも、Webサイトの会員情報も、基本的にはこの「データベース」の中に、
表(テーブル)のような形で保存されています。
今回は、世界中で最も使われているデータベースの一つ、MySQL(マイエスキューエル)を題材にします。
多くのスマホゲームやWebサービスも、裏側ではこのMySQLが動いているんですよ!
2. 実際に設計してみよう!「勇者のステータス」
では、RPG(ロールプレイングゲーム)のセーブデータを保存すると仮定して、
データベースの設計(モデリングと言います)をしてみましょう。
保存したいデータは以下の通りです。
- 勇者の名前
- 現在のHP(体力)
- 現在のMP(魔力)
- 所持金(ゴールド)
❌ 悪い例:なんでも詰め込みすぎ
「データが保存できればいいんでしょ?」と、1つの枠にすべて書いてしまうと……。
| データの中身 |
勇者A, HP:100, MP:20, 500G |
勇者B, HP:55, MP:0, 10G |
これでは、プログラムから「HPだけ回復したい!」と思った時に、
文字の中から「HP:100」を探し出して書き換える……という大変な作業が必要になります。
⭕ 良い例:項目ごとに列(カラム)を分ける
データベースでは、Excelのように「列(カラム)」を定義して整理します。これを「テーブル」と呼びます。
テーブル名:users(ユーザーテーブル)
| id (ID) | name (名前) | hp (体力) | mp (魔力) | gold (所持金) |
| 1 | 勇者A | 100 | 20 | 500 |
| 2 | 勇者B | 55 | 0 | 10 |
こうして分けておけば、プログラムからは「IDが1番の人の、hpを書き換えて!」と命令するだけで済みます。
スッキリしましたね!
3. 【エンジニアの視点】「型(かた)」を決めよう
ここからが少しプロっぽい話です。
データベースのテーブルを作る時、
各列(カラム)に「どんな種類のデータが入るか」というルール(型)を決める必要があります。
これを「データ型」と言います。ゲームの装備制限に似ていますね。
「戦士は杖を装備できない」のと同じで、「数字を入れる場所に文字は入れられない」ように制限をかけるのです。
MySQLでよく使う基本的な型は、この3つを覚えればOKです!
| 型の名前 | 特徴 | ゲームでの使い所 |
| INT (イント) | 整数を入れる箱。計算ができる。 | HP、MP、ゴールド、攻撃力など |
| VARCHAR (バーキャラ) | 文字列を入れる箱。長さ制限ができる。 | プレイヤー名、アイテム名、セリフ |
| DATETIME (デイトタイム) | 日付と時刻を入れる箱。 | アカウント作成日、最終ログイン日時 |
今回のテーブル定義(設計図)
先ほどの users テーブルを、エンジニアっぽく定義するとこうなります。
- id:
INT(社員番号のような、重複しない管理番号) - name:
VARCHAR(50)(名前は50文字まで!) - hp:
INT - mp:
INT - gold:
INT
このように「型」を決めておくことで、
「HPに『あいうえお』という文字が間違って入ってしまい、計算エラーでゲームが止まる」
といったバグを未然に防ぐことができるのです。
4. まとめ:データ保存はゲーム制作の第一歩
今回は、プログラミングで作ったゲームのデータを保存するための「データベースの考え方」について解説しました。
- 変数はリロードで消えるが、データベースなら消えない。
- データはテーブル(表)で管理する。
- それぞれの列には型(INTやVARCHAR)を決める。
この「枠組み」さえ理解できれば、ランキング機能も、ログイン機能も、アイテム図鑑も作れるようになります。
次回予告
設計図は完成しました!しかし、これだけではまだデータは保存されません。
次回は、いよいよ
SQL(エスキューエル)という命令文を使って、実際にこのテーブルの中にデータを
「書き込み(INSERT)」「読み込み(SELECT)」する方法
を解説します。
これまで作った[シューティングゲームのスコア]を、データベースに保存する準備を始めましょう!

コメント