コンピュータの世界で「リンク」というと、次の2つが頭に浮かびます。
- ウェッブページのハイパーテキスト
- ファイルシステムのファイル(ディレクトリ)リンク
しかし、携帯端末で稼働するモバイルアプリでは、また別の意味を持ちます。
モバイルアプリの「リンク」とは「アプリから同一端末内の他アプリを呼び出すこと」です。
3つの種類に分類されているので、違いと特徴をここに整理します。
モバイルアプリのリンク
携帯端末で稼働するモバイルアプリにおいて「リンク」とは、「アプリから同一端末内の他アプリを呼び出すこと」です。
例えば以下は、名刺管理アプリからカメラアプリを呼び出して、顔写真を名刺データへ追加しています。

特に新しい技術ではなく、Androidは登場した当初から「リンク」の仕組みを持っています。
「アプリコンポーネントの連携」が「リンク」です。
※詳細は「アプリケーションコンポーネント(App component)」を参照
呼び出しは、Intentオブジェクトへ呼び出したいコンポーネントの「Action、Category、Data(URI)」を指定し、システムへ要求すれば、該当のコンポーネントが起動されます。
この「リンク」ですが、3つの種類に分類されています。ただし、種類と言っても全くの別物ではなく、図のような集合関係にあります。

Deep Links
「Deep Links」は様々なスキームをURIへ指定するリンクです。
スキームの違いで、リンク先のアプリが変わります。

カスタムSchemeを定義して、ユーザー独自の呼び出しを行うことも可能です。
「Deep」が付く理由は、アプリのトップベージではなく、公開されていればアプリ内の任意のページを呼び出せるためです。
Web Links
「Web Links」は、Deep Linksの中でスキームhttp/httpsをURIへ指定するリンクです。

スキームがhttp/httpsですから、当然、呼び出されるアプリはウェブブラウザ―になります。
リンクのセキュリティ
リンクの問題点は、同じSchemeに対応して複数のアプリが設定できる点です。
例えば、あなたが開発したアプリをhttpsに対応するアプリに出来ます。そのように、AndroidManifest.xmlへインテントフィルターを定義するだけです。
カスタムSchemeであっても同じで、何の制限もありません。
リンクにおいて、同じSchemeに対応して複数のアプリが存在する場合、システムはアプリのリストを提示して、ユーザーに利用するアプリの選択(アプリチューザー)を求めます。

この時、「悪意のあるアプリ」や「セキュリティの低いアプリ」を選択してしまうと、リンクのセキュリティは崩壊します。
リンクの傍受


App Links
「App Links(正式にはAndroid App Links)」は、Web Linksの中でアプリとWebサイトの所有者が同じ場合に、実行するすことが可能なリンクです。
「同じである?」の検証結果が偽ならば、実行できません。
また、Webサイトへ接続するアプリが一意に定まる(Webサイトがアプリを指定する)ので、アプリチューザーが開くことはありません。リンクを行うと直ちに目的のアプリが呼び出されます。

このような条件を設けることにより、リンクのセキュリティの崩壊が回避できます。
ですので、Web Linksを行う場合は、App Linksにすることが推奨されています。
関連記事:
