SlideShare ist ein Scribd-Unternehmen logo
1 von 33

Flight入門
株式会社ブリリアントサービス 八木 俊広 2013年3月1日
自己紹介

 所属:品川事業所カスタマー開発部

 名前:八木俊広

 Twitter: @sys1yagi

 最近:
    mrubyちょいやっている流れでMobiRubyをちょ
     いやってる。キャー@masuidriveさ~ん。
    Node.jsで人工無脳作ってる
    わかめに言われてFlightに入門中
アジェンダ

 Flightってなに?

 Flightの特徴

 デモアプリ

 Flightの導入

 Flightの使い方

 まとめ
対象読者

 @vvakame
Flightってなに?

 Twitter社が提供しているWebのフロントエンド
   用フレームワーク

 Twitter社で使われているらしい

 https://github.com/twitter/flight
Flightの特徴

 コンポーネントベースだ

 イベントドリブンだ

 何がおいしいか

 こういう時はつらそう
コンポーネントベースだ
HTML界                                              JS界

                   attach
        DOM                 Component

              attach


        DOM                    Component

                 attach
                                           mixin


        DOM                             Module
コンポーネントベースだ
HTML界                                              JS界

                   attach
        DOM                 Component

              attach


        DOM                    Component

                 attach
                                           mixin


        DOM
                 互いに疎                   Module
イベントドリブンだ



            1        1
      DOM                 Component




 DomとComponentは1:1の関係。

 ComponentはDomへの参照を持つ
イベントドリブンだ

                           click
                           blur
                                   on(“click”, function);
                                   on(“blur”, function);

             1     1
      DOM              Component

     Butto
     n
 Componentでイベントコールバックを登録

 イベントの処理を行う
イベントドリブンだ
                          click
                          blur


             1    1
       DOM            Component

     Butto                  結果を他Componentにも渡したい
     n
超えられない壁



             1    1
       DOM            Component

       DIV
イベントドリブンだ
                          click
                          blur


             1    1
       DOM            Component

     Butto                  trigger(“onChangeData”, data);
     n
超えられない壁



             1    1
       DOM            Component

       DIV                   on(“onChangeData”, function);
イベントドリブンだ
                                                   click
                                                   blur     on(“click”, function);
     on(“changedSchedule”, function);                       on(“blur”, function);


               Component                       Component



                                                      trigger(“onChangeData”, data);

       trigger(“changedShcedule”, schedule);


                                               Component
   Domイベントの他独自にイベント定義が可
    能。イベントの送受信でComponent間はや
    りとりを行う。                                           on(“onChangeData”, function);
イベントドリブンだ
                                                   click
                                                   blur     on(“click”, function);
     on(“changedSchedule”, function);                       on(“blur”, function);


               Component                       Component




                                   互いに疎
       trigger(“changedShcedule”, schedule);
                                                      trigger(“onChangeData”, data);




                                               Component
   Domイベントの他独自にイベント定義が可
    能。イベントの送受信でComponent間はや
    りとりを行う。                                           on(“onChangeData”, function);
何がおいしいか

 DomとComponentが互いに疎

 機能をコンポーネント単位で設計する。依存関
  係、責務についての意識高まる

 イベント連携で疎結合。テストもしやすそう

 実装方法が統一されている。

 再利用性!
こういう時つらそう

 コンポーネントで定義されているattrやtrigger
 をドキュメント化とかしてないと大変そう

 動的にappendしたElementをコンポーネントに
 attachするのがめんどい

 アプリケーションのコンテキストに依存したコ
 ンポーネントを作りがちなので設計がむずい
デモアプリ
                                               Node.js+express+jade+mo
                                                ngoose

                                               MongoDB

                                               Flight
                                                 jQuery
                                                 requirejs
                                                 es5-shim
                                                 bootstrap




https://github.com/sys1yagi/flight_sample
構造
 大体以下の様に構成を分けてる

    Flight様



    データ操作、通信周りのコンポーネント


    画面のDOMのアタッチ等を行う

      UI操作用のコンポーネント
