Firebase Dynamic Linksサポート終了アナウンス（現時点非推奨）と代替方法を言及してみる

## はじめに

ディープリンクをラップして利用しやすくしてくれていたFirebase Dynamic Linksが急遽非推奨となりました。
2023年5月17日に発表

```引用
ダイナミックリンクに関するよくある質問

bookmark_border
Firebase Dynamic Links は新しいプロジェクトには推奨されなくなりました。将来、Dynamic Links サービスは終了しますが、発表日から少なくとも 12 か月以内に移行してください。 2023 年第 2 四半期の終わり頃に、さらなる情報を発表する予定です。

私たちは約 7 年前、さまざまな OS やプラットフォームでサポートの程度が異なっていた当時、URL をより強力にする (たとえば、実行時の条件に基づいてリンク先を動的に変更する) ためにダイナミック リンクを立ち上げました。私たちは、あらゆる規模のアプリ チームがディープ リンク エクスペリエンスを向上できるようにすることの重要性に引き続き取り組んでおり、開発者によるApp LinksやUniversal Linksなどのテクノロジーの導入を支援する方法を調査しています。

どれくらいの期間移行する必要がありますか?
移行をできるだけスムーズにしたいと考えているため、完全に移行するには少なくとも 12 か月かかります。 2023 年第 2 四半期の終わり頃に詳細をお知らせいたします。

新しいリンクと既存のリンクは引き続き機能しますか?
はい、新しいリンクと既存のリンクは、Dynamic Links サービスがシャットダウンされるまで引き続き機能します。 2023 年第 2 四半期の終わり頃に、Firebase Dynamic Links の長期計画に関する詳細情報を提供する予定です。
```

引用元：https://firebase.google.com/support/dynamic-links-faq?authuser=0&hl=ja

## 影響について
多くの有名どころのアプリはFirebase Dynamic Linksを使ったディープリンクを実装していると思うので、修正コストなど増えると思います。しばらくは使えるようなのでアナウンスがあるまでは様子見というところでしょうか。

## そもそもディープリンクとは
特定のアプリの指定ページに遷移させるURLを使った機構です。またはそれらを使った総称です。
iOSは[Universal Links](https://developer.apple.com/ios/universal-links)でAndroidは[App Links](https://developer.android.com/studio/write/app-link-indexing)という機構がデフォルトであるためディープリンクは実装可能です。(公式ページ参照)
URLスキーム（httpなど）を使い、特定のアプリの指定ページに遷移させることができます。URLスキームはカスタムでも可能で例えばhogehoge://hoge/hogeのように「hogehoge://」のように使うことができます。
ディープリンクはiOS,Android共にクセがあり実装のコストもあります。

## ディープリンクを使ったユースケース

ディープリンクは以下の目的で利用されます

- スマホのWebViewまたはWebブラウザ内のリンクから特定のアプリの指定ページに遷移させる
- 特定のアプリのボタン（ネイティブ）の遷移先が特定の別アプリの指定ページに遷移させる
- OAuthなどの認証でWeb側でログイン認証してアプリにコールバックでアプリに遷移させる

## ディープリンクのでデメリット
- 競合
標準のディープリンクを使った場合、他の関係のないアプリが同じURLスキームの場合に起動対象になります。その場合はユーザが個別にどのアプリかを指定する必要があるため、リテラシーが低いユーザの場合、意図しないアプリを立ち上げて目的を達成できない可能性があります。

- アプリがインストールされていない
アプリがインストールされていない場合にストアに遷移してインストールしたら指定のページに遷移などができません。

## ディファード・ディープリンクとは
ディファード・ディープリンクは、デフォルト挙動と違い、アプリをインストールしていない（あるいは端末からアンインストールした）ユーザーに対してアプリストアのアプリページに遷移し経由させたうえで、アプリケーション内指定のページコンテンツを表示させるシステムです。

たとえば、アプリ未インストールのユーザーが、何か商品の広告をクリックした場合、まずApp StoreやPlay Store、その詳細情報を表示するWebサイトへと誘導されます。その後、ダウンロードを促されインストールまで終えると、あらかじめ指定しておいたアプリ内ページにそのまま遷移することになります。

アプリがインストールされていない場合、インストールの導線にもなるため企業であればアプリインストールのため（売り上げ向上のため）必須で実装したいところです。

## Firebase Dynamic Linksのメリットとは
FirebaseはiOS,Android共に利用でき共通の管理画面で管理することが可能です。ディファード・ディープリンクにも対応しています。個人的にはそれが一番大きなメリットだと思います。

## Firebase Dynamic Linksを使わないでディファードを自力で実装できる？
ここはちょっと自信がないのですが、似たような挙動（アプリがない場合はストアに遷移など）はできてもFirebase同等のディープリンクはおそらく自力は無理なのでは？と思ってます。（間違っていたらすみません）

## 代替サービスは？
いくつかディファードもできるサービスはあるようです。（ということは自作も可能？または提携）
個人的に使ったことがあるサービスはAdjustです。
https://help.adjust.com/ja/article/deep-linking-android-sdk

## Googleからアナウンスがあるまではどうしたらいい？

- 既にFirebase Dynamic Linksを実装している場合
公式よりアナウンスがあるまでは利用も突然使えなくなることはなさそうなので今年の夏あたり（2023 年第 2 四半期の終わり頃）のアナウンスまで待つのが無難と思います。

- これからFirebase Dynamic Linksを実装しようとしていた場合
Firebase Dynamic Linksを実装またはデフォルトのディープリンクを実装またはAdjustのような代替サービスの利用となりますが、個人的にはFirebase Dynamic Linksを実装で良いのではと思ってます。

## Firebase Dynamic Linksの次は？

公式のアナウンスにもある通り、今後について発表があるとのことなので、単に使えなくなるので自力で実装してくださいということにはならないと思います。おそらくFirebase上で別のサービスとしてFDLよりも気の利いた機能をつけてサポートされるのではないでしょうか。しかし公式よりサービス終了をアナウンスしているため、アップグレード版というイメージではないはずです。新規で提供される場合は、実装方法も大きく変わる可能性があるのかなと思ってます。
```
2023 年第 2 四半期の終わり頃に、Firebase Dynamic Links の長期計画に関する詳細情報を提供する予定です。
```

## 終了日時のアナウンス　※更新2023/8/18

FirebaseのDinamic Linksページに非推奨の旨と、さらっと廃止予定日も記載されていました。
2025年8月25日のため二年間のバッファー期間が担保されています。しばらくはFirebaseで乗り越えて、半年前あたりからの検討でも良さそうですね。2年は大分良心的な対応期間を設定してくれてるなという印象です。

![firebase.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109862/5dc0a1c2-2572-6349-fc7f-f5b4d79616de.png)

## 公式より移行先のアナウンス ※2023/11/23

移行先は独自にGoogleが用意するわけではなく、他社製品を押してますね。意外な展開でしたね。

![ikou.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109862/9d22020e-ff77-c4c8-104c-bbd4d9e4dce2.png)

https://firebase.google.com/support/dynamic-links-faq?hl=ja#how_should_i_migrate_from_the_service

記載の通り、Adjust、AppsFlyer、Bitly、Branch、Kochava、などのディープリンク サービス プロバイダが候補としてお勧めされています。

## 最後に
まだ2年近いバッファがありますが、2025年8月25日までに移行しましょう。新規でサービスを利用する場合は選択肢から外しましょう。