【Unity】スコープ付きパッケージレジストリによる Firebase SDK の提供が終了しました【Package Manager】

※コメントを元に記事を修正しました。タイトルも変えました

# 環境
- Unity 2019.4

# はじめに
Unity では、プロジェクトにパッケージをインストールする方法が2つあります。
.unitypackage ファイルから手動でインストールする方法と、Unity の Package Manager からインストールする方法です。

後者のやり方の方が、パッケージ管理が簡単で、ファイル構成もスッキリします (Assets 以下にパッケージの中身が含まれないので良きです) 。
そのため、管理したいパッケージが後者のやり方に対応しているのであれば、そちらのやり方で管理するのが良い (はず) です。

# Firebase SDK の導入方法

<!-- Game Package Registry (GPR) by Google は、Firebase SDK などのパッケージを提供しており、これにより Package Manager で Firebase SDK を管理できていました。 -->

Firebase SDK の導入方法は以下の3つがありました。
下2つの方法は、 Package Manager で管理することのできる方法です。


- **.unitypackage ファイル** [(Google APIs For Unity)](https://developers.google.com/unity/instructions#open-close-manifest)
- **.tgz ファイル** [(Google APIs For Unity)](https://developers.google.com/unity/instructions#open-close-manifest)
- **スコープ付きパッケージレジストリ** (Game Package Registry (GPR) by Google,  [こちらのサイト](https://blog.mogmet.com/unity-firebase-firestore-import/) に詳しく載っています)


# スコープ付きパッケージレジストリによるパッケージ提供の終了とその影響
Game Package Registry (GPR) by Google が、2021年5月19日でパッケージの提供を終了しました。

https://github.com/firebase/quickstart-unity/issues/1030
(↑阿鼻叫喚の Issue とコメント欄)

これにより、`スコープ付きパッケージレジストリ`を用いた方法は使えなくなりました。
既この方法で Firebase 関連のパッケージを導入しているプロジェクトには、以下の影響が出ます。



- manifest.json を弄って、新しくFirebase 関連のパッケージをインストールすることが出来ません
- manifest.json を弄って、導入済みの Firebase 関連のパッケージの別バージョンをインストールすることが出来ません (そのバージョンがキャッシュサーバーにキャッシュされている場合は、インストールできるようです) 
- 既にインストールされている Firebase 関連のパッケージについては、Package Manager からはアンインストールのみ行えます
- <font color="Red">Unity Cloud Build でビルドをする</font>場合は、Firebase 関連のパッケージをインストールすることが出来なくなったため、<font color="Red">必ずビルドに失敗します</font>

 (↑私も先日この症状になったので、記事にしました)



# 対処方法
今 (2021年5月31日現在) のところ、Game Package Registry (GPR) by Google はパッケージの提供を再開する雰囲気はないので、`スコープ付きパッケージレジストリ`を用いた管理を諦めます。代わりに `.tgz ファイル`を用いてパッケージをインストールし直します。
(`.unitypackage ファイル`を用いた方法は、後々管理が大変になるのでお勧めしません)

[導入方法(英語)](https://developers.google.com/unity/instructions#install-unitypackage)
若干躓いたので、忘れないためにアウトプット。

1. Unity メニューの Window > Package Manager を開き、対象のパッケージを削除 (Google LLC 内のインストール済みパッケージ全て) 

1. [アーカイブサイト](https://developers.google.com/unity/archive)を開き、必要なパッケージの `.tgz ファイル`をダウンロード (間違えて .unitypackage の方をダウンロードしないように！) 
この時、Dependencies にパッケージが記載されている場合は、そのパッケージの `.tgz ファイル`もダウンロードしてください
![tgz.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/246559/c09e268d-256c-82a6-4fea-b4201e6262a3.png)


1. packages フォルダと同じ階層に 「GooglePackages」フォルダを作成。ダウンロードした`.tgz ファイル`をそのフォルダ以下に移動

1. packages/manifest.json を開き、dependencies にパッケージを追加

``` manifest.json
{
  "dependencies": {
    ...,
    "com.google.external-dependency-manager": "file:../GooglePackages/com.google.external-dependency-manager-1.2.165.tgz",
    "com.google.firebase.app": "file:../GooglePackages/com.google.firebase.app-7.2.0.tgz",
    ...
  }
}
```

５. Unity Editor にて、Package Manager を開き、パッケージがインストールされていることを確認してください

(3. や 4. で指定したフォルダやパスは、インストールガイドと同じにしましたが、必ずこのフォルダ名、パスにしなきゃいけないわけではないです)

<!-- # その他
.unitypackage ファイルを用いた方法は、管理が大変になるためお勧めしませんが、もしも `.tgz ファイル`の配信も打ち切られた場合に備え、一応 .unitypackage でのインストール方法も載せておきます。


1. [公式サイト](https://firebase.google.com/docs/unity/setup) から Firebase Unity SDK をダウンロード、解凍
![download.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/246559/1b178d43-832b-2b96-e0d6-ea9e99eb3a86.png)

1. Unity メニューの Assets > Import Package > Custom Package を開き、インストールしたいパッケージ (.unitypackageファイル) を選択し、インストール
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/246559/3199a2ec-689b-5a5e-0c00-bfa8acf57fe2.png)
-->