Flightの導入

 まずBower

 component.jsonを書く

 bower install

 必要なscriptを読み込ませる
Bower?
component.json
component.jsonに書いたdependenciesをインストールしてくれる
必要なjsを読み込む



※↑はjadeの構文です。普通に<script>とかでももちろんおっけー
Flightの使い方

 コンポーネントを作る

 attachToでDOMにアタッチ

 ね、かんたんでしょ?

 trigger

 mixin

 advice, compose,debbug(まださわってない)
コンポーネントを作る
               requirejsのdefineメソッドを使ってコンポーネ
                ントを定義します。
set_name.js
                            依存するモジュール。ここではFlightコンポーネントの定義なので
                            flight/lib/componentを読みこんでいる

                            モジュールロード完了のコールバック、コンポーネント定義を初期化
                            して返す。

                              コンポーネントが持つデフォルト属性。attachToの時渡せる


                              コンポーネント内のメソッド




                                    イベントを発行してる。他コ
                                    ンポーネントが受け取るかも

                                DOMのアタッチが終わった後に呼び出される。
                                onClickをthis.setNameで実行する様に登録してる。
attachToでDOMにアタッチ

   コンポーネントを読み込む




   アタッチ対象のセレクタ


          コンポーネントにセットする属性
ね、簡単でしょ?
trigger
todo_list_controller.js


                           登録




load_list.js
                           実行
mixin

 module作ってがっちゃんこ
mixin

   モジュールを読み込む



         Mixin!




           モジュールのメソッドが使える




blurイベントの処理はui_controller側で勝手に登録してる
advice, compose, debbug

 advice
   なんか既存メソッドの前後に実行するメソッド
     を登録出来るらしい

 compose
   mixin実現の為に内部で使われているモジュー
     ル。mixin書き換えとかにも使えるらしい

 debbug
   triggerとかattachとかのシーケンスをログに出し
     たり、色々
まとめ

 Flightいいよ!

 疎結合!

 再利用性!

 Flightの3ステップ
   1.コンポーネント作る
   2.HTML書く
   3.attachToする処理を書く
続きはWebで!




https://github.com/sys1yagi/flight_sample
質疑応答

Weitere ähnliche Inhalte

Andere mochten auch

Potato04 The end of confusion of callback between activity and fragment.
Potato04 The end of confusion of callback between activity and fragment.Potato04 The end of confusion of callback between activity and fragment.
Potato04 The end of confusion of callback between activity and fragment.Toshihiro Yagi
 
Potato02 ViewSticker作りました
Potato02 ViewSticker作りましたPotato02 ViewSticker作りました
Potato02 ViewSticker作りましたToshihiro Yagi
 
Potato01 No more 手書き ViewHolder
Potato01 No more 手書き ViewHolderPotato01 No more 手書き ViewHolder
Potato01 No more 手書き ViewHolderToshihiro Yagi
 
Potato03 KotlinでAndroidアプリ開発(後編)
Potato03 KotlinでAndroidアプリ開発(後編)Potato03 KotlinでAndroidアプリ開発(後編)
Potato03 KotlinでAndroidアプリ開発(後編)Toshihiro Yagi
 
Re viewのリアルタイムプレギュー機能をつくってみたよ
Re viewのリアルタイムプレギュー機能をつくってみたよRe viewのリアルタイムプレギュー機能をつくってみたよ
Re viewのリアルタイムプレギュー機能をつくってみたよToshihiro Yagi
 
Firefox osでlineは作れるか
Firefox osでlineは作れるかFirefox osでlineは作れるか
Firefox osでlineは作れるかToshihiro Yagi
 

Andere mochten auch (8)

Abc2011 2 yagi
Abc2011 2 yagiAbc2011 2 yagi
Abc2011 2 yagi
 
