この記事は2023年度の東京大学工学部電気電子工学科・電子情報工学科 3 年後期実験「大規模ソフトウェアを手探る」のレポートとして作成されました。

1. Firefoxとは

オープンソースで開発されているブラウザです。2023年10月時点で、日本ではChrome、Safari、Edgeに次いで利用者が多いようです(https://gs.statcounter.com/browser-market-share/all/japan を参照)。

ソースコードは https://hg.mozilla.org/ にあります。コードを眺めたところ、主にC++でコア部分が、JavaScriptで描画部分が実装されているようです。以下では主にJavaScriptで書かれた部分について扱いました。

2. ビルド手順

公式ドキュメントに沿って、以下のコマンドを実行しました。

初回のビルド時はおよそ1時間程度かかりますが、一度実行した後は数秒でビルドがおわるようになります。

https://firefox-source-docs.mozilla.org/setup/linux_build.html

python3 -m pip install --user mercurial
curl <https://hg.mozilla.org/mozilla-central/raw-file/default/python/mozboot/bin/bootstrap.py> -O
python3 bootstrap.py
cd mozilla-unified
hg up -C central
./mach build
./mach run

3. 手探り方針

デバッガーについて

デバッガーはBrowser ToolBoxにしました。Browser ToolboxはFirefoxに標準で備わっているデバッガーです。開き方は以下のようになります。

  1. 右上にあるapplication menu を開く
  2. more toolsを選択
  3. Browser Toolboxを選択

vscodeのようにファイル内、フォルダ内検索もできます。気になるワードで検索してブレークポイントを設置することでその関数が目的の動作と関係があるかどうかがわかります。下にブレークしたときの画像を貼りました。右下にcall stackがありブレークするまでにどの関数を巡ってきたかがわかるようになっていて、これを見ながら目的の動作を達成するためにどのコードを変えればよいかを考えました。