FC2ブログ
 
■プロフィール

クリエイトウェーブ

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

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

■RSSフィード
■リンク
FireStoreバックアップ
FireBaseにおいてFireStoreのバックアップを毎日動くように設定するのですが、すっかりやり方を忘れてる&前と微妙に違う気がするのでメモです。
※FireStoreのバックアップは、無料のSparkプランでは不可なので、従量制のBlazeプランにする必要があります。
もっともNode10 になってFunctionsも従量制のBlazeプランにしないと使えなくなってしまいましたが。。。

FireStoreの毎日の定期バックアップを行うには、GCPコンソールで、バックアップ用のバケットを制作し、そこに書き込む権限をもったサービスアカウントを作成します。
そしてFunctionsにバックアップのプログラムを書き、GCPコンソールにある「Cloud Scheduler」で毎日の定刻にそのFunctionsプログラムを叩くのです。

ただ実際にやってみると色々思考錯誤します。
まずは、GCPコンソールにいき、サービスアカウントを作ります。
GCPコンソールには、ブラウザで直接GCPコンソールに行っても良いですがFireBaseのコンソール画面の場合はプロジェクト概要の右にある設定ボタンを押し表示された中から「プロジェクトを設定」を選びます。

backup1.png

「サービスアカウント」を選択すると、表示されたページの右上に「サービス アカウント権限の管理」というリンクがあるので、そのリンク先に飛びましょう。
backUp2.png


GCPコンソールの「IAMと管理」の画面になってると思いますが
左側に並んでるメニューから「サービスアカウント」を選択し「+サービスアカウントを作成」を選択します。
IAM.png


アカウント名は「backup」としました。
サービスアカウント2


次にロールを割り当てます。
Cloud Datastore インポート / エクスポート管理者
Storage オブジェクト管理者
の2つを割り当てます。
サービスアカウント3

サービスアカウントが出来上がって一覧に表示されたら、作ったサービスアカウントの右側の「・」が縦に3つ並んでるボタンを押して鍵を作成を選びます。
鍵を作成

鍵は、P12形式かJson形式か選べますが、Json形式を選んでください。
鍵が作られ、ダウンロードされますので、ダウンロードされた鍵は、firebaseプロジェクトのfunctionsフォルダに格納します。

念の為IAM画面に行って、
Cloud Datastore インポート / エクスポート管理者
Storage オブジェクト管理者
の2つがついているのを確認します。

サービスアカウント4


次は、バックアップ保存先のバケットを作成します。
GCPコンソール左上の「ナビゲーションメニュー」を押します。

ナビゲーションメニュー

表示されたメニュー群から「ストレージ」を選択し、その中の「Storage」を選んだ中から「ブラウザ」を選びます。
ストレージメニュー

画面上部の「バケットを作成」を選びます。
バケット作成

バケットの名前は、
FirebaseのプロジェクトID-firestore-backup
としました。

ロケーションは、FireBaseのFireStoreで使ってるリージョンと同じにしなければなりません。
FireStoreを設定するときにリージョンを設定しますが、だいたいの場合は「asia-northeast1(東京)」を選択してる方が多いと思いますが、その場合はロケーションタイプは
「Resion」 にして 「asia-northeast1(東京)」か
「Multi-region」で「asia」を選ぶかになるようです。
ここを間違えると、バックアップは失敗します。私は 「Resion」 にして 「asia-northeast1(東京)」にしました。
ストレージクラスは、「Standard」にしました。
詳細設定は、省略で大丈夫です。
バケット作成2

Functionのプログラム(Node10)を準備します。

基本は上記ので動くと思いますが、10行目のJsonは、サービスアカウントで作成したfunctionフォルダに入れたjsonファイルを指定します。

38行目は、先程バケット作成したバケットを指定します。
FirebaseのプロジェクトID-firestore-backup で名前をつけたのであれば、そのままで大丈夫なハズ。
Functionをデプロイします。
デプロイ

次は、「Cloud Scheduler」です。
ストレージのバケットを作った時と同じ要領で「ナビゲーションメニュー」の中から「ツール」から「Cloud Scheduler」を選びます。
CloudScheduler.png

画面上部のジョブを作成を選びます。
ジョブを作成