Abc2011 yagi
Abc2011 yagiAbc2011 yagi
Abc2011 yagi
 
Potato04 The end of confusion of callback between activity and fragment.
Potato04 The end of confusion of callback between activity and fragment.Potato04 The end of confusion of callback between activity and fragment.
Potato04 The end of confusion of callback between activity and fragment.
 
Potato02 ViewSticker作りました
Potato02 ViewSticker作りましたPotato02 ViewSticker作りました
Potato02 ViewSticker作りました
 
Potato01 No more 手書き ViewHolder
Potato01 No more 手書き ViewHolderPotato01 No more 手書き ViewHolder
Potato01 No more 手書き ViewHolder
 
Potato03 KotlinでAndroidアプリ開発(後編)
Potato03 KotlinでAndroidアプリ開発(後編)Potato03 KotlinでAndroidアプリ開発(後編)
Potato03 KotlinでAndroidアプリ開発(後編)
 
Re viewのリアルタイムプレギュー機能をつくってみたよ
Re viewのリアルタイムプレギュー機能をつくってみたよRe viewのリアルタイムプレギュー機能をつくってみたよ
Re viewのリアルタイムプレギュー機能をつくってみたよ
 
Firefox osでlineは作れるか
Firefox osでlineは作れるかFirefox osでlineは作れるか
Firefox osでlineは作れるか
 

Ähnlich wie Flight入門

jQuery Mobile 1.2 最新情報 & Tips
jQuery Mobile 1.2 最新情報 & TipsjQuery Mobile 1.2 最新情報 & Tips
jQuery Mobile 1.2 最新情報 & Tipsyoshikawa_t
 
Chrome DevTools.next
Chrome DevTools.nextChrome DevTools.next
Chrome DevTools.nextyoshikawa_t
 
I Log On Saa S
I Log On Saa SI Log On Saa S
I Log On Saa Stotty jp
 
UI設計におけるスマートフォン対応のまとめ
UI設計におけるスマートフォン対応のまとめUI設計におけるスマートフォン対応のまとめ
UI設計におけるスマートフォン対応のまとめTomoki Imatomi
 
13016 n分で作るtype scriptでnodejs
13016 n分で作るtype scriptでnodejs13016 n分で作るtype scriptでnodejs
13016 n分で作るtype scriptでnodejsTakayoshi Tanaka
 
Interact 2018:PowerShell of Microsoft SDN v2 101
Interact 2018:PowerShell of Microsoft SDN v2 101Interact 2018:PowerShell of Microsoft SDN v2 101
Interact 2018:PowerShell of Microsoft SDN v2 101wind06106
 
【Unite Tokyo 2018 Training Day】C#JobSystem & ECSでCPUを極限まで使い倒そう ~Entity Compon...
【Unite Tokyo 2018 Training Day】C#JobSystem & ECSでCPUを極限まで使い倒そう ~Entity Compon...【Unite Tokyo 2018 Training Day】C#JobSystem & ECSでCPUを極限まで使い倒そう ~Entity Compon...
【Unite Tokyo 2018 Training Day】C#JobSystem & ECSでCPUを極限まで使い倒そう ~Entity Compon...Unity Technologies Japan K.K.
 
ARコンテンツ作成勉強会:Myoを用いたVRコンテンツ開発
ARコンテンツ作成勉強会:Myoを用いたVRコンテンツ開発ARコンテンツ作成勉強会:Myoを用いたVRコンテンツ開発
ARコンテンツ作成勉強会:Myoを用いたVRコンテンツ開発Takashi Yoshinaga
 
夜子まま塾講義10(画面の呼び出し)
夜子まま塾講義10(画面の呼び出し)夜子まま塾講義10(画面の呼び出し)
夜子まま塾講義10(画面の呼び出し)Masafumi Terazono
 
Android Lecture #01 @PRO&BSC Inc.
Android Lecture #01 @PRO&BSC Inc.Android Lecture #01 @PRO&BSC Inc.
Android Lecture #01 @PRO&BSC Inc.Yuki Higuchi
 
