TAKOYAKING’s blog 一覧

TAKOYAKING’s blog

たこ焼き系

Unity: Admob: Fatal error in Unity CIL Linkerが出た

状況

Admobをアップデートしたので、Androidのビルドをしようとしたところ以下のエラーが出ました。

Fatal error in Unity CIL Linker
Mono.Linker.LinkerFatalErrorException: ILLink: error IL1005: GoogleMobileAds.Api.MobileAds.GetClientFactory(): Error processing method 'GoogleMobileAds.Api.MobileAds.GetClientFactory()' in assembly 'GoogleMobileAds.dll'
 ---> System.InvalidOperationException: No action for the assembly GoogleMobileAds.Unity, Version=7.2.0.0, Culture=neutral, PublicKeyToken=null defined

環境

  • Admob v7.2.0
  • Unity 2022.1.15f

検証1

Unity Issue Tracker - [Android] Could not build an IL2CPP project when using 'GoogleMobileAds.dll'
上の記事のある通り

<linker>
    <assembly fullname="GoogleMobileAds.Unity" ignoreIfMissing="1" preserve="nothing"></assembly>
</linker>

linker.xmlを作って、Assetsの直下に配置しました。

すると以下のエラーがまた出てきました

Building Library/Bee/artifacts/Android/d8kzr/libil2cpp.so failed with output:

以下何をしようがエラーの無限ループ

検証2

Managerd Stripping Codeが必要

  • unityの設定でoffにしてもダメだった

検証3

Unityのバージョンを下げてみた。
2021.3.9へ下げると見事ビルドが通りました!
Unity 2022.1.15f にするのは一旦諦めました。

副鼻腔の手術を受けてきた(体験談)

注意事項

この記事は体験談なので、詳細は必ずお医者さんの指示に従って下さい。

あらすじ

鼻が詰まってしまって、加えて、鼻水止まらなくなって、鼻呼吸がほぼできなくなったので、病院に行くことにしました。

病院に行く前の鼻の状況は鼻水と鼻詰まりがひどく、鼻呼吸が全くできなくなっていて、夜も寝ていると、鼻水が、漏れ出てきて、叩き起こされてしまって、夜もしっかりと寝ることができてませんでした。
口呼吸で寝ることになるので、朝起きた時には舌が、パリパリに乾燥してしまって、すごく辛かったです。
約2年くらい、耐えてきましたが、あまりにもひどかったので、意を決して、病院に行くことにしました。

病院

病院に行くと、薬を貰えるくらいかなと気軽に思っていましたが、診断2秒で、重症化しているので、手術を受けてくださいと言われて、紹介状を書いてもらいました。

紹介先の大きな病院で再度CTなどを取ってもらって、診断してもらいました。
内容は鼻の中にポリープが生えてしまっているので、それが、鼻の中を塞いでしまっていて、蓄膿もひどい状況ということでした。
手術するなら5日間入院することになりますと言われました。

ただ、色々説明の食い違いがあったので、不信感を抱いて、評判良さそうな、症例数が多い、別の病院を調べてそちらに行くことにしました。

病院2

診断内容は概ね前の病院と同じ診断内容でした。しかし、手術の流れ、リスク、お金(大事!)の説明をしてくれたのが、全然違いました。そして、重症化している症状を和らげる薬をもらいましたが、これが、すごく効果があって、2年ぶりくらいに安眠できました。(感動)
ただこの薬は長期使用はできないので、この薬が切れると、また、鼻が詰まっていきました。それでも最初よりも状況はマシになりました。

それから、手術の詳細な流れやリスクを説明を受け、手術まで気長に待つことにしました。

手術日の日程

手術は日帰りで行えますが、術後2-3日は絶対安静になるので、金曜日に受けて、土日休んで、月曜会社に出社するという予定にしたかったので、金曜日に受けることにしました。

手術当日

当日は指定時間以降は絶食、絶水の指定が、ありました。そして、昼から手術が始まりました。
体はロックされ、点滴を設置され、顔面には鼻と口以外を覆う布を覆い被され、手術されているときは、正直何をされているのかわかりませんでした。
特に我慢できない痛みというのは全然なかったです。
何時間かかったのかわかりませんでしたが、終わりましたよと言われて、手術が終わりました。終わってみれば、あっという間でした。
手術中は痛くなかったので、やっと終わったくらいにしか思っていなく、完全に手術を舐めていたと思います。

