Top Banner
SDK 0.5 開発デモ Gomita
28

Jetpack SDK 0.5 開発デモ

Jun 20, 2015

Download

Documents

Gomita
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
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 開発デモ

ありがとうございました