アンケートご協力のお願いgihyo.jpでは,2010年度に向けて豪華プレゼントが当たる読者属性アンケートを実施しております。ご協力ください。

gihyo.jp » DEVELOPER STAGE » 連載 » 続・先取り! Google Chrome Extensions » 第1回 Chrome ExtensionsのAPI#1

続・先取り! Google Chrome Extensions

第1回 Chrome ExtensionsのAPI#1

こんにちは,ALBERTの太田です。今回からChrome4のリリースまでの間,Google Chrome Extensionsの詳細を追っていきたいと思います。なおタイトルの通り,この連載は先取り! Google Chrome Extensionsの続編となっています。

まず,重要なお知らせがあります。前回の特集で何度か使用していたToolstripsとMoleがベータリリースまでに削除されることが決まりました。その代わりとして,今回解説するBrowser Actionsが利用できるようになります(Important: Toolstrips being removed in favor of browser actions)。また,Browser Actionsに合わせて,第3回で解説したPage Actions API新バージョンが提案されています。こちらも詳細は追って解説します。

そして,Chromeの今後の開発スケジュールが公開されました。こちらによると(2009年10月15日時点で),2009年10月末にBeta版の1回目のリリースがあり,12月10日に再度beta版の更新が行われ,最終的に2010年1月12日にChrome 4の正式リリースとなる予定が立っています。

それでは,今回はChrome ExtensionsのAPIの中から,Browser Actions APIとTabs APIの使い方を見ていきます。

Browser Actions API

Browser Actions APIはツールバーにボタンを追加するAPIです。(2009年10月12日時点では)まだドキュメントはなく,提案段階のドキュメントのみですが,実装はかなり進んでおりWindowsのdev版でその機能を試すことができます。

最初に,実装案のモックを見てみます。

図1 Browser Actionsのモック

図1 Browser Actionsのモック

このようにOmniBox(アドレスバー)の隣に任意のボタンを追加できます。FirefoxのAdd-onでもよく使用される機能です。ツールバーの領域には限りがあるので,解決策として図1のように数が多い場合は隠れるようになる予定です(Windowsのクイック起動とよく似ています)。このBrowser Actionsの使い方と詳細を解説します。

Browser Actionsの使い方

では,サンプルを見ていきます。Browser Actionsを使用するには,例によってまずmanifest.jsonにその定義を記述します。

なお,今回はChromiumのリポジトリにある,Browser Actionsの印刷ボタンをサンプルとして使用します。

manifest.jsonでのbrowser_actionの定義

{
  "name": "Print this page browser action extension",
  "description": "This extension adds a print button to the toolstrip",
  "version": "1.0",
  "background_page": "background.html",
  "permissions": [
    "tabs", "http://*/*", "https://*/*"
  ],
  "browser_action": {
      "default_icon": "images/icon19.png",
      "default_title": "Browser Action"
  }
}

browser_actionというプロパティに,default_title(マウスオーバー時に表示されるテキスト)とdefault_icon(ボタンとして使用される画像)を指定しています。default_iconは必須です。この記述だけでボタンの設定は完了です。続いて,ボタンをクリックした際のアクションをBackground Pagesで定義します。

Background Pageでのbrowser_actionの定義(Script部分のみ)

chrome.browserAction.onClicked.addListener(function(tab) {
  var action_url = "javascript:window.print();";
  chrome.tabs.update(tab.id, {url: action_url});
});

このように,chrome.browserAction.onClickedでボタンがクリックされた際のアクションを定義できます。これでボタンをクリックしたら現在選択しているタブを印刷するシンプルな機能を実現できます(印刷ではなく印刷プレビューであればもっと実用的なのですが,今のところ印刷プレビューを呼び出すAPIは用意されていないようです)。

Badgeの使い方

Browser ActionsにはBadgeと呼ばれるボタン上にテキストを表示する機能があります。このBadgeの使い方を見てみます。

Badgeの操作

chrome.browserAction.setBadgeText({text:"111", tabId:tab.id});
chrome.browserAction.setBadgeBackgroundColor({color:[190, 190, 190, 230], tabId:tab.id});
chrome.browserAction.setIcon({path:'icon.png', tabId:tab.id});
chrome.browserAction.setTitle({title:'MyButton', tabId:tab.id});

このように,Background PagesやToolstripsなどの拡張コンテキストからchrome.browserActionのメソッドとして,setBadgeText,setBadgeBackgroundColor,setIcon,setTitleが使用できます。それぞれtabIdを指定することでタブごとに値を設定することが可能です。

