SlideShare una empresa de Scribd logo
1 de 23
Descargar para leer sin conexión
Tu m bl r To u ch b y S e n c h a




金沢デザイン部, 石本 光司
2012.05.11                          © 2012 DMM.com Labo Co.,Ltd.
KOJI ISHIMOTO - @t32k

    突然ですが。。。

    5/14(月)で退職します。

    5年間駆け抜けました。

    ありがとうございます!



    就職先は... 続きはWebで!

    よろしくお願いします。




2                       © 2012 DMM.com Labo Co.,Ltd.
今回作ったもの




          Tumblr Touch




3                  © 2012 DMM.com Labo Co.,Ltd.
作った経緯




        tumblr gear の不具合...
        http://tumblrgear.tumblr.com/




4                                       © 2012 DMM.com Labo Co.,Ltd.
公式 App の選択




5                © 2012 DMM.com Labo Co.,Ltd.
© 2012 DMM.com Labo Co.,Ltd.
tumblr gear   official tumblr




                                          Flick!




         Tap!

7                          © 2012 DMM.com Labo Co.,Ltd.
最高のUXとは...(僕にとって)




8                       © 2012 DMM.com Labo Co.,Ltd.
一枚でも多くのエロクールな画像を早く見たい




9                    © 2012 DMM.com Labo Co.,Ltd.
Nativeの操作性をWebで

                 Touch




10                       © 2012 DMM.com Labo Co.,Ltd.
Sencha Touchに取り組むメリット

     - モバイルフレームワークの調査

     - jQuery Mobile 以外の選択

     - UIコンポーネントの学習




11                           © 2012 DMM.com Labo Co.,Ltd.
Demo


       © 2012 DMM.com Labo Co.,Ltd.
要件定義

     1. Tumblr API (Photo Posts)の使用

     2. 1画面1アイテム

     3. タップによる遷移

     4. 自動読み込み (できませんでした...)




13                                    © 2012 DMM.com Labo Co.,Ltd.
1. Tumblr API -Photo Posts

     -   Ext.data.proxy.Ajax    Same Domain

           proxy: {
               type: 'ajax',
               url : 'users.json'
           }

     -   Ext.data.proxy.JsonP   Different Domain

           proxy: {
               type: 'jsonp',
               url : 'http://domainB.com/users'
           }




14                                                 © 2012 DMM.com Labo Co.,Ltd.
Ext.define('TumblrTouch.model.FetchData',	 {
 	  extend:	 'Ext.data.Model',

 	  config:	 {
 	  	  fields:	 ['photos'],
 	  	  proxy:	 {
 	  	  	  type:	 'ajax',
 	  	  	  url:	 'resource/data/posts.json',
 	  	  	  reader:	 {
 	  	  	  	  type:	 'json',
 	  	  	  	  rootProperty:	 'response.posts'
 	  	  	  }
 	  	  }
 	  }
 });

 var	 ttdata	 =	 Ext.create('Ext.data.Store',	 {
 	  	  model:	 'TumblrTouch.model.FetchData',	 
 });


15                                                 © 2012 DMM.com Labo Co.,Ltd.
2. 1画面1アイテム

     -   Ext.Layout.Card
           var panel = Ext.create('Ext.Panel',
           {
               layout: 'card',
               items: [
                   { html: "First Item" },
                   { html: "Second Item" },
                   { html: "Third Item" }
               ]
           });

           panel.setActiveItem(1);




16                                           © 2012 DMM.com Labo Co.,Ltd.
Ext.define('TumblrTouch.view.CardPanel',	 {
 	 	 	 	 extend:	 'Ext.Panel',
 	 	 	 	 xtype:	 'tt_cardpanel',
 	 
 	 	 	 	 config:	 {
 	  	  layout:	 {
 	  	  	 	 	 	 type:	 'card',
 

 

 	 	 	 	 animation:	 { type:	 'slide', direction:	 'down'}
 	  	  },
 	  	  id:	 'cardpanel',
 	  	 	 	 	 defaults:	 {
 	  	 	 	 	 	 	 	 	 	 xtype:	 	 'img',
 

 

 

 	  style:	 'background-size:contain;...',
 	  	 	 	 	 },
 	  	 	 	 	 items:	 [
 	  	  	  {src:	 'resource/img/loading.png'}
 	  	 	 	 	 ]
 	 	 	 	 }
 });


