#Firebase ExtensionsのResize Imagesを利用する際の注意点!#
Resize Imagesを使用した際に、幾つか考慮しないとまずい点があったので記載しておく。
利用方法は他の方の記事にまとめられているので、そちらを参照。
https://qiita.com/giiiita/items/d918911bf6effcdf38a8
https://qiita.com/butter/items/2194a776f55023ccd485
##①適用される保存形式に関して##
適用されるのは当然の事ながら、imgファイルのみになる。
model.vrmのようなファイルをアップした場合、画像ファイルではないので、model_100x100.vrmのようなファイルは当然生成されない。
##②Deletion of original fileに関して##
ファイルを自動的に削除するか?の選択で、ここでNoを選択すると、元ファイルは削除される。
例えば、
img.pngをアップしてimg_100x100.png等の縮小したファイルを保存する設定にしてる場合、Noの場合はimg.pngが削除されimg_100x100.pngだけが残ることになる。
一見、こちらの方がストレージ内のファイル容量の肥大化を防げて良さそうに見えるが、どんなファイルの元ファイルも削除されてしまう事に注意!
例えば、
model.vrmのようなファイルをアップした場合、model_100x100.vrmのようなファイルは生成されない(①参照)のだが、model.vrmファイルまで削除されてしまう事になる。
この場合のエラーは、アップされた筈のファイルが存在してない様に見えるので、どのレイヤーでのエラーか分かりにくくもなり厄介。
##③Cloud Functions locationに関して##
基本的な事だが、locationは後から変更できないので、コンソールから拡張機能を再編成のボタンを押してもここは変更できない。
これに関しては再編成する際にfunctionをアップし直してる様な動作をしてるので、今後は対応されるのかもしれない。
##④Cloud Storage bucket for imagesに関して##
デフォだとバケット単位でしか選べなくて、全てのファイルに適応されてしまう。為①、②のような問題が発生してしまう事になる。
##⑤作成速度に関して##
当然の事だが、やはり僅かだがレイテンシはある。
例えばアトミックな処理を行っており、エラー時は削除などの場合は生成中の可能性もあるので注意した方が良い。
##⑥アップ時の拡張子に依存してリサイズされる##
例えば、img.pngというファイルがあり、img.jpgという拡張子に偽装してアップした場合、
バックエンドで何もしてなければ、CloudStrage上でもimg.jpgという偽装されたpng形式のファイルがアップされる訳だが、
この場合リサイズされたファイルはimg_100x100.jpgとなりjpg形式として保存される。
つまり、img.jpg(pngの拡張子偽装)アップ後のストレージの中身は
img.jpg(pngファイル)
img_100x100.jpg(jpgファイル)
という事になり、リサイズ後はアップ時の元ファイルの拡張子によって決まる。
例え偽装していても画像ファイルのバイナリコードではなく、アップ時の拡張子で決まってしまう点に注意。
以上、Firebase ExtensionsのResize Images利用時は非常に便利な機能だが、利便性と引き換えに守るべきルールがあるので、上記の点を考慮したほうが良い。