今こそ知りたいSpring Web(Spring Fest 2020講演資料)
今こそ知りたいSpring Web(Spring Fest 2020講演資料)今こそ知りたいSpring Web(Spring Fest 2020講演資料)
今こそ知りたいSpring Web(Spring Fest 2020講演資料)NTT DATA Technology & Innovation
 

Ähnlich wie Flight入門 (20)

jQuery Mobile 1.2 最新情報 & Tips
jQuery Mobile 1.2 最新情報 & TipsjQuery Mobile 1.2 最新情報 & Tips
jQuery Mobile 1.2 最新情報 & Tips
 
Client Side Cache
Client Side CacheClient Side Cache
Client Side Cache
 
Web Component概要
Web Component概要Web Component概要
Web Component概要
 
Chrome DevTools.next
Chrome DevTools.nextChrome DevTools.next
Chrome DevTools.next
 
Devtools.next
Devtools.nextDevtools.next
Devtools.next
 
I Log On Saa S
I Log On Saa SI Log On Saa S
I Log On Saa S
 
20050903
2005090320050903
20050903
 
Titanium実装最初の一歩.
Titanium実装最初の一歩. Titanium実装最初の一歩.
Titanium実装最初の一歩.
 
Apache Tapestry
Apache TapestryApache Tapestry
Apache Tapestry
 
UI設計におけるスマートフォン対応のまとめ
UI設計におけるスマートフォン対応のまとめUI設計におけるスマートフォン対応のまとめ
UI設計におけるスマートフォン対応のまとめ
 
13016 n分で作るtype scriptでnodejs
13016 n分で作るtype scriptでnodejs13016 n分で作るtype scriptでnodejs
13016 n分で作るtype scriptでnodejs
 
Interact 2018:PowerShell of Microsoft SDN v2 101
Interact 2018:PowerShell of Microsoft SDN v2 101Interact 2018:PowerShell of Microsoft SDN v2 101
Interact 2018:PowerShell of Microsoft SDN v2 101
 
C#の書き方
C#の書き方C#の書き方
C#の書き方
 
C#の書き方
C#の書き方C#の書き方
C#の書き方
 
【Unite Tokyo 2018 Training Day】C#JobSystem & ECSでCPUを極限まで使い倒そう ~Entity Compon...
【Unite Tokyo 2018 Training Day】C#JobSystem & ECSでCPUを極限まで使い倒そう ~Entity Compon...【Unite Tokyo 2018 Training Day】C#JobSystem & ECSでCPUを極限まで使い倒そう ~Entity Compon...
【Unite Tokyo 2018 Training Day】C#JobSystem & ECSでCPUを極限まで使い倒そう ~Entity Compon...
 
ARコンテンツ作成勉強会:Myoを用いたVRコンテンツ開発
ARコンテンツ作成勉強会:Myoを用いたVRコンテンツ開発ARコンテンツ作成勉強会:Myoを用いたVRコンテンツ開発
ARコンテンツ作成勉強会:Myoを用いたVRコンテンツ開発
 
Knockout
KnockoutKnockout
Knockout
 
夜子まま塾講義10(画面の呼び出し)
夜子まま塾講義10(画面の呼び出し)夜子まま塾講義10(画面の呼び出し)
夜子まま塾講義10(画面の呼び出し)
 
Android Lecture #01 @PRO&BSC Inc.
Android Lecture #01 @PRO&BSC Inc.Android Lecture #01 @PRO&BSC Inc.
Android Lecture #01 @PRO&BSC Inc.
 
今こそ知りたいSpring Web(Spring Fest 2020講演資料)
今こそ知りたいSpring Web(Spring Fest 2020講演資料)今こそ知りたいSpring Web(Spring Fest 2020講演資料)
今こそ知りたいSpring Web(Spring Fest 2020講演資料)
 

Flight入門