17                                                     © 2012 DMM.com Labo Co.,Ltd.
3. Tapによる遷移

     -   Ext.app.Controller
           Ext.define('MyApp.controller.Main', {
               extend: 'Ext.app.Controller',
               config: {
                   refs: { nav: '#mainNav'}
               },
               addLogoutButton: function() {
                   this.getNav().add({text: 'Logout'});
               }
           });
           Ext.create('Ext.Toolbar', {
               id: 'mainNav',
               items: [{ text: 'Button'}]
           });


18                                           © 2012 DMM.com Labo Co.,Ltd.
Ext.define('TumblrTouch.controller.Main',	 {
 	 	 	 	 extend:	 'Ext.app.Controller',

 	 	 	 	 config:	 {
 	 	 	 	 	 	 	 	 refs:	 {	 go:	 '#go'	 },
 	 	 	 	 	 	 	 	 control:	 {	 go:	 {	 tap:	 'goPager'}	 }
 	 	 	 	 },

 	 	 	 	 goPager:	 function()	 {
 	  	  var	 panel	 =	 Ext.getCmp('cardpanel');
 	  	  var	 index	 =	 Number(panel.getActiveItem().id.replace('ext-
 image-',	 ''))	 -	 1;
 	  	  panel.animateActiveItem(index,	 {type:	 'slide',	 direction:	 
 'down'});
 	  	  panel.setActiveItem(index);
 	 	 	 	 }
 });




19                                                          © 2012 DMM.com Labo Co.,Ltd.
Sencha Touch Applicationの構造




20                             © 2012 DMM.com Labo Co.,Ltd.
Tumblr Touchの構造




21                 © 2012 DMM.com Labo Co.,Ltd.
Sencha Touch 2を触ってみた感想

     - 学習コスト高いがドキュメント・サンプル豊富(英語...)

     - 非常に良くできている(と思う...)

     - 日本の開発者人口少ない(#senchajp)

     - Viewだけならなんとかデザイナーも...

     - 最悪、CSSでなんとかできる

     - jQuery Mobileよりも触ってて楽しい♪




22                                © 2012 DMM.com Labo Co.,Ltd.
Thank You!




23                © 2012 DMM.com Labo Co.,Ltd.

Más contenido relacionado

Similar a TumblrTouch

「AROW」お披露目(実用編)
「AROW」お披露目(実用編)「AROW」お披露目(実用編)
「AROW」お披露目(実用編)Drecom Co., Ltd.
 
夜子まま塾講義10(画面の呼び出し)
夜子まま塾講義10(画面の呼び出し)夜子まま塾講義10(画面の呼び出し)
夜子まま塾講義10(画面の呼び出し)Masafumi Terazono
 
Androidレイアウトのスタンダードアプローチ
AndroidレイアウトのスタンダードアプローチAndroidレイアウトのスタンダードアプローチ
AndroidレイアウトのスタンダードアプローチTakao Sumitomo
 
Zend Frameworkで始める携帯サイト
Zend Frameworkで始める携帯サイトZend Frameworkで始める携帯サイト
Zend Frameworkで始める携帯サイト清水樹
 
JCROM で Android の「真の力」を解き放て
JCROM で Android の「真の力」を解き放てJCROM で Android の「真の力」を解き放て
JCROM で Android の「真の力」を解き放てandroid sola
 
0406web creators night_DeNA
0406web creators night_DeNA0406web creators night_DeNA
0406web creators night_DeNADeNA_open_events
 
続・AppSheetを使い倒してみた ~ App Makerで開発したアプリをAppSheetに移行する
続・AppSheetを使い倒してみた ~ App Makerで開発したアプリをAppSheetに移行する続・AppSheetを使い倒してみた ~ App Makerで開発したアプリをAppSheetに移行する
続・AppSheetを使い倒してみた ~ App Makerで開発したアプリをAppSheetに移行するYukio Okajima
 
デブサミ2013応募用スライド
デブサミ2013応募用スライドデブサミ2013応募用スライド
デブサミ2013応募用スライドKaoru NAKAMURA
 
Titanium Mobile
Titanium MobileTitanium Mobile
Titanium MobileNaoya Ito
 
iPhone、Android両対応アプリ開発講座 概論
iPhone、Android両対応アプリ開発講座 概論iPhone、Android両対応アプリ開発講座 概論
iPhone、Android両対応アプリ開発講座 概論Takakuni Furukawa
 
うちのRedmineの使い方(2)
うちのRedmineの使い方(2)うちのRedmineの使い方(2)
うちのRedmineの使い方(2)Tomohisa Kusukawa
 
日本Androidの会 中国支部資料
日本Androidの会 中国支部資料日本Androidの会 中国支部資料
日本Androidの会 中国支部資料Masafumi Terazono
 
UnityとnodeとMMDと
UnityとnodeとMMDとUnityとnodeとMMDと
UnityとnodeとMMDとsters
 
DApps のユーザ認証に web3.eth.personal.sign を使おう!
DApps のユーザ認証に web3.eth.personal.sign を使おう!DApps のユーザ認証に web3.eth.personal.sign を使おう!
DApps のユーザ認証に web3.eth.personal.sign を使おう!Drecom Co., Ltd.
 
Firefox DevTools
Firefox DevToolsFirefox DevTools
Firefox DevToolsdynamis
 
MicrosoftのDID/VC実装概要
MicrosoftのDID/VC実装概要MicrosoftのDID/VC実装概要
MicrosoftのDID/VC実装概要Naohiro Fujie
 
20111031 MobileWeb at TDC
20111031 MobileWeb at TDC20111031 MobileWeb at TDC
20111031 MobileWeb at TDCNobuhiro Sue
 
20120516 NetCommons GoogleMap
20120516 NetCommons GoogleMap20120516 NetCommons GoogleMap
20120516 NetCommons GoogleMapKenichi Ohwada
 
Cloudera impala
Cloudera impalaCloudera impala
Cloudera impala外道 父
 
Mithril - 軽量/高速なMVCフレームワーク
Mithril - 軽量/高速なMVCフレームワークMithril - 軽量/高速なMVCフレームワーク
Mithril - 軽量/高速なMVCフレームワークsairoutine
 

Similar a TumblrTouch (20)

「AROW」お披露目(実用編)
「AROW」お披露目(実用編)「AROW」お披露目(実用編)
「AROW」お披露目(実用編)
 
夜子まま塾講義10(画面の呼び出し)
夜子まま塾講義10(画面の呼び出し)夜子まま塾講義10(画面の呼び出し)
夜子まま塾講義10(画面の呼び出し)
 
Androidレイアウトのスタンダードアプローチ
AndroidレイアウトのスタンダードアプローチAndroidレイアウトのスタンダードアプローチ
Androidレイアウトのスタンダードアプローチ
 
Zend Frameworkで始める携帯サイト
Zend Frameworkで始める携帯サイトZend Frameworkで始める携帯サイト
Zend Frameworkで始める携帯サイト
 
JCROM で Android の「真の力」を解き放て
JCROM で Android の「真の力」を解き放てJCROM で Android の「真の力」を解き放て
JCROM で Android の「真の力」を解き放て
 
0406web creators night_DeNA
0406web creators night_DeNA0406web creators night_DeNA
0406web creators night_DeNA
 
続・AppSheetを使い倒してみた ~ App Makerで開発したアプリをAppSheetに移行する
続・AppSheetを使い倒してみた ~ App Makerで開発したアプリをAppSheetに移行する続・AppSheetを使い倒してみた ~ App Makerで開発したアプリをAppSheetに移行する
続・AppSheetを使い倒してみた ~ App Makerで開発したアプリをAppSheetに移行する
 
デブサミ2013応募用スライド
デブサミ2013応募用スライドデブサミ2013応募用スライド
デブサミ2013応募用スライド
 
Titanium Mobile
Titanium MobileTitanium Mobile
Titanium Mobile
 
iPhone、Android両対応アプリ開発講座 概論
iPhone、Android両対応アプリ開発講座 概論iPhone、Android両対応アプリ開発講座 概論
iPhone、Android両対応アプリ開発講座 概論
 
うちのRedmineの使い方(2)
うちのRedmineの使い方(2)うちのRedmineの使い方(2)
うちのRedmineの使い方(2)
 
日本Androidの会 中国支部資料
日本Androidの会 中国支部資料日本Androidの会 中国支部資料
日本Androidの会 中国支部資料
 
UnityとnodeとMMDと
UnityとnodeとMMDとUnityとnodeとMMDと
UnityとnodeとMMDと
 
DApps のユーザ認証に web3.eth.personal.sign を使おう!
DApps のユーザ認証に web3.eth.personal.sign を使おう!DApps のユーザ認証に web3.eth.personal.sign を使おう!
DApps のユーザ認証に web3.eth.personal.sign を使おう!
 
Firefox DevTools
Firefox DevToolsFirefox DevTools
Firefox DevTools
 
MicrosoftのDID/VC実装概要
MicrosoftのDID/VC実装概要MicrosoftのDID/VC実装概要
MicrosoftのDID/VC実装概要
 
20111031 MobileWeb at TDC
20111031 MobileWeb at TDC20111031 MobileWeb at TDC
20111031 MobileWeb at TDC
 
20120516 NetCommons GoogleMap
20120516 NetCommons GoogleMap20120516 NetCommons GoogleMap
20120516 NetCommons GoogleMap
 
Cloudera impala
Cloudera impalaCloudera impala
Cloudera impala
 
Mithril - 軽量/高速なMVCフレームワーク
Mithril - 軽量/高速なMVCフレームワークMithril - 軽量/高速なMVCフレームワーク
Mithril - 軽量/高速なMVCフレームワーク
 

Más de Koji Ishimoto

マイクロインタラクション事始め以前
マイクロインタラクション事始め以前マイクロインタラクション事始め以前
マイクロインタラクション事始め以前Koji Ishimoto
 
JavaScript/CSS 2015 Autumn
JavaScript/CSS 2015 AutumnJavaScript/CSS 2015 Autumn
JavaScript/CSS 2015 AutumnKoji Ishimoto
 
Evaluating your stylesheets
Evaluating your stylesheetsEvaluating your stylesheets
Evaluating your stylesheetsKoji Ishimoto
 
フロントエンドエンジニア(仮) 〜え、ちょっとフロントやること多すぎじゃない!?〜
フロントエンドエンジニア(仮) 〜え、ちょっとフロントやること多すぎじゃない!?〜フロントエンドエンジニア(仮) 〜え、ちょっとフロントやること多すぎじゃない!?〜
フロントエンドエンジニア(仮) 〜え、ちょっとフロントやること多すぎじゃない!?〜Koji Ishimoto
 
Measuring Web Performance - 自己満足で終わらないためのパフォーマンス計測 -
Measuring Web Performance - 自己満足で終わらないためのパフォーマンス計測 -Measuring Web Performance - 自己満足で終わらないためのパフォーマンス計測 -
Measuring Web Performance - 自己満足で終わらないためのパフォーマンス計測 -Koji Ishimoto
 
大規模サイトにおけるGoogleアナリティクス導入から成果まで
大規模サイトにおけるGoogleアナリティクス導入から成果まで大規模サイトにおけるGoogleアナリティクス導入から成果まで
大規模サイトにおけるGoogleアナリティクス導入から成果までKoji Ishimoto
 
Using Google Analytics with jQuery Mobile
Using Google Analytics with jQuery MobileUsing Google Analytics with jQuery Mobile
Using Google Analytics with jQuery MobileKoji Ishimoto
 
Communities of Practice – kanazawa.js結成までの軌跡 -
Communities of Practice – kanazawa.js結成までの軌跡 -Communities of Practice – kanazawa.js結成までの軌跡 -
Communities of Practice – kanazawa.js結成までの軌跡 -Koji Ishimoto
 
Long Life Web Performance Optimization
Long Life Web Performance OptimizationLong Life Web Performance Optimization
Long Life Web Performance OptimizationKoji Ishimoto
 
Coding Web Performance
Coding Web PerformanceCoding Web Performance
Coding Web PerformanceKoji Ishimoto
 
ビジネスにおけるウェブパフォーマンス
ビジネスにおけるウェブパフォーマンスビジネスにおけるウェブパフォーマンス
ビジネスにおけるウェブパフォーマンスKoji Ishimoto
 
High Performance Web Design
High Performance Web DesignHigh Performance Web Design
High Performance Web DesignKoji Ishimoto
 
Webスライスから始めるmicroformats
Webスライスから始めるmicroformatsWebスライスから始めるmicroformats
Webスライスから始めるmicroformatsKoji Ishimoto
 

Más de Koji Ishimoto (15)

マイクロインタラクション事始め以前
マイクロインタラクション事始め以前マイクロインタラクション事始め以前
マイクロインタラクション事始め以前
 
JavaScript/CSS 2015 Autumn
JavaScript/CSS 2015 AutumnJavaScript/CSS 2015 Autumn
JavaScript/CSS 2015 Autumn
 
Evaluating your stylesheets
Evaluating your stylesheetsEvaluating your stylesheets
Evaluating your stylesheets
 
フロントエンドエンジニア(仮) 〜え、ちょっとフロントやること多すぎじゃない!?〜
フロントエンドエンジニア(仮) 〜え、ちょっとフロントやること多すぎじゃない!?〜フロントエンドエンジニア(仮) 〜え、ちょっとフロントやること多すぎじゃない!?〜
フロントエンドエンジニア(仮) 〜え、ちょっとフロントやること多すぎじゃない!?〜
 
Measuring Web Performance - 自己満足で終わらないためのパフォーマンス計測 -
Measuring Web Performance - 自己満足で終わらないためのパフォーマンス計測 -Measuring Web Performance - 自己満足で終わらないためのパフォーマンス計測 -
Measuring Web Performance - 自己満足で終わらないためのパフォーマンス計測 -
 
大規模サイトにおけるGoogleアナリティクス導入から成果まで
大規模サイトにおけるGoogleアナリティクス導入から成果まで大規模サイトにおけるGoogleアナリティクス導入から成果まで
大規模サイトにおけるGoogleアナリティクス導入から成果まで
 
tissa for iOS
tissa for iOStissa for iOS
tissa for iOS
 
Using Google Analytics with jQuery Mobile
Using Google Analytics with jQuery MobileUsing Google Analytics with jQuery Mobile
Using Google Analytics with jQuery Mobile
 
mobile first
mobile firstmobile first
mobile first
 
Communities of Practice – kanazawa.js結成までの軌跡 -
Communities of Practice – kanazawa.js結成までの軌跡 -Communities of Practice – kanazawa.js結成までの軌跡 -
Communities of Practice – kanazawa.js結成までの軌跡 -
 
Long Life Web Performance Optimization
Long Life Web Performance OptimizationLong Life Web Performance Optimization
Long Life Web Performance Optimization
 
Coding Web Performance
Coding Web PerformanceCoding Web Performance
Coding Web Performance
 
ビジネスにおけるウェブパフォーマンス
ビジネスにおけるウェブパフォーマンスビジネスにおけるウェブパフォーマンス
ビジネスにおけるウェブパフォーマンス
 
High Performance Web Design
High Performance Web DesignHigh Performance Web Design
High Performance Web Design
 
Webスライスから始めるmicroformats
Webスライスから始めるmicroformatsWebスライスから始めるmicroformats
Webスライスから始めるmicroformats
 

TumblrTouch

  • 1. Tu m bl r To u ch b y S e n c h a 金沢デザイン部, 石本 光司 2012.05.11 © 2012 DMM.com Labo Co.,Ltd.
  • 2. KOJI ISHIMOTO - @t32k 突然ですが。。。 5/14(月)で退職します。 5年間駆け抜けました。 ありがとうございます! 就職先は... 続きはWebで! よろしくお願いします。 2 © 2012 DMM.com Labo Co.,Ltd.
  • 3. 今回作ったもの Tumblr Touch 3 © 2012 DMM.com Labo Co.,Ltd.
  • 4. 作った経緯 tumblr gear の不具合... http://tumblrgear.tumblr.com/ 4 © 2012 DMM.com Labo Co.,Ltd.
  • 5. 公式 App の選択 5 © 2012 DMM.com Labo Co.,Ltd.
  • 6. © 2012 DMM.com Labo Co.,Ltd.
  • 7. tumblr gear official tumblr Flick! Tap! 7 © 2012 DMM.com Labo Co.,Ltd.
  • 8. 最高のUXとは...(僕にとって) 8 © 2012 DMM.com Labo Co.,Ltd.
  • 10. Nativeの操作性をWebで Touch 10 © 2012 DMM.com Labo Co.,Ltd.
  • 11. Sencha Touchに取り組むメリット - モバイルフレームワークの調査 - jQuery Mobile 以外の選択 - UIコンポーネントの学習 11 © 2012 DMM.com Labo Co.,Ltd.
  • 12. Demo © 2012 DMM.com Labo Co.,Ltd.
  • 13. 要件定義 1. Tumblr API (Photo Posts)の使用 2. 1画面1アイテム 3. タップによる遷移 4. 自動読み込み (できませんでした...) 13 © 2012 DMM.com Labo Co.,Ltd.
  • 14. 1. Tumblr API -Photo Posts -   Ext.data.proxy.Ajax Same Domain proxy: { type: 'ajax', url : 'users.json' } -   Ext.data.proxy.JsonP Different Domain proxy: { type: 'jsonp', url : 'http://domainB.com/users' } 14 © 2012 DMM.com Labo Co.,Ltd.
  • 15. Ext.define('TumblrTouch.model.FetchData', { extend: 'Ext.data.Model', config: { fields: ['photos'], proxy: { type: 'ajax', url: 'resource/data/posts.json', reader: { type: 'json', rootProperty: 'response.posts' } } } }); var ttdata = Ext.create('Ext.data.Store', { model: 'TumblrTouch.model.FetchData', }); 15 © 2012 DMM.com Labo Co.,Ltd.
  • 16. 2. 1画面1アイテム -   Ext.Layout.Card var panel = Ext.create('Ext.Panel', { layout: 'card', items: [ { html: "First Item" }, { html: "Second Item" }, { html: "Third Item" } ] }); panel.setActiveItem(1); 16 © 2012 DMM.com Labo Co.,Ltd.
  • 17. Ext.define('TumblrTouch.view.CardPanel', { extend: 'Ext.Panel', xtype: 'tt_cardpanel', config: { layout: { type: 'card', animation: { type: 'slide', direction: 'down'} }, id: 'cardpanel', defaults: { xtype: 'img',  style: 'background-size:contain;...', }, items: [ {src: 'resource/img/loading.png'} ] } }); 17 © 2012 DMM.com Labo Co.,Ltd.
  • 18. 3. Tapによる遷移 -   Ext.app.Controller Ext.define('MyApp.controller.Main', { extend: 'Ext.app.Controller', config: { refs: { nav: '#mainNav'} }, addLogoutButton: function() { this.getNav().add({text: 'Logout'}); } }); Ext.create('Ext.Toolbar', { id: 'mainNav', items: [{ text: 'Button'}] }); 18 © 2012 DMM.com Labo Co.,Ltd.
  • 19. Ext.define('TumblrTouch.controller.Main', { extend: 'Ext.app.Controller', config: { refs: { go: '#go' }, control: { go: { tap: 'goPager'} } }, goPager: function() { var panel = Ext.getCmp('cardpanel'); var index = Number(panel.getActiveItem().id.replace('ext- image-', '')) - 1; panel.animateActiveItem(index, {type: 'slide', direction: 'down'}); panel.setActiveItem(index); } }); 19 © 2012 DMM.com Labo Co.,Ltd.
  • 20. Sencha Touch Applicationの構造 20 © 2012 DMM.com Labo Co.,Ltd.
  • 21. Tumblr Touchの構造 21 © 2012 DMM.com Labo Co.,Ltd.
  • 22. Sencha Touch 2を触ってみた感想 - 学習コスト高いがドキュメント・サンプル豊富(英語...) - 非常に良くできている(と思う...) - 日本の開発者人口少ない(#senchajp) - Viewだけならなんとかデザイナーも... - 最悪、CSSでなんとかできる - jQuery Mobileよりも触ってて楽しい♪ 22 © 2012 DMM.com Labo Co.,Ltd.
  • 23. Thank You! 23 © 2012 DMM.com Labo Co.,Ltd.