立ちあがろうとしましたが、足元がふらつき、一人では支えることができず、かなり気分が悪かったと思います。声も一時的に出なくなっていました。(口呼吸で乾燥し切っていたため、舌が全然回らなかったため。)

術後の休憩室

以前より説明があったように、術後は専用のふかふかのリクライニングソファで休憩してから、帰宅する流れでした。
このとき、何時間か休憩したら、体調が回復してきたので、看護師さんが、術後の説明をしにきてくれました。

ただ、最初は大丈夫だったのですが、説明用の紙の文字を見ると、体調がすごく悪くなってしまいました。
気分がすごく急に悪くなり、意識を持ってかれそうになりました。

看護師さんの説明によると、低血圧の人は手術中の鎮静剤で血圧が安定しなくなるという説明を受け、しばらく、また、血圧が安定するまで、休憩をすることになりました。

術後しばらく経つと、鼻がすごく痛くなってきます。(結構痛いです!!!)

このとき、自分が、歯医者感覚で手術を受けに来ていた自分を後悔しました。

帰宅

帰宅後はスカイプでお医者さんから容体について、質問されます。(手厚いサポート)
術後は鼻から出血するので、5~15分くらいで鼻の綿球を自分で交換することになります。
実際5分に一回は変え続けることになりました。

このとき病院側の説明では今夜はすごくしんどいですよということを伝えられました。
めちゃくちゃ辛かったです。
鼻がすごく痛く、体も気だるく、鼻血もずっと出続けます。
1,2時間くらいで出血止まるかと勝手に思ってましたが、1日後も出血し続けます。
そのため、当日は出血と鼻の痛みで寝れませんでした。

鼻の状態が良くなかったので、一回の手術で終わらなかった場合、もう一度別日に手術することになりますと事前に説明を受けていましたが、無事一回で終わったので、2回目は無くてよかったと、このとき、心の底より思いました。

翌朝

病院に行って、鼻の奥に入れてあるものを抜いてもらいに行き、飲み薬をもらいました。
このとき、鼻の痛みはほとんどなくなっていました。ただ、鼻の出血は少なくなっていましたが、止まってはいなかったです。
体の調子は、病み上がりみたいな感覚になってました。
ただ、昨日があまりにも辛かったので、結構心が折れかけました。

術後1週間

術後1週間以内は鼻が完全に詰まり、鼻血が出て匂いも無くなるので、術前より状況は悪くなります。
頑張って1週間耐えないといけないです。
この状態で仕事をしないといけないので、結構辛いです。
5日ほど経つと状況は緩和されていき、この頃から、匂いがするようになってきました。

術後1週間後

かなり状況が良くなり、この時点で病院にいきます。
鼻の匂いは完全に回復していました。
病院に行くと鼻の中をきれいにしてもらえました。
そして、鼻うがいが始まりました。

鼻うがい

鼻うがいは、術前は鼻が詰まってできなかったのですが、鼻が通るようになったので、できるようになりました。鼻の中に溜まっている血の塊が出て、すごく気持ちいいです。
慣れれば簡単にできるようになるので、特に難しくありませんでした。

感想

術前は完全に鼻呼吸ができず、睡眠もろくにできてなかったので、現在は完全に鼻が通り、呼吸ができるようなったので、やってすごくよかったです。
術後は1週間耐えないといけないですが、それさえ乗り切ればあとは天国になります。
お医者さんには感謝しかないです。

ただ、検査の結果、好酸球が多いので、また再発するかもしれないですとはお医者さんに言われましたが、また、再発したら、こちらのお医者さんに診てもらおうと思ったので、そこまで不安にはならなかったです。


体験談は以上で終了です。
(この記事は体験談なので、詳細は必ずお医者さんの指示に従って下さい。)

svelte typescript viteを始める

状況

SvelteとViteでアプリを作ってみた! | アシアルブログ

medium.com

npm run devで以下のエラー

