はじめまして。株式会社アップガレージグループ ITソリューション事業部 エンジニアの中尾です。
今回のテーマは、「Chromeの拡張機能作成」について。日々Chrome拡張機能は利用していて、自分でも便利なツールを作成したいと思ったため共有いたします。
1.Chromeの拡張機能とは
まず、ChromeとはGoogleが開発したWebブラウザであり、現在は世界シェアNo.1で多くの方が利用しています。そのChromeに機能を追加・強化することができるのが、Chrome拡張機能です。
ここでは、作成から導入までの流れをご紹介します。
2.実際に作成してみる
今回はGithub上で好きなスタンプを使えるようにしてみます。(デフォルトのスタンプだと味気ないので・・・)
以下のようなフォルダ構成で作成していきます。
2-1. manifest.jsonの書き方
manifest.jsonは、Webアプリケーションやブラウザ拡張機能の開発に使用されるJSONファイルです。
「作成するChrome拡張の設定全般」について書く必要があり、
- どんなファイルがあるのか
- どんな機能を利用するのか
- どんな制限を設けるのか
など定義する必要があります。以下記述例です。
▼manifest.json
{
"name": "Githubのスタンプ変換機能",
"version": "1.0.0",
"manifest_version": 3,
"content_scripts": [
{
"matches": ["*://github.com/**"],
"js": [
"js/jquery-3.7.1.js",
"js/main.js"
],
"run_at": "document_end",
"all_frames": false
}
],
"web_accessible_resources": [
{
"matches": [ "http://*/*", "https://*/*" ],
"resources": [ "/images/*" ]
}
]
}
name
拡張機能の名称で、45文字まで入力できます。
version
拡張機能のバージョンです。拡張機能を更新する際には必ずバージョンが上がってなくてはなりません。
manifest_version
マニフェストファイル自身のバージョンです。
content_scripts
コンテントスクリプトを使用する場合に記載します。
matches
content_scriptsに対する必須の項目で、動作対象となるURLをMatch Patternsの形式で設定します。
js
content_scriptsに対する任意の項目で、動作させるスクリプトをリストで設定します。
web_accessible_resources
拡張機能で特定の画像などを使用する場合に記載します。
2-2. 処理したいコードを実装する
上記の画像を見ていただくと、Githubのスタンプはテキスト形式で表示していることがわかります。そのため今回はSVGをテキストに変換して、スタンプを変更していきたいと思います。
▼main.js
// 新しい画像のURL
const newImageUrl = chrome.runtime.getURL('../images/shouchi.svg');
// <g-emoji>要素を取得
const emojiElement = document.querySelector('g-emoji[alias="-1"]');
// テキスト内容を置き換える
emojiElement.innerHTML = '<svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 24 24" width="24" height="24">
<image xlink:href="${newImageUrl}" width="24" height="24"></image>
</svg>';
詳しい説明は省きますが、SVG形式のスタンプをテキストに変換して置き換えています。これで既存のスタンプが、今回用意したスタンプに置き換わっているはずです。
2-3. 作成した拡張機能を反映させる
さて、それでは実際に作成した機能を確認してみましょう。
①Chromeの拡張機能ページを開き、デベロッパーモードを有効にします。
②「パッケージ化されていない拡張機能を読み込む」を選択し、拡張機能のルートフォルダを指定します。
③インストールできたら、拡張機能を有効にします。
拡張機能を有効化し、実際の画面を見てみると反映できてますね!
3.まとめ
今回は自由にスタンプを変更できたかのように見えますが、実際スタンプを使用してみるとエラーが発生し反映されません。
スタンプを反映させるにはまだまだ工夫が必要そうですね!今後はスタンプが反映され、自由に使えるまでにしたいですね。
ここまでお読みくださりありがとうございました!
株式会社アップガレージグループ ITソリューション事業部では、共に勉強し合い、成長し合うメンバーを大募集しています!
www.upgarage-g.co.jp