WebViewとは?WebViewの仕組みからテスト方法まで徹底解説
こんにちは。MagicPod カスタマーサクセスのIshiiです。
スマートフォンアプリ開発では、ネイティブアプリとWebコンテンツを組み合わせるケースが増えています。そのようなハイブリットアプリを実現する代表的な仕組みが「WebView」(ウェブビュー)です。
本記事では、WebViewの基本から活用シーン、さらには見分け方やテストのポイントまでを詳しく解説します。
目次
「テスト自動化を導入したいけど、やり方がわからない」
そんな課題を抱える企業は決して少なくありません。
MagicPodでは、実際の現場でどのように課題を乗り越え、成果を出してきたのかをまとめた事例集をご用意しています。
今すぐ無料でご覧いただけますので、ぜひご活用ください!
\ MagicPodの活用事例集を今すぐ入手 /
資料を無料でダウンロードするWebView(ウェブビュー)とは
WebView(ウェブビュー)とは、モバイルアプリ内でWebコンテンツを表示するための仕組みです。簡単に言えば、アプリの中に埋め込まれた小さなブラウザのような存在です。
ネイティブアプリの枠組みの中に、HTML、CSS、JavaScriptで作られたWebページを表示できるコンポーネントで、iOS では WKWebView、Android では WebView クラスとして提供されています。
開発者はこの機能を使うことで、アプリストアでの審査やアプリの更新を待つことなく、サーバー側でコンテンツを変更・更新することが可能になります。
ネイティブアプリの操作感とWebコンテンツの柔軟性を同時に活かせるため、多くのアプリで活用されています。
WebViewの使い所
WebViewは「頻繁に更新が必要」「外部サービスを統合したい」といったシーンで特に力を発揮します。
以下に代表的な利用例を挙げます。
- 利用規約・プライバシーポリシーの表示
法的文書は頻繁に更新される可能性があるため、WebViewを使用することでアプリを更新せずにコンテンツを変更できます。 - ヘルプ・FAQ画面
検索機能や階層的なナビゲーションが必要なヘルプコンテンツに最適です。 - ニュース記事・ブログコンテンツ
テキスト中心のコンテンツで、豊富な装飾やレイアウトが必要な場合に適しています。 - 決済画面の統合
PayPalやStripeなど、外部決済サービスの画面をアプリ内で完結させたい場合に使用されます。 - ソーシャルログイン
Google、Facebook、Twitterなどの認証フローをアプリ内で実現するために活用されます。 - サードパーティサービスの組み込み
チャットボット、地図サービス、動画プレイヤーなど、外部サービスのUIをアプリに統合する際に使用されます。
この記事の執筆にあたり、WebViewが使われているかという観点で普段使っている様々なアプリを触ってみたのですが、私が使っているアプリの8割以上ではWebViewで構築された画面が組み込まれていました。特に利用規約などのポリシー系やヘルプコンテンツは特にWebView率が高いです。
このように部分的にWebViewで構築されているハイブリットアプリは多く存在します。さらに最近では、ほぼ全てをWebViewで構築する「ガワアプリ」と呼ばれるアプリも増えてきています。
最近増えている「ガワアプリ」とは
最近は、いわゆる「ガワアプリ」と呼ばれるアプリも増えています。ガワアプリとは、アプリの外枠(ガワ)だけをネイティブで作り、中身はほぼWebViewで構築されたアプリのことです。
ガワアプリには以下のような特徴があります。
短期間でリリースできる
既存のWebサービスを流用できるため、ゼロからネイティブアプリを開発するよりもスピーディにリリースできます。
開発コストを抑えられる
Android、iOS向けに個別の開発を行わず、Web資産をそのまま活用できるので、コスト削減が可能です。
アップデートが容易
アプリのバージョンアップを行わなくても、サーバー側のWebコンテンツを更新するだけで最新状態をユーザーに届けられます。
一方で、ガワアプリにはユーザー体験やネイティブ機能との連携、ストア審査で却下されるリスクなど課題もあります。
WebViewの仕組み
WebViewはiOS、Androidともに公式でサポートされています。
iOSではWKWebViewが標準的に利用されます。iOS 8以降で導入されたWKWebViewが標準のWebViewコンポーネントです。
AndroidではWebViewクラスを使用してWebコンテンツを表示します。Android System WebViewとして独立してアップデートされ、Chromiumエンジンをベースとしています。
FlutterやReact Nativeなどのマルチプラットフォームアプリでも、WebViewで画面構築を行うためのライブラリが提供されています。
例えばReact Nativeであればreact-native-webviewが公式にサポートされています。
iOS・Android両プラットフォームでWebViewを統一的に扱うことができ、JavaScriptとネイティブコード間の双方向通信も可能です。
Flutterの場合はwebview_flutterパッケージが同様の機能を提供しています。
例えばReact Nativeでは、このようなコードでWebViewを用いた画面構築を行うことができます。
WebView画面の見分け方
モバイルアプリのコーディングをしないQAエンジニアなどにとって、「この画面がWebViewで構築されているか」の判断は難しいかと思います。ここではMagicPodで確認できるUIツリーでWebViewで構築されている部分(以後WebView要素と呼びます)を見分ける方法を紹介します。
WebView要素が存在する場合、この画像のようにUIツリー上に”WebView”が含まれた要素が存在します。こちらの例はAndroidですが、iOSでも同じように”WebView”が含まれた要素が存在します。
WebView画面をテストする
WebView画面をテストする際の注意点として、WebView内のコンテンツは通常のネイティブ要素とは異なる扱いになるという点が挙げられます。WebView要素を操作するには、コンテキストの切り替えが必要になることがあり、通常のネイティブアプリのテストとは異なるアプローチが求められます。
MagicPodではWebViewをスキャンというオプションを用意しており、WebView要素をHTMLとしてスキャンし、その要素をロケーターとして用いることができます。このオプションを用いることで、安定したテスト実行が可能です。
MagicPodでは「WebViewをスキャン」で取得した要素を指定するだけで、コンテキストの切り替えを意識せずともテスト実行を行える点をお褒めいただくことが多いです。
WebViewのテストについてはいくつか注意点がございますので、詳しくは以下ヘルプページをご参照ください。
参考ヘルプページ:WebViewのテストについて
また、WebViewがメインのアプリでは、主なテストはWeb側で行い、モバイル特有の機能のみモバイルアプリ用のテストツールを用いてテストしているケースも多くあります。
WebViewアプリをブラウザテストでカバーしているお客様の事例をぜひご覧いただけると嬉しいです。
▼お客様事例
GMOメディア株式会社様:1人で30コンテンツの品質管理を実現するためMagicPodを導入。実行回数も検知の幅も7倍に増加し、理想的なテスト体制を構築
最後に
WebViewとは、モバイルアプリ内でWebページを表示する仕組みであり、ハイブリッドアプリの開発に広く利用されています。
MagicPodを用いることで、WebViewで構築されたモバイルアプリ画面のテストを簡単に自動化することができます。
また、ブラウザテストとモバイルテストを組み合わせることで、Web側・モバイル側の両方を効率よくカバーし、テスト工数を削減しつつ品質を高めることが可能です。
「当社のモバイルアプリは自動化できるだろうか?」というざっくりとしたご相談も大歓迎です。
もしMagicPodが気になった方は、ぜひお気軽にお問い合わせください!
https://magicpod.com/consulting/
\ MagicPodのの紹介資料を今すぐ入手 /
資料を無料でダウンロードする