jetpack sdk 0.5 開発デモ

28
SDK 0.5 開発デモ Gomita

Upload: gomita

Post on 20-Jun-2015

528 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Jetpack SDK 0.5 開発デモ

SDK 0.5 開発デモ

Gomita

Page 2: Jetpack SDK 0.5 開発デモ

1. 開発環境準備・Pythonインストール・SDKセットアップ

2. 「Hello, World」パッケージ作成・マニフェストファイル・メインプログラム・インストーラ

3. 「Copy Title + URL」パッケージ・メインプログラム・自作ライブラリ

Page 3: Jetpack SDK 0.5 開発デモ

1. 開発環境準備・Pythonインストール・SDKセットアップ

2. 「Hello, World」パッケージ作成・マニフェストファイル・メインプログラム・インストーラ

3. 「Copy Title + URL」パッケージ・メインプログラム・自作ライブラリ

Page 4: Jetpack SDK 0.5 開発デモ

入手先

Pythonhttp://www.python.org/download/Jetpack SDKhttps://jetpack.mozillalabs.com/

Page 5: Jetpack SDK 0.5 開発デモ

SDKを起動する

bin\activate

Page 6: Jetpack SDK 0.5 開発デモ

SDKドキュメントを表示する

cfx docs

Page 7: Jetpack SDK 0.5 開発デモ

1. 開発環境準備・Pythonインストール・SDKセットアップ

2. 「Hello, World」パッケージ作成・マニフェストファイル・メインプログラム・インストーラ

3. 「Copy Title + URL」パッケージ・メインプログラム・自作ライブラリ

Page 8: Jetpack SDK 0.5 開発デモ

パッケージのフォルダ構成

フォルダ/ファイル 概要

jetpack-sdk-0.5

packages

hello-world ルートフォルダ

package.json マニフェストファイル

lib プログラム格納フォルダ

main.js メインプログラム

Page 9: Jetpack SDK 0.5 開発デモ

マニフェストファイル

パッケージのメタ情報をJSON形式で記述

hello-world \ package.json

{ "name": "hello-world", "fullName": "Hello, World!", "version": "0.1", "description": "This is my first package.", "author": "Gomita <[email protected]>"}

Page 10: Jetpack SDK 0.5 開発デモ

メインプログラム

hello-world \ lib \ main.js

console.log は標準のグローバル関数

exports.main = function(options, callbacks) { console.log("Hello, World!");};

Page 11: Jetpack SDK 0.5 開発デモ

テスト実行

パッケージのルートフォルダ内で...

cfx run -a firefox

Page 12: Jetpack SDK 0.5 開発デモ

標準ライブラリ使用

require 関数で標準の timer ライブラリをインポート

timer.setInterval は window.setIntervalと同等

const timer = require("timer");

exports.main = function(options, callbacks) { timer.setInterval(function() { console.log(new Date().toLocaleTimeString()); }, 1000);};

Page 13: Jetpack SDK 0.5 開発デモ

インストーラ作成

パッケージから配布用インストーラを作成

cfx xpi

Firefox 3.7場合、再起動せずにインストール可能

Page 14: Jetpack SDK 0.5 開発デモ

1. 開発環境準備・Pythonインストール・SDKセットアップ

2. 「Hello, World」パッケージ作成・マニフェストファイル・メインプログラム・インストーラ

3. 「Copy Title + URL」パッケージ・メインプログラム・自作ライブラリ

Page 15: Jetpack SDK 0.5 開発デモ

完成イメージ

Page 16: Jetpack SDK 0.5 開発デモ

実装の概要

コンテキストメニューへ項目を追加する→ Context Menu ライブラリを使用現在のタブのタイトルとURLを取得する→ Tabs ライブラリを使用タイトルとURLをクリップボードへコピー → 標準のライブラリでは実現不可→ Clipboard ライブラリを自分で作成

Page 17: Jetpack SDK 0.5 開発デモ

パッケージのフォルダ構成

フォルダ/ファイル 概要

jetpack-sdk-0.5

packages

copy-title-url ルートフォルダ

package.json マニフェストファイル

lib プログラム格納フォルダ

main.js メインプログラム

clipboard.js 自作ライブラリ

Page 18: Jetpack SDK 0.5 開発デモ

コンテキストメニューへの項目追加

const contextMenu = require("context-menu");

exports.main = function(options, callbacks) { var newItem = contextMenu.Item({ label: "Copy Title and URL", onClick: handleClick }); contextMenu.add(newItem);};

function handleClick(contextObj, item) { // ToDo}

Page 19: Jetpack SDK 0.5 開発デモ

現在のタブのタイトルとURLを取得

const contextMenu = require("context-menu");const tabs = require("tabs");

exports.main = function(options, callbacks) { ...(snip)...};

function handleClick(contextObj, item) { var title = tabs.activeTab.title; var url = tabs.activeTab.location; console.log(title + "\n" + url);}

Page 20: Jetpack SDK 0.5 開発デモ

ClipboardライブラリのAPI

メソッド 概要

setText( text ) 引数 text をクリップボードへコピーする。

getText() クリップボードにコピーされた文字列を戻り値として返す。

Page 21: Jetpack SDK 0.5 開発デモ

Clipboardライブラリの実装

nsIClipboardHelper というXPCOMで内部処理を実装

copy-title-url \ lib \ clipboard.js

var clipboardHelper = Cc["@mozilla.org/widget/clipboardhelper;1"] .getService(Ci.nsIClipboardHelper);

exports.setText = function(text) { clipboardHelper.copyString(text);};

exports.getText = function() { // ToDo};

Page 22: Jetpack SDK 0.5 開発デモ

タイトルとURLをコピー

const contextMenu = require("context-menu");const tabs = require("tabs");const clipboard = require("clipboard");

exports.main = function(options, callbacks) { ...(snip)...};

function handleClick(contextObj, item) { var title = tabs.activeTab.title; var url = tabs.activeTab.location; clipboard.setText(title + "\n" + url);}

Page 23: Jetpack SDK 0.5 開発デモ

Widget ライブラリ

Request ライブラリ

Selection ライブラリ

まだまだ他にも色々ありますhttps://jetpack.mozillalabs.com/sdk/0.5/docs/

その他の標準ライブラリ

Page 24: Jetpack SDK 0.5 開発デモ

Widgetライブラリ

const widgets = require("widget");

exports.main = function(options, callbacks) { var button = widgets.Widget({ label: "test", image: "chrome://browser/skin/Geo.png", onClick: function(event) { ...(snip)... } }); widgets.add(button);};

Page 25: Jetpack SDK 0.5 開発デモ

Requestライブラリ

XMLHttpRequest を使いやすくしたもの

const request = require("request");

exports.main = function(options, callbacks) { var req = request.Request({ url: "http://api.twitter.com/1/statuses/public_timeline.json", onComplete: function () { var tweet = this.response.json[0]; console.log("User: " + tweet.user.screen_name); console.log("Tweet: " + tweet.text); } }); req.get();};

Page 26: Jetpack SDK 0.5 開発デモ

Selectionライブラリ

選択範囲を取得する

const selection = require("selection");

exports.main = function(options, callbacks) { selection.onSelect = function() { console.log(selection.html); };};

Page 27: Jetpack SDK 0.5 開発デモ

Add-ons Builder

http://builder.mozillalabs.com/

Page 28: Jetpack SDK 0.5 開発デモ

ありがとうございました