古いバージョンの Chromium/Chrome バイナリを取得する方法, ついでに昔の Chrome の UI スクショ

# 初めに

ブラウザ互換性確認等で古いバージョンの Chromium/Chrome バイナリを使用したいことありますよね！
都度都度ビルドするの時間掛かって大変ですよね！
というわけで、古いバージョンの Chromium/Chrome バイナリを取得する方法です！

ここでは用途上 Chromium と Chrome は同じものとして扱って良い場合で話を進めます（とある JS 機能の実装有無確認等）。
簡単に Chromium と Chrome の差を [wikipedia の Chromium のページ](https://ja.wikipedia.org/wiki/Chromium) から抜粋しておきます。

> このプロジェクトで開発されるChromiumのスナップショットは、Googleによるいくつかの追加機能を除いて、Google Chromeの最新ビルドと本質的に似ている[11]。Google ChromeにありChromiumにない代表的な機能要素は、Googleブランド、自動アップデート機能、クリックラップ契約（英語版）（利用許諾に「同意する」を押下することで承諾するもの）、RLZトラッキング機能、Adobe Flash Playerの同梱などがある。




# 手順まとめ

1. [Chrome Release](https://chromereleases.googleblog.com/search/label/Stable%20updates) から欲しいバージョンのバージョン番号をフルで知る
2. [omahaproxy](https://omahaproxy.appspot.com/) から Position（コミット ID のようなもの）を知る
3. [continuous builds archive](https://commondatastorage.googleapis.com/chromium-browser-snapshots/index.html) を開く
4. 環境を選択（Linux / Mac / Win）し、フィルタに Position の数字を入力
5. ダウンロードして実行！

# 例1 ： M87 バイナリ

執筆時点最新の M88（88.0.4324.150）の一つ前のバージョン M87 のバイナリを手に入れてみましょう。

> 1. [Chrome Release](https://chromereleases.googleblog.com/search/label/Stable%20updates) から欲しいバージョンのバージョン番号をフルで知る

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/35514/a57e2031-12ba-4b85-7d29-f31682ec072d.png)

Chrome Release を遡り M87 のリリースを探します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/35514/0ce15c8e-b092-d17b-2def-8fde51e03c80.png)

87.0.4280.141 と分かりました。

> 2 . [omahaproxy](https://omahaproxy.appspot.com/) から Position（コミット ID のようなもの）を知る

omahaproxy ページ下部の Tools の Version Information にバージョンを入力すると
Branch Base Position: 812852
と分かりました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/35514/85a2f3b9-1535-fdc8-ff09-f8225dd9f34d.png)


> 3 . [continuous builds archive](https://commondatastorage.googleapis.com/chromium-browser-snapshots/index.html) を開く

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/35514/69f0dd3d-34aa-ec71-ca79-f7f66974c8b8.png)

> 4 . 環境を選択（Linux / Mac / Win）し、フィルタに Position の数字を入力

環境を選びます。僕の場合は Linux_x64 です。

Branch Base Position の数字を「Filter」に入力します。
HIT しない場合は、数字を減らし、近い数字を探します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/35514/1cacf8db-bd60-f0cd-32b0-b06b484612db.png)


> 5 . ダウンロードして実行！

chrome-linux.zip をダウンロードします。
https://commondatastorage.googleapis.com/chromium-browser-snapshots/index.html?prefix=Linux_x64/812859/

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/35514/132afb2f-7c51-af87-ce92-a37dde96f7a0.png)

zip を解凍して chrome が実行ファイルです。

```
$ ls
ClearKeyCdm             extensions             nacl_irt_x86_64.nexe
MEIPreload              icudtl.dat             product_logo_48.png
chrome                  libEGL.so              resources
chrome-wrapper          libGLESv2.so           resources.pak
chrome_100_percent.pak  locales                swiftshader
chrome_200_percent.pak  nacl_helper            v8_context_snapshot.bin
chrome_sandbox          nacl_helper_bootstrap  xdg-mime
crashpad_handler        nacl_helper_nonsfi     xdg-settings

$ ./chrome
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/35514/c9d72ae5-704e-878d-34dc-dbd59a088278.png)

起動しました！

# 例2 ： 一番古いバージョン

一番古いバージョンの UI 見てみましょうか。
僕の手元の Ubuntu 16.04 で起動出来るもの、の前提で。
適当にメジャーバージョン10ずつ調べていきます。

## Chrome Release の探し方その2

Chrome Release から古いバージョン探す時、ページ遡るの大変なので、右側の検索ボックスから探すのが楽です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/35514/97fe9f22-0ca0-5cb0-c570-c037e115355e.png)

もしくはいきなり google で
[site:chromereleases.googleblog.com chrome 50.0](https://www.google.com/search?q=site%3Achromereleases.googleblog.com+chrome+50.0&oq=site%3Achromereleases.googleblog.com+chrome+50.0&aqs=chrome..69i57j69i59j69i58.391j0j7&sourceid=chrome&ie=UTF-8)
等と検索しても OK です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/35514/95bb092b-041d-730c-a23e-a26b52a487ce.png)


## M50

M50 の頃は起動引数に `--no-sandbox` 付けないと起動出来ないですね。
付けて起動出来てもログにエラー出まくりますが、、まぁここでは主旨と違うので追いません。

```
$ ./chrome
[26607:26607:0222/171939:FATAL:browser_main_loop.cc(216)] Running without the SUID sandbox! See https://chromium.googlesource.com/chromium/src/+/master/docs/linux_suid_sandbox_development.md for more information on developing with the sandbox on.
#0 0x55ba3bd64b8e base::debug::StackTrace::StackTrace()
#1 0x55ba3bd77abb logging::LogMessage::~LogMessage()
#2 0x55ba3938e6ff content::BrowserMainLoop::EarlyInitialization()
#3 0x55ba39394fd4 content::BrowserMainRunnerImpl::Initialize()
#4 0x55ba3938dd76 content::BrowserMain()
#5 0x55ba3bd408e2 content::ContentMainRunnerImpl::Run()
#6 0x55ba3bd3f680 content::ContentMain()
#7 0x55ba37fd304a ChromeMain
#8 0x7fe0de08d840 __libc_start_main
#9 0x55ba37fd2f21 <unknown>

中止 (コアダンプ)

$ ./chrome --no-sandbox
[26665:26665:0222/172015:ERROR:browser_main_loop.cc(219)] Running without the SUID sandbox! See https://chromium.googlesource.com/chromium/src/+/master/docs/linux_suid_sandbox_development.md for more information on developing with the sandbox on.
[26665:26680:0222/172015:ERROR:web_database_backend.cc(56)] Cannot initialize the web database: 2
[26665:26698:0222/172015:ERROR:connection.cc(1919)]  sqlite error 1, errno -2: table urls has 8 columns but 7 values were supplied, sql: INSERT INTO urls SELECT * FROM history.urls WHERE typed_count > 0
[26665:26698:0222/172015:ERROR:connection.cc(1919)]  sqlite error 1, errno -2: no such column: u.favicon_id, sql: INSERT OR IGNORE INTO urls SELECT u.id, u.url, u.title, u.visit_count, u.typed_count, u.last_visit_time, u.hidden, u.favicon_id FROM history.urls u JOIN history.keyword_search_terms kst WHERE u.typed_count = 0 AND u.id = kst.url_id
```

そういえば昔はタブの形が台形でしたね。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/35514/cac4307a-0bae-1503-f10b-fd2e8d87d748.png)


## M40

M42 以下は Position の数字が小さくなり(3桁になり)、 [continuous builds archive](https://commondatastorage.googleapis.com/chromium-browser-snapshots/index.html) では探せません。
この方法で探せるのは M43 まで、とわかりました。

### M40 : Position 445

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/35514/bed2f914-de02-86f6-1e92-330da8b77e90.png)

### M42 : Position 457

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/35514/bec3f79d-045c-bf42-d581-41d76c42569b.png)

### M43 : Position 323860

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/35514/20bcccc9-be92-61a3-e715-723064f3744d.png)

M43 の見た目は M50 と同じなので略。

# その他

この手順、単に
https://www.chromium.org/getting-involved/download-chromium
のページの日本語訳ですｗ