SlideShare una empresa de Scribd logo
1 de 34
Descargar para leer sin conexión
2013/06/15
AndroiderとiOS屋さんが
Firefox OSアプリを作ったら
@kfurue
13年6月15日土曜日
自己紹介
✤ 古江和宏
✤ AVCマルチメディアソフト(株)
✤ iOS開発のスペシャリスト。
✤ iOSの次はこいつだ!(と信じながら、色々手をだしてる)
✤ 業務では
✤ 家電連携iOSアプリケーション開発とか
✤ Twitter:@kfurue
✤ あいぽん系の勉強会に出没してます。
13年6月15日土曜日
協力してもらった人
✤ 名前
✤ @kobashinG (こばしん)
✤ AVCマルチメディアソフト(株)
✤ TechBoosterの中の人。
✤ Android全般。Linuxレイヤも見るよーな「なんでも屋」さん。
✤ スキルマップ
✤ Android : 難しいよねー
✤ Web系 : 入門書れべる。
Android
HTML+CSS+JS
Linux
M気質
0 25 50 75 100
最近、
お腹周りが
ですね。。
13年6月15日土曜日
協力してもらった人
✤ 名前
✤ muchiki0226(木村 尭海)
✤ AVCマルチメディアソフト(株)
✤ TechBoosterの中の人。
✤ 業務では
✤ 家電連携Androidアプリケーション開発
✤ 個人では
✤ Androidアプリ開発
✤ WindowsPhone7アプリ開発
✤ サッカーロボット競技大会「RoboCup」に参加
✤ Twitter:@muchiki0226
13年6月15日土曜日
今日のネタ
✤ テンプレートアプリを準備しよう。
✤ 動画再生にチャレンジ。
✤ 落書きアプリにチャレンジ。
✤ アプリ間連携にチャレンジ。
13年6月15日土曜日
テンプレートアプリを準備しよう。
✤ Templateアプリが用意されている
✤ GitHub( https://github.com/mozilla/mortar )
★ 標準のTemplate
★ list-detail形式のTemplate
★ ゲーム用Template(deprecated?)
13年6月15日土曜日
テンプレートアプリを準備しよう。
標準のTemplate list-detailのTemplate gameのTemplate
✤ 用意されているTemplateの外観
13年6月15日土曜日
テンプレートアプリを準備しよう。
✤ Templateアプリをクローンして始めると色々 る
✤ volo をインストールしておく。
✤ voloはテンプレートのクローンや、プロジェクトへのライブラリの読み込みなど
をしてくれる。
✤ mortar-app-stubをクローンする
✤ GitHubから自動でダウンロードしてくれる。
$ npm install -g volo
$ volo create プロジェクト名 mozilla/mortar-app-stub
できたプロジェクトをいじくり回して、Let’s Try...
13年6月15日土曜日
✤ 一般的なWebアプリと同じ構成
✤ manifest.webappを追加することでFirefoxOSアプリに。
アプリケーションの構成
13年6月15日土曜日
manifest.webappの中身
https://developer.mozilla.org/ja/docs/Web/Apps/Manifest
{
"name": "れんけい",
"description": "Firefox OSアプリ間連携テストアプリ",
"launch_path": "/index.html",
"icons": {
"128": "/icon.png"
},
"developer": {
"name": "kfurue",
"url": "http://kfurue.hatenablog.com"
},
"default_locale": "ja"
}
13年6月15日土曜日
Applicationを実機で動かそう
✤ USBでつないだらPush
13年6月15日土曜日
動画再生
13年6月15日土曜日
サポートされるコーデック
✤ Video
✤ WebM
✤ Ogg
✤ MP4(H.264 AAC or MP3)
✤ Audio
✤ WebM
✤ Ogg
✤ WAVE
13年6月15日土曜日
プリインVideoアプリ使ってみる
✤ とりあえずシミュレータで起動してみる
13年6月15日土曜日
プリインVideoアプリ使ってみる
((((;゚Д゚))))ェ????
13年6月15日土曜日
ならば
✤ ギャラリーアプリはどうなの??
✤ こっちは動く
✤ Mac環境では
✤ iPhotoにある画像が表示される
✤ ただし動画は×
✤ 仕方ないので諦める
実機で開発しよう!
13年6月15日土曜日
<video>をつかって再生させる(1/2)
✤ ネットワーク上の動画ファイルを再生する
✤ index.htmlに下記を記入
<video src="http://v2v.cc/~j/theora_testsuite/320x240.ogg" controls>
Your browser does not support the <code>video</code> element.
</video>
13年6月15日土曜日
SDカード内の動画を再生させる
✤ ストレージにアクセスしてデータを取り出す必要がある
✤ マニフェストの変更
✤ アプリタイプ変更
✤ 権限変更
"type": "privileged",
"permissions": {
"device-storage:sdcard": {
"description": "Required for video playing",
"access": "readwrite"
}
}
13年6月15日土曜日
SDカード内の動画を再生させる
✤ SDカードの中のファイルを取り出す
var sdcard = navigator.getDeviceStorage('sdcard');
var request = sdcard.get("foo.ogg");
request.onsuccess = function () {
var file = this.result;
console.log("Get the file: " + file.mozFullPathInternal);
var video = document.createElement("video");
if(video.canPlayType(file.type)){
console.log("video can play.");
video.controls = true;
video.src=URL.createObjectURL(file);
document.body.appendChild(video);
}
}
13年6月15日土曜日
らくがきアプリ
13年6月15日土曜日
落書きアプリを作ってみる。
✤ 作るもの
✤ Android入門のときに作った、タッチで落書きできるやつ。
13年6月15日土曜日
<canvas>を使ってみる ①
✤ index.htmlに<canvas>を作成。
✤ に聞くHTML5!
✤ javascriptから触りたいので、idを振っておく
<body>
<h1>Canvas Sample</h1>
<div id="content">
<button id="func-btn">clear</button>
<canvas id="sample-canvas" width=300 height=300></canvas>
</div>
<script type="text/javascript" src="js/app.js"></script>
</body>
13年6月15日土曜日
<canvas>を使ってみる②
✤ Canvasに固定線を引いてみる。
function drawLine(){
// コンテキストを取得する
var canvas = document.querySelector("#sample-canvas");
var ctx = canvas.getContext('2d');
// 線を書く宣言
ctx.beginPath();
// 線の始めから終わりまでの座標
ctx.moveTo(10,10);
ctx.lineTo(200,200);
// 線を書く、Pathを閉じる
ctx.stroke();
ctx.closePath();
}
(10, 10)
(200, 200)
13年6月15日土曜日
タッチイベントを取得する
✤ タッチイベントを<canvas>に設定してみる
✤ element.addEventListener(type, listener );
✤ EventTypeには
type
listener
EventTypeを指定する。
functionを指定する
mouse touch タイミング
mousestart touchstart
mousemove touchmove
mouseend touchend
タッチした時に呼ばれる
移動中に呼ばれる
アップした時に呼ばれる。
https://developer.mozilla.org/en-US/docs/Web/API/TouchEvent?redirectlocale=en-US&redirectslug=DOM%2FTouchEvent
※TouchEventについて詳しくは
13年6月15日土曜日
タッチイベントを取得する
✤ タッチイベントを<canvas>に設定してみる
✤
var canvas = document.querySelector("#sample-canvas");
var ctx = canvas.getContext('2d');
// マウス用
canvas.addEventListener("mousedown",onCanvasDown);
canvas.addEventListener("mouseup",onCanvasUp);
canvas.addEventListener("mousemove",onCanvasMove);
// タッチパネル用
canvas.addEventListener("touchstart",onCanvasDown);
canvas.addEventListener("touchend",onCanvasUp);
canvas.addEventListener("touchmove",onCanvasMove);
13年6月15日土曜日
✤ touchEvent.pageX とか touchEvent.pageY とかで取れる。
✤ 赤色ではなく緑色がとれる
✤ canvasの開始位置(水色)がとれれば?
✤ element.offsetLeft / element.offsetTop でOK!
// x,y座標をx,yに読み込む
function getPoint(e){
if(isDebug){
x = e.clientX - canvas.offsetLeft;
y = e.clientY - canvas.offsetTop;
}else{
var touch = e.touches[0];
x = touch.pageX - canvas.offsetLeft;
y = touch.pageY - canvas.offsetTop;
}
}
タッチ座標をひろってくる
13年6月15日土曜日
あとは作ったの繋ぐだけ。
✤ moveの間で描画を繰り返すようにコードを繋いで完成!
✤ その他のポイント、思ったことは?
✴ moveはhover状態でも飛んでくる(マウスだけ)
タッチとアップの間だけ動くようにFlag管理した。
タッチでイベント登録、アップで解除でもいいかも。
✴ HTMLとCSSとJavascriptってAndroidのXMLとJavaみたい。
Event登録の方法も似てるし、結構すんなり動かせた気が
 する(もちろん、難しいことしてないけど)。
 Androiderのみなさん!第一歩の壁は低い印象です!
13年6月15日土曜日
アプリ間連携
13年6月15日土曜日
アプリ間連携とは
✤ 別々のアプリ間でデータや処理を受け渡す仕組み
✤ Androidで言うインテント
✤ iOSで言うURLスキーム
✤ Firefox OSではWeb Activitiesで実現
13年6月15日土曜日
Web activitiesの使い方(画像取得)
✤ アクティビティの呼び出し
✤ 画像の取得というアクティビティを
サポートするアプリを取得する例
var pick = new MozActivity({
name: "pick",
data: {
type: ["image/png", "image/jpg", "image/jpeg"]
}
});
13年6月15日土曜日
Web activitiesの使い方(画像共有)
✤ 画像の共有というアクティビティを
サポートするアプリを取得する例
var share = new MozActivity({
name: "share",
data: {
type: "image/*",
number: 1,
blobs: [this.result.blob],
}
});
13年6月15日土曜日
その他のアクティビティ
✤ configure
✤ costcontrol/balance
✤ costcontrol/data_usage
✤ costcontrol/telephony
✤ dial
✤ new (例 type: “websms/
sms”, “webcontacts/contact”)
✤ open
✤ pick (例 type: “image/png”)
✤ record
✤ save-bookmark
✤ share
✤ test
✤ view
13年6月15日土曜日
はいできた
✤ アプリにアクティビティを登録することも可能
✤ マニフェストに記述
✤ コード上でアクティビティハンドラを登録
✤ アクティビティ完了後の処理の実装が肝
13年6月15日土曜日
まとめ
✤ Eventを登録して、実装する形式は他プラットフォームを知っていれば受け入れやすい。
✤ 第一歩目の壁は低い印象。
✤ 実機接続系はまだまだ粗いところも?
✤ 急にデバイスが認識しなくなった!
✤ アプリが転送されないんだが。。。
✤ 困ったときのWeb頼み。記事数はかなりある印象。
✤ FirefoxOS専用のAPIとかはまだまだ??
✤ 知識が足りなくて、UIの互換性ががが。
✤ シミュレーターとPEAKで画面の大きさ違います。固定で大きさ突っ込んじゃダメ。
13年6月15日土曜日

Más contenido relacionado

Similar a Androiderとi os屋さんがfirefoxosアプリを作ったら

スマフォ時代に乗り遅れない為のレスポンシブ・ウェブデザイン
スマフォ時代に乗り遅れない為のレスポンシブ・ウェブデザインスマフォ時代に乗り遅れない為のレスポンシブ・ウェブデザイン
スマフォ時代に乗り遅れない為のレスポンシブ・ウェブデザインinvogue
 
早稲田大学授業 - モバイルプログラミング
早稲田大学授業 - モバイルプログラミング早稲田大学授業 - モバイルプログラミング
早稲田大学授業 - モバイルプログラミングIppei Arita
 
クリエイティブキャンプ2013:スマホでFacebookアプリの第一歩
クリエイティブキャンプ2013:スマホでFacebookアプリの第一歩クリエイティブキャンプ2013:スマホでFacebookアプリの第一歩
クリエイティブキャンプ2013:スマホでFacebookアプリの第一歩Tetsuya Shiraishi
 
MetroStyleAppsさわってみた わんくま
MetroStyleAppsさわってみた わんくまMetroStyleAppsさわってみた わんくま
MetroStyleAppsさわってみた わんくまc-mitsuba
 
真のレシポンシブって何だろう
真のレシポンシブって何だろう真のレシポンシブって何だろう
真のレシポンシブって何だろうYumi uniq Ishizaki
 
20170624 発表資料-ml
20170624 発表資料-ml20170624 発表資料-ml
20170624 発表資料-mlOzawa Kensuke
 
今から始めよう!WordPressで作る女子ウケ★スマホサイト
今から始めよう!WordPressで作る女子ウケ★スマホサイト今から始めよう!WordPressで作る女子ウケ★スマホサイト
今から始めよう!WordPressで作る女子ウケ★スマホサイトrie05
 
Pythonと DataDogを 使って簡単な システムモニターリング (Pycon apac 2013)
Pythonと DataDogを 使って簡単な システムモニターリング (Pycon apac 2013)Pythonと DataDogを 使って簡単な システムモニターリング (Pycon apac 2013)
Pythonと DataDogを 使って簡単な システムモニターリング (Pycon apac 2013)Naotaka Jay HOTTA
 
Androidアプリ滞在時間の計測
Androidアプリ滞在時間の計測Androidアプリ滞在時間の計測
Androidアプリ滞在時間の計測Shigeki Yamato
 
アプリリリース後に後悔しないための20のこと
アプリリリース後に後悔しないための20のことアプリリリース後に後悔しないための20のこと
アプリリリース後に後悔しないための20のことleverages_event
 
WordPress プラグイン Infinite Scroll を試してみた
WordPress プラグイン Infinite Scroll を試してみたWordPress プラグイン Infinite Scroll を試してみた
WordPress プラグイン Infinite Scroll を試してみたYuji Nojima
 
AngularJS勉強会「そもそもwebって」@ツクロア勉強会(2015.09.10)
AngularJS勉強会「そもそもwebって」@ツクロア勉強会(2015.09.10)AngularJS勉強会「そもそもwebって」@ツクロア勉強会(2015.09.10)
AngularJS勉強会「そもそもwebって」@ツクロア勉強会(2015.09.10)tomonari takahashi
 
注目のイスラエルの テクノロジーベンチャー紹介 &取り組み方の提案
注目のイスラエルの テクノロジーベンチャー紹介 &取り組み方の提案注目のイスラエルの テクノロジーベンチャー紹介 &取り組み方の提案
注目のイスラエルの テクノロジーベンチャー紹介 &取り組み方の提案Naoji Taniguchi
 
2013/03/09 VisualStudio勉強会 LT 「統合開発環境の支援ツール」
2013/03/09 VisualStudio勉強会 LT 「統合開発環境の支援ツール」2013/03/09 VisualStudio勉強会 LT 「統合開発環境の支援ツール」
2013/03/09 VisualStudio勉強会 LT 「統合開発環境の支援ツール」Satoshi Noda
 
WordPressサイトを(場当たり的に)モバイル対応した際に調べたこと・やったこと
WordPressサイトを(場当たり的に)モバイル対応した際に調べたこと・やったことWordPressサイトを(場当たり的に)モバイル対応した際に調べたこと・やったこと
WordPressサイトを(場当たり的に)モバイル対応した際に調べたこと・やったこと勇一 大山
 
オープンソースプロジェクトのはじめかた@Creators MeetUp #25
オープンソースプロジェクトのはじめかた@Creators MeetUp #25オープンソースプロジェクトのはじめかた@Creators MeetUp #25
オープンソースプロジェクトのはじめかた@Creators MeetUp #25Erina Takei
 
Word pressで作るandroidアプリ
Word pressで作るandroidアプリWord pressで作るandroidアプリ
Word pressで作るandroidアプリyohei iwakura
 
芸術情報演習デザイン(Web) 第8回: CSSフレームワークを使う
芸術情報演習デザイン(Web)  第8回: CSSフレームワークを使う芸術情報演習デザイン(Web)  第8回: CSSフレームワークを使う
芸術情報演習デザイン(Web) 第8回: CSSフレームワークを使うAtsushi Tadokoro
 

Similar a Androiderとi os屋さんがfirefoxosアプリを作ったら (20)

スマフォ時代に乗り遅れない為のレスポンシブ・ウェブデザイン
スマフォ時代に乗り遅れない為のレスポンシブ・ウェブデザインスマフォ時代に乗り遅れない為のレスポンシブ・ウェブデザイン
スマフォ時代に乗り遅れない為のレスポンシブ・ウェブデザイン
 
早稲田大学授業 - モバイルプログラミング
早稲田大学授業 - モバイルプログラミング早稲田大学授業 - モバイルプログラミング
早稲田大学授業 - モバイルプログラミング
 
LL祭り2013資料
LL祭り2013資料LL祭り2013資料
LL祭り2013資料
 
クリエイティブキャンプ2013:スマホでFacebookアプリの第一歩
クリエイティブキャンプ2013:スマホでFacebookアプリの第一歩クリエイティブキャンプ2013:スマホでFacebookアプリの第一歩
クリエイティブキャンプ2013:スマホでFacebookアプリの第一歩
 
MetroStyleAppsさわってみた わんくま
MetroStyleAppsさわってみた わんくまMetroStyleAppsさわってみた わんくま
MetroStyleAppsさわってみた わんくま
 
真のレシポンシブって何だろう
真のレシポンシブって何だろう真のレシポンシブって何だろう
真のレシポンシブって何だろう
 
20170624 発表資料-ml
20170624 発表資料-ml20170624 発表資料-ml
20170624 発表資料-ml
 
今から始めよう!WordPressで作る女子ウケ★スマホサイト
今から始めよう!WordPressで作る女子ウケ★スマホサイト今から始めよう!WordPressで作る女子ウケ★スマホサイト
今から始めよう!WordPressで作る女子ウケ★スマホサイト
 
Pythonと DataDogを 使って簡単な システムモニターリング (Pycon apac 2013)
Pythonと DataDogを 使って簡単な システムモニターリング (Pycon apac 2013)Pythonと DataDogを 使って簡単な システムモニターリング (Pycon apac 2013)
Pythonと DataDogを 使って簡単な システムモニターリング (Pycon apac 2013)
 
Androidアプリ滞在時間の計測
Androidアプリ滞在時間の計測Androidアプリ滞在時間の計測
Androidアプリ滞在時間の計測
 
アプリリリース後に後悔しないための20のこと
アプリリリース後に後悔しないための20のことアプリリリース後に後悔しないための20のこと
アプリリリース後に後悔しないための20のこと
 
WordPress プラグイン Infinite Scroll を試してみた
WordPress プラグイン Infinite Scroll を試してみたWordPress プラグイン Infinite Scroll を試してみた
WordPress プラグイン Infinite Scroll を試してみた
 
AngularJS勉強会「そもそもwebって」@ツクロア勉強会(2015.09.10)
AngularJS勉強会「そもそもwebって」@ツクロア勉強会(2015.09.10)AngularJS勉強会「そもそもwebって」@ツクロア勉強会(2015.09.10)
AngularJS勉強会「そもそもwebって」@ツクロア勉強会(2015.09.10)
 
注目のイスラエルの テクノロジーベンチャー紹介 &取り組み方の提案
注目のイスラエルの テクノロジーベンチャー紹介 &取り組み方の提案注目のイスラエルの テクノロジーベンチャー紹介 &取り組み方の提案
注目のイスラエルの テクノロジーベンチャー紹介 &取り組み方の提案
 
2013/03/09 VisualStudio勉強会 LT 「統合開発環境の支援ツール」
2013/03/09 VisualStudio勉強会 LT 「統合開発環境の支援ツール」2013/03/09 VisualStudio勉強会 LT 「統合開発環境の支援ツール」
2013/03/09 VisualStudio勉強会 LT 「統合開発環境の支援ツール」
 
WordPressサイトを(場当たり的に)モバイル対応した際に調べたこと・やったこと
WordPressサイトを(場当たり的に)モバイル対応した際に調べたこと・やったことWordPressサイトを(場当たり的に)モバイル対応した際に調べたこと・やったこと
WordPressサイトを(場当たり的に)モバイル対応した際に調べたこと・やったこと
 
オープンソースプロジェクトのはじめかた@Creators MeetUp #25
オープンソースプロジェクトのはじめかた@Creators MeetUp #25オープンソースプロジェクトのはじめかた@Creators MeetUp #25
オープンソースプロジェクトのはじめかた@Creators MeetUp #25
 
Word pressで作るandroidアプリ
Word pressで作るandroidアプリWord pressで作るandroidアプリ
Word pressで作るandroidアプリ
 
芸術情報演習デザイン(Web) 第8回: CSSフレームワークを使う
芸術情報演習デザイン(Web)  第8回: CSSフレームワークを使う芸術情報演習デザイン(Web)  第8回: CSSフレームワークを使う
芸術情報演習デザイン(Web) 第8回: CSSフレームワークを使う
 
Scc2013 air
Scc2013 airScc2013 air
Scc2013 air
 

Último

IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxIoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxAtomu Hidaka
 
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
新人研修のまとめ       2024/04/12の勉強会で発表されたものです。新人研修のまとめ       2024/04/12の勉強会で発表されたものです。
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。iPride Co., Ltd.
 
プレイマットのパターン生成支援ツール
プレイマットのパターン生成支援ツールプレイマットのパターン生成支援ツール
プレイマットのパターン生成支援ツールsugiuralab
 
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。iPride Co., Ltd.
 
プレイマットのパターン生成支援ツールの評価
プレイマットのパターン生成支援ツールの評価プレイマットのパターン生成支援ツールの評価
プレイマットのパターン生成支援ツールの評価sugiuralab
 
20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directoryosamut
 
PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000Shota Ito
 

Último (7)

IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxIoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
 
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
新人研修のまとめ       2024/04/12の勉強会で発表されたものです。新人研修のまとめ       2024/04/12の勉強会で発表されたものです。
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
 
プレイマットのパターン生成支援ツール
プレイマットのパターン生成支援ツールプレイマットのパターン生成支援ツール
プレイマットのパターン生成支援ツール
 
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
 
プレイマットのパターン生成支援ツールの評価
プレイマットのパターン生成支援ツールの評価プレイマットのパターン生成支援ツールの評価
プレイマットのパターン生成支援ツールの評価
 
20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory
 
PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000
 

Androiderとi os屋さんがfirefoxosアプリを作ったら