Chrome拡張機能における chrome.runtime.sendMessage および chrome.runtime.onMessage は、拡張機能内の異なるコンポーネント間(例:コンテントスクリプト、バックグラウンドスクリプト、ポップアップなど)でメッセージを送受信するためのAPIです。このメッセージ通信は、非同期でデータのやり取りを行うために使われます。
1. chrome.runtime.sendMessage
chrome.runtime.sendMessage
説明
この関数は、メッセージを別のコンポーネント(通常はバックグラウンドスクリプト)に送信します。
構文
パラメータ
-
message: 任意のデータ(オブジェクトや文字列など) -
responseCallback(省略可能): メッセージ送信先からの応答を受け取るための関数
使用例
2. chrome.runtime.onMessage
chrome.runtime.onMessage
説明
このイベントリスナーは、他の拡張機能コンポーネントから送信されたメッセージを受信して処理します。
構文
パラメータ
-
message: 送られてきたメッセージ -
sender: 送信元に関する情報(タブ情報など) -
sendResponse: 応答を返すための関数
使用例(バックグラウンドスクリプト)
3. 応答の非同期処理について
sendResponse を非同期で使う場合、リスナー関数内で return true; を記述する必要があります。これにより、Chromeは応答が非同期で返ってくることを認識します。
非同期応答の例
4. 使用されるケースの例
-
コンテントスクリプトがユーザーの操作を検知し、バックグラウンドスクリプトに通知する
-
ポップアップが現在のタブの情報をバックグラウンドスクリプトに要求する
-
バックグラウンドスクリプトが応答を返す
5. 注意点
-
同一拡張機能内でしかメッセージを送受信できません(別拡張機能に送るには
chrome.runtime.sendMessage(extensionId, message)の形式が必要) -
送信するメッセージはJSONシリアライズ可能なデータにする必要があります
生成日:2025/05/18