「Webサイトなんて、どのブラウザで見ても同じ」 「X(旧Twitter)のアプリ内でリンクを開いたら、なぜかログインを求められた」
こんな経験はないでしょうか。
実は、私たちが日常的に使うWebブラウザは、その「心臓部」が全く異なり、機能にも大きな差があります。知っているようで知らない、ブラウザの「裏側」を覗いてみましょう。
Microsoft Edge、Opera、Braveといったブラウザは、実は中身がGoogle Chromeとほぼ同じです。
これらはすべて「Blink」という、Googleが開発した心臓部(レンダリングエンジン)を使っています。今やWebの世界は、このBlink系にほぼ支配されています。
開発者にとっては、対応すべきブラウザが減って楽になりましたが、見方を変えればWebの多様性が失われつつあるとも言えます。
一方、AppleのSafariだけは「WebKit」という独自エンジンを頑なに使い続けています。
このWebKitの「解釈」が、Blink系とは微妙に異なります。CSSの解釈がより厳密だったり、独自のクセがあったりします。
Web開発者が最後に直面する「Safari(iPhone)でだけ表示が崩れる」という問題の原因は、ほとんどの場合、このエンジンの違いにあります。
W3C(World Wide Web Consortium)という団体が、「Webの標準ルール」を決めています。設立したのは、Webそのものの発明者であるティム・バーナーズ=リー氏です。
もしW3Cがなければ、GoogleやAppleが好き勝手な独自仕様を作り、Webは「Chrome専用サイト」「Safari専用サイト」だらけになっていたかもしれません。
「Webは一つであるべき(One Web)」という理念が、今もWebの統一性を守っています。
現代のブラウザは、単にページを表示するだけではありません。
データをPCに保存し(LocalStorage)、ログイン状態を記憶し(Cookie)、サーバーと裏側で通信し(Fetch API)、さらにはカメラや位置情報まで扱えます。
GmailやGoogle Maps、Figmaのような高度なアプリがインストール不要で動くのは、ブラウザが単なる閲覧ソフトではなく、アプリケーション実行基盤(OSのようなもの)に進化したからです。
アプリ内でリンクを開いたときに出てくるあの画面は、「WebView(ウェブビュー)」と呼ばれる機能が大幅に制限された「簡易ブラウザ」です。
これは、私たちが使うChromeやSafariとは完全に隔離されています。だから、普段ChromeでAmazonにログインしていても、LINEアプリ内のWebViewで開くと「未ログイン」状態になるのです。
これはバグではなく、セキュリティのための仕様であり、アプリからユーザーを離脱させないための一時的な「窓」に過ぎません。
ReactやSvelteKitといった最新のWebフレームワークは、ブラウザが「小さなOS」(フル機能)であることを前提にコードを作ります。
この「フル機能前提」のコードを、機能が制限された「簡易ブラウザ (WebView)」で動かそうとするとどうなるでしょう?
WebView側にはLocalStorageなどの必要な機能が存在せず、JavaScriptがエラーを起こして停止。これが、「アプリ内だと表示が崩れる・バグる」の正体です。
フレームワークの「書き方」や「お決まりのコード」は、これからAIが瞬時に生成してくれるようになるでしょう。
その時、人間に残される価値は何でしょうか。それは、「なぜWebViewでは動かないのか」「AIが作ったコードの何が問題なのか」を判断できる能力です。
AIに適切な指示を出すための「原理・土台」の理解こそが、これからのエンジニアの本当の価値になります。
ブラウザは単なる「窓」ではなく、それぞれ異なるエンジンと思想を持つ「プラットフォーム」です。そして、アプリ内ブラウザ(WebView)は、その機能が意図的に制限された、全く別の環境です。