FC2ブログ
 
■プロフィール

クリエイトウェーブ

Author:クリエイトウェーブ
開発における、諸々を書いていきたいなと思っています。
mail : info@createwave.jp

■最近の記事
■カテゴリー
■最近のコメント
■月別アーカイブ
■最近のトラックバック
■ブログ内検索

■RSSフィード
■リンク
サーバー側全部FireBaseで作ったSNSゲームリリース
タイトル名は諸事情で言えませんが、サーバー側をPHPとMySQLやめて、思い切ってFireBaseのCloudFunctionsとFireStoreで開発したゲーム遂にリリースしました。 ちなみにクライアント側はUnityです。

開発1年ちかくかかりましたが、CloudFunction(Node.js)とFireStoreも手探りで始めたので感慨深いものがあります。
実際料金とかどれくらいかかるのだろうとか、重くなったりしないのかとか、すごい心配していたのですが、蓋をあけてみると

DAU1万5千人くらいですが、恐ろしいほど快適・・・・ 重くなる兆候さえない。 DAU1万5千人規模の場合、だいたい1日千円弱くらいFireBase代が発生しるので月3万とかかな。
もちろん料金抑える為に、色々工夫してます(結果的には、これがサーバーのパワーを引き出す事にもつながります)

今までの普通のクラウドで構築すると、月20万~50万くらいのシステムでスタートしてると思うので、コスパはやはり凄い。さすがGoogleのシステムです。
おまけに開発時はテストサーバー代無料だし、SSL代とかもないし・・・

びっくりしたのは開発時よりサーバー反応が異様にいいこと。 こんなに早かったのか・・というぐらい開発時とちがます。
アクセス数が増えてサーバーのCPUとかネットワークのパワーの割当が増えてるんでしょうね。

カテゴリー:Unity&FireBase | TM(0) | CM(0)
Cloud FunctionsでPost通信
Cloud Functionsで外部通信の必要が出てきました。

予め断っておくと、FireBaseのCloud Functionsから外部へアクセスするには、従量制のBlazeプランにする必要があります。
無料のSparkプランや、有料のFlameプランでは使えないのでご注意を!
又Blazeプランでも、Sparkで間に合う範囲までの使い方だと、実質費用はかかりません。

Node.jsでは、どの方法が一般的なのだろうと思ってググったのですが
request(npm install request でnode_modulesへ追加)
request-promise(npm install request-promise でnode_modulesへ追加)
とか出てきて、実際便利です。

ただ、Cloud Functionsで既にrequestとかの命令や変数でアクセスしてる訳だし、requestとかインストールしなくても動くのかなと思いつつ、動かないのでnpm install requestしてしまって、失敗。

なんか今まで作ったプログラムが動かなくなってしまいました。(自分のやり方が悪いだけかもしれませんが・・。 それに入れたばっかの最初は動いてたんですよね)

仕方ないので、 firebase init で構築し直し。 他に方法ないのかなと思ったのですがありました。
まずはGet通信から。 Getは
const https = require('https'); を使い、https命令で行います。

こんな感じです。


こう書いてもいいようです。

次にPOST通信、 一般的なformのPost通信でuser_name という変数に値(この例ではadmin)を入れておくる場合は

こんな感じになります。

json形式で送る例は、割とよく出てくるのですが、普通にformで送りたかったので苦戦した。
'Content-Type':'application/json' を 'Content-Type': 'application/x-www-form-urlencoded' にするだけだし、こんなのすぐ分かれよって気もしますが、私は元々(というか今も)Webエンジニアではないので、こういうところは直ぐピンとこない。

結局海外サイトでヒントをみつけました。
json.stringify ならぬ、querystring.stringify ってのも出てきました。
これは一体なんだ! と思ったのですが、これはぐぐると直ぐ出てきます。

とりあえず無事Cloud FunctionsでPOST通信が出来るようになりました。

カテゴリー:FireBase | TM(0) | CM(0)
祝! FireStore正式版リリース
GoogleがFireStore正式版リリースを発表しました。
FireStoreはFireBase特有のサービスではなく、Google Cloud Platformのものですが、FireBase上でもベータの表示とれてるのかと思ってみたら
firestore.png
の表示が・・

Google先生で翻訳してみたら
---------------------------------------------------------------------
Cloud Firestoreはベータ版ではありません
Cloud Firestoreは現在一般提供されており、サービスレベル契約に含まれています。
---------------------------------------------------------------------
との事のようです。

Webのマニュアルページやら、未だベータマークついたままですが徐々に整理されていくでしょう。
現在開発中のものは、バリバリFireStore使っっていて、制御してるCloud Functionsもそれなりに規模が大きくなってきてるんですができればリリース前に正式版になってほしいなと思っていたので良かったです。

数日前にも書きましたが、もうMySQLやPHPじゃなくて、FireBaseのFireStoreとCloud Functionsで十分と思ってきてるので、今回の正式版リリースは朗報でした。
これからもガンガンFireStore使ってきます!!

カテゴリー:FireBase | TM(0) | CM(0)
iosでFireBaseのCloudStorageからダウンロードできない
昨日、Unity上でCloud Storageからファイルをダウンロードするのを書いたばかりですが、iosの実機に書き出してみたところうまくいかない事がわかりました。

アンドロイド実機問題なし、UnityEditor上でもプラットフォームをios設定にしていても問題ありません。
ダウンロード先は、Application.temporaryCachePathにしています。

パーミッションみたいな設定があるのか、そもそもiosではダウンロードできないのか・・・よくわかりません。
方法あるのかわかりませんが、一度Cloud Storage上のデータをUnity上でメモリ上にバイナリ形式で読み込んでおいて、Application.temporaryCachePathにUnity上のC#で書き出す事にしました。



dotnet4版のFireBaseSDKを使って昨日書いたとおりでコルーチンで処理を判別しています。
なんかスッキリしないけど、いい方法はあるのだろうか。。。

カテゴリー:Unity&FireBase | TM(0) | CM(0)
UnityでFireBaseのCloudStorageのダウンロード後の処理ができなくなった・・・
今までUnityでFireBaseのCloud Storageからファイルをダウンロードしたあとの処理を以下のようにしていました。


しかし、FireBaseSDKを.Net4版にしたら以下のように、命令を受け付けなくなった

なんか別スレッドなので処理できないみたいのがコンソールに出てるし、thisもとれない・・・
Invokeやコルーチンの命令書いても動かない・・・
いったい、どうすればいいんだ

色々実験したら、変数には値が入るので、予めコルーチンを動かしておいて、変数で処理するようにしました


他にいい方法はないだろうか・・・
判るまでしばらくこれでいきます。。

カテゴリー:Unity&FireBase | TM(0) | CM(0)
次のページ