ジョブの作成で名前をつけます。
任意の名前でいいと思いますが、「firestore-backup」としました。
CloudSchedulerPre.png

諸々せていしたのがこれ。
CloudSchedulerAfter.png

設定できたら、右側にある「今すぐ実行」ボタンを押して、実行されるかみてみます。
job2.png

成功と出ても、プログラムの実行が成功しただけでバックアップが成功してるか判らないので、ストレージのバケットを見て成功してるか確認しましょう。
backUp.png

後はバックアップの保管期限を決めます。画面上部のライフサイクルボタンを押します。
自分はバックアップは30日もあれば十分かなと思っているので設定します。
「オブジェクトを削除する」を選びます。
ライフサイクル

年齢を30日に設定して作成します。
年齢って最初わからなかったですが、、まあ言われてみれば年齢30日ですね。たしかに・・
ライフサイクル2

これでおわりです。

カテゴリー:FireBase | TM(0) | CM(0)
Functionsのログがおかしい
Firebaseの管理画面でサーバーログが見れてデバッグしやすいので、FireBaseのサーバープログラム(Functions)は、そこも気に入ってるのですが・・・

ここ最近サーバープログラム(FunctonsのNodeJS)が吐き出すログがおかしいなと思ってました。
console.logで吐き出されるサーバーログは物凄く見にくい・・・なんじゃ!こりゃ!
いったいどうしたんだと

そしたら、FunctionsがNode8からNode10になったせいらしい。
ログマニュアル

Node10からは、Console.logじゃなくlogger.logというものを使うそうです。

しかし、そうはいっても直すのも大変だぁ・・
このままConsole.logつかえないのかと思っていたら
require("firebase-functions/lib/logging/compat");

を追加すれば、console.logも今まで通り使えるよ! と書いてあるではないですか!!
よし! と思ってFunctionsに追加・・・

結果エラー・・・ モジュールがないからnpm installしてねとか出てきます。
どういうこっちゃと悩んでnode_modulesのパスをみたら

require('firebase-functions/lib/logger/compat');
が正解でした。
logging(誤り)
logger(正解)

実行してみます。
おぉ! 今までと同じ見やすいサーバーログになりました。

ありがちですが、公式マニュアルが間違ってるのは、毎度悩まされます。
人が作業してるのでしょうから仕方ない面もあると思いますが、はよ直して!!


カテゴリー:FireBase | TM(0) | CM(0)
Flash終了について
Adobeから改めてFlash終了の発表があったようです。
今年いっぱいでFlashPlayerが消えてしまいます。

CreateWaveは、2005年創業ですが、2005年時点でDirectorの仕事、Flashの仕事半々といった感じでした。
Directorの仕事(まあ結構な大物タイトルが多かったのですが)の方が収益の半分以上を占めていましたが、Flashの方もActionScript2の時代に突入していて、ActionScript3登場間近の時代で、仕事も急速にFlashに傾いていってました。

Flash自体は2(日本上陸時)から触って使ってもいましたが、結局CreateWaveはプログラム色が大きいので、収益の大部分をFlashが占めるようになるのは、ActionScript3登場後になります。
ゲーム会社さんがFlashゲーム参入も多くなってきた中で、コンシューマには慣れてるけど、Flashに慣れてないって事で、CreatWaveもそれなりに相談が多かった訳です。

その反面、うちは駆け込み寺かよ!と思う年もありました。
Flashはプログラムも本格的に組める訳ですが、プログラムが組めない、もしくは簡単なものしか組めなくても仕事はいっぱいあったので、プログラム弱くても成り立ってる会社はいっぱいあったんですよね。CWと真逆のベクトル向いてる

でも、そんなプログラムが弱い会社が、なんとか出来るだろうと、プログラムが必要なFlashの仕事をとってしまう訳です。待っているのは破綻・・・・・

どうやって探すのか、よく電話がかかってくる年がありました。
助けてくれ! と
締め切りいつなんですか! と聞くと、「実は明日で。。。」 とかの返事もあり
「諦めるなら、もっと早く諦めてくれ!」と思ってました。

そんなFlashが終わってしまう。
いまは、Unityの仕事がメインなので、ブラウザゲーはあまり縁がないですが、昔はHTML5はFlashの代わりなんてとんでもないっていうくらい差がありました。

