Chromeブラウザのトップサイトを変更する

近年 Netflix や DAZN と言ったストリーミング配信サービスが充実してきました。開発環境では Safari ブラウザを使っていますがこれら動画配信系のサービスを利用するとエラーを起こして止まってしまうことがよくあったので Google Chrome ブラウザを使用することにしています。その際に、Google Chrome ブラウザで新規タブを開いた時の「起動ページ」に表示されている8つのページリンクのサムネール、これを Safari ブラウザでは「トップサイト」と呼んでいてドラッグ&ドロップのマウス操作で追加操作ができるものの、Chrome ではページの読み込み回数でのみの判定となっていて且つ期待した様に追加ができないという挙動があったので調べてみました。

まず辿り着いた StackExchange では、Chrome のデータファイル Preferences に記述されている locations の値を編集すれば良いということが分かったので、macOS でのファイルパス ~/Library/Application Support/Google/Chrome/Default に移動して探してみたところ、該当する値がありませんでした。そこで回答の2つ目を見ると、2012年にリリースしたバージョン 17.0.963.56 以降の Chrome ブラウザは Preferences テキストファイルの記述によるデータ管理を止めて SQLite に変更したことが分かりました。

同じ Default 内に Top Sites という拡張子の無いファイルがあったので DB Browser for SQLite で開いて見ると thumbnails テーブルにずらずらと該当データが保存してありました。

url_rank 項目の値順に左上から並ぶことになっていると推測できるのですが、この状態でもトップサイトにサムネールが表示されないのは問題です。

http://hkitago.tumblr.com/post/164159265281

この理由は、トップサイトの各サムネールをマウスオーバーすることで表示される右上の「バツボタン」を押し消去すると Preferences JSON ファイルの most_visited_blacklist キーに MD5ハッシュで短縮した redirects 項目にある URL の値を格納し、起動ページを表示する度に参照していることが原因でした。現時点(バージョン 61.0.3163.39)でこの仕様ですと、過去によく閲覧してトップページに表示されていたサムネールでも、一旦バツボタンを押して消去してしまうと再びトップサイトに加えることができないというもので、実際に DAZN のサムネールはあったのですが、まだコンテンツが不足していたことからアカウントを作成しなかったのでバツボタンを押してサムネールを消去していました。

ということで SQLite データはそのままに、Preferences JSON ファイルを TextWrangler で most_visited_blacklist":{} と編集し保存、Chrome の起動ページに8つのサムネールの表示を確認し、改めて表示させないサムネールのバツボタンを押しました。ただ、DAZN サムネールの画像が表示されておらず SQLite データを確認したところ、 thumbnails テーブルの thumbnails 項目が NULL となっていたため、適当に画面のスクリーンショットを 424×284ピクセルの JPEG データに変換して BLOB データとして格納しました。

「利用頻度の高いトップサイトに表示させたくないから二度と現れることがないブラックリスト行き」という設計は如何なものかとは思いますが、データの移行からと思われる url_rank 項目の値に -1 を持っているものもあったりと、今後の改善に期待したいところです。

参考:

投稿者: hkitago

個人事業主でウェブと iOS, Android アプリの開発者で一児の父親。JavaScript, ActionScript, AppleScript, PHP, SQL, ObjC, Swift, Java の読書実行試験運用管理を生業とし、Bind, Postfix, Apache を MacOS で使い、エディタは Vi, mi, Kod, Smultron, TextWrangler を経て Coda, Xcode, Android Studio といった IDE と CotEditor を重用しています。