WebViewの利点だけで採用してしまう案件をよく聞くため、注意すべき箇所をザックリとまとました。
WebViewは、アプリ内のオブジェクトとして、ブラウザを提供する機能です。インターネットサイトの表示、アプリ内のHTML表示などに利用できますが、端末内蔵ブラウザ同等のフル機能が提供されるわけではないです。過去、私が体験したものとしては
・OSバージョンでのHTMLレンダリングエンジンの違い
・Javascriptの対応
・ファイルアップロード/ダウンロードの制約、ファイル名
・脆弱性
・ユニコード、文字コード
などで問題が出ました。 最悪な問題としては、「WebViewはブラウザの機能を提供している」との勘違いで、ChromeやSafariと同等の仕様で作成して欲しいという無茶な依頼です。
WebViewは、Androidの内蔵ブラウザに連携すれば1時間もかからずバグもなく実装できるのですが、そもそもChromeと違うため実装不可な部分もあり、その調整に時間を掛けて揉めたあげく、「妥協」して頂くしか道が無いことが多々あります。
Androidだけでも問題ありますが、WebViewを使用する理由が、「iOSアプリの開発も並行」であることが多いため、気にしなければならない問題は基本的に倍になります。何故かというと、ブラウザ違うからです・・・(悲)
また、Android/iOSアプリをネイティブで作らない案件は、色々と考えないといけない部分が多い、ということを押さえておきましょう。
※「メリットに見える」部分しか考慮せず、AndroidとiOSを1つのソースで作れると「勘違い」するため、本来は上記の通り「倍」になるところ工数が半分しかないとか(苦笑)
※そもそも、開発環境がAndroid ・ iOS ・ Webと、フルスタックエンジニアが必要なことも忘れがちですが。
関連記事
第693回:WebView とは
Google、Android 4.3以下のWebView問題について声明を発表
Google、古いAndroid向けWebViewパッチ打ち切りについて説明
※古いバージョンには問題があります。
「AndroidシステムのWebView」を更新しよう
※新しいバージョンには問題があります。
AndroidのWebViewの脆弱性についての私的なまとめ