Webサイトをカスタマイズして使うChrome拡張機能のご紹介
はじめに
こんにちは!AITPの壱岐です。
今回は「このWebサイトで、もうちょっとCSSを弄って見やすいようにできたらなぁ・・・」や「特定のJavaScript処理をページ読み込み時に実行してくれたらいいのに・・・」等のWebサイトのカスタマイズができるChrome拡張機能を紹介します。
使用する拡張機能
任意のJavaScriptを特定のサイトに対して実行することができる拡張機能です。
任意のCSSを特定のサイトに適用することができる拡張機能です。
使い方
Tampermonkey
拡張機能アイコンの中からTampermonkeyのアイコンをクリックし、「新規スクリプトを追加」クリックでエディタが開きます。

開かれたエディタでスクリプトの先頭にいくつかアノテーションを書くことでこのスクリプトの設定が行なえます。
とりあえずは下記の★の部分だけ気にすれば大丈夫です。 (★以外のものに関しては主にスクリプトを公開するときに使用します)
その他詳しい情報は公式ドキュメントをご参照ください
// ==UserScript==
// @name Google検索時にアラート表示 // ★スクリプトの名前
// @namespace http://tampermonkey.net/ // 名前空間
// @version 0.1 // バージョン
// @description Google検索画面でアラートを表示します // ★スクリプトの説明
// @author You // 著者
// @match https://www.google.com/search* // ★スクリプトを実行するWebサイトのURL(例としてGoogle検索のURL)
// @icon https://www.google.com/s2/favicons?sz=64&domain=google.com // スクリプトのアイコン
// @grant none // ★権限(外部スクリプト等の読込み時に使用)
// ==/UserScript==
// 実行したいスクリプトを記述
(function() {
'use strict';
alert('Hello World!!');
})();
特に重要な箇所は @matchの箇所で、ここにスクリプトを実行したいWebサイトのURLを正規表現で記述します。
スクリプト記述後に対象のWebサイトをリロードし、開発者ツールで読み込まれたスクリプトを確認することができます。
また、Tampermonkeyのアイコンに読み込まれたスクリプトの数が表示されます。

Stylus
拡張機能アイコンの中からStylusをクリックし、次のスタイルを書くのURL部分をクリックするとエディタが開きます。
(ドメイン部分をクリックするとそのドメインを対象としてエディタが開かれ、「このURL」の部分をクリックすると開いているURLを対象としてエディタが開かれます。)

開かれたエディタ内にCSSを記述していくことでスタイルが適用されます。
自動プレビューのチェックボックスをONにしておくと即時反映され、htmlの最後に記述したスタイルが読み込まれます。
またStylusのアイコンに読み込まれたスタイルシートの数が表示されます。

使用例
以下私が実際に設定している使用例になります。 (どちらかというとサッと書いて動けば良いものなので、コードの正確性や綺麗さは気にせずカスタマイズしたいものがあればどんどん書い使っているため、もっと良い書き方があるかもしれません。)
ローカル環境とステージング環境・本番環境で間違いが起きにくくする(Tampermonkey/Stylus)
動作確認でローカル環境やステージング環境だと思って触っていたら実は本番環境を触っていて、危うく更新してはいけないデータを更新しかけてしまったり、削除しかけてしまったりというヒヤリ・ハットは誰しもあると思います。(少なくとも自分はあります。。。)
このようなヒヤリ・ハットを防ぐためにもローカル環境、ステージング環境、本番環境でそれぞれ異なる表示をするようなスクリプトを仕込む事もできます。
下記の例では画面の左上に環境名を表示するようにしています。
// ==UserScript==
// @name LocalhostInfo
// @namespace http://tampermonkey.net/
// @version 0.1
// @description ローカル環境の画面左上に環境情報を表示する
// @author You
// @match http://localhost/* // 環境分だけスクリプトを作る
// @icon https://www.google.com/s2/favicons?sz=64&domain=undefined.localhost
// @grant none
// ==/UserScript==
// 環境情報を表示するための要素の作り込み
const elem = document.createElement('div');
elem.id = 'envInfoBox';
elem.style.position = 'fixed';
elem.style.left = 0;
elem.style.top = 0;
elem.style.height = '40px';
elem.style.width = '120px';
elem.style.textAlign = 'center';
elem.style.background = 'blue';
elem.style.color = 'white';
elem.textContent = 'localhost'
// 要素の追加
document.getElementsByTagName('body')[0].appendChild(elem);
// 表示したままだと邪魔なこともあるのでクリックしたら消す
document.getElementById('envInfoBox').addEventListener('click', (elem) => {
elem.target.remove();
})
// 本番環境ならより目立たせるためにアニメーションさせる
// document.getElementById('envInfoBox').animate(
// {
// background: ["red", "yellow"],
// },
// {
// duration: 1000,
// iterations: Infinity
// });

また、サイト内のbodyタグに色をつけていないサイトの場合、Stylusを使用して環境ごとにbodyの色を変更するだけでも注意喚起になると思います。
特定のショートカットキーを無効にする(Tampermonkey)
AITPでも利用しているNotionの「コードとしてマーク」機能(マークダウンでいう「`」で囲んだインライン表示 )のショートカットキーはCtrl + Eで、ChromeショートカットキーのCtrl + R でのブラウザリロードと隣同士にあるため、リロードを暴発してしまいます。
これを防ぐために「Ctrl + Rのショートカットを無効にする」というスクリプトをTampermonkeyで設定しています。
// @name Notion_disabledReloadShortCut
// @namespace <http://tampermonkey.net/>
// @version 0.1
// @description NotionのCtrl+Rのリロードショートカットを無効化する
// @author You
// @match <https://www.notion.so/*>
// @icon <https://www.google.com/s2/favicons?sz=64&domain=notion.so>
// @grant none
// ==/UserScript==
(function() {
'use strict';
document.body.addEventListener('keydown', function(e) {
// Ctrl + R のショートカットを無効にする
if (e.ctrlKey && e.key === 'r') {
e.preventDefault();
}
});
})();
特定のボタンを押しやすいようにする(Stylus)
私が以前に紹介したRSSリーダーのInoreaderですが、「あとで読む」に追加するボタンが小さくて押しにくいのでStylusを使用して少し大きめに設定するといったこともできます。

.article_footer_buttons > a > span {
font-size: 22pt;
}
おわりに
Webサイトの「もうちょっとこうだったら良いのになぁ」を実現できるChrome拡張機能の紹介でした。
うまく使って快適にしていきましょう!