はじめる ember.js!! ~ getting started with ember.js ~

134
佐藤 竜之介(Ryunosuke SATO) Sapporo.js OSC Hokkaido 2013 はじめる Ember.js!! ~ Getting started with Ember.js ~ 2013.09.14

Upload: ryunosuke-sato

Post on 31-May-2015

7.863 views

Category:

Technology


1 download

DESCRIPTION

「はじめる Ember.js!!」OSC Hokkaido 2013 での講演資料です。

TRANSCRIPT

Page 1: はじめる Ember.js!! ~ Getting started with ember.js ~

佐藤 竜之介(Ryunosuke SATO)Sapporo.jsOSC Hokkaido 2013

はじめるEmber.js!!

~ Getting started with Ember.js ~

2013.09.14

Page 2: はじめる Ember.js!! ~ Getting started with ember.js ~
Page 3: はじめる Ember.js!! ~ Getting started with ember.js ~

Enjoy :-)

Page 4: はじめる Ember.js!! ~ Getting started with ember.js ~

提供

Sapporo.js

Community for people who like JavaScript.

Page 5: はじめる Ember.js!! ~ Getting started with ember.js ~

自己紹介

Page 6: はじめる Ember.js!! ~ Getting started with ember.js ~

@tricknotesI am a software developer who love JavaScript and Ruby.

http://tricknotes.hateblo.jp/

Page 7: はじめる Ember.js!! ~ Getting started with ember.js ~

I love OSS

Page 8: はじめる Ember.js!! ~ Getting started with ember.js ~

I am a contributerof Ember.js

Page 9: はじめる Ember.js!! ~ Getting started with ember.js ~

/* * advertising * about Ember.js * * !!Important!! *

Page 10: はじめる Ember.js!! ~ Getting started with ember.js ~

2013.9.28Ruby勉強会@札幌

http://ruby-sapporo.org/news/2013/07/31/workshop-27.html

Page 11: はじめる Ember.js!! ~ Getting started with ember.js ~

2013.11.11Ember.js ハンズオン

http://www.deos.co.jp/SK010.html

Page 12: はじめる Ember.js!! ~ Getting started with ember.js ~

https://idobata.ioIdobata

Page 13: はじめる Ember.js!! ~ Getting started with ember.js ~

*/

Page 14: はじめる Ember.js!! ~ Getting started with ember.js ~

よろしくお願いします

Page 15: はじめる Ember.js!! ~ Getting started with ember.js ~

佐藤 竜之介(Ryunosuke SATO)Sapporo.jsOSC Hokkaido 2013

はじめるEmber.js!!

~ Getting started with Ember.js ~

2013.09.14

Page 16: はじめる Ember.js!! ~ Getting started with ember.js ~

http://emberjs.com/

Page 17: はじめる Ember.js!! ~ Getting started with ember.js ~
Page 18: はじめる Ember.js!! ~ Getting started with ember.js ~

Ember.js 1.0 released!

Page 19: はじめる Ember.js!! ~ Getting started with ember.js ~

6ヶ月間の rc 時代初の安定版リリースはじめるなら、いま!

Page 20: はじめる Ember.js!! ~ Getting started with ember.js ~

今日の目標

* 開発の手順を知ることができる* 基本的なコンポーネントを理解できる* 実際にはじめることができる!

Ember.js について...

Page 21: はじめる Ember.js!! ~ Getting started with ember.js ~

今日の話* Ember.js って何?* Ember.js のはじめ方

Page 22: はじめる Ember.js!! ~ Getting started with ember.js ~

今日の話* Ember.js って何?* Ember.js のはじめ方

Page 23: はじめる Ember.js!! ~ Getting started with ember.js ~

最近の web アプリでは、画面遷移がなく一画面でリアクティブに操作できるアプリケーションを見る機会が増え

ました

Page 24: はじめる Ember.js!! ~ Getting started with ember.js ~

例えば...

Page 25: はじめる Ember.js!! ~ Getting started with ember.js ~

Travis CI

Page 26: はじめる Ember.js!! ~ Getting started with ember.js ~

Discourse

Page 27: はじめる Ember.js!! ~ Getting started with ember.js ~

Idobata

Page 28: はじめる Ember.js!! ~ Getting started with ember.js ~

なんでこんな複雑なアプリケーションを作るのか?

Page 29: はじめる Ember.js!! ~ Getting started with ember.js ~

使いやすさ

Page 30: はじめる Ember.js!! ~ Getting started with ember.js ~

でも、作るのは大変...

