📖

Chrome拡張機能のAPI Reference

2022/11/13に公開

Chrome拡張機能を作るときは、よく使われる(よく記事にある)APIを使うだけで、API Reference自体を読んだことがないので、ざっくりと全体像を見てみます。
見てみましたが、概要だけだと実際に何ができるのかいまいちイメージがつかないです。


API Reference

目次

Chromeでは、chrome.runtimeやchrome.alarmsなど、多くの特殊用途のAPIを拡張機能として提供しています。

API conventions

ドキュメントに特に記述がない限り、chrome.* API のメソッドは非同期です:操作の終了を待たずにすぐに戻ります。操作の結果を知る必要がある場合は、コールバック関数をメソッドに渡します。詳しくは、こちらのビデオをご覧ください。

Stable APIs

2015年初頭にリリースされたChrome 42以前のAPIについては、リリース情報が公開されていません。

名前 概要
accessibilityFeatures Chromeのアクセシビリティ機能を管理するには、chrome.accessibilityFeatures APIを使用します。このAPIは、個々のアクセシビリティ機能を取得および設定するために、type APIのChromeSettingプロトタイプに依存しています。機能の状態を取得するために、拡張機能は accessibilityFeatures.read パーミッションを要求する必要があります。機能の状態を変更するには、accessibilityFeatures.modify パーミッションが必要です。accessibilityFeatures.modify は accessibilityFeatures.read パーミッションを意味しないことに注意してください。
action Chrome 88+MV3+
chrome.action APIを使用して、Google Chromeツールバーの拡張機能のアイコンを制御します。
alarms chrome.alarms APIを使用して、定期的または指定時刻にコードを実行するようにスケジュールします。
audio Chrome 59+
chrome.audio APIは、システムに接続されたオーディオ機器に関する情報を取得し、制御するために提供されています。このAPIは、現在、ChromeOSのキオスクモードでのみ利用可能です。
bookmarks chrome.bookmarks API を使用して、ブックマークの作成、整理、その他の操作を行います。また、カスタムブックマークマネージャーのページを作成するために使用できる Override Pages も参照してください。
browserAction ≤MV2
browserActionを使用すると、Google Chromeのメインツールバー、アドレスバーの右側にアイコンを配置できます。browserActionは、アイコンの他に、ツールチップ、バッジ、ポップアップを付けることができます。
browsingData chrome.browsingData APIを使用して、ユーザーのローカルプロファイルから閲覧データを削除します。
certificateProvider Chrome 46+
この API を使用して、TLS 認証にこれらの証明書を使用できるプラットフォームに対して証明書を公開します。
commands commands APIを使用して、拡張機能のアクションをトリガーするキーボードショートカットを追加します。たとえば、ブラウザのアクションを開いたり、拡張機能にコマンドを送信したりするアクションなどです。
contentSettings chrome.contentSettings API を使用すると、ウェブサイトが Cookie、JavaScript、プラグインなどの機能を使用できるかどうかを制御する設定を変更できます。より一般的には、コンテンツ設定では、Chrome の動作をグローバルではなくサイト単位でカスタマイズすることができます。
contextMenus chrome.contextMenus API を使用すると、Google Chrome のコンテキストメニューに項目を追加することができます。コンテキストメニューに追加するオブジェクトの種類として、 画像やハイパーリンク、ページなどを選択することができます。
cookies chrome.cookies APIを使用して、クッキーを参照、変更したり、変更時に通知を受けたりすることができます。
debugger chrome.debugger API は、Chrome のリモート デバッグ プロトコルの代替トランスポートとして機能します。chrome.debugger を使用して 1 つまたは複数のタブにアタッチし、ネットワークの相互作用を測定したり、JavaScript をデバッグしたり、DOM や CSS を変更したりできます。Debuggee tabId を使用して、sendCommand でタブをターゲットにし、onEvent コールバックから tabId を使用してイベントをルーティングします。
declarativeContent chrome.declarativeContent APIを使用すると、ページの内容を読み取る権限を必要とせずに、ページの内容に応じたアクションを実行することができます。
declarativeNetRequest Chrome 84+
chrome.declarativeNetRequest APIは、宣言的なルールを指定してネットワークリクエストをブロックまたは変更するために使用されます。これにより、拡張機能がネットワークリクエストを傍受してその内容を見ることなく変更できるようになり、よりプライバシーが守られるようになります。
desktopCapture 画面や個々のウィンドウ、タブの内容をキャプチャするために使用できるデスクトップキャプチャAPIです。
devtools.inspectedWindow chrome.devtools.inspectedWindow API を使用して、検査されたページのタブ ID の取得、検査されたウィンドウのコンテキストでのコードの評価、ページの再ロード、ページ内のリソース一覧の取得などの検査を行ったウィンドウとのやり取りを行います。
devtools.network chrome.devtools.network APIを使用して、デベロッパーツールがネットワークパネルに表示するネットワークリクエストに関する情報を取得します。
devtools.panels chrome.devtools.panels APIを使用して、拡張機能をDeveloper ToolsのウィンドウUIに統合します:独自のパネルを作成し、既存のパネルにアクセスし、サイドバーを追加します。
devtools.recorder Chrome 105+
chrome.devtools.recorder API を使用して、DevTools の Recorder パネルをカスタマイズします。
documentScan Chrome 44+
chrome.documentScan APIを使用して、付属のペーパードキュメント・スキャナーから画像を検出し、取得します。
dom Chrome 88+
Use the chrome.dom API to access special DOM APIs for Extensions
downloads chrome.downloads APIを使用して、プログラムによるダウンロードの開始、監視、操作、検索を行います。
enterprise.deviceAttributes Chrome 46+
chrome.enterprise.deviceAttributes API を使用して、デバイスの属性を読み取ります。注意: このAPIは、エンタープライズポリシーによって強制的にインストールされた拡張機能でのみ利用可能です。
enterprise.hardwarePlatform Chrome 71+
chrome.enterprise.hardwarePlatform API を使用して、ブラウザが動作するハードウェア プラットフォームの製造元とモデルを取得します。注:このAPIは、エンタープライズポリシーによってインストールされた拡張機能でのみ利用可能です。
enterprise.networkingAttributes Chrome 85+
chrome.enterprise.networkingAttributes APIを使用すると、現在のネットワークに関する情報を読み取ることができます。注:このAPIは、エンタープライズポリシーによって強制的にインストールされた拡張機能でのみ利用可能です。
enterprise.platformKeys chrome.enterprise.platformKeys API を使用して鍵を生成し、その鍵に対応する証明書をインストールします。証明書はプラットフォームによって管理され、{@link platformKeys chrome.platformKeys}を通じてTLS認証やネットワークアクセス、他の拡張機能で使用することができます。
events chrome.events 名前空間は、何か面白いことが起こったときに通知するイベントを発信するAPIで使用される一般的な型を含んでいます。
extension chrome.extension API には、任意の拡張機能ページで使用できるユーティリティがあります。これには、拡張機能とそのコンテンツスクリプトの間、あるいは拡張機能間でメッセージを交換するためのサポートが含まれており、その詳細については Message Passing で説明します。
extensionTypes chrome.extensionTypes APIは、Chrome拡張機能のための型宣言を含んでいます。
fileBrowserHandler Foreground only
Chrome.fileBrowserHandler APIを使用して、Chrome OSのファイルブラウザを拡張します。たとえば、この API を使用して、ユーザーが Web サイトにファイルをアップロードできるようにすることができます。
fileSystemProvider Foreground only
chrome.fileSystemProvider APIを使用して、Chrome OS上のファイルマネージャーからアクセス可能なファイルシステムを作成します。
fontSettings Chrome.fontSettingsのAPIを使用して、Chromeのフォント設定を管理します。
gcm chrome.gcm を使用して、アプリや拡張機能が Firebase Cloud Messaging (FCM) を介してメッセージを送受信できるようにします。
history chrome.history APIを使用して、ブラウザの訪問ページに関する記録と対話します。ブラウザの履歴にある URL を追加、削除、照会することができます。履歴ページを独自のバージョンで上書きするには、ページの上書きを参照してください。
i18n chrome.i18nインフラストラクチャを使用して、アプリや拡張機能全体に国際化を実装します。
identity chrome.identity APIを使用してOAuth2アクセストークンを取得します。
idle chrome.idle API を使用して、マシンのアイドル状態が変更されたことを検出します。
input.ime chrome.input.ime API を使用して、Chrome OS 用のカスタム IME を実装します。 これにより、拡張機能でキーストロークを処理し、合成を設定し、候補ウィンドウを管理することができます。
instanceID Chrome 44+
chrome.instanceID を使用して、インスタンス ID サービスにアクセスします。
loginState Chrome 78+
chrome.loginState APIを使用して、ログイン状態を読み取り、監視します。
management chrome.management APIは、インストールされ実行されているエクステンション/アプリのリストを管理する方法を提供します。これは、組み込みの「新しいタブ」ページを上書きするエクステンションに特に便利です。
notifications chrome.notifications APIを使用して、テンプレートを使用してリッチな通知を作成し、システムトレイでユーザーにこれらの通知を表示します。
omnibox オムニボックス APIを使用すると、Google Chromeのアドレスバーにキーワードを登録することができます。
pageAction ≤MV2
chrome.pageAction APIを使用して、Google Chromeのメインツールバー、アドレスバーの右側にアイコンを配置します。ページアクションは、現在のページで実行できるアクションを表しますが、すべてのページに適用されるわけではありません。ページアクションが無効な場合は、灰色で表示されます。
pageCapture タブをMHTMLとして保存するには、chrome.pageCapture APIを使用します。
permissions chrome.permissions API を使用して、インストール時ではなく実行時に宣言されたオプションのアクセス許可を要求します。これにより、ユーザーはアクセス許可が必要な理由を理解し、必要なアクセス許可のみを付与することができます。
platformKeys Chrome 45+
プラットフォームが管理するクライアント証明書にアクセスするには、chrome.platformKeys APIを使用します。ユーザーまたはポリシーが許可した場合、拡張機能はそのカスタム認証プロトコルでそのような証明書を使用することができます。例えば、サードパーティの VPN でプラットフォームが管理する証明書を使用することができます ({@link vpnProvider chrome.vpnProvider} を参照)。
power chrome.power API を使用して、システムの電源管理機能をオーバーライドします。
printerProvider Chrome 44+
chrome.printerProvider APIは、プリントマネージャが拡張機能によって制御されるプリンタに問い合わせ、その機能を照会し、これらのプリンタに印刷ジョブを送信するために使用されるイベントを公開します。
printing Chrome 81+
chrome.printing APIを使用して、Chromebookにインストールされているプリンターへ印刷ジョブを送信します。
printingMetrics Chrome 79+
chrome.printingMetrics APIを使用して、印刷の使用状況に関するデータを取得します。
privacy chrome.privacy API を使用して、ユーザーのプライバシーに影響を与える可能性のある Chrome の機能の使用状況を制御します。このAPIは、Chromeの設定を取得および設定するために、type APIのChromeSettingプロトタイプに依存しています。
proxy chrome.proxy APIを使用して、Chromeのプロキシ設定を管理します。このAPIは、プロキシ設定の取得と設定に関して、タイプAPIのChromeSettingプロトタイプに依存しています。
runtime chrome.runtime API を使用して、バックグラウンド ページを取得し、マニフェストに関する詳細を返し、アプリまたは拡張機能のライフサイクルにおけるイベントをリスンし、応答することができます。また、この API を使用して、URL の相対パスを完全修飾 URL に変換することができます。
scripting Chrome 88+MV3+
chrome.scripting API を使用して、異なるコンテキストでスクリプトを実行します。
search Chrome 87+
chrome.search API を使用して、デフォルトのプロバイダを経由した検索を行います。
sessions chrome.sessions APIを使用して、ブラウジングセッションからタブやウィンドウを照会・復元します。
storage chrome.storage APIを使用して、ユーザーデータの保存、取得、および変更の追跡を行います。
system.cpu CPUのメタデータを問い合わせるには、system.cpu APIを使用します。
system.display ディスプレイのメタデータを問い合わせるには、system.display APIを使用します。
system.memory chrome.system.memoryのAPIです。
system.storage chrome.system.storage APIを利用して、ストレージデバイスの情報を取得したり、リムーバブルストレージデバイスの着脱時に通知を受けたりすることができます。
tabCapture Foreground only
chrome.tabCapture APIを使用して、タブのメディアストリームを操作します。
tabGroups Chrome 89+MV3+
chrome.tabGroups API を使用すると、ブラウザのタブグループ化システムと連動することができます。この API を使用すると、ブラウザのタブグループを変更したり、並べ替えたりすることができます。タブのグループ化や解除、グループ内のタブの問い合わせは、chrome.tabs APIをご利用ください。
tabs ブラウザのタブを操作するには、chrome.tabs APIを使用します。この API を使用して、ブラウザのタブを作成、変更、並べ替えることができます。
topSites chrome.topSites APIを使用して、新しいタブページに表示されるトップサイト(最も訪問されたサイトなど)にアクセスします。これには、ユーザーによってカスタマイズされたショートカットは含まれません。
tts chrome.tts APIを使用して、合成音声(TTS)を再生します。関連する {@link ttsEngine} API も参照してください。拡張機能で音声エンジンを実装するためのAPIです。
ttsEngine 拡張機能を用いて音声合成エンジンを実装するには、chrome.ttsEngine APIを使用します。このAPIを利用して拡張機能を登録すると、拡張機能やChromeアプリが{@link tts} APIを利用して音声を生成する際に、発話内容やその他のパラメータを含むイベントを受け取ることができます。APIを使用して音声を生成する際に、発話内容やパラメータを含むイベントを受け取ることができます。拡張機能は、任意のWeb技術を使用して音声を合成して出力し、呼び出し元の関数にイベントを返して状態を報告することができます。
types chrome.types APIは、Chromeの型宣言を含むAPIです。
vpnProvider Chrome 43+
chrome.vpnProvider APIを使用して、VPNクライアントを実装します。
wallpaper Chrome 43+
ChromeOSの壁紙を変更するには、chrome.wallpaper APIを使用します。
webNavigation chrome.webNavigation APIを使用して、処理中のナビゲーション要求の状態に関する通知を受け取ります。
webRequest chrome.webRequest APIを使用して、トラフィックを観察、分析し、処理中のリクエストを傍受、ブロック、または変更します。
windows ブラウザのウィンドウを操作するには、chrome.windows APIを使用します。このAPIを使用して、ブラウザのウィンドウを作成、変更、再配置することができます。

Beta APIs

これらのAPIは、Chrome BetaおよびDevチャンネルでのみ利用可能です。

Name 概要
declarativeWebRequest Beta channel ≤MV2
注:このAPIは非推奨です。代わりに {@link declarativeNetRequest} をチェックしてください。APIをご覧ください。chrome.declarativeWebRequest APIを使用して、飛行中のリクエストを傍受、ブロック、または変更します。JavaScriptエンジンではなくブラウザで評価されるルールを登録できるため、{@link webRequest chrome.webRequest API}よりも大幅に高速で、ラウンドトリップレイテンシを減らし、高い効率を可能にします。

Dev APIs

これらのAPIは、Chrome Devチャンネルでのみ利用可能です。

Name 概要
automation Dev channel Foreground only
chrome.automation APIにより、開発者はブラウザのオートメーション(アクセシビリティ)ツリーにアクセスすることができます。このツリーは DOM ツリーに似ていますが、ページのセマンティックな構造のみを公開します。名前、ロール、状態を調べたり、イベントをリッスンしたり、ノードに対してアクションを実行することで、プログラム的にページと対話するために使用することができます。
processes Dev channel
ブラウザのプロセスと対話するために、chrome.processs APIを使用します。

Platform Apps APIs

これらのAPIは、すべてのプラットフォームのChrome Appsをサポートしています。

Name 概要
app.runtime アプリのライフサイクルを管理するには、chrome.app.runtime APIを使用します。アプリランタイムは、アプリのインストールを管理し、イベントページを制御し、いつでもアプリをシャットダウンすることができます。
app.window ウィンドウを作成するには、chrome.app.window APIを使用します。ウィンドウには、タイトルバーとサイズコントロールのあるオプションのフレームがあります。ウィンドウは、Chrome ブラウザのウィンドウとは関連付けられていません。これらのオプションのデモについては、「Window State Sample」を参照してください。
appviewTag Chrome 43+
appviewタグを使用すると、他のChromeアプリを自分のChromeアプリ内に埋め込むことができます。(使用方法参照)。
bluetooth chrome.bluetooth APIを使用して、Bluetoothデバイスに接続します。すべての関数は、chrome.runtime.lastErrorを介して失敗を報告します。
bluetoothLowEnergy chrome.bluetoothLowEnergy APIは、GATT(Generic Attribute Profile)を使用してBluetooth Smart(Low Energy)デバイスと通信するために使用されます。
bluetoothSocket chrome.bluetoothSocket APIを使用して、RFCOMMおよびL2CAP接続によるBluetoothデバイスとのデータ送受信を行います。
browser chrome.browser APIを使用して、現在のアプリケーションおよびChromeプロファイルに関連付けられたChromeブラウザと対話します。
clipboard Dev channel
chrome.clipboard APIは、ユーザーがクリップボードのデータにアクセスできるようにするために提供されています。これは、オープンウェブの代替手段が利用可能になるまでの、クロメオプラットフォームアプリの一時的なソリューションです。オープンウェブのソリューションが利用可能になり次第、非推奨となります(2017年第4四半期になる可能性があります)。
fileSystem Foreground only
chrome.fileSystem API を使用して、ユーザーのローカル ファイル システムの作成、読み取り、移動、および書き込みを行います。この API を使用すると、Chrome アプリはユーザーが選択した場所に対して読み取りと書き込みを行うことができます。たとえば、テキストエディタアプリは、この API を使用してローカルドキュメントの読み取りと書き込みを行うことができます。すべての失敗は、chrome.runtime.lastError.Failureで通知されます。
hid chrome.hid APIを使用して、接続されたHIDデバイスと対話します。この API は、アプリのコンテキストから HID 操作へのアクセスを提供します。このAPIを使用することで、アプリはハードウェアデバイスのドライバーとして機能することができます。本APIで発生したエラーは、{@link runtime.lastError}を設定し、関数の通常のコールバックを実行することで報告されます。このとき、コールバックの通常のパラメーターは未定義になります。
mdns Chrome 43+
chrome.mdns APIを使用して、mDNS上のサービスを検出します。これは、NSD仕様の機能のサブセットで構成されています: http://www.w3.org/TR/discovery-api/
mediaGalleries chrome.mediaGalleries APIを使用して、ユーザーのローカルディスクにあるメディアファイル(音声、画像、動画)にアクセスします(ユーザーの同意が必要です)。
networking.onc Chrome 59+
chrome.networking.onc APIは、ネットワーク接続(Cellular、Ethernet、VPNまたはWiFi)の設定に使用されます。このAPIは、自動起動されるChrome OSキオスクセッションで利用可能です。
serial chrome.serial APIを使用して、シリアルポートに接続されたデバイスからの読み取りおよびデバイスへの書き込みを行います。
socket chrome.socket API を使用して、TCP および UDP 接続を使用してネットワーク上でデータを送受信します。注: Chrome 33 以降、この API は非推奨となり、{@link sockets.udp}、{@link sockets.tcp}、{@link sockets.tcpServer} API が使用されるようになりました。
sockets.tcp TCPコネクションを使用してネットワーク上でデータを送受信するには、chrome.sockets.tcp APIを使用します。このAPIは、これまでchrome.socket APIに含まれていたTCP機能よりも優先されます。
sockets.tcpServer TCPコネクションを使用するサーバーアプリケーションを作成するには、chrome.sockets.tcpServer APIを使用します。このAPIは、これまでchrome.socket APIに含まれていたTCP機能よりも優先されます。
sockets.udp chrome.sockets.udp APIを使用すると、UDP接続を使用してネットワーク上でデータを送受信することができます。このAPIは、以前 "socket "APIに含まれていたUDPの機能より優先されます。
syncFileSystem Google Drive上のデータを保存・同期するには、chrome.syncFileSystem APIを使用します。このAPIは、Google Driveに保存されている任意のユーザ文書にアクセスするためのものではありません。この API は、アプリ固有の同期可能なストレージを提供し、オフラインでの使用やキャッシュを行うことで、異なるクライアント間で同じデータを利用できるようにします。この API の使用法については データ管理 を参照ください。
system.network chrome.system.network APIを使用します。
usb chrome.usb APIを使用して、接続されたUSBデバイスと対話します。このAPIは、アプリのコンテキストからUSBの操作にアクセスすることができます。このAPIを使用することで、アプリはハードウェアデバイスのドライバーとして機能することができます。本APIで発生したエラーは、{@link runtime.lastError}を設定し、関数の通常のコールバックを実行することで報告されます。このとき、コールバックの通常のパラメーターは未定義になります。
virtualKeyboard Chrome 58+ ChromeOS only
chrome.virtualKeyboard APIは、キオスクセッションで仮想キーボードのレイアウトや動作を設定するために使用される、キオスク専用のAPIです。
webviewTag webview タグを使用すると、ネットワーク経由でウェブからライブ コンテンツを積極的に読み込み、Chrome アプリに埋め込むことができます。アプリは webview の外観を制御してウェブ コンテンツと対話したり、埋め込まれたウェブページでナビゲーションを開始したり、その中で発生するエラー イベントに反応したりできます(「使用法」を参照)。

Discussion