SlideShare a Scribd company logo
RailsでKnockout.js
逸見 誠(@mako_wis)
自己紹介
• 逸見 誠(へんみ まこと)
• Twitter:@mako_wis
• 株式会社クレオフーガ
• フロントエンド/iOSアプリエンジ
ニア
近況
・Knokout.js + .Net MVCでお仕事
・フットサルしてます
勉強会スタッフ
岡山Ruby, Ruby on Rails勉強会(雑用)
Okayama.rb(イベント作成係)
中国地方DB勉強会(雑用)
オープンセミナー岡山(会計・雑用)
アジェンダ
Knockout.jsとは
Railsに導入してみる
使うと楽できる所
使ってみた感想
Knockout.jsとは
主な特徴
※日本語ドキュメントから引用
エレガントな依存トラッキング
- データモデルが変更される度に、UIの関連付けられた部分を更新し
ます。
宣言型 バインディング
- データモデルとUIを関連付ける、シンプルで明確な方法です。複雑な
動的UIも、バインディング・コンテキストを階層化させることで簡単に
作成できます。
拡張が容易
- 新たなバインディングの仕組みを実装することも、最小限のコード量
で実現できます。
その他のメリット
※日本語ドキュメントから引用
純粋な JavaScript ライブラリである
- サーバサイド, クライアントサイドの技術を選びません。
既存のWebアプリケーションにも投入できる
- アーキテクチャに大きな変更を必要としません。
コンパクト 
- gzip圧縮済みであればおよそ13KB程度です。
その他のメリット
※日本語ドキュメントから引用
メインストリームのブラウザをサポート
- ( IE6以降, Firefox2以降, Chrome, Safari 等 )
ビヘイビア駆動開発に向いている
- ビヘイビア駆動開発(テストコードが仕様書と
ほぼ同義となる開発手法)を用いて、新しいブラ
ウザやプラットフォームでの動作検証を簡略化す
ることができます。
とりあえず使ってみよう
Railsに導入してみる
導入方法
・JSファイルをダウンロードして追加
・gemを使う
今回はgemを使います
knockoutjs-rails
・JSファイルをダウンロードして追加
・gemを使う
これで使える・・・
と思ったら罠が
Rails4そのままだと動かない
原因は・・・
_人人人人人人人_
> turbolinks <
 ̄Y^Y^Y^Y^Y^Y ̄
Rails4デフォルトで動かない
・どうやらturbolinksが原因っぽい
・turbolinksとknockoutが競合してる?
・turbolinksを無効にすると動きます
さようならturbolinks
これで使える
導入方法まとめ
・プロジェクトにknockoutを追加
・turbolinksを無効にする←大事!
使うと楽できる所
入力値を同期したい
入力値を同期する
%input(type="text" data-bind="value: message")

%br

%span(data-bind="text: message")
$ ->

TestappViewModel = ->

self = this

self.message = ko.observable("Hello World!!")

ko.applyBindings new TestappViewModel()

return
coffescript
haml
デモ
クリックに対して何かしたい
クリックでカウントアップ
%span(data-bind="text: numberOfClicks")

回クリックしました

%button(data-bind="click: incrementClickCounter")

クリックしてください
$ ->

TestappViewModel = ->

self = this
self.numberOfClicks = ko.observable(0)
self.incrementClickCounter = ->

previousCount = this.numberOfClicks()

this.numberOfClicks(previousCount + 1)


ko.applyBindings new TestappViewModel()

return
coffescript
haml
デモ
配列に入ってるデータを表示
配列のデータを出力
%ul(data-bind="foreach: users")

%li

