Download free for 30 days
Sign in
Upload
Language (EN)
Support
Business
Mobile
Social Media
Marketing
Technology
Art & Photos
Career
Design
Education
Presentations & Public Speaking
Government & Nonprofit
Healthcare
Internet
Law
Leadership & Management
Automotive
Engineering
Software
Recruiting & HR
Retail
Sales
Services
Science
Small Business & Entrepreneurship
Food
Environment
Economy & Finance
Data & Analytics
Investor Relations
Sports
Spiritual
News & Politics
Travel
Self Improvement
Real Estate
Entertainment & Humor
Health & Medicine
Devices & Hardware
Lifestyle
Change Language
Language
English
Español
Português
Français
Deutsche
Cancel
Save
Submit search
EN
Uploaded by
Kentaro Iizuka
3,026 views
Knockout を用いた Firefox OS アプリケーションの開発
関東Firefox OS勉強会 4th 発表スライド JavaScript MVVM フレームワーク Knockout を用いた Firefox OS アプリケーションの開発について話しました。
Technology
◦
Read more
7
Save
Share
Embed
Embed presentation
Download
Downloaded 13 times
1
/ 36
2
/ 36
3
/ 36
4
/ 36
5
/ 36
6
/ 36
7
/ 36
8
/ 36
9
/ 36
10
/ 36
11
/ 36
12
/ 36
13
/ 36
14
/ 36
15
/ 36
16
/ 36
17
/ 36
18
/ 36
19
/ 36
20
/ 36
21
/ 36
22
/ 36
23
/ 36
24
/ 36
25
/ 36
26
/ 36
27
/ 36
28
/ 36
29
/ 36
30
/ 36
31
/ 36
32
/ 36
33
/ 36
34
/ 36
35
/ 36
36
/ 36
More Related Content
PDF
jQuery Performance Tips – jQueryにおける高速化 -
by
Hayato Mizuno
KEY
EC-CUBEプラグイン講義
by
ria1201
PDF
concrete5デザインカスタマイズに必要なPHPの知識
by
Hishikawa Takuro
PPTX
13016 n分で作るtype scriptでnodejs
by
Takayoshi Tanaka
KEY
WordPressプラグイン作成入門
by
Yuji Nojima
PDF
Tide - SmalltalkでSPA
by
Masashi Umezawa
PDF
FlexUnit4とMockitoFlex
by
Yasuhiro Morikawa
PDF
Playで作るwebsocketサーバ
by
ke-m kamekoopa
jQuery Performance Tips – jQueryにおける高速化 -
by
Hayato Mizuno
EC-CUBEプラグイン講義
by
ria1201
concrete5デザインカスタマイズに必要なPHPの知識
by
Hishikawa Takuro
13016 n分で作るtype scriptでnodejs
by
Takayoshi Tanaka
WordPressプラグイン作成入門
by
Yuji Nojima
Tide - SmalltalkでSPA
by
Masashi Umezawa
FlexUnit4とMockitoFlex
by
Yasuhiro Morikawa
Playで作るwebsocketサーバ
by
ke-m kamekoopa
What's hot
PPTX
DjangoでさくっとWeb アプリケーション開発をする話
by
Nakazawa Yuichi
PDF
Djangoによるスマホアプリバックエンドの実装
by
Nakazawa Yuichi
PDF
「html5 boilerplate」から考える、これからのマークアップ
by
Yasuhito Yabe
PDF
Djangoフレームワークの紹介
by
Shinya Okano
PDF
JS開発環境を晒す。
by
Eiji Kuroda
PPTX
仕事で使うちょっとしたコードをOSSとして開発メンテしていく- Django Redshift Backend の開発 - PyCon JP 2016
by
Takayuki Shimizukawa
PDF
WebComponentsとPolymerを使ってみた
by
Nakazawa Yuichi
PDF
HTML5-pronama-study
by
Naoya Inada
PPT
アプリコンテスト
by
Tomonori Yamada
PDF
.htaccessによるリダイレクト徹底解説
by
Cherry Pie Web
PDF
SEOとJava Script。 〜文書構造とチームと、時々、闇〜
by
Yuki Minakawa
PPT
第1回鹿児島node.jsの会資料_内村
by
Koichi Uchimura
PPTX
20111204 WebBroser Control Tips for Windows Phone
by
Kenji Wada
PPTX
20140926 mt cloud_handson_seminar
by
Six Apart
PPTX
VSハッカソン TypeScript ハンズオン
by
Kazuhide Maruyama
PPT
第5回勉強会
by
Mugen Fujii
PDF
RFC: "var" Deprecation
by
y-uti
PDF
20120327 phpstudy58-phake
by
Katsuhiro Ogawa
PDF
⑯jQueryをおぼえよう!その2
by
Nishida Kansuke
PDF
NanoStrand
by
Masashi Umezawa
DjangoでさくっとWeb アプリケーション開発をする話
by
Nakazawa Yuichi
Djangoによるスマホアプリバックエンドの実装
by
Nakazawa Yuichi
「html5 boilerplate」から考える、これからのマークアップ
by
Yasuhito Yabe
Djangoフレームワークの紹介
by
Shinya Okano
JS開発環境を晒す。
by
Eiji Kuroda
仕事で使うちょっとしたコードをOSSとして開発メンテしていく- Django Redshift Backend の開発 - PyCon JP 2016
by
Takayuki Shimizukawa
WebComponentsとPolymerを使ってみた
by
Nakazawa Yuichi
HTML5-pronama-study
by
Naoya Inada
アプリコンテスト
by
Tomonori Yamada
.htaccessによるリダイレクト徹底解説
by
Cherry Pie Web
SEOとJava Script。 〜文書構造とチームと、時々、闇〜
by
Yuki Minakawa
第1回鹿児島node.jsの会資料_内村
by
Koichi Uchimura
20111204 WebBroser Control Tips for Windows Phone
by
Kenji Wada
20140926 mt cloud_handson_seminar
by
Six Apart
VSハッカソン TypeScript ハンズオン
by
Kazuhide Maruyama
第5回勉強会
by
Mugen Fujii
RFC: "var" Deprecation
by
y-uti
20120327 phpstudy58-phake
by
Katsuhiro Ogawa
⑯jQueryをおぼえよう!その2
by
Nishida Kansuke
NanoStrand
by
Masashi Umezawa
Similar to Knockout を用いた Firefox OS アプリケーションの開発
PPT
20130924 Picomon CRH勉強会
by
Yukihiro Kitazawa
PPTX
KnockoutJSを使用したアプリケーションの構築例
by
masakazusegawa
PDF
作って分かるKnockoutJS@ALM11月
by
Takuya Ueda
PPTX
20140517 knockoutjs hands-on
by
Seiji Noro
PPTX
20140712 knockoutjs-hands-on-in-osaka
by
Seiji Noro
PDF
はじめよう Backbone.js
by
Hiroki Toyokawa
PDF
Introduction for Browser Side MVC
by
Ryunosuke SATO
PDF
How do you like knockout?
by
Narami Kiyokura
PDF
Knockout.js を利用したインタラクティブ web アプリケーション開発
by
Daizen Ikehara
PDF
Study Intro Backbone
by
Gensei Kawasaki
PDF
Backbone.js
by
daisuke shimizu
PDF
Knockout handson
by
Go Tanaka
KEY
Knockout
by
Kazuhiro Eguchi
PDF
DevLOVE Kansai KnockoutJS
by
Go Tanaka
PDF
Knockout_エンジニア勉強会20131120
by
エンジニア勉強会 エスキュービズム
PDF
はじめてのVue.js
by
Kei Yagi
PPTX
JavaScriptフレームワーク入門にVue.jsはいかが?
by
好洋 山崎
PDF
実践Knockout
by
Kazuhiro Eguchi
PDF
Knockout を用いた大規模 JavaScript 開発
by
Kentaro Iizuka
PDF
Getting start with knockout.js
by
Akio Ishida
20130924 Picomon CRH勉強会
by
Yukihiro Kitazawa
KnockoutJSを使用したアプリケーションの構築例
by
masakazusegawa
作って分かるKnockoutJS@ALM11月
by
Takuya Ueda
20140517 knockoutjs hands-on
by
Seiji Noro
20140712 knockoutjs-hands-on-in-osaka
by
Seiji Noro
はじめよう Backbone.js
by
Hiroki Toyokawa
Introduction for Browser Side MVC
by
Ryunosuke SATO
How do you like knockout?
by
Narami Kiyokura
Knockout.js を利用したインタラクティブ web アプリケーション開発
by
Daizen Ikehara
Study Intro Backbone
by
Gensei Kawasaki
Backbone.js
by
daisuke shimizu
Knockout handson
by
Go Tanaka
Knockout
by
Kazuhiro Eguchi
DevLOVE Kansai KnockoutJS
by
Go Tanaka
Knockout_エンジニア勉強会20131120
by
エンジニア勉強会 エスキュービズム
はじめてのVue.js
by
Kei Yagi
JavaScriptフレームワーク入門にVue.jsはいかが?
by
好洋 山崎
実践Knockout
by
Kazuhiro Eguchi
Knockout を用いた大規模 JavaScript 開発
by
Kentaro Iizuka
Getting start with knockout.js
by
Akio Ishida
Recently uploaded
PDF
[2025 Rakuten Technology Conference] Daybreak for AI Agents
by
Woohyeok Kim
PDF
Mixture-of-Personas Language Models for Population Simulation
by
harmonylab
PDF
TransitReID: Transit OD Data Collection with Occlusion-Resistant Dynamic Pass...
by
harmonylab
PDF
Data Scaling Laws for End-to-End Autonomous Driving
by
harmonylab
PDF
【ツールテクノ】会社説明会資料2026年度版.pdf/月10時間までの学習を勤務時間として計上可能!
by
tooltechno1998
PDF
AI開発の最前線を変えるニューラルネットワークプロセッサと、未来社会における応用可能性
by
Data Source
PDF
膨大なデータ時代を制する鍵、セグメンテーションAIが切り拓く解析精度と効率の革新
by
Data Source
PDF
ニューラルプロセッサによるAI処理の高速化と、未知の可能性を切り拓く未来の人工知能
by
Data Source
PDF
Multiple Object Tracking as ID Prediction
by
harmonylab
PDF
SIG-AUDIO 2025 Vol.04 インタラクティブミュージック勉強会 ダレカレの音ができるまで
by
IGDA Japan SIG-Audio
PDF
SIG-AUDIO 2025 Vol.04 インタラクティブミュージック勉強会 インタラクティブミュージックの書き方
by
IGDA Japan SIG-Audio
[2025 Rakuten Technology Conference] Daybreak for AI Agents
by
Woohyeok Kim
Mixture-of-Personas Language Models for Population Simulation
by
harmonylab
TransitReID: Transit OD Data Collection with Occlusion-Resistant Dynamic Pass...
by
harmonylab
Data Scaling Laws for End-to-End Autonomous Driving
by
harmonylab
【ツールテクノ】会社説明会資料2026年度版.pdf/月10時間までの学習を勤務時間として計上可能!
by
tooltechno1998
AI開発の最前線を変えるニューラルネットワークプロセッサと、未来社会における応用可能性
by
Data Source
膨大なデータ時代を制する鍵、セグメンテーションAIが切り拓く解析精度と効率の革新
by
Data Source
ニューラルプロセッサによるAI処理の高速化と、未知の可能性を切り拓く未来の人工知能
by
Data Source
Multiple Object Tracking as ID Prediction
by
harmonylab
SIG-AUDIO 2025 Vol.04 インタラクティブミュージック勉強会 ダレカレの音ができるまで
by
IGDA Japan SIG-Audio
SIG-AUDIO 2025 Vol.04 インタラクティブミュージック勉強会 インタラクティブミュージックの書き方
by
IGDA Japan SIG-Audio
Knockout を用いた Firefox OS アプリケーションの開発
1.
Knockout を用いた Firefox OS
アプリケーションの開発 iizukak(いいづかけー) 第4回関東 Firefox OS 勉強会発表資料(2013/10/16)
2.
自己紹介 ✤ iizukak(いいづかけー) ✤ ✤ ソフトウェアエンジニア @ 六本木 ✤ ✤ Github,
Qiita, Twitter JS をたくさん書くお仕事 プログラミングとボルダリングが好き
3.
今日お話しすること ✤ MV* フレームワークあれこれ ✤ Knockout の紹介 ✤ Knockout
を用いた Firefox OS アプリの開発 前半は Firefox OS とあまり関係ないですが、お付き合いください
4.
MV* フレームワークあれこれ
5.
MV* フレームワークあれこれ ✤ JS の
MV* フレームワークとされるライブラリは数多い ✤ そもそも、MV* フレームワークはなぜ必要?
6.
MV* フレームワークあれこれ ✤ Firefox OS
アプリ含め、最近の JS 開発では、モデルの状態を、動 的にビューに反映することは必須 ①アイコンタップ ユーザー ②イベント通知 ③モデルの 状態が変化 JS ④ビューに反映
7.
MV* フレームワークあれこれ ✤ モデルのデータをビューと結びつける =「データバインド」 ✤ データバインドを自力で書くのは割と面倒 ✤ 動的にビューをいじる仕組み作りが面倒 ✤ コードの総量も増えがち
8.
MV* フレームワークあれこれ ✤ MV* フレームワークの多くが、データバインド機能を提供 ✤ ✤ Knockout
: デフォルトである ✤ ✤ Angular : デフォルトである Backbone : Epoxy.js とか使ってやる MV* フレームワークは、データバインド機能を中心に、コードを構 造化する手助けをするライブラリ(※個人的見解です)
9.
MV* フレームワークあれこれ ✤ デザインパターンの話がないぞ!というお客様へ Backbone Knockout ✤ MVVM :
Model-View-ViewModel Angular ✤ MVC : Model-View-Controller MVW : Model-View-Whatever MV* の定義は人や本によってまちまち 各々のフレームワークが提案する使い方に従ってコードを書けば、デ ザパタについてはそんなに悩まなくても良い(※個人的見解です)
10.
Knockout の紹介
11.
Knockout の紹介 ✤ 特徴 ✤ ✤ 宣言的データバインド ✤ 動的なビュー書き換えの実装サポート ✤ ✤ Model-View-ViewModel デザインパターン 拡張製が高い 抽象的なので、実際の利用例で説明します
12.
Knockout の紹介 ✤ 宣言的データバインドの例:名前を表示するアプリ HTML <p>First name:
<strong data-bind="text: firstName"></strong></p> <p>Last name: <strong data-bind="text: lastName"></strong></p> JavaScript function AppViewModel() { this.firstName = "山田"; this.lastName = "太郎"; } ko.applyBindings(new AppViewModel()); 出力
13.
Knockout の紹介 ✤ いじくりたいタグに data-bind
属性を記述 HTML strong タグをいじりたい <p>First name: <strong data-bind="text: firstName"></strong></p> <p>Last name: <strong data-bind="text: lastName"></strong></p> JavaScript function AppViewModel() { this.firstName = "山田"; this.lastName = "太郎"; } ko.applyBindings(new AppViewModel()); 出力
14.
Knockout の紹介 ✤ データバインドの種類を書く HTML テキストを挿入: text <p>First
name: <strong data-bind="text: firstName"></strong></p> <p>Last name: <strong data-bind="text: lastName"></strong></p> JavaScript function AppViewModel() { this.firstName = "山田"; this.lastName = "太郎"; } ko.applyBindings(new AppViewModel()); 出力
15.
Knockout の紹介 ✤ 適用したい変数名を適当に決める HTML firstName, lastName
にする <p>First name: <strong data-bind="text: firstName"></strong></p> <p>Last name: <strong data-bind="text: lastName"></strong></p> JavaScript function AppViewModel() { this.firstName = "山田"; this.lastName = "太郎"; } ko.applyBindings(new AppViewModel()); 出力
16.
Knockout の紹介 ✤ ビューに適用する変数を持つコンストラクタを宣言 HTML <p>First name:
<strong data-bind="text: firstName"></strong></p> <p>Last name: <strong data-bind="text: lastName"></strong></p> JavaScript コンストラクタに firstName, lastName 変数を用意 出力 function AppViewModel() { this.firstName = "山田"; this.lastName = "太郎"; } ko.applyBindings(new AppViewModel());
17.
Knockout の紹介 ✤ ko.applybinding メソッドを呼んだタイミングで有効化 HTML <p>First
name: <strong data-bind="text: firstName"></strong></p> <p>Last name: <strong data-bind="text: lastName"></strong></p> JavaScript バインドを起動 function AppViewModel() { this.firstName = "山田"; this.lastName = "太郎"; } ko.applyBindings(new AppViewModel()); 出力
18.
Knockout の紹介 ✤ データバインドは、一般的にこんなかんじで記述 HTML <開始タグ data-bind="データバインドの種類:
適用する変数名"></終了タグ> JavaScript function コンストラクタ() { this.適用する変数 = 値; } ko.applyBindings(new コンストラクタ());
19.
Knockout の紹介 ✤ 宣言的データバインドの良さ ✤ HTML を見ればどこの要素がいじられるのか明瞭 ✤ デザイナーさんと分業しやすい ✤ ✤ 「ここは
JS で制御する部分だからいじくらんでおこう…」 data-* 属性は正当な HTML 属性のため、実装した HTML が validな HTML になり、気分がよい
20.
Knockout の紹介 ✤ 組み込みデータバインドをいくつか紹介 click binding クリックイベントをハンドリング css
binding CSS を適用 visible binding 表示・非表示切り替え if binding if 文による分岐
21.
Knockout の紹介 ✤ 動的なビュー操作の実装サポート HTML <p>First name:
<strong data-bind="text: firstName"></strong></p> <p>Last name: <strong data-bind="text: lastName"></strong></p> <p>First name: <input data-bind="value: firstName" /></p> <p>Last name: <input data-bind="value: lastName" /></p> JavaScript function AppViewModel() { this.firstName = ko.observable(); this.lastName = ko.observable(); } 出力
22.
Knockout の紹介 ✤ ユーザの名前入力に従って、表示内容を変更したい HTML <p>First name:
<strong data-bind="text: firstName"></strong></p> <p>Last name: <strong data-bind="text: lastName"></strong></p> <p>First name: <input data-bind="value: firstName" /></p> <p>Last name: <input data-bind="value: lastName" /></p> JavaScript function AppViewModel() { this.firstName = ko.observable(); this.lastName = ko.observable(); } 出力
23.
Knockout の紹介 ✤ コンストラクタに、ko.observable という変数を宣言 HTML <p>First
name: <strong data-bind="text: firstName"></strong></p> <p>Last name: <strong data-bind="text: lastName"></strong></p> <p>First name: <input data-bind="value: firstName" /></p> <p>Last name: <input data-bind="value: lastName" /></p> JavaScript observable な変数を宣言 function AppViewModel() { this.firstName = ko.observable(); this.lastName = ko.observable(); } 出力
24.
Knockout の紹介 ✤ ユーザが苗字と名前を入力 HTML <p>First name:
<strong data-bind="text: firstName"></strong></p> <p>Last name: <strong data-bind="text: lastName"></strong></p> <p>First name: <input data-bind="value: firstName" /></p> ユーザが値を入力 <p>Last name: <input data-bind="value: lastName" /></p> JavaScript function AppViewModel() { this.firstName = ko.observable(); this.lastName = ko.observable(); } 出力
25.
Knockout の紹介 ✤ 書き換わったことが JS
側に通知され、変数が書き換わる HTML <p>First name: <strong data-bind="text: firstName"></strong></p> <p>Last name: <strong data-bind="text: lastName"></strong></p> <p>First name: <input data-bind="value: firstName" /></p> <p>Last name: <input 変数の値が書き換わる data-bind="value: lastName" /></p> JavaScript function AppViewModel() { this.firstName = ko.observable(); this.lastName = ko.observable(); } 出力
26.
Knockout の紹介 ✤ ビューが動的に書き換わる HTML <p>First name:
<strong data-bind="text: firstName"></strong></p> <p>Last name: <strong data-bind="text: lastName"></strong></p> <p>First name: <input data-bind="value: firstName" /></p> ビューを動的に書き換えてくれる <p>Last name: <input data-bind="value: lastName" /></p> JavaScript function AppViewModel() { this.firstName = ko.observable(); this.lastName = ko.observable(); } 出力
27.
Knockout の紹介 ✤ その他の特徴 ✤ MIT ライセンス ✤ 組み込みバインディングで物足りなくなったら、自作できる ✤ 割と高速
(Android 2.x 世代の端末でもそれなりに動く) ✤ テストが書きやすい ✤ Knockout 本体も Jasmine を使ってテストされている
28.
Knockout の紹介 ✤ お仕事での実例 ✤ iPhone, Android
向けネイティブゲームアプリ ✤ UI はほぼ全て WebView で実装 ✤ 規模:HTML 200 画面、JS 数万行 ✤ モデルの変更・ビューの書き換えが非常に多い ✤ Knockout を活用。自作 binding も数十個
29.
Knockout を用いた Firefox OS
アプリの開発
30.
Firefox OS アプリへの組み込み ✤ 試作アプリ ✤ ✤ OAuth
認証 ✤ ✤ 簡易 Twitter クライアント タイムライン表示 Github へのリンク
31.
Firefox OS アプリへの組み込み ✤ UI
は Firefox OS Building Blocks ライブラリ
32.
Firefox OS アプリへの組み込み ✤ アプリケーションの全体像 FxOS
クライアント データバインド ・TL情報 ・ファボ情報 ・タップイベント発火 APIサーバ メソッド呼び出し ViewModel ・TL 取得メソッド ・ツイートメソッド Model API 通信 View UI ロジック VIew の状態を管理 ビジネスロジック Twitter API
33.
Firefox OS アプリへの組み込み ✤ Knockout
使っている場所 ✤ タイムラインをリスト表示するとこ ✤ foreach-binding ✤ ko.observableArray ✤ text-binding ✤ attr-binding
34.
Firefox OS アプリへの組み込み ✤ 感想 ✤ 非常に素直に導入できた ✤ 「あ、これ
Knockout を使って簡単に書けるやつだ」が多い ✤ ✤ タイムラインへの新規ツイートの挿入が容易に実装できた MVVM がアプリの要件にマッチ ✤ MVVM はそもそもが GUI アプリ向けのデザインパターン
35.
まとめ
36.
まとめ ✤ MV* フレームワーク ✤ ✤ データバインドを中心に、プログラムの構造化を手助け Knockout ✤ ✤ ✤ 宣言的データバインド 動的なビュー書き換えの実装サポート Firefox OS
アプリケーションの開発にも適してそう
Download