Submit Search
イベント駆動AngularJS / 今から書くAngular 2.0
42 likes
11,894 views
Okuno Kentaro
GDG神戸 Angular勉強会#3 資料
Engineering
Read more
1 of 59
Download now
Downloaded 24 times
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
More Related Content
PDF
Angular 4がやってくる!? 新機能ダイジェスト
Masahiko Asai
PDF
Angular jsの継続的なバージョンアップ
Kazuyoshi Tsuchiya
PDF
Directiveで実現できたこと
Kon Yuichi
PDF
Angular2
Kenichi Kanai
PDF
開発ライフサイクルから見たAngularJS
Mizuho Sakamaki
PDF
Angular1&2
Kenichi Kanai
PDF
俺とAngular JS 2
Masayuki KaToH
PDF
Enterprise x AngularJS
Kenichi Kanai
Angular 4がやってくる!? 新機能ダイジェスト
Masahiko Asai
Angular jsの継続的なバージョンアップ
Kazuyoshi Tsuchiya
Directiveで実現できたこと
Kon Yuichi
Angular2
Kenichi Kanai
開発ライフサイクルから見たAngularJS
Mizuho Sakamaki
Angular1&2
Kenichi Kanai
俺とAngular JS 2
Masayuki KaToH
Enterprise x AngularJS
Kenichi Kanai
What's hot
(20)
PDF
AngularJSとFluxとRiotJSと
Ryo Iinuma
PPTX
Angular js開発事例
Shun Takeyama
PDF
noteをAngularJSで構築した話
Kon Yuichi
PDF
Angular#Kanazawa
Kenichi Kanai
PPTX
Angular2実践入門
Shumpei Shiraishi
PDF
クリエイティブの視点から探るAngular 2の可能性
Yasunobu Ikeda
PDF
AngularJS 概説
Kenichi Kanai
PDF
angular1脳で見るangular2
Moriyuki Arakawa
PDF
今後のWeb開発の未来を考えてangular jsにしました(拡大版)
Mitsuru Ogawa
PDF
Angularモダンweb開発セミナー紹介 20170923
Staffnet_Inc
PDF
超初心者でも大丈夫!AngularJSでフォームページをちょっとリッチに改造してみよう
Horiguchi Seito
PPTX
TechFeedのつくりかた - Angular2/Webpack/Ionic2/Cordova実践入門
Shumpei Shiraishi
PDF
angular X designer - デザイナからみたAngularJS #ten1club
silvers ofsilvers
PDF
受託開発でのAngularJS - 第1回AngularJS 勉強会 at LIG
Hayashi Yuichi
PDF
One-time Binding & $digest
Hayashi Yuichi
PDF
今後のWeb開発の未来を考えてangularJSにしました
Mitsuru Ogawa
PDF
CSS Living StyleGuide
Hayashi Yuichi
PDF
スキスキIonic
Kon Yuichi
PPTX
JavaScript使いのためのTypeScript実践入門
Shumpei Shiraishi
PDF
いい感じのフロントエンド開発環境を作ってみた
Hayashi Yuichi
AngularJSとFluxとRiotJSと
Ryo Iinuma
Angular js開発事例
Shun Takeyama
noteをAngularJSで構築した話
Kon Yuichi
Angular#Kanazawa
Kenichi Kanai
Angular2実践入門
Shumpei Shiraishi
クリエイティブの視点から探るAngular 2の可能性
Yasunobu Ikeda
AngularJS 概説
Kenichi Kanai
angular1脳で見るangular2
Moriyuki Arakawa
今後のWeb開発の未来を考えてangular jsにしました(拡大版)
Mitsuru Ogawa
Angularモダンweb開発セミナー紹介 20170923
Staffnet_Inc
超初心者でも大丈夫!AngularJSでフォームページをちょっとリッチに改造してみよう
Horiguchi Seito
TechFeedのつくりかた - Angular2/Webpack/Ionic2/Cordova実践入門
Shumpei Shiraishi
angular X designer - デザイナからみたAngularJS #ten1club
silvers ofsilvers
受託開発でのAngularJS - 第1回AngularJS 勉強会 at LIG
Hayashi Yuichi
One-time Binding & $digest
Hayashi Yuichi
今後のWeb開発の未来を考えてangularJSにしました
Mitsuru Ogawa
CSS Living StyleGuide
Hayashi Yuichi
スキスキIonic
Kon Yuichi
JavaScript使いのためのTypeScript実践入門
Shumpei Shiraishi
いい感じのフロントエンド開発環境を作ってみた
Hayashi Yuichi
Ad
Viewers also liked
(20)
PPTX
AngularJS2でつまづいたこと
Takehiro Takahashi
PDF
SPAと覚悟
Teppei Sato
PPTX
僕はどうしてAngular2をテーマに登壇することになってしまったのか
Tomohiro Noguchi
PDF
AngularJS入門の巻2
Toshio Ehara
PDF
AngularJS入門の巻
Toshio Ehara
PPTX
AngularJS入門
Kenji Shirane
PDF
TypeScriptで書くAngularJS @ GDG神戸2014.8.23
Okuno Kentaro
PPTX
TypeScriptをオススメする理由
Yusuke Naka
PDF
新世代Java scriptコントロール wijmo5 devsumi_150219
Akiyoshi Yamazaki
PDF
Angular.jsについてちょっとしゃべる
Masashi Haga
PDF
AngularJSについて
昌生 高橋
PDF
Are you a Designer or an Engineer?
Sanae Yamashita
PDF
iPhoneアプリを Javaで書くよ?
Toshio Ehara
PDF
Angular1.4で作られた自社マイクロサービスを2へマイグレーション
Hayashi Yuichi
PDF
そろそろ押さえておきたい AngularJSのセキュリティ
Muneaki Nishimura
PDF
Angular+Dart=より快適なSPA開発
Satoshi KOBAYASHI
PDF
あなたの言葉で伝えるWebアクセシビリティ
Kobayashi Daisuke
PPTX
React を導入したフロントエンド開発
daisuke-a-matsui
PDF
JenkinsをJava開発でこんな感じで使っています
Toshio Ehara
PDF
Webサイトパフォーマンス管理の基礎知識
Yoichiro Takehora
AngularJS2でつまづいたこと
Takehiro Takahashi
SPAと覚悟
Teppei Sato
僕はどうしてAngular2をテーマに登壇することになってしまったのか
Tomohiro Noguchi
AngularJS入門の巻2
Toshio Ehara
AngularJS入門の巻
Toshio Ehara
AngularJS入門
Kenji Shirane
TypeScriptで書くAngularJS @ GDG神戸2014.8.23
Okuno Kentaro
TypeScriptをオススメする理由
Yusuke Naka
新世代Java scriptコントロール wijmo5 devsumi_150219
Akiyoshi Yamazaki
Angular.jsについてちょっとしゃべる
Masashi Haga
AngularJSについて
昌生 高橋
Are you a Designer or an Engineer?
Sanae Yamashita
iPhoneアプリを Javaで書くよ?
Toshio Ehara
Angular1.4で作られた自社マイクロサービスを2へマイグレーション
Hayashi Yuichi
そろそろ押さえておきたい AngularJSのセキュリティ
Muneaki Nishimura
Angular+Dart=より快適なSPA開発
Satoshi KOBAYASHI
あなたの言葉で伝えるWebアクセシビリティ
Kobayashi Daisuke
React を導入したフロントエンド開発
daisuke-a-matsui
JenkinsをJava開発でこんな感じで使っています
Toshio Ehara
Webサイトパフォーマンス管理の基礎知識
Yoichiro Takehora
Ad
Similar to イベント駆動AngularJS / 今から書くAngular 2.0
(19)
PPTX
Our Track to Modern Angular
Yuta Shimizu
PPTX
初心者 × AngularJS × TypeScript
Yuta Matsumura
PDF
はじめてのAngular その1
純一 榮枝
PPTX
エンタープライズ分野での実践AngularJS
Ayumi Goto
PDF
今からでも遅くない! 2から始めるangular js
Kohashi Daisuke
PDF
サーバサイドエンジニアが 1年間まじめにSPAやってみた
Itaru Kitagawa
PDF
20140823 LL diver Angular.js で構築した note に関して
Shoei Takamaru
PPTX
AngularJSを触ってみた
tomowata
PDF
AngularJSでwebアプリを作ってみた!(2014/6/8 GDGKobe)
pinmarch_t Tada
PDF
traceur-compilerで未来のJavaScriptを体験
Toshio Ehara
PDF
pairsでのAngularJS x TypeScript x e2e @めぐすた#1
Takuma Morikawa
PDF
20140529 JS Ojisan #2 LT あの「note」はAngular.js
Shoei Takamaru
PPTX
Our Track to Modern Angular #2
Yuta Shimizu
PDF
Ecmascript2015とその周辺について
豊明 尾古
PPTX
angularJS vs angular2
Kamimura Taichi
PDF
Angular の紹介
Neo Xrea
PDF
AngularJS x Chrome Apps (2014.08.23 #gdgkobe event)
pinmarch_t Tada
PDF
AngularJS+TypeScript - AngularJS 1周年記念勉強会
Masahiro Wakame
PDF
ng-japan 2015 TypeScript+AngularJS 1.3
Masahiro Wakame
Our Track to Modern Angular
Yuta Shimizu
初心者 × AngularJS × TypeScript
Yuta Matsumura
はじめてのAngular その1
純一 榮枝
エンタープライズ分野での実践AngularJS
Ayumi Goto
今からでも遅くない! 2から始めるangular js
Kohashi Daisuke
サーバサイドエンジニアが 1年間まじめにSPAやってみた
Itaru Kitagawa
20140823 LL diver Angular.js で構築した note に関して
Shoei Takamaru
AngularJSを触ってみた
tomowata
AngularJSでwebアプリを作ってみた!(2014/6/8 GDGKobe)
pinmarch_t Tada
traceur-compilerで未来のJavaScriptを体験
Toshio Ehara
pairsでのAngularJS x TypeScript x e2e @めぐすた#1
Takuma Morikawa
20140529 JS Ojisan #2 LT あの「note」はAngular.js
Shoei Takamaru
Our Track to Modern Angular #2
Yuta Shimizu
Ecmascript2015とその周辺について
豊明 尾古
angularJS vs angular2
Kamimura Taichi
Angular の紹介
Neo Xrea
AngularJS x Chrome Apps (2014.08.23 #gdgkobe event)
pinmarch_t Tada
AngularJS+TypeScript - AngularJS 1周年記念勉強会
Masahiro Wakame
ng-japan 2015 TypeScript+AngularJS 1.3
Masahiro Wakame
イベント駆動AngularJS / 今から書くAngular 2.0
1.
イベント駆動AngularJS Angular勉強会#3 GDGKobe -
Apr 29, 2015
2.
Who • 奥野 賢太郎
@armorik83 • 京都市 •
3.
AngularJS勉強会#1に参加して5ヶ月 AngularJSのお仕事いただきました
4.
Angularと私 • 2013年秋、AngularJS 1.2とTypeScriptに出会う •
2014年6月、この勉強会の第一回に参加 • 2014年後半、『AngularJSアンチパターン集』や 『モダンAngularJS』といった記事が割と受け入れられる • AngularJSが嫌われてる? といった風潮とReact.jsの流行に過敏になる • 突然のAngularJSのお仕事 • 2015年3月、東京でのng-japanに出席 ←いまこの辺
5.
なので、先日やった AngularJS 1.3の話します
6.
まずはDemo http://likr.github.io/interactive-sem/
7.
SPA開発と学習コスト • 1画面完結 DBのAPI、ページのルーティングは無い • 実質納期は1ヶ月程度 •
グラフ描画ライブラリはD3.jsベース(ここは作ってない) UIのデザイン・実装を担当 ほぼスクラッチ • 自分にはAngularJSの知識が占めていたので、これを採用
8.
AngularJSの良さって • もともと『HTMLを拡張した構文』を採用していた点が 好きだった • 自分がWebデザイナ由来で".html"が並んでる安心感 みたいなところはある •
JSXはどうにも抵抗が大きかった (React.createElementがあるよ! ってのもちょっと違ってて) Reactのヘビーユーザではないので、フェアな比較ではない
9.
でも遅いんでしょ? • AngularJS 1.2はたしかに遅かった •
1.3でマシになった • 一覧表示などで、むやみにDOMを更新しなければ十分 • ジャブジャブ使うときは気にする必要がでてくる とにかく速い方がいい! 魂が震えない! という人には向いてない • 最適化についてはdigest loopでググれば知見が山ほど
10.
初心に返った • 雑にHTMLに{{}}を並べて書いて • Controllerをパパっと書いたらもうバインドできてる! 嬉しさ!! •
この「すぐできる感」がAngularJS
11.
でも雑にやると破綻するのが AngularJS
12.
APIが多すぎ? • 散々言われてるけど、APIが散らばってるのは事実 • ひとつのことを実現するのに3,
4通りあるのは当たり前 • 内部を成り立たせるコアAPIはpublicになっている • 逆にそこを直接叩けるのは強み $compile, $templateCache, $injectorなど
13.
Angular 2.0
14.
今後1.x系どうやって使おう • 2014年10月に墓標が乱立 • あれだけ並べられたら、さすがにどうしよう •
とりあえずRIPされてるものは使わない
15.
モダンAngularJSの実践 • 2.0を見据えてどうするかは 『モダンAngularJS』のスライドで けっこう話した • ng-controller,
service不使用 • jQuery不使用 • いい機会なので本当にうまくいくか実践する http://www.slideshare.net/armorik83/angularjs-141206
16.
この時にあった懸念 • $scopeは無くなる • 値の共有を、意識せずに親子取り放題にすると死 •
何も考えずに$broadcast, $onで飛び交わせても死
17.
なにか良いイベントの扱い方は…
18.
そうか…! Fluxだ!
19.
Flux • Facebook社が提唱するアーキテクチャ こういう名前のライブラリ・フレームワークがあるわけではない • React界隈では、もはや常識 •
うちはAngularJSだから…と気にしないのは勿体無い 設計手法として触れておくべき
20.
Fluxに関する資料 • 昨年末くらいから、じわじわ増えてはいた 最近どっと増えた • おすすめしたいのは以下 •
今話題のReact.jsはどのようなWebアプリケーションに適しているか? @hokaccha • 社内勉強会でReactとFluxについて喋った inside.pixiv.net • 10分で実装するFlux @azu_re
21.
いつもの図
22.
AngularJSでやるなら 引用 http://azu.github.io/slide/react-meetup/flux.html
23.
AngularJSでやるなら 引用 http://azu.github.io/slide/react-meetup/flux.html DIRECTIVES
24.
具体的な話 • ng-route使ってる 設計段階で必要なかったけど、拡張余地のため • ng-routeではControllerは指定しない •
単一のDIrectiveのタグのみ置く function RouteConfig( $routeProvider: ng.route.IRouteProvider ) { $routeProvider .when('/', {template: '<tag></tag>'}) .otherwise({redirectTo: '/'}); }
25.
Root Directive • View,
Dispatcher, StoreでいうViewの部分 • グラフ描画ライブラリの都合で、Storeはどうしても2つにする 必要があった • 利用者の行動 → Dispatcher → Store → View → 即Action Dispatcher → グラフ描画ライブラリ → View • Q. 2周って無駄じゃね? • A. そうやってViewが複数と相互にやりとりしていたのが 従来のMVW、流れは常に1方向に限定する 2周するEmitの速度は全く気にするレベルではない
26.
複数のStore • 複数のStoreってやってもいいの? という不安があった 最近の資料だと、この辺もうちょっと分かりやすい •
SOでFacebookの中の人が複数Storeの可能性を回答 していたので、大丈夫そう • 今回は、全ての操作がグラフ再描画と結びつくので、 グラフ描画に使う値の格納Storeと、描画ラッパーStore の二段構えで回る http://stackoverflow.com/questions/26597311/flux-multiple-store-instances
27.
Flux模倣の実装 • 全てTypeScriptで記述 • CommonJSのrequire()で記述、Browserifyでビルド •
Emitterにはビルトインの$broadcast, $on $emitは上下関係での挙動の違いが複雑になるので不採用 • Dispatcherのイベント名は全て定数管理"constant.ts"を 作ってまとめておく • APIとしては、StoreからDispatcherはaddHandlers() StoreからDirectiveに対してはaddListener()を備える
28.
つまりはこう 引用 http://azu.github.io/slide/react-meetup/flux.html DIRECTIVES Storeが Dispatcher#addHandlers() を呼ぶ Directiveが Store#addListener() を呼ぶ Directiveが $broadcast()を呼んで Diapatcherに$on()を実装
29.
子Directive • 子DirectiveはStoreのシングルトンを持ってはいけない • 持っていいのはRootのみ •
子Directiveが出来るのはActionの発行→Dispatcherへ • 値はすべて共有せず、isolated scopeにする • すべてに'&'を指定しreadonlyにする [ここらでDirective Scope] [検索]
30.
出てきそうな疑問 • Fluxは仮想DOMを扱うReactだからこそ効いてくる アーキテクチャなのでは? • AngularJSでFluxなんてやったら遅いのでは?
31.
自分の解釈 • Fluxをやってもやらなくても、$digestが回り続ける AngularJSでは、この走査を減らす工夫の方が重要 • Fluxを採用しなくてもガンガン回ってドンドン遅くなる 設計は十分に起こりうる •
それより、$scopeのグローバル共有問題や イベント煩雑問題をどう解決するかが課題だった
32.
結果 • 流れが一方向なので MVWより「どこに何を実装すればよいか」が明確 • アプリ内各所にイベントが飛び散らない •
いい感じでした
33.
全部解説するのは大変 なんとオープンソースなので、気になった方は読んでみて https://github.com/likr/interactive-sem
34.
まだ時間ある?
35.
もうちょっと喋ります
36.
今から書くAngular 2.0 Angular勉強会#3 GDGKobe
- Apr 29, 2015
37.
Who • 奥野 賢太郎
@armorik83 • 京都市 •
38.
Angular 2.0 • Angularの新バージョン •
2014年10月 ng-europeにて、方向性が発表 2015年3月 ng-confにて、具体的な発表 • AngularJS 2.0とは呼ばず Angular 2.0 for JavaScriptと呼んでいる
39.
進捗どうですか • https://github.com/angular/angular にて開発中 •
現在2.0.0-alpha.21 これをDeveloper Previewと位置付けている • さっきハンズオンでやったComponent Routerは Angular 2.0ではビルトインされる予定 どっちのRepoで続けるか揉めてた • AngularJS 1.x系は1.4がRC1で控え、1.5の開発も予告
40.
@Decorators • Angularチーム開発の拡張構文AtScriptで採用 • 2015年3月、AngularチームとMicrosoftが協力し AngularはTypeScriptで実装されることが決定 •
DecoratorsはTypeScript 1.5.0-alphaに 急に追加された構文
41.
@Decorators • ECMAScriptの仕様策定としてはまだまだ ミーティングでの議題にのぼってる段階 (具体的にはES7 Stage
1 Proposal) • Babelでは--optional es7.decoratorsで利用可能 • TypeScript 1.5.0-alphaでは、もう利用可能 TypeScript 1.5.0-betaというのも控えてた • Angular側が想定してる構文と仕様にすれ違いがあって 正直まだグラグラしてる 4月中だけでいくつバグが直ったか…
42.
Qiitaで割とガチにまとめました [Qiita Decorators] [検索] http://qiita.com/armorik83/items/e3a0ce67f569ddc4b432
43.
Angular 2.0とDecorators @Component({ selector: 'greet', injectables:
[Greeter] }) @View({ template: `{{greeter.greet('world')}}!`, directives: Child }) class HelloWorld { greeter: Greeter; ! constructor(greeter: Greeter) { this.greeter = greeter; } }
44.
API今覚えておくならこの辺 • @Component -
いわゆる1.xでのDirectiveに相当 • @View - TemplateHTMLなどを記述、1.xのDirectiveの設定が @Componentと@Viewに分かれたイメージ • @Decorator - restrict: 'A'(HTML属性として使う)のDirectiveに相当 • @Viewport - ng-ifやng-repeatなどの制御Directiveが実装しやすい らしい、まだあまり触れてない • @Parent, @Ancestor - 親Directiveを使う、1.xでのrequireに相当
45.
早速やりたい方は 5min Quickstartから https://angular.io/
46.
とはいえ、まだ急いでやらなくていいです Decorators構文の仕様が安定していない、挙動もちょくちょくバギー
47.
でも今後移行とか考えると つらくない?
49.
Cresc Toccata • クレス・トッカータ •
npm install --save toccata • 今日もう少し安定して使えるところまで進めたかった Angular 2.0が想像以上にバギーだったので難航
50.
Cresc Toccata • Decorators構文を採用したTypeScriptユーザ前提の ライブラリ •
AngularJS 1.3.14以上に対応できるよう開発中 • Angular 2.0とAPIに互換性を持たせて提供 • AngularJS 1.x系でもAngular 2.0の「書き方」で開発ができる • Toccata<伊>とは「急な変化と流れを持つ即興的な音楽」 を意味する音楽用語で、即興、試し弾きという意味がある
51.
Cresc Toccata import {*
as angular} from 'angular'; import {* as toccata_} from 'toccata'; ! const toccata: Toccata = toccata_(angular); const {Component, View, bootstrap} = toccata; ! @Component({ selector: 'hello' }) @View({ template: `<p>Hello!</p>` }) class HelloController { constructor() { // noop } } ! bootstrap(HelloController); このソースで AngularJS 1.3.15が動く
52.
Cresc Toccata import {*
as angular} from 'angular'; import {* as toccata_} from 'toccata'; ! const toccata: Toccata = toccata_(angular); const {Component, View, bootstrap} = toccata; ! @Component({ selector: 'hello' }) @View({ template: `<p>Hello!</p>` }) class HelloController { constructor() { // noop } } ! bootstrap(HelloController); ここをAngular 2に差し替えても動く 要はAdapterパターン
53.
なぜ作ろうと思ったか • AngularチームもMigratorの話をしていたが、いつになるか分からない • ぶっちゃけAngularチームのAPI策定、微妙なところがあるので Migratorは信頼しきってない(上出来だったら万々歳) •
オレオレではなく、常にAPI互換を念頭に 今のうちからアダプタ実装を開始しておく • 手元に既に複数のAngularJSプロジェクトが控えている これを2.0リリース後に一斉に移行させるのはしんどい →今のうちに、分かるところから始めたい でも安定した1.x系で運用したい
54.
移行ビジョン • Toccata独自のDecorators APIとして @NgController,
@NgDirectiveの2つをサポートする • まずは今動いているAngularJSからコピペで この独自Decoratorsに移す • そこから段階的にAngular 2.0互換のAPI @Component, @Viewに置き換える • 最終的にはToccataを外して、Angular 2.0のみの 運用にもできる • 一歩一歩着実に、せーのでやらずに済ませたい!
55.
予定機能 • 前半に話したFluxは、毎回実装するのが面倒なので Angular用Flux実装としてEmitterとAbstract Storeを組み込む •
Angular 2.0はJSソースだけでなくHTML面でも構文に変化がある <input type="text" #name (keyup)> • toccata-convという変換ユーティリティを現在開発中 • 規則性のある構文なので普段は2.0の構文で書いて、1.x系の構文に 変換できるよう準備を進めている • 最適化先輩に教わりながら複雑なパターンのテストを追加している段階 • 分かりやすいサンプルとして公式のTodoアプリをToccataで書く
56.
今後、様々なAngularの勉強会・ハンズオンなどで ユーザの意見を聞きながら Toccataにフィードバックしていきます
57.
Angular 2.0への移行が嫌だから… と離れていく姿はもう見たくないんだ!
58.
Follow me! • @armorik83 •
Angular 2.0の動向をキャッチしてTwitter, Qiita, 勉強会等で伝えていくので是非フォローしてみてください • Toccataの進捗も伝えていきます もし気になったら覗いてみてください
59.
ありがとうございました Angular勉強会#3 GDGKobe -
Apr 29, 2015 ©2015 Crescware
Download