LoginSignup
7
7

More than 3 years have passed since last update.

【Unity】Airtableを使って簡易的なDB管理をする方法【SQLは不要】

Last updated at Posted at 2019-11-26

こんにちは!
ねこじょーかー(@nekojoker1234)と申します。

Unityでゲームを作ろうとしたときに、DBとしてデータを管理して、そこからデータを引っ張ってくる、といった処理も必要になってくると思います。

数個くらいのデータであれば「まぁ、if文で分岐すればいいか」となりますが、さすがに数十、数百となると手間が増えてやっていられないですよね。

しかし、ちゃんとしたDBを用意するとなると、サーバー・テーブル設計・SQLなどなど、考えることがたくさんあります。

そんな「大規模なDBはいらないけど、ソースコードにベタ書きも嫌だ!」という人のための記事です。

Airtableを使って簡易的なDB管理をする方法

Airtableに登録する

タイトルでネタバレしていますが、まずはAirtableに無料登録しましょう。

Airtable」は、スプレッドシートのような機能が無料で使えるサービスがあり、これをDB代わりに使用することができます。

登録手順はメールアドレスを登録するだけなので割愛しますね。
登録が終わったら、以下の画面が表示されます。

スクリーンショット 2019-11-26 21.18.18.png

テーブルを追加する

先ほどの画像で「Add a base」となっているところをクリックすると、新しいテーブルを作成することができます。

「Start From Scratch」を選択することで、完全に「空」のテーブルになります。

スクリーンショット 2019-11-26 21.23.37.png

レコードを追加する

基本的な使い方はExcelと同じなので、特に操作の説明はしません。

私は以下のようなテーブルを作成しました。

スクリーンショット 2019-11-26 21.26.58.png

一番上に表示されているのが「テーブル名」、左上に表示されているのが「シート名」です。

シート名はプログラム上で使うことになるので、コピーしておいてください。

APIキーを確認する

トップページ右上の「Account」からマイページに行くと、APIキーが「●●●●●●」と表示されているので、カーソルを合わせると具体的なAPIキーが表示されます。

このAPIキーはプログラムで使用するのでコピーしておきましょう。

BaseIDを確認する

まずは以下のページにアクセスしてください。
https://airtable.com/api

「The ID of this base is」となっているところがBaseIDなので、これをコピーしておきましょう。(灰色でぬりつぶしているところです)

スクリーンショット 2019-11-26 21.36.26.png

これでようやくAirtable側の準備が終わったので、次からはUnity側の準備に入ります。

AirtableClientをプロジェクトにインポート

以下で公開されているソースコードを、プロジェクトにインポートしましょう。
csファイルだけで大丈夫です。

Utf8Jsonをプロジェクトにインポート

AirtableClientをインポートすると、「Utf8Jsonがないよ!」と怒られるので、Utf8Jsonもインポートしておきます。

するとここで、「unsafeが許可されていません」的なエラーが出て困ることになるので、unityの設定を変更しましょう。

「Edit -> Project Setting」と進んでいき、「unsafe」と検索窓に入力して「Allow 'unsafe' code」を見つけます。

スクリーンショット 2019-11-26 21.48.28.png

このチェックをつけることで、エラーを解消することができます。

処理を実装する

では、実際の処理を実装していきましょう。

サンプルはこんな感じです。

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

7
7
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
7