setBadgeTextは4文字以内のテキストを指定します(2009年10月12日時点では,数値を渡すとエラーになるので注意が必要です)。setBadgeBackgroundColorはBadgeの背景色を配列で指定します。赤,緑,青,透明度の順となっており,CSSなどで使われるRGBAです。

ssetIconはアイコン画像のパス,もしくはImageDataを渡すことができます。ImageDataを渡すことができるので,canvasを使って動的に作ったイメージをボタンにすることが可能です。

Popupの使い方

Popupは図2のモックのように,Browser Actionのボタンをクリックした際に任意のHTMLを表示するAPIです。

図2 Popupのモック

図2 Popupのモック

こちらもmanifest.jsonでHTMLのパスを指定します。

Popupの定義

  "browser_action": {
      "default_icon": "icon.png",
      "default_title": "Popup Sample",
      "popup": "popup.html"
  }

著者プロフィール

太田昌吾(おおたしょうご,ハンドルネーム:os0x)

1983年生まれ。JavaScriptをメインに,HTML/CSSにFlashなどのクライアントサイドを得意とするウェブエンジニア。2009年12月より、Google Chrome ExtensionsのAPI Expertとして活動を開始。

URLhttp://d.hatena.ne.jp/os0x/

コメント

コメントの記入

パスサポ

多数の情報処理技術者試験対策書籍の発行実績を誇る技術評論社がお届けする,資格試験合格サイト「めざせ! 情報処理試験 パスサポ」が開設されました。

ピックアップ

サクセスストーリーに続く,快適サーバー運用管理のヒント!

データの増大,煩雑な管理,システムダウン,セキュリティなど,迫りくる課題からシステム管理者の負担を軽くするポイントを解説します。

gihyo.jp インフラエンジニア情報局

ネットワークやITにかかわるあらゆる業種で必要とされるインフラエンジニアに向けた技術情報や心構え,その魅力について多角的に紹介。

テストエンジニア ステーション

いま,ITに関わるあらゆる開発業務で注目されつつあるテスト系エンジニアをターゲットにしたコンテンツサイトを展開します。

一行クイックアンケート

gihyo.jpで取り上げてほしいネタは?

※検索はページ右上の検索ボックスをご利用ください。

その他の連載

使ってみよう! Windows Live SDK/API

Windows Liveサービスの一部にはAPIやSDKとして提供されているものがあります。本連載では各API・SDKの紹介とそれらを利用したアプリケーションを開発していきます。

Lifelog~毎日保存したログから見えてくる個性

コンピュータを使って,日常のさまざまなことの記録(ログ)をとり,それを分析して活用することで,もう一段階上の「楽な生活」をめざす日々の研究報告です。

もっと便利に!jQueryでラクラクサイト制作(実践サンプル付き)

本連載では,実践サンプルとともに,jQueryを上手に活用してサイト制作の品質向上・効率化を実現するための実践テクニックを解説します。

Ruby Freaks Lounge

Rubyに関わる,執筆者自身の旬なテーマを扱った,リレー形式の連載です。

これでできる! クロスブラウザJavaScript入門

JavaScriptはウェブ制作において避けては通れない重要な言語ですが,JavaScriptに苦手意識を持たれている方は少なくないようです。 その最大の原因がクロスブラウザ対応という課題であり,本連載ではクロスブラウザ対応のテクニックを詳細に解説します。

ビジネスで成功するためのシステム運用管理のポイント

システムの多様化,技術進歩に伴い,ITシステムの運用管理の必要性が年々高まっています。本連載では,システムの運用管理とは何かについて,現場のニーズと具体的な指針を押さえながらを解説します。

2010年版SEO体得講座

本連載では,いまや企業サイトの戦略の1つとして欠かすことのできないSEOについて,最新トレンドからすぐに使えるTipsまでを紹介します。

小型Linuxサーバの最高峰 OpenBlockS 600活用指南

搭載メモリの増加,CPUクロックの向上など,あらゆる面が強化された期待の新モデルOpenBlockS 600。この記事ではOpenBlockS 600の紹介から,活用するためのさまざまなノウハウを紹介していきます。

連載一覧

gihyo.jp

  • DEVELOPER STAGE
  • ADMINISTRATOR STAGE
  • WEB+DESIGN STAGE
  • LIFESTYLE STAGE
  • SCIENCE STAGE
  • NEWS & REPORT

書籍案内

  • 新刊書籍
  • 書籍ジャンル一覧
  • 書籍シリーズ一覧
  • 新刊ピックアップ
  • ロングセラー
  • 電脳会議

定期刊行物一覧

  • Software Design
  • WEB+DB PRESS
  • Web Site Expert
  • 組込みプレス