今はどうなのかな?
Unityでwebassembly書き出しとかあるので、もう超えてる面もあるのかもしれないですね。
ただ一つ思うのは、Flashの時代は、プログラム組めない人も大半で(こっちのほうが多いんじゃないかな?)でも仕事はいっぱいあるし、それにアニメツールとしても、すごく使いやすい
クリエータの人がいっぱいいたんですが、そこはめっきり人材が減った感があります。

何回か載せてるけど、自分とFlashのつきあい

覚えてる限りの自分とFlashの付き合い

●Flash2
未だインターネットはアナログモデム主流の時代。 仕事はDirectorばっかりの時でしたが
前の会社で、一緒にやってたRK君が、ある日なんかソフトを買ってきました。
なにを、どう調べたのか、「すげえソフトが出た!」と
「これから、これは来るぞ~~」と力説してました。

それが、Flash2
日本で発売されたばかりのFlash

もう、この時点で、Flashアニメの基本的な部分は出来てた気がする。
トゥイーン手法とか、あまり変わってないような・・・

値段は、Win版、Mac版が一緒になってて2万円代だった(3万弱くらい?)のでした。 

この時点で、Directorみたいに、後々色々スクリプトが出てくるんだろうなと想像できました。


●Flash3
アップデータのお知らせが来て、やはり2万円代だったような・・・しかもWinとMac両方で(うろ覚え) 

簡単なアクションが組めるようになりました。
アクションのエディタというよりも、アクションを自動的に作っていく簡易的なものでした。

DirectorのLingoに慣れてた自分は、「なんじゃこりゃ。作り憎い~~というよりおもちゃじゃん!!」
というのが印象に残ってます。

ボタンも勝手にアップとかダウンとか決められててショックでした(笑

ここまで使い方とかこそ、覚えましたが、ほとんど仕事に使ってなかった。
いくつかのホームページのFlashアニメや、映像の仕事の補助的な事に使ってました。

●Flash4
アップデータが、Flash3の時は、Win、Macのハイブリッドでしたが、ここからWin版、Mac版に分かれました。
アップデータは2万円代だった気がしますが、別れたので倍のコストになりました(うろ覚え

FlashLite1.1は、このFlash4にあたります。 というか、ほぼそのまんまFlashLiteと同じに思えます。

しかし、仕事の機会もなく、アップデートも見送ってました。

そんな時に仕事の依頼。
教育ソフトの説明をFlashアニメで作成するというもの。
内容的に、すごいハード・・・・

そして、その時点で既にFlash5が発売秒読み。
Flash4の購入がFlash5の無償アップデート期間に入っていた為に、一挙にFlash5まで買うこととなりました。

考えてみるとDirector4も、そのパターンだ。4はそういう数字なのか?。

で、教育ソフトの方は、あまりに大変そうって事で、操作そのものをビデオキャプチャーしてQuickTimeにしてDirectorに流すって方向転換になって結局、その仕事には使わない事に(><)


●Flash5
そんな訳で、Flash5購入。

Flash4のアクションが終わり、ついにActionScript1 が登場します。
スクリプトがDirectorのように、普通にエディタ感覚で打てるようなりました。
「やはり、こういう風に来た来た~」

スラッシュシンタックスから、普通のプログラム言語のようにドットシンタックスへ変化

配列やオブジェクトも作れるようになって、一気にプログラムツール本格化への第一歩が始まります。

しかし、あまり仕事には使わず・・・・
仕事は、相変わらずDirectorばかりでした。

●FlashMX(6)
ここまで、来るとスクリプトは、かなり進化します。
Director使いから、Flash使いに転向していった人も、この頃多かったのではないかと思います。

Directorで制作したソフトをFlashに移植って事でアップデートしたような・・・(うろ覚え)
しかし、仕事的には相変わらずDirectorばかり。
そんな中、自分達も、そのうちFlashの方に移っていくんだろうかと、そんな事考えながらもDirectorメインでやってました。

クリエイトウェーブのメンバーは自分以外は、この頃か、5の頃じゃないかな。触ったの
でも仕事がDirectorばっかだったので、それなりに・・・・触っただけです。

Flashビデオ(FLV)が登場!


●FlashMX2004(7)
ノーマル版とProfessional版に分裂。
しかもProfessional版は値段が約倍に・・・・

そしてActionScript2 登場します。
ActionScript2って、ActionScript1で書いてもコンパイル結果が同じらしく混在も出来てました。

Classファイルもかけましたし、実際Classsファイルも良く書いてましたが、ActionScript3のClassと違ってClass風に書けるだけで中身はClass言語ではなく、プロトタイプ言語のままでした。thisのスコープとかもClassの中で変わってしまうのでちょっと勝手が違います。

しばらくアップデートしませんでした。
仕事もDirectorばかりだったので、Flashも仕事増やさねばと思ってたところにFlashゲーム制作の仕事が決まりました。
FlashCommunicationサーバーとかも絡んで、いきなりハイレベル。

いきなり会議に参加する事になってドキドキもの。
仕事が完全に決まったと確認できたので、会議が終わった後、その足でヨドバシカメラにアップデータを買いにいきました。(遅!

この頃、仕事環境をMacOs9からWinXpに移行。
MXまで、Win版、Mac版両方あげてましたが、Winのみにしました。

アップデータをノーマルにするか、Professionalにするか迷うも、結局Professionalへ
後でFlashLiteの仕事も増えてきたので、Professionalにしといて良かったぁ~~
ノーマル版は、FlashLiteが制作できませんでした。

ここからFlashの仕事が、俄然増えてきました。

しかし、ActionScript2よりActionScript1で組んでました。
本とかActionScript2対応とかうたってて、説明少し、サンプルActionScript1の本とかも多かった。

仕事が本格的になってきて、資料も少なかったActionScript2まで、いきなり手が回らなかったのが本当の所かな。
周りの別会社の技術者さんたちも、ActionScript1中心だったので、これはこれで困らなかった。


●Flash8
Flashビデオにon2が登場!! 今までのSorensonより高画質、高圧縮になりました。

ベクター素材がビットマップキャッシュ化出来るように。
それにより、エフェクトも付けられるように。

FlashLite2の制作が可能に!!

組み方をActionScript2中心に移行していきました。


●FlashCS3(9)
クリエイトウェーブ出来て初めて買ったFlash。
Adobe初のFlashでもあります。

ActionScript3登場!!
ついに本格的なClass言語で、Flashコンテンツ制作可能に
2008年の時点でクリエイトウェーブの仕事は、ActionScript3 が80%以上になります。
この頃は、すっかりDirectorの仕事は減ってしまっていました。

FlashCS4(10)
元々はFlash制作ツールのアップデートと共にFlashプレーヤーのバージョンも一緒に上がってましたが、どこからか共通じゃなくなってしまいましたよね。
特に11のFlashプレーヤーの時代は長かった気がする・・・

FlashCS5(11なんだっけ?)
FlashCS6(もうよくわからない・・)

FlashCC
ここで、64ビットアプリになります。
CS6 までと違い拡張ではなく、新規に作り直しになったので、機能jの追加が間に合わず色々な機能がオミットされてしまいました。
その後数年かけて、CS6 についていた機能が復活していきます。
この64ビットの時点で、FlashLiteやActionScrip2 まではなくなります。
機能が削られたというより、コストをかけて移植する対象にならなかったという事ですね。


カテゴリー:Flash | TM(0) | CM(0)
MacでFireBaseデプロイにハマった
いつもは、Windowsで作業してるのですが、仕事場の環境をMacに切り替えました。

Macをメイン機にしたのは何年ぶりだろうか・・・
OS8とか9の頃(Winでいえば98とかMeの頃)は、仕事機はMacがメインでした。
あの頃は、Adobeとかマクロメディアとか、Macじゃないと仕事にならなかった。

で、Fierbaseのデプロイにハマった。
npmやFirebase tools とかのインストールまではうまくいったのですがデプロイがうまくいかない・・・

~/functions/node_modules/.bin/eslint: Permission denied
とかでる。

Permissionなので、権限かえればいいんだよね? とPermission関係いろいろいじったのに効果出ず・・・

結局 ESLint をインストールしてないのが原因だった。

$ npm install -g eslint
で解決・・・・

疲れた。。。 Macはこういうのが疲れる・・・・
でもMacに慣れてきた・・・ 慣れるとMacなかなかいいです。

カテゴリー:FireBase | TM(0) | CM(0)
サーバー側全部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)
次のページ