0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Webページが表示されるまで 1

Last updated at Posted at 2025-12-11

アイキャッチ

ブラウザプロセスとナビゲーション

現代のブラウザ ( 特に Chromium ベースのもの ) は、単一のプログラムではなく、OS のように複数のプロセスが協調して動作する分散システムです。

1.1 ブラウザのマルチプロセスアーキテクチャ

ユーザーがブラウザアイコンをクリックした瞬間、
メインとなる ブラウザプロセス ( Browser Process ) が立ち上がります。

これはアプリケーション全体を統括する指揮官のような存在であり、タブ外の UI ( アドレスバー、ブックマーク、戻るボタンなど ) や、ネットワーク通信、ストレージへのアクセス権限などを管理します。

しかし、Web ページのレンダリングそのものは、セキュリティと安定性の観点から分離されたレンダラープロセス ( Renderer Process ) で行われます。
これにより、あるタブがクラッシュしてもブラウザ全体が落ちることを防ぎ、悪意のある Web サイトが他のタブのデータや OS のリソースにアクセスすることを防ぎます。

さらに、描画処理を専門に行う GPU プロセスや、プラグインを扱うプロセスなどが独立して存在します 。

1.2 URL の解析と入力処理

ユーザーがアドレスバー(Omnibox)にフォーカスし、入力を開始すると、
ブラウザプロセスのUIスレッドがその入力を解析します。

検索クエリか、URLか?

ブラウザは入力された文字列をヒューリスティックに解析します。
スペースが含まれているか、有効なドメイン名が含まれているか、プロトコルスキーム(http:// など)があるかなどを判定します。

  • 検索クエリの場合 : ユーザーが設定したデフォルト検索エンジンの検索URL (例: https://www.google.com/search?q=...) に変換されます。

  • URLの場合 : 完全なURL形式に正規化されます。プロトコルが省略されている場合、現代のブラウザはデフォルトでHTTPSを試行する傾向にあります。

HSTS (HTTP Strict Transport Security) の事前チェック

ここで重要なのがHSTSです。
ブラウザは「HSTSプリロードリスト」と呼ばれる巨大な静的リストを内部に持っています。

もしユーザーが http://qiita.com と入力しても、そのドメインがHSTSリストに含まれていれば、ブラウザはネットワークリクエストを発行する前に、即座に内部で https://qiita.com へと書き換えます。

これにより、最初の平文通信に対する中間者攻撃(Man-in-the-Middle Attack)のリスクを排除します。

1.3 ナビゲーションの開始と beforeunload

ユーザーがEnterキーを押すと、UIスレッドは現在のページ(もしあれば)に対して「移動しても良いか?」を確認します。

これは beforeunload イベントとしてJavaScriptでフック可能です。
「入力中のデータがあります、移動しますか?」というアラートが出るのはこの処理のためです。

現在のレンダラープロセスがナビゲーションを承認すると、ブラウザプロセスはネットワークスレッドに対してリソースの取得を指示します。タブのローディングスピナーが回り始めるのはこの瞬間です。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?