You are on page 1of 24

SDK 0.

2 開発デモ

Gomita
1. Python インストール
2. SDK セットアップ
3. パッケージ作成
4. プログラム作成
5. ライブラリ作成
6. オフライン監視機能の開発
7. ドキュメント作成
8. インストーラ作成
1. Python インストール
2. SDK セットアップ
3. パッケージ作成
4. プログラム作成
5. ライブラリ作成
6. オフライン監視機能の開発
7. ドキュメント作成
8. インストーラ作成
1. Python インストール
2. SDK セットアップ
3. パッケージ作成
4. プログラム作成
5. ライブラリ作成
6. オフライン監視機能の開発
7. ドキュメント作成
8. インストーラ作成
SDK を起動する

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

cfx docs
1. Python インストール
2. SDK セットアップ
3. パッケージ作成
4. プログラム作成
5. ライブラリ作成
6. オフライン監視機能の開発
7. ドキュメント作成
8. インストーラ作成
パッケージのフォルダ構成

フォルダ/ファイル 概要
jetpack-sdk-0.2

packages

hello-world ルートフォルダ

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

README.md ドキュメントファイル

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

main.js メインプログラム

simple-dialog.js 自作ライブラリ
マニフェストファイル
• パッケージのメタ情報を JSON 形式で記述

• hello-world\package.json

{
"id": "helloworld@xuldev.org",
"version": "0.1",
"description": "This is my first package.",
"author": "Gomita <gomita@xuldev.org>"
}
1. Python インストール
2. SDK セットアップ
3. パッケージ作成
4. プログラム作成
5. ライブラリ作成
6. オフライン監視機能の開発
7. ドキュメント作成
8. インストーラ作成
メインプログラム
• hello-world\lib\main.js

exports.main = function(options, callbacks) {


console.log("Hello, World!");
};

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


テスト実行
• パッケージのルートフォルダ内で ...

cfx run -a firefox


標準ライブラリ使用
• require で Jetpack 標準の timer ライブラリをインポート

var timer = require("timer");

exports.main = function(options, callbacks) {


timer.setInterval(function() {
console.log(new Date().toLocaleTimeString());
}, 1000);
};

• timer.setInterval は window.setInterval と同等


1. Python インストール
2. SDK セットアップ
3. パッケージ作成
4. プログラム作成
5. ライブラリ作成
6. オフライン監視機能の開発
7. ドキュメント作成
8. インストーラ作成
simple-dialog ライブラリ
• 単純なダイアログを表示するための自作ライブラリ

メソッド 概要
alert( text ) 警告ダイアログを表示する。

「はい」「いいえ」ボタン付きの確認ダ
イアログを表示する。
confirmYesNo( text )
ユーザが「はい」ボタン押下時、 true
を返す。
simple-dialog ライブラリ実装
• nsIPromptService という XPCOM で実装
• hello-world\lib\simple-dialog.js

var promptSvc = Cc["@mozilla.org/embedcomp/prompt-service;1"]


.getService(Ci.nsIPromptService);

exports.alert = function(text) {
promptSvc.alert(null, "[Jetpack]", text);
};

exports.confirmYesNo = function(text) {
var pos = promptSvc.confirmEx(
null, "[Jetpack]", text, promptSvc.STD_YES_NO_BUTTONS,
null, null, null, null, {}
);
return (pos == 0);
};
simple-dialog ライブラリ使用
var simpleDialog = require("simple-dialog");

exports.main = function(options, callbacks) {


var adult = simpleDialog.confirmYesNo("Are you over 18 years old?");
if (adult) {
simpleDialog.alert("Welcome!");
}
else {
simpleDialog.alert("Good bye!");
}
};
1. Python インストール
2. SDK セットアップ
3. パッケージ作成
4. プログラム作成
5. ライブラリ作成
6. オフライン監視機能の開発
7. ドキュメント作成
8. インストーラ作成
observer-service ライブラリ
• Jetpack 標準の observer-service ライブラリ

メソッド 概要
add(topic, callback) オブザーバを登録

remove(topic, callback) オブザーバの登録を解除

notify(topic, subject, data) オブザーバへ通知

• callback は function(subject, data) { ... } 形式

• nsIObserverService という XPCOM で実装


オフライン監視機能の実装
• オフライン状態変化時の topic: network:offline-status-changed
• callback に渡される data: offline または online

var observer = require("observer-service");


var simpleDialog = require("simple-dialog");

exports.main = function(options, callbacks) {


observer.add("network:offline-status-changed", function(subject, data) {
if (data == "offline") {
simpleDialog.alert("Firefox is now offline.");
}
else if (data == "online") {
simpleDialog.alert("Firefox is now online.");
}
});
};
1. Python インストール
2. SDK セットアップ
3. パッケージ作成
4. プログラム作成
5. ライブラリ作成
6. オフライン監視機能の開発
7. ドキュメント作成
8. インストーラ作成
ドキュメント作成
• マークダウン形式
• hello-world\README.md

This is my *first* package.

* foo
* bar
* baz
1. Python インストール
2. SDK セットアップ
3. パッケージ作成
4. プログラム作成
5. ライブラリ作成
6. オフライン監視機能の開発
7. ドキュメント作成
8. インストーラ作成
インストーラ作成
• パッケージから XPI インストーラを作成

cfx xpi

You might also like