Clicky

Chrome拡張機能開発講座 第6回: インストール・デバッグと開発の注意点

Chrome拡張機能開発講座 第6回 インストール・デバッグと開発の注意点 アイキャッチ画像 GoogleChrome(グーグルクローム)
GoogleChrome(グーグルクローム)
この記事は約7分で読めます。

※記事中に広告情報を含みます。

スキルを手に入れた時、人は強くなれる。
Youtubeでスキルアップを始める 電子書籍でスキルアップを始める

Chrome拡張機能のコードを書いたら、実際にChromeへ読み込んで動作確認を行います。開発中は、Chromeの拡張機能管理画面と開発者ツールを使うことで、インストール、更新、デバッグを進められます。

連載第6回では、作成したGoogleカレンダー用ショートカット拡張機能を読み込む手順と、うまく動かないときの確認方法を解説します。

実際に作るときの準備

まず、拡張機能専用のフォルダを1つ作ります。フォルダ名は自由ですが、後から見て分かる名前にしておくと管理しやすくなります。

GoogleCalendarActiveEventFinder/
├─ manifest.json
├─ content.js
└─ styles.css

Windowsで作る場合は、デスクトップやドキュメント内にフォルダを作り、その中に3つのファイルを作成します。拡張子が重要なので、manifest.json.txt のようにならないように注意します。

1. manifest.jsonを作る

最初に、拡張機能の設定ファイルである manifest.json を作ります。ここでは、Googleカレンダーを開いたときだけ content.jsstyles.css を読み込むように指定します。

{
  "manifest_version": 3,
  "name": "Google Calendar Active Event Finder",
  "version": "1.0.0",
  "description": "Googleカレンダーで z キーを押した時に、直近の予定へフォーカスします。",
  "content_scripts": [
    {
      "matches": [
        "*://calendar.google.com/*"
      ],
      "js": [
        "content.js"
      ],
      "css": [
        "styles.css"
      ],
      "run_at": "document_idle"
    }
  ]
}

この時点で、Chromeは「Googleカレンダーのページでだけ、このJavaScriptとCSSを読み込む」と判断できるようになります。

2. content.jsを作る

次に、実際の処理を書く content.js を作ります。まずは拡張機能が読み込まれているか確認するため、簡単なログから始めると安全です。

(function () {
  console.log('Google Calendar Active Event Finder loaded');

  window.addEventListener('keydown', function (event) {
    if (event.key !== 'z' && event.key !== 'Z') {
      return;
    }

    const activeEl = document.activeElement;
    if (
      activeEl &&
      (
        activeEl.tagName === 'INPUT' ||
        activeEl.tagName === 'TEXTAREA' ||
        activeEl.isContentEditable
      )
    ) {
      return;
    }

    console.log('z key pressed on Google Calendar');
  });
})();

ここまで作ると、Googleカレンダー上で z キーを押したときに、開発者ツールのConsoleへログが出るようになります。まずはこの小さな確認を通してから、予定を探す処理を追加していくと原因を切り分けやすくなります。

3. styles.cssを作る

最後に、予定を目立たせるための styles.css を作ります。JavaScript側で対象要素に gcal-shortcut-active-highlight というクラスを付けたとき、枠線や影が表示されるようにします。

.gcal-shortcut-active-highlight {
  outline: 3px solid #ff9800 !important;
  box-shadow: 0 0 0 4px rgba(255, 152, 0, 0.25) !important;
  border-radius: 6px !important;
}

!important は多用しない方がよい指定ですが、Googleカレンダーのように既存のCSSが強いWebアプリでは、拡張機能側のスタイルを確実に当てるために使うことがあります。

拡張機能を読み込む手順

開発中のChrome拡張機能は、Chromeウェブストアに公開しなくても、ローカルフォルダから読み込めます。

  1. Chromeで chrome://extensions/ を開く
  2. 右上の「デベロッパーモード」をオンにする
  3. 「パッケージ化されていない拡張機能を読み込む」をクリックする
  4. manifest.json が入っているフォルダを選択する
  5. Googleカレンダーを開き、動作を確認する

今回の例では、manifest.jsoncontent.jsstyles.css が入っているフォルダを選択します。

コードを変更した後の更新手順

開発中にコードを書き換えた場合、ファイルを保存するだけではChrome側に反映されないことがあります。

変更後は、次の2つを行います。

  1. chrome://extensions/ で対象拡張機能の更新ボタンを押す
  2. Googleカレンダーのページを再読み込みする

content.jsstyles.css はページに読み込まれるファイルなので、カレンダー側のページ再読み込みも必要です。

開発者ツールで確認する

拡張機能がうまく動かない場合は、Googleカレンダーの画面で開発者ツールを開きます。

Windowsでは F12、または右クリックから「検証」を選択します。その後、「Console」タブを確認します。

content.js に次のようなログを入れておくと、処理がどこまで進んでいるか確認できます。

console.log('Google Calendar Active Event Finder loaded');
console.log('event elements:', eventElements);
console.log('selected target:', target);

予定要素が取得できているか、日付や時刻の解析結果が正しいか、最終的にどの予定が選ばれたかを確認できます。

よくあるトラブル

拡張機能が動かない

まず、manifest.jsonmatches がGoogleカレンダーのURLに合っているか確認します。

"matches": [
  "*://calendar.google.com/*"
]

対象URLが違っていると、content.js 自体が読み込まれません。

変更が反映されない

拡張機能管理画面で更新ボタンを押し、Googleカレンダー側も再読み込みします。どちらか片方だけでは古いコードが残ることがあります。

zキーを押しても反応しない

入力欄や検索ボックスにフォーカスがある場合は、誤作動防止のため処理をスキップしている可能性があります。カレンダーの空白部分をクリックしてから、もう一度 z キーを押して確認します。

予定が見つからない

Googleカレンダーの表示形式や画面状態によって、予定要素の属性や aria-label の内容が変わる場合があります。コンソールに取得した要素やラベルを出力し、正規表現が現在の表示に合っているか確認します。

ローカルフォルダの注意点

デベロッパーモードで読み込んだ拡張機能は、PC上のローカルフォルダを直接参照して動作します。

そのため、拡張機能のフォルダを削除したり移動したりすると、Chromeから読み込めなくなります。フォルダを移動したい場合は、古い拡張機能を一度削除し、移動先のフォルダから再度読み込みます。

公開前に確認したいこと

自分だけで使う拡張機能でも、最低限次の点を確認しておくと安心です。

  • 対象サイト以外で動作しないか
  • 入力欄でショートカットが誤作動しないか
  • コンソールにエラーが出ていないか
  • ページ再読み込み後も動作するか
  • Googleカレンダーの表示形式を変えても大きく崩れないか

まとめ

第6回では、Chrome拡張機能をローカルから読み込む方法、コード変更後の更新手順、開発者ツールを使ったデバッグ方法を解説しました。

今回の連載では、Googleカレンダー上で z キーを押すと直近の予定へフォーカスする拡張機能を題材に、manifest.json、Content Scripts、DOM解析、予定選択ロジック、インストールとデバッグまでを確認しました。

小さな拡張機能でも、対象URLを絞る、入力中の誤作動を防ぐ、DOM構造の変化に備える、といった考え方を押さえておくと、実用的なChrome拡張機能を作りやすくなります。

ホーム
掲載依頼
WordPress
スキルアップ
記事カテゴリ
お問い合わせ
Youtube