Android アプリ内でウェブ コンテンツを使用する

Android では、アプリ内でウェブの機能を活用できます。そのため、特定の種類のコンテンツを表示できる柔軟性と効率性のメリットを享受できます。

これにより、既存のウェブ コンテンツを Android アプリにシームレスに統合できます。たとえば、ニュース フィードの表示、インタラクティブなチュートリアルの表示、広告の表示、ミニゲームのホストなどを、すべてをゼロから構築することなく実現できます。アプリ内からインターネットにアクセスするためのウィンドウと考えることができます。アプリにウェブ コンテンツを埋め込む方法は 2 つあります。

  • WebView: UI のカスタマイズや更新に高い柔軟性が必要な場合に、管理するウェブ コンテンツをインラインで表示します。
  • Custom Tabs: ユーザーのデフォルト ブラウザ(ブラウザのサポートをご覧ください)を利用した、アプリ内での完全なブラウジング エクスペリエンスです。ユーザーがリンクをクリックしたときに、外部ブラウザに移動するのではなく、アプリ内にとどまるようにしたい場合に使用します。ブラウジング エクスペリエンスの大部分は、すぐに利用できます。
Google Play で開いた Android アプリ。メインのウェブビューがハイライト表示されている。 Android デベロッパー向けウェブページが開いたカスタムタブがハイライト表示されている。
図 1. `WebView`(左)と `Custom Tab`(右)の概要を示します。

ウェブ コンテンツを埋め込む理由

アプリにウェブ コンテンツを埋め込むことには、次のようなメリットがあります。

  • 効率性: ウェブサイトの既存のコードを再利用します。既存のウェブ技術とコンテンツをベースに構築する。
  • 統合: アプリ内で、メディアや広告などのサードパーティ プロバイダの外部コンテンツを使用します。
  • 柔軟性: 事前定義された UI に制約されることなく、またアプリのアップデートをリリースすることなく、コンテンツを動的に更新できます。

ウェブ コンテンツを使用するタイミング

Android アプリでウェブを使用する主なユースケースは 3 つあります。

1. ウェブ コンテンツをメイン コンテンツまたは補助コンテンツとしてアプリに埋め込む: WebView を使用します。

  • UI のカスタマイズや更新に高い柔軟性が必要な場合に、独自のウェブ コンテンツをインラインでメインのエクスペリエンスとして表示する。
  • 広告、法的条項、規則、その他の第三者のコンテンツなどの他のコンテンツを、インラインで、またはアプリ エクスペリエンス内のウィンドウとして表示する。
Google Play が開いている Android アプリ。メインのウェブビューが赤いボックスでハイライト表示されています。 Android アプリが開き、赤いボックス内にサポート テキストが表示されている。
図 2. アプリ内に埋め込まれたウェブ コンテンツ。`WebView`がメイン コンテンツ(左)と補助コンテンツ(右)として表示されています。

2. Custom Tabs を使用したアプリ内ブラウジング、またはより高度なユースケース向けの WebView

  • ユーザーがリンクをクリックしたときに、外部ブラウザに移動するのではなく、アプリ内にとどまるようにしたい場合に、完全なアプリ内ブラウジング エクスペリエンスを提供します。
    • 注: タブレットや折りたたみ式デバイスなどの大画面デバイスでは、アプリが追加のスペースを活用できるように、追加のオプションが用意されています。
    • アプリは、隣接するマルチウィンドウ エクスペリエンスを起動して、分割画面でウェブリンクを開くことができます。これにより、ユーザーはアプリとブラウザを同時にマルチタスクで使用できます。または
    • Custom Tabs には、同じタスク内で、既存のアプリ コンテンツの横に開くことができるサイドパネル オプションがあります。
  • Custom Tab は、Custom Tabs をサポートするブラウザの場合、ユーザーのデフォルトのブラウザによって動作します。
    • WebView を使用して、高度にカスタマイズ可能なアプリ内ブラウジング エクスペリエンスを提供することもできますが、ユーザーがブラウザでウェブリンクを開くときに、すぐに使えるブラウザ エクスペリエンスとシームレスな移行を実現するには、Custom Tabs をおすすめします。
左側の赤いボックスにアプリ内リンクが表示されたウェブページと、右側に表示されたアプリ内ブラウザ。
図 3. アプリ内リンクをクリック(左)して、アプリ内ブラウザを開く(右)。

3. アプリ内のログインまたは認証フロー

Android で推奨されるアプローチは、認証情報マネージャーを使用してログインフローまたは認証フローを構築することです。これらのエクスペリエンスで埋め込みウェブを使用する必要がある場合は、次のガイダンスを使用してください。

  • 一部のアプリでは、WebView を使用して、アプリ固有のユーザー名とパスキー(またはパスワード)の使用など、ユーザーのログインフローを提供しています。これにより、デベロッパーはプラットフォーム間で認証フローを統合できます。
  • サードパーティの ID プロバイダやログイン エクスペリエンス(「...でログイン」など)にリンクする場合は、Custom Tabs を使用します。Custom Tab を起動すると、ユーザーの認証情報をサードパーティのサイトに限定して保持できるため、認証情報の保護に役立ちます。

認証に WebView を使用する方法については、WebView を使用してユーザーを認証するをご覧ください。Custom Tab を起動する方法については、Android カスタムタブの概要をご覧ください。

左側に WebView が表示されたアプリ内ログイン フィールド。 右側にカスタムタブが表示されたサードパーティのログイン。
図 4. アプリ内ログイン フィールド(左)と、
`Custom Tab` で開いたサードパーティ ログイン(右)。