投稿日:2020-12-09 Wed
アプリにAdmobを入れようとしたのですが、いつのまにかGoogleMobileAds-v5.3.0.unitypackageから
GoogleMobileAds-v5.4.0.unitypackage
にバージョンがあがってました。
まあ新バージョンがいいだろうと、最新のを入れて組込んでIOSのビルドをかけたら、Unityが書き出したXcodeプロジェクの中にCocoaPodでSDKを自動でXcodeに入れてくれる「xcworkspace」ファイルがないじゃありませんか・・・
もちろん通常の「xcodeproj」ファイルはあるんだけど、AdmobのSDKを入れて「xcworkspace」が出来てないとかあり得るのか?と嫌な予感がして、もう一回Unityで出してみました。
そしたら、Xcodeプロジェクトは出来上がるけど、Unityのコンソールには赤文字エラーで、CoCoaPodで追加できないみたいなエラーが起きてる。。。
なんてこったい・・・CoCoaPod使わなくても、昔のようにXcodeの中にFrameWork追加したり設定かえたりしたら動くんだろうけど、相当な時間コストをかけた苦労が待っているのは容易に想像が・・・・CoCoaPodは捨てられない。なんとかせねば!!と
ターミナルで、書き出されたXcodeプロジェクトのフォルダで
$ pod update
コマンドを打ってみました。
案の定GoogleMobileAdsが追加できないエラーが出てますが、内容をみると
CocoaPodのバージョンが1.8.4だよ 1.9.0にあげてみたいな メッセージが見える。
なるほど、GoogleMobileAdsの最新バージョンは、新しいバージョンのCoCoaPodじゃないと駄目なのだろうと想像できました。
とりあえずCoCoaPodのバージョンあげる方法しらべてターミナルでコマンド実行・・・
$ sudo gem update cocoapods
うまくいかない。エラーが起きます。
CoCoaPodがおかしくなった時の対処法は、ググれば結構みつかるのですが
CoCoaPodアンインストールしたりCoCoaPodの設定ファイルをいじったり・・・
そして再びCoCoaPodインストール
$ sudo gem install cocoapods
コマンド実行
そしたら
ERROR: Error installing cocoapods:
ERROR: Failed to build gem native extension.
エラーじゃあ!!
これはヤバいぞ!! ヤバすぎる!!
CoCoaPodアンインストールしてしまったのに、インストールできない。
FireBaseもよく使ってるのに、このままじゃIOSのビルドが出来ないぞ!!と青ざめる結果に。
そして色々ググって調べたら、同じ症状の人ばかり・・・
解決法は何人か書いてあるのですが、結局CoCoaPodの1.9をあきらめて、1.8.4を指定してインストールしたよというものばかりでした。
つまり、1.9.0からうまく入らないみたいです。
ここで、CoCoaPod1.8.4を入れて、AdmobのSDKも一つ前の5.3.0を入れるか
AdmobのSDKを5.4.0にして、なんとかCoCoaPodのバージョンをあげるか、
の2択を迫られてしまいました。
最新のが使えないの色々まずい気もするので、もう少し上げる努力をしようかと思ったのですが、ここからも一筋縄でいきませんでした。
CoCoaPodは、MacOS上で動いてるRubyでインストールする方法がよくみつかるのですがRubyじゃなく
$ brew instal cocoapods
でインストールしましょう
というのを見つけて、これならいけるのでは?とやってみたら
インストールはされるのですが、途中でエラーが発生してる。
とりあえず、今はCoCoaPod1.10.0なのは、わかりましたが、これは大丈夫なのか? と思ったらやっぱり駄目でした。
海外サイトでRubyのバージョンをあげればうまくいく可能性があるよ!というのをみつ方ので
$ brew uninstal cocoapods
を実行しRubyのUpdateへ
Rubyは2.6.5だったので、2.7にあげました。
これでうまくいくかと思いきや結果は同じ。
このあたりで、下げるか迷いましたが、CoCoaPod1.10.0はBrewなら成功してる人はいる。
もう一回Brewで挑戦。
やはり途中でエラーでうまくいかないのですが
----------------------------
Error: The `brew link` step did not complete successfully
The formula built, but is not symlinked into /usr/local
Could not symlink bin/xcodeproj
Target /usr/local/bin/xcodeproj
already exists. You may want to remove it:
rm '/usr/local/bin/xcodeproj'
To force the link and overwrite all conflicting files:
brew link --overwrite cocoapods
----------------------------
とエラーメッセージが出ている。Google先生にかけてみたら
----------------------------
リンクを強制し、競合するすべてのファイルを上書きするには:
brew link --overwrite cocoapods
----------------------------
を実行しなさいと書いてあるじゃないですか・・
$ brew link --overwrite cocoapods
$ brew uninstall cocoapods
$ brew install cocoapods
実行でうまくいったあぁぁ。
ちゃんとメッセージは読まないと駄目ですね。。
とりあえず、数時間の戦いでした。
投稿日:2020-09-07 Mon
FireBaseにおいてFireStoreのバックアップを毎日動くように設定するのですが、すっかりやり方を忘れてる&前と微妙に違う気がするのでメモです。※FireStoreのバックアップは、無料のSparkプランでは不可なので、従量制のBlazeプランにする必要があります。
もっともNode10 になってFunctionsも従量制のBlazeプランにしないと使えなくなってしまいましたが。。。
FireStoreの毎日の定期バックアップを行うには、GCPコンソールで、バックアップ用のバケットを制作し、そこに書き込む権限をもったサービスアカウントを作成します。
そしてFunctionsにバックアップのプログラムを書き、GCPコンソールにある「Cloud Scheduler」で毎日の定刻にそのFunctionsプログラムを叩くのです。
ただ実際にやってみると色々思考錯誤します。
まずは、GCPコンソールにいき、サービスアカウントを作ります。
GCPコンソールには、ブラウザで直接GCPコンソールに行っても良いですがFireBaseのコンソール画面の場合はプロジェクト概要の右にある設定ボタンを押し表示された中から「プロジェクトを設定」を選びます。

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

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

アカウント名は「backup」としました。

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

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

鍵は、P12形式かJson形式か選べますが、Json形式を選んでください。
鍵が作られ、ダウンロードされますので、ダウンロードされた鍵は、firebaseプロジェクトのfunctionsフォルダに格納します。
念の為IAM画面に行って、
Cloud Datastore インポート / エクスポート管理者
Storage オブジェクト管理者
の2つがついているのを確認します。

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

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

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

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

Functionのプログラム(Node10)を準備します。
基本は上記ので動くと思いますが、10行目のJsonは、サービスアカウントで作成したfunctionフォルダに入れたjsonファイルを指定します。
38行目は、先程バケット作成したバケットを指定します。
FirebaseのプロジェクトID-firestore-backup で名前をつけたのであれば、そのままで大丈夫なハズ。
Functionをデプロイします。

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

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

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

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

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

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

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

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

これでおわりです。
投稿日:2020-09-02 Wed
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(正解)
実行してみます。
おぉ! 今までと同じ見やすいサーバーログになりました。
ありがちですが、公式マニュアルが間違ってるのは、毎度悩まされます。
人が作業してるのでしょうから仕方ない面もあると思いますが、はよ直して!!
投稿日:2020-06-24 Wed
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 まではなくなります。
機能が削られたというより、コストをかけて移植する対象にならなかったという事ですね。
△ PAGE UP