%span(data-bind="text: name”)
:
%span(data-bind="text: type")
$ ->

TestappViewModel = ->

self = this
self.users = ko.observableArray([

{ name: "太郎", type: "長男" },

{ name: "二郎", type: "次男" },

{ name: "花子", type: "長女" }

]);


ko.applyBindings new TestappViewModel()

return
coffescript
haml
デモ
詳しい情報は
日本語ドキュメントで
http://kojs.sukobuto.com/
実際使ってみてどうなの?
個人的にいいなと思ってる所
・画面周りの制御に特化してる
・CSSの付け替え、表示切り替えが楽
・Javascript用のクラスを付けなくていい
・Webフレームワークの領域と喧嘩しない
まとめ
Knockout.js便利!
プロジェクトにも入れやすい
まだCSSの
切り替えで消耗してるの?
ぜひ使ってみてください
おわり
はまり所
・2重バインドでエラー
・否定の場合は()が必要
多重バインドでエラー
%ul(data-bind="foreach: users")

%li

%span(data-bind="text: name”)
:
%span(data-bind="text: type")
$ ->

TestappViewModel = ->

self = this
self.users = ko.observableArray([

{ name: "太郎", type: "長男" },

{ name: "二郎", type: "次男" },

{ name: "花子", type: "長女" }

]);


ko.applyBindings new TestappViewModel()

return
coffescript
haml

More Related Content

PDF
軽量フレームワークNancy
PDF
「移動中の仕事術とユーザーグループと私」
PDF
JAWS DAYS 2017 / SORACOM UGで発表されたLTやブログを紹介しちゃうよ!!
PPTX
フレームワークMarko
PDF
最近のASP.NET事情2013Winter
PDF
DeNA×マネーフォワード×Wantedly Railsエンジニアセミナー
PDF
EC-CUBE とクラウドは仲良しか?
PDF
僕の Serverless web application
軽量フレームワークNancy
「移動中の仕事術とユーザーグループと私」
JAWS DAYS 2017 / SORACOM UGで発表されたLTやブログを紹介しちゃうよ!!
フレームワークMarko
最近のASP.NET事情2013Winter
DeNA×マネーフォワード×Wantedly Railsエンジニアセミナー
EC-CUBE とクラウドは仲良しか?
僕の Serverless web application

What's hot (14)

PPTX
The seminar of asp.net at 201908 sakurug
PDF
コミュニティと自分
PDF
Cocoa勉強会関西 #55 MagicalRecordでCore Dataをシンプルにする
PDF
Yapc2012ltthon
PPTX
Web forms made easy (with formative)
PDF
Azure Functionsでサーバーレスアプリケーション構築
PPTX
さわってみようReact.js、AngularJS(1系、2系)
PPTX
RubyとRのおいしい関係
PDF
Shinjuku.rb #29 ActiveJobでSQS使ったのとその永続化についての話
PPTX
Slack Appsでやれる事を確認した。年内日本語化されるんで、急ぎで!
PDF
Alibaba Cloud Serverless Kubernetes 徹底解説
PDF
Farmnoteの技術(AWS Cloud Roadshow 2014 札幌)
PDF
RailsのRailから解放される始めの一歩
PDF
Sprocketsを捨てたい
The seminar of asp.net at 201908 sakurug
コミュニティと自分
Cocoa勉強会関西 #55 MagicalRecordでCore Dataをシンプルにする
Yapc2012ltthon
Web forms made easy (with formative)
Azure Functionsでサーバーレスアプリケーション構築
さわってみようReact.js、AngularJS(1系、2系)
RubyとRのおいしい関係
Shinjuku.rb #29 ActiveJobでSQS使ったのとその永続化についての話
Slack Appsでやれる事を確認した。年内日本語化されるんで、急ぎで!
Alibaba Cloud Serverless Kubernetes 徹底解説
Farmnoteの技術(AWS Cloud Roadshow 2014 札幌)
RailsのRailから解放される始めの一歩
Sprocketsを捨てたい
Ad

Similar to RailsでKnockout.js (20)

PPTX
オープンキャンパス体験授業20150802
PDF
Going Serverless, Building Applications with No Servers
PPTX
Rails×React×TS で作るwebアプリ入門【weseek tech conf #10】
PPTX
Railsのフロントエンド開発を考える
PDF
LocalStack
PPTX
フロントエンド技術の変遷
PDF
React.js + Flux
PPT
JavaEdge第3回ライブセッション
PDF
Mvc conf session_1_osada
PPTX
JavaScript(AngularJS・React.js)で作る iOS・Androidアプリハンズオン
PDF
090821 Ruby Sapporo Night Ruby Cocoa
PDF
DSL駆動によるクラウド・アプリケーション開発
ODP
Next Language Scala
PPTX
JavaFX + NetBeans環境におけるJenkinsの活用(Jenkins第六回勉強会)
PPTX
Ruby on Rails を用いたWEBアプリケーションの開発
KEY
【アジャイル道場】Rails勉強会(view編)
PDF
AWS CloudFormationによるInfrastructure as Codeの実現
PDF
2022_1210_WordpressMeetup.pdf
PDF
Monadic Programmingのススメ - Functional Reactive Programmingへのアプローチ
PDF
Dev campjpn day2session3
オープンキャンパス体験授業20150802
Going Serverless, Building Applications with No Servers
Rails×React×TS で作るwebアプリ入門【weseek tech conf #10】
Railsのフロントエンド開発を考える
LocalStack
フロントエンド技術の変遷
React.js + Flux
JavaEdge第3回ライブセッション
Mvc conf session_1_osada
JavaScript(AngularJS・React.js)で作る iOS・Androidアプリハンズオン
090821 Ruby Sapporo Night Ruby Cocoa
DSL駆動によるクラウド・アプリケーション開発
Next Language Scala
JavaFX + NetBeans環境におけるJenkinsの活用(Jenkins第六回勉強会)
Ruby on Rails を用いたWEBアプリケーションの開発
【アジャイル道場】Rails勉強会(view編)
AWS CloudFormationによるInfrastructure as Codeの実現
2022_1210_WordpressMeetup.pdf
Monadic Programmingのススメ - Functional Reactive Programmingへのアプローチ
Dev campjpn day2session3
Ad

More from Makoto Henmi (8)

PDF
若者が勉強会に参加しない問題
PDF
開発フローを改善した時の昔話
PDF
Joinsが使えなかった話
PDF
24時間コンテストに参加した話
PDF
Sassでちょっと楽しよう
PDF
紙と鉛筆で設計しよう
PDF
岡山のRuby勉強会(OSC広島2013)
KEY
Rhodes
若者が勉強会に参加しない問題
開発フローを改善した時の昔話
Joinsが使えなかった話
24時間コンテストに参加した話
Sassでちょっと楽しよう
紙と鉛筆で設計しよう
岡山のRuby勉強会(OSC広島2013)
Rhodes

RailsでKnockout.js