Page 31: はじめる Ember.js!! ~ Getting started with ember.js ~

web アプリケーションならではの難しいところのひとつ

JavaScript と DOM の距離が遠い

Page 32: はじめる Ember.js!! ~ Getting started with ember.js ~

“ようこそ◯◯さん”

シンプルな例

Page 33: はじめる Ember.js!! ~ Getting started with ember.js ~

シンプルな例

入力

表示

Demo on http://emberjs.com/

Page 34: はじめる Ember.js!! ~ Getting started with ember.js ~

シンプルな例JavaScript

DOM

DOM

入力

表示

Page 35: はじめる Ember.js!! ~ Getting started with ember.js ~

入力したものがそのまま表示されてほしい!!

Page 36: はじめる Ember.js!! ~ Getting started with ember.js ~

jQuery を使った例

Page 37: はじめる Ember.js!! ~ Getting started with ember.js ~

コピーペーストにも対応!!jQuery を使った例

Page 38: はじめる Ember.js!! ~ Getting started with ember.js ~

jQuery でのアプローチ

他にも困るところ...* DOM の変更で JS を修正* 他の場所に表示させるには...

やりたいことの割に複雑

Page 39: はじめる Ember.js!! ~ Getting started with ember.js ~

破綻した経験があるでのは?

jQuery based architecture

そう、とても変更に弱いのです

Page 40: はじめる Ember.js!! ~ Getting started with ember.js ~

今回のテーマは、もっとリッチなアプリケーション

別の解決が必要

Page 41: はじめる Ember.js!! ~ Getting started with ember.js ~

Ember.js のアプローチ

Page 42: はじめる Ember.js!! ~ Getting started with ember.js ~

Ember.js を使った例

Page 43: はじめる Ember.js!! ~ Getting started with ember.js ~

簡潔で全く無駄のない記述!!

Ember.js を使った例

Page 44: はじめる Ember.js!! ~ Getting started with ember.js ~

“当然” の部分を人間がコーディングしなくていい!!

Page 45: はじめる Ember.js!! ~ Getting started with ember.js ~

DOM 管理 -> フレームワークオブジェクトの監視 -> フレームワーク

使ってて気持ちいいか -> 開発者

適切な役割分担

Page 46: はじめる Ember.js!! ~ Getting started with ember.js ~

プログラマがアプリの本質に集中できるよう、それ以外の部分をサポートしてくれる!!

Page 47: はじめる Ember.js!! ~ Getting started with ember.js ~

ここまでが、Ember.js の基本的な考え方

Page 48: はじめる Ember.js!! ~ Getting started with ember.js ~

チェックポイント

* すごいアプリケーションを作るための フレームワークです* プログラマーが快適に開発することを サポートしてくれます

「Ember.js って何?」

Page 49: はじめる Ember.js!! ~ Getting started with ember.js ~

今日の話* Ember.js って何?* Ember.js のはじめ方

Page 50: はじめる Ember.js!! ~ Getting started with ember.js ~

さぁ、ここからは実際に Ember.js をはじめてみよう!

Page 51: はじめる Ember.js!! ~ Getting started with ember.js ~

対象バージョン

Ember.js 1.0.0

2013.09.14 現在、最新の安定版

Page 52: はじめる Ember.js!! ~ Getting started with ember.js ~

http://tricknotes.github.io/demo-for-osc2013do/

Demo アプリケーション

Page 53: はじめる Ember.js!! ~ Getting started with ember.js ~

アプリケーション作成を行いながら Ember のモジュールを解説します

ひとつひとつ動作を確認しながら進めていきます

Page 54: はじめる Ember.js!! ~ Getting started with ember.js ~

modules

Page 55: はじめる Ember.js!! ~ Getting started with ember.js ~

modules

Page 56: はじめる Ember.js!! ~ Getting started with ember.js ~

Getting started!!

Page 57: はじめる Ember.js!! ~ Getting started with ember.js ~

http://emberjs.com/Starter kit

Page 58: はじめる Ember.js!! ~ Getting started with ember.js ~

関連ライブラリのセットアップ前準備

jQuery 1.10.2Handlebars 1.0.0Ember.js 1.0.0

Page 59: はじめる Ember.js!! ~ Getting started with ember.js ~

関連ライブラリのセットアップ前準備

Page 60: はじめる Ember.js!! ~ Getting started with ember.js ~

アプリケーションの初期化

Page 61: はじめる Ember.js!! ~ Getting started with ember.js ~

create -> インスタンスの作成

extend -> オブジェクトの継承

補足