failed to load config from /*****/vite.config.js
error when starting dev server:
file:///********/node_modules/@sveltejs/vite-plugin-svelte/dist/index.js:245
import { createMakeHot } from "svelte-hmr";
         ^^^^^^^^^^^^^
SyntaxError: The requested module 'svelte-hmr' is expected to be of type CommonJS, which does not support named exports. CommonJS modules can be imported by importing the default export.

解決策

https://issueexplorer.com/issue/sveltejs/vite-plugin-svelte/104#2236005
nodeが古いみたいなので更新したら無事解決
v14.9.0 -> v17.3.0

IntelliJ IDEAでTODOがハイライトされない時

現象

IntelliJ IDEAで設定では正しく設定されているのにTODOがハイライトされない。
単純に再起動してもうまくいかない。

解決方法

1.
プロジェクトを作るとそのルート直下に.ideaフォルダが作られ、設定関連のファイルが作られますが、.ideaフォルダを削除します。(設定が削除されるので大切な場合はここで引き返してください。)

2.
エディタのプロジェクトブックマークからもプロジェクトを削除します。
f:id:TAKOYAKING:20210920034415p:plain

3. エディタを再起動します。

まとめ

普通に再起動だけだとうまくいかなかったけど、この手順ならうまくTODOが表示されるようになりました!

Unity: 使わなくなったプロジェクトのLibrary配下のキャッシュを削除してみる

やりたいこと

Macの容量がいっぱいになってきたので使用していないUnityプロジェクトのキャッシュを削除して、Macの空き容量を増やしたかった。

やること

  • UnityプロジェクトのLibrary/BuildCacheを削除してみる
  • 他の大きいcacheも削除してみる

原因・考察

Addressablesを使用しているUnityプロジェクトの容量が他のプロジェクトと比べて10倍程度大きくなっていたので、原因を見てみるとUnityプロジェクトのLibrary/BuildCacheが大半を占めていることがわかった

準備

  • gitignoreでcache関連は除外されていることをご確認ください。
  • 不安な方はバックアップをとっておいてください。

効果

約18GB程度削除することに成功しました!
Macの書類の容量が減ることを確認しました!

Macで容量の「その他」が400GBくらい占有していたので掃除した

状況

iMacのディスクの中身が「その他」が400GBくらい占めていて、容量の警告が出てしまっていた。

やったこと

Xcode関連のファイルを削除

[Xcode 8.2] 年末なので Xcode まわりの不要ファイルを一掃してみた | DevelopersIO
MacでiOS開発してると圧迫されるストレージを大幅に削減する方法 | e-JOINT.jp

steampuppet.page.link
アプリを開発していて、何回もリリース作業を行なっていたので、気づいた時にはxcodeのarchiveにたくさんビルドしたものが残ったままになっていました。
かなり削減できました。

・ダウンロードフォルダの削除

思い切って全部削除!(一応必要なものが残っていないか確認を!)

・ゴミ箱の削除

すごいゴミがありました!

結果

この時点で200GBくらいの「その他」になったので半分になりました。

感想

減りましたが、まだあと100GBくらいは削減したいです。つづく・・・

FirebaseのUPMでの提供が終了したので.unitypackgeに移行したら罠にハマった

状況

UPM (unity package manager)でのfirebaseの提供がなくなったために、移行作業をする必要がありました。
.unitypackgeで導入する方法に切り替えましたが、大きく罠にハマりましました。

.unitypackageで提供されるものとUPMで提供されるSDKは若干中身が違っています。
違っているところは
.unitypackageではawaitに対応していません。(asyncキーワードがついていないので、実機ではエラーはでませんが、visual studioでは赤い波線が出て、補完も効かなくなります。)
なので

await db.Collection(PATH).Document(ID).UpdateAsync(name, value);

でawaitすることができなくなります。代わりにcontinuewithを使うことになります(拒否したい)。

解決策

qiita.com
この記事にやり方が書いてありました。
.tgzのファイルをUPMで管理するというやり方のようです。
この.tgzの中身と従来のUPMの中身は同じみたい(未確認)?なのでawaitも書けるし、UPMで管理できるし、いいこと尽くしです。

いろいろ機能を追加して、焦っていたところに、awaitが書けなくなるという罠にハマっていたので、助かりました。