ダーク/ライト切り替え

UNITYからMYSQLデータベースにアクセスする【初心者向け】

投稿日2021-09-04

Picture of the logo


目次

目次を読み込み中...

UnityからMYSQL(MariaDB)サーバにアクセスする方法をまとめました。他のブログではMYSQL CONNECTORというアセットが紹介されていましたが、自分の環境では上手くいかなかったので、Node.jsでAPIサーバを立ててweb requestする方法を取りました。

# この記事の対象者

  • ・ データベースを操作するunityアプリに興味がある方
  • ・ データベースをクラウド上に一般公開をしてみたい方
  • ・ Unity、MYSQL、Linux、Docker、JavaScript等の基礎がわかる初~中級者
  • ・ 上級者やプロの方には役には立たないと思います。手軽にサーバー構築を試してみたい人向け

# 動作環境

  • ・ クライアント側 Unity 2020.3以上。(2019ではエラーでした)
  • ・ サーバー側 Docker-composeが動く環境(windows、Mac、Linux)

すでにXAMPP等を使っている、使い慣れたものが他にある人は無理にDockerでなくとも構いません。

# Dockerの入手場所

Dockerの入手はこちらから。以下、Docker-composeがインストールされている前提で勧めます。

# MYSQLサーバーを構築する

# YAMLファイルの記述

ここで紹介するソースコードは全てGitHubで公開しています。ダウンロードする方はコチラ ネットからの拾い物に独自に手を加えました。

散々MYSQLと言っておきながら使っているのはMariaDBですが、全く同じように使えるのでご心配なく。dbのimageをMYSQLに変えても全く問題ありません。

# 使用にあたって

  • ・ 当然ですがユーザー名、パスワードを変更しましょう。
  • ・ ポート番号は所謂ウェルノウンポートです。気になる人は変更して下さい。
  • ・ dbコンテナのポートはあえてexposeにしています。これはphpMyAdminとnode.jsサーバを通してしかアクセス出来ないようにするためです。直接アクセスもしたい方はports: 3306:3306と置き換えて下さい。
  • ・ phpMyAdminはデータベースサーバをブラウザ上で操作する便利なツールです。ローカルならいいのですが、クラウド上にデプロイした場合は誰でもアクセス出来てしまいます。使わない時はすぐにコンテナを停止するか、phpMyAdminは使わずに直接MYSQLを操作するようにして下さい。
  • ・ 後述するDockerfile、index.js、start.shをdocker-compose.ymlと同じ階層にいれてから起動してください。

            

# 他に必要なファイルを用意する

docker-compose.ymlファイルと同じ階層のディレクトリに以下の3つのファイルをコピーする。 Dockerfile

index.js

start.sh(node.jsを自動実行するだけのシェルスクリプト)


            

# docker-compose実行

上記のファイルを全て同じ階層のディレクトリに用意出来たら、

と入力してみましょう。初回起動時にはビルドから始まるので時間がかかります。また、WARNINGが大量に出ると思いますが、無視して構いません。

起動時画面
最終的に3つのコンテナが全てdoneになって、コマンド入力待ちの状態になれば起動されました。

# pypMyAdminで動作チェック

試しにブラウザにULR(例:localhost:8080または、example.com:8080)を入力すると下のような画面が表示されると思います。

pma初期画面
phpMyAdminの操作方法についてはブログやYoutube動画がいっぱいありますので、そちらを参照してください。ここでは割愛します。 表示されない場合は少し待つか、もう一度docker-compose up -dしてみて下さい。それでも表示されない場合はファイアウォール設定をチェックして該当のポートが開いているか見てみて下さい。

# node.js、index.jsの動作チェック

データベースを直接読み書きするためのAPIサーバが機能しているかチェックします。データベースサーバのURLにクエリパラメータを付加する事でリクエストを渡しています。尚、通信の暗号化などは一切していないのでご注意下さい。必要な方は「MYSQL 通信 暗号化」などでググって下さい。

ブラウザのURL欄にこのような書式でユーザー名、パスワード、DB名、リクエストするSQL文を入力する。

nodeテスト
ユーザー名、パスワードなどが間違ってなければ、このようにjson形式でレスポンスが帰ってくるはずです。スクショはSELECT * FROM テーブル名の結果。

# Unity側での操作

# パッケージをインストールする

前述のGitHubからもダウンロードできますが、下記のスクリプトを使います。 MySqlAccess.cs

SQLTest.cs

ここではパッケージからインストールする方法を取ります。 Unityエディターのメニューから[Assets]-[Import Package]-[Custom Package]でMySqlAccessWithNodeJs.unitypackageをインポートして下さい。

mysqlpackage

# インスペクターに必要情報を入力する

サンプルシーンのgameobjectをクリックしてインスペクターからURLなどのログイン情報を入力して下さい。入力情報に誤りが無ければ実行すると下記のようにコンソールにMYSQLサーバからの通信結果が表示されます。

UnityMySql
もしURLなどが間違っていれば下記のようにエラーログが表示されます。必要に応じエラー時の処理等を作ってもいいでしょう。
mysqlerror

# 最後に

XAMPPを使うよりだいぶ手間はかかりますが、より汎用性を考えdocker-composeを使用する方法を紹介しました。ここで紹介したデータベースサーバは非常に簡素なものです。セキュリティ対策もしてません。あくまでお手軽入門という事でご参考程度に。実際クラウド上で運用するのであれば様々な対策が必要になりますのでご注意下さい。






関連記事

UNITYで扇形を作ってみた

blog

Unity上で扇形を作る機能が標準ではついてない?ようなので自作してみました。

【Unity X Node.js】クライアント~サーバー間でAES暗号通信してみた

blog

Unityの暗号ライブラリCryptgraphyを使って暗号通信してみたかったので試してみました。

【Unity】MagicOnionサーバを立ち上げて自己証明書でSSL通信してみる

blog

Unity向けgrpcサーバーManicOnionの導入時にSSL化やNGINXの設定に少し手こずったので備忘録も兼ねて手順をまとめておきました。

GO言語サーバーとUnityクライアント(C#)をgRPCで接続テストしてみた【入門レベル】

blog

UnityでgRPCをする場合、Magic Onionを使うのがお手軽ですが、今回はGO言語でサーバーを構築してみたかったので最低限の接続機能を自作してみました。備忘録を兼ね書き残しておきます。

【Unity】Go言語でDLLをビルドしてUnityからネイティブプラグインとして呼び出す【備忘録】

blog

Unity用ネイティブプラグインをGo言語で作成した時に手こずった部分を個人的備忘録も兼ねてまとめましたので、似たような事を考えている人はご参考までに。

Firebase AuthentificationでEmailアカウントと匿名アカウントを実装する

blog

今回はFirebase Authentificationを使ってUnityに匿名認証、メール認証を実装する手順を紹介します。

【Unity】文字列に禁止ワードが含まれているかチェックをする方法

blog

Unityで下品な単語など望ましくない言葉が含まれていないかをチェックする方法を紹介します

Unityでモザイク処理をする方法

blog

今回はUnityで画像にモザイク処理を掛ける方法を紹介します。標準機能では用意されていないようなのでカスタムシェーダーで実装します。

Unity】一枚のイメージ画像を縦横のタイル状に分割する方法

blog

UnityのUGUIを使用して、一枚のイメージ画像を縦横に分割して表示する方法を紹介します。

【Unity】セーブデータの改ざんやチート対策を考えてみる

blog

ゲーム開発者にとって、チートは永遠の悩みです。どんなに対策しても開発者とチーターは「いたちごっこ」です。今回は初歩的な手段ではありますが、CRCやSHA256といった技術を使ってデータの改ざん、チート行為を検出する方法を紹介します。


スポンサーリンク

このサイトをシェアする