Page 62: はじめる Ember.js!! ~ Getting started with ember.js ~

コンソールのログを確認して、Ember が動いているこ

とを確認する

Page 63: はじめる Ember.js!! ~ Getting started with ember.js ~

下準備完了

Page 64: はじめる Ember.js!! ~ Getting started with ember.js ~

簡単な画面を表示する

mission 1

Page 65: はじめる Ember.js!! ~ Getting started with ember.js ~

入力画面を表示したい

Page 66: はじめる Ember.js!! ~ Getting started with ember.js ~

http://handlebarsjs.com/

handlebars

Page 67: はじめる Ember.js!! ~ Getting started with ember.js ~
Page 68: はじめる Ember.js!! ~ Getting started with ember.js ~

入力画面のモックが表示された

Page 69: はじめる Ember.js!! ~ Getting started with ember.js ~

一覧画面に遷移する

mission 2

Page 70: はじめる Ember.js!! ~ Getting started with ember.js ~

リンクをクリックして一覧を表示したい

Page 71: はじめる Ember.js!! ~ Getting started with ember.js ~

Router / Route* いわゆる URL を定義する* URL があると ”進む” / “戻る” が できる* URL を指定して画面を開ける* URL にアクセスされた先の初期化は Route で行なう

Page 72: はじめる Ember.js!! ~ Getting started with ember.js ~

“/sheets” を定義する

Page 73: はじめる Ember.js!! ~ Getting started with ember.js ~

“/sheets” で表示される画面を作る

Page 74: はじめる Ember.js!! ~ Getting started with ember.js ~

画面遷移できるようになった

Page 75: はじめる Ember.js!! ~ Getting started with ember.js ~

ここでデータモデルを考えておく

Page 76: はじめる Ember.js!! ~ Getting started with ember.js ~

データモデルを考える

Sheet Order Line1 n

* 商品名* 単価* 個数

* 作成日時

Page 77: はじめる Ember.js!! ~ Getting started with ember.js ~

データモデルを考えるSheet Order Line

Page 78: はじめる Ember.js!! ~ Getting started with ember.js ~

初期値を決めておく

Page 79: はじめる Ember.js!! ~ Getting started with ember.js ~

入力画面の初期表示を行なう

mission 3

Page 80: はじめる Ember.js!! ~ Getting started with ember.js ~

binding

* オブジェクトの状態と表示を 同期する仕組み* オブジェクト同士にも使える

Page 81: はじめる Ember.js!! ~ Getting started with ember.js ~

画面表示用にオブジェクトを用意する

Page 82: はじめる Ember.js!! ~ Getting started with ember.js ~

オブジェクトと DOM を紐付ける

Page 83: はじめる Ember.js!! ~ Getting started with ember.js ~

明細行が2行になった初期値が表示された

Page 84: はじめる Ember.js!! ~ Getting started with ember.js ~

小計を表示する

mission 4

Page 85: はじめる Ember.js!! ~ Getting started with ember.js ~

小計を勝手に計算してほしい

Page 86: はじめる Ember.js!! ~ Getting started with ember.js ~

Computed property* あるプロパティ(複数可)の値を 元に別の値を求めたいときに使う* 関数ではなくプロパティのように 扱える

Page 87: はじめる Ember.js!! ~ Getting started with ember.js ~

小計表示欄を追加

Page 88: はじめる Ember.js!! ~ Getting started with ember.js ~

依存するプロパティと算出方法を宣言

Page 89: はじめる Ember.js!! ~ Getting started with ember.js ~

リアルタイムで小計が計算される!!

Page 90: はじめる Ember.js!! ~ Getting started with ember.js ~

合計を表示する

mission 5

Page 91: はじめる Ember.js!! ~ Getting started with ember.js ~

合計も自動で計算してほしい

Page 92: はじめる Ember.js!! ~ Getting started with ember.js ~

合計表示欄を追加

Page 93: はじめる Ember.js!! ~ Getting started with ember.js ~

配列の中身に依存するので @each を使う

Page 94: はじめる Ember.js!! ~ Getting started with ember.js ~

合計が自動で計算される!!

Page 95: はじめる Ember.js!! ~ Getting started with ember.js ~

入力欄を増やせるようにする

mission 6

Page 96: はじめる Ember.js!! ~ Getting started with ember.js ~

“行を追加” ボタンを動くようにしたい

Page 97: はじめる Ember.js!! ~ Getting started with ember.js ~

controller

* ユーザからのアクションを受け付ける* モデルのプロキシとして振る舞う* アプリケーションコンテキストを保持する

Page 98: はじめる Ember.js!! ~ Getting started with ember.js ~

ボタンを押した時のアクションを定義

Page 99: はじめる Ember.js!! ~ Getting started with ember.js ~

アクションを定義して処理を記述する

Page 100: はじめる Ember.js!! ~ Getting started with ember.js ~

行を追加できるようになった

Page 101: はじめる Ember.js!! ~ Getting started with ember.js ~

入力欄を削除できるようにする

mission 7

Page 102: はじめる Ember.js!! ~ Getting started with ember.js ~

“削除” ボタンを動くようにしたい

Page 103: はじめる Ember.js!! ~ Getting started with ember.js ~

どの行を削除するか特定するため、アクションに引数を渡す

Page 104: はじめる Ember.js!! ~ Getting started with ember.js ~

アクションを追加する

Page 105: はじめる Ember.js!! ~ Getting started with ember.js ~

行を削除できるようになった

Page 106: はじめる Ember.js!! ~ Getting started with ember.js ~

帳票を保存できるようにする

mission 8

Page 107: はじめる Ember.js!! ~ Getting started with ember.js ~

保存場所を用意

Page 108: はじめる Ember.js!! ~ Getting started with ember.js ~

ボタンを作成

Page 109: はじめる Ember.js!! ~ Getting started with ember.js ~

アクションを追加する

Page 110: はじめる Ember.js!! ~ Getting started with ember.js ~

登録が完了したら一覧へ遷移する

Page 111: はじめる Ember.js!! ~ Getting started with ember.js ~

ここまでで console から確認してみる

帳票オブジェクトが保存されている

Page 112: はじめる Ember.js!! ~ Getting started with ember.js ~

帳票一覧を表示する

mission 9

Page 113: はじめる Ember.js!! ~ Getting started with ember.js ~

Route で帳票全件を用意する

Page 114: はじめる Ember.js!! ~ Getting started with ember.js ~

sheets で全件表示

Page 115: はじめる Ember.js!! ~ Getting started with ember.js ~

作成した帳票が表示される

Page 116: はじめる Ember.js!! ~ Getting started with ember.js ~

帳票の詳細を表示する

mission 10

Page 117: はじめる Ember.js!! ~ Getting started with ember.js ~

“詳細を見る” リンクを動くようにしたい

Page 118: はじめる Ember.js!! ~ Getting started with ember.js ~

* オブジェクトに対応した URL を 発行する* URL からパラメータを読みだして、 オブジェクトを復元する

Route

Page 119: はじめる Ember.js!! ~ Getting started with ember.js ~

URL のパターンを指定

Page 120: はじめる Ember.js!! ~ Getting started with ember.js ~

オブジェクトを特定するためのプロパティを追加

Page 121: はじめる Ember.js!! ~ Getting started with ember.js ~

リンクを追加

Page 122: はじめる Ember.js!! ~ Getting started with ember.js ~

リンクが表示される

Page 123: はじめる Ember.js!! ~ Getting started with ember.js ~

詳細画面の template を作成

Page 124: はじめる Ember.js!! ~ Getting started with ember.js ~

詳細が表示される

Page 125: はじめる Ember.js!! ~ Getting started with ember.js ~

あとは見栄えを整えると...

Page 126: はじめる Ember.js!! ~ Getting started with ember.js ~

http://tricknotes.github.io/demo-for-osc2013do/

簡単な Ember アプリが完成

Page 127: はじめる Ember.js!! ~ Getting started with ember.js ~

今日のまとめ

* Ember.js はすごいアプリケーションを 作るためのフレームワークです* 快適に開発する手助けをしてくれます* Ember.Application.create()

Page 128: はじめる Ember.js!! ~ Getting started with ember.js ~

今日話さなかったこと

* サーバ側とのやりとり* 既存の web サイトへの組み込み* その他のモジュール

Page 129: はじめる Ember.js!! ~ Getting started with ember.js ~

難しいところ

* 学習コストが高い* 日本語の情報が少ない* そもそも 1.0 の情報が少ない

Page 130: はじめる Ember.js!! ~ Getting started with ember.js ~

for more information...

Page 131: はじめる Ember.js!! ~ Getting started with ember.js ~

http://emberjs.com/guides/

Page 133: はじめる Ember.js!! ~ Getting started with ember.js ~

http://discuss.emberjs.com/

Page 134: はじめる Ember.js!! ~ Getting started with ember.js ~

ぜひみなさんも、Ember.js を使った

快適なアプリケーション開発を体感してみてください!!