こんにちは!
ねこじょーかー(@nekojoker1234)と申します。
Unityでゲームを作ろうとしたときに、DBとしてデータを管理して、そこからデータを引っ張ってくる、といった処理も必要になってくると思います。
数個くらいのデータであれば「まぁ、if文で分岐すればいいか」となりますが、さすがに数十、数百となると手間が増えてやっていられないですよね。
しかし、ちゃんとしたDBを用意するとなると、サーバー・テーブル設計・SQLなどなど、考えることがたくさんあります。
そんな「大規模なDBはいらないけど、ソースコードにベタ書きも嫌だ!」という人のための記事です。
Airtableを使って簡易的なDB管理をする方法
Airtableに登録する
タイトルでネタバレしていますが、まずはAirtableに無料登録しましょう。
「Airtable」は、スプレッドシートのような機能が無料で使えるサービスがあり、これをDB代わりに使用することができます。
登録手順はメールアドレスを登録するだけなので割愛しますね。
登録が終わったら、以下の画面が表示されます。

テーブルを追加する
先ほどの画像で「Add a base」となっているところをクリックすると、新しいテーブルを作成することができます。
「Start From Scratch」を選択することで、完全に「空」のテーブルになります。

レコードを追加する
基本的な使い方はExcelと同じなので、特に操作の説明はしません。
私は以下のようなテーブルを作成しました。

一番上に表示されているのが「テーブル名」、左上に表示されているのが「シート名」です。
シート名はプログラム上で使うことになるので、コピーしておいてください。
APIキーを確認する
トップページ右上の「Account」からマイページに行くと、APIキーが「●●●●●●」と表示されているので、カーソルを合わせると具体的なAPIキーが表示されます。
このAPIキーはプログラムで使用するのでコピーしておきましょう。
BaseIDを確認する
まずは以下のページにアクセスしてください。
https://airtable.com/api
「The ID of this base is」となっているところがBaseIDなので、これをコピーしておきましょう。(灰色でぬりつぶしているところです)

これでようやくAirtable側の準備が終わったので、次からはUnity側の準備に入ります。
AirtableClientをプロジェクトにインポート
以下で公開されているソースコードを、プロジェクトにインポートしましょう。
csファイルだけで大丈夫です。
Utf8Jsonをプロジェクトにインポート
AirtableClientをインポートすると、「Utf8Jsonがないよ!」と怒られるので、Utf8Jsonもインポートしておきます。
するとここで、「unsafeが許可されていません」的なエラーが出て困ることになるので、unityの設定を変更しましょう。
「Edit -> Project Setting」と進んでいき、「unsafe」と検索窓に入力して「Allow 'unsafe' code」を見つけます。

このチェックをつけることで、エラーを解消することができます。
処理を実装する
では、実際の処理を実装していきましょう。
サンプルはこんな感じです。
var client = new AirtableClient("コピーしたAPIキー");
var @base = client.GetBase("コピーしたBaseID");
var allRows = @base.LoadTableAsync<"コピーしたシート名">().Result;
foreach (var row in allRows)
{
// 1レコードずつ取り出す処理
}
コピーしたシート名の型のエンティティが返ってくるので、シート名をクラス名にして、各列名をプロパティ名にします。
public class CharacterParam
{
public string Name;
public int Attack;
public int Defence;
public int HitPoint;
}
完成
めでたく完成です!
「応答なし」で固まってしまう場合は、以下のケースが考えられるので、チェックしてみてください!
- APIキーが間違っている
- BaseIDが間違っている
- シート名とエンティティ名が一致していない
- オフラインになっている
補足
最後に念のため、公式で提供されているAPIとドキュメントをリンクとして貼っておきます。
公式API
https://github.com/ngocnicholas/airtable.net
公式ドキュメント
https://github.com/ngocnicholas/airtable.net/wiki/Documentation
##あわせて読みたい
運営している PlayFab 専用ブログ
https://playfab-master.com