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