SlideShare una empresa de Scribd logo
1 de 17
Descargar para leer sin conexión
中規模なアプリ開発苦労話




                                                  photo by Alan Bell
                    http://www.flickr.com/photos/belalan/213282261/
13年1月25日金曜日
自己紹介
                                        photo by poluz!
                     http://www.flickr.com/photos/poluz
13年1月25日金曜日
小山田 浩(@h5y1m141)




                                     JavaScript
         エンジニアではありませんが       (JScript,Titanium Mobileな
         趣味でTitaniumいじってます         ど)経験2年程度
                              ※最近はCoffeeScript好き

13年1月25日金曜日
Agenda
              • これから話すこと
               • 今作ってるアプリを簡単に紹介
               • 自分の中の設計方針
              • 今日話さないこと
               • ソースコードの細かい解説
                ※気になる方はLT終了後お声がけ下さい


13年1月25日金曜日
今作ってるアプリ
                                        Photo By fotologic
                    http://www.flickr.com/photos/fotologic/
13年1月25日金曜日
Qiitaのビューワーアプリ




13年1月25日金曜日
中規模ってどの程度?




                                        photo by Laurie Pink
                    http://www.flickr.com/photos/laurie_pink/
13年1月25日金曜日
あくまで自分の中で中規模
                 という話です
     •   人生初のコード1000行超
         ※現在1334行

         •    underscore.js、moment.js
              等のライブラリとjasmineのテ
              ストコードは除いた数値

     •   MVC的にファイルを分割

         •    分割方法、ファイルのネーミン
              グに現在悩んでる




13年1月25日金曜日
アプリの構成要素:主要なUI
     mainTable
                                        configTable




                              configWindow
                                            webView
     menuTable



                 mainWindow



                              WebViewWindow
13年1月25日金曜日
TableViewは使い回してる
                  mainTable   ローカルにキャッシュ




                                投稿情報
                                投稿情報
                                 投稿情報
                                 投稿情報




     mainWindow




13年1月25日金曜日
画面遷移のロジックはシンプル


                            moveToConfigWindow: () ->
                                configMenu = require("ui/configMenu")
                                menu = new configMenu()
                                configWindow = new win()
                                configWindow.title = "アカウント情報"
                                configWindow.backButtonTitle = '戻る'
                                configWindow.add menu
                                return tab.open(configWindow)




                               configWindow


                            moveToWebViewWindow: () ->


               mainWindow
                                actionBtn = Ti.UI.createButton
                                  systemButton: Titanium.UI.iPhone.SystemButton.ACTION

                                actionBtn.addEventListener('click',()->
                                  # 省略
                                webview.show()
                                webWindow.rightNavButton = actionBtn
                                return tab.open(webWindow)


                             WebViewWindow
13年1月25日金曜日
TableViewの入れ替え&書き換えとか
           スパゲッティコードになりそう・・

              左上ナビボタン:click   menuTable:click



                               QiitaAPIを利用する独自モ
                               デル定義しておりそれを呼
                 mainTableス            び出す
                 ライドと半透
                               1.該当のURLエンドポイントアクセス
                    明化         2.アイテム取得出来たらローカルにキャッシュ
                               3.QiitaAPIのリクエストヘッダーに次ページの
                               URL情報含まれているので取り出しておく




13年1月25日金曜日
自分の中の設計方針


              ・1メソッド1画面程度にする
              ・ 先人の知恵を活用してスパゲッ
              ティコード化を防ぐ




                                             photo by aagius
                         http://www.flickr.com/photos/aagius/
13年1月25日金曜日
mainTableスライドと半透明化処理で
                    Stateパターン
   class defaultState                                          class slideState
     constructor: () ->                                          constructor: () ->
                                                                    
     sayState: () ->                                             sayState: () ->
       return "STATE: 標準状態"                                        return "STATE: スライド状態"
     moveBackward: () ->                                           
                                                                 moveBackward: () ->
       # return new defaultState()                                 Ti.App.Properties.setBool("stateMainTableSlide",false)
     moveForward: () ->                                            mainTable.touchEnabled = true
       Ti.API.info "ACTION: スライド開始"                                
       Ti.App.Properties.setBool("stateMainTableSlide",true)       mainTable.setOpacity(1.0)
       mainTable.touchEnabled = false                              mainTable.animate({
       mainTable.animate({                                           duration:200
         duration:200                                                left:0
         left:160                                                  },()->
       }, ()->                                                       # Ti.API.info "アニメーション終了"
         mainTable.setOpacity(0.5)                                 
       )                                                           )
       return new slideState()                                     return new defaultState()
   module.exports = defaultState                                   
                                                                 moveForward: () ->
                                                                   Ti.API.info "この状態では何もしない"
                                                                       
                                                               module.exports = slideState




13年1月25日金曜日
menuTableの各項目をクリック後の
                 処理はCommandパターン

                        getMyStocksCommand()

                        1.qiita.getMyStocks()実行
                        2.次ページのURL情報が後々必要
                        になるためTi.App.Properties
                        で格納
                        3. ActivityIndicatorの制御
                        4.その他・・

                        getFollowingTagsCommand(tags)

                        ※まだ実装してないけど上記と似
                        たような処理になる予定


13年1月25日金曜日
GitHub上にコードありますので気に
               なる方はご覧くださいー




13年1月25日金曜日
ご清聴ありがとうご
                ざいました


13年1月25日金曜日

Más contenido relacionado

Destacado

Weekly update 2
Weekly update 2Weekly update 2
Weekly update 2Fatima B
 
Interakcja na ekrania media
Interakcja na ekrania media Interakcja na ekrania media
Interakcja na ekrania media Karolina Mroczek
 
ASI 2007 European Radio Symposium - Furlanetto - How auditing radio campaigns...
ASI 2007 European Radio Symposium - Furlanetto - How auditing radio campaigns...ASI 2007 European Radio Symposium - Furlanetto - How auditing radio campaigns...
ASI 2007 European Radio Symposium - Furlanetto - How auditing radio campaigns...A+
 
From Semantic Grid To Knowledge Service
From Semantic Grid To Knowledge ServiceFrom Semantic Grid To Knowledge Service
From Semantic Grid To Knowledge Serviceguest10cfd4d
 
Presentació AENTEG
Presentació AENTEGPresentació AENTEG
Presentació AENTEGTICAnoia
 
Screen printing on tees in miami
Screen printing on tees in miamiScreen printing on tees in miami
Screen printing on tees in miamilisamartin102
 
ISOLA MENU' aggiornato a gennaio 2012.docx
ISOLA MENU' aggiornato a gennaio 2012.docxISOLA MENU' aggiornato a gennaio 2012.docx
ISOLA MENU' aggiornato a gennaio 2012.docxLoveResto
 
Start prezentac lan
Start prezentac lanStart prezentac lan
Start prezentac lanDemon3060
 
The History of the Horror Genre
The History of the Horror GenreThe History of the Horror Genre
The History of the Horror Genrehiagne
 
Financial Burden of Pediatric Cancer for Patients and their Families
Financial Burden of Pediatric Cancer for Patients and their FamiliesFinancial Burden of Pediatric Cancer for Patients and their Families
Financial Burden of Pediatric Cancer for Patients and their Familiesdylanturner22
 
Kosteikko infoa 2012
Kosteikko infoa 2012Kosteikko infoa 2012
Kosteikko infoa 2012Layla Ahonen
 
香港六合彩
香港六合彩香港六合彩
香港六合彩weige
 

Destacado (17)

Lagna calculator ( mystic scripts )
Lagna calculator ( mystic scripts )Lagna calculator ( mystic scripts )
Lagna calculator ( mystic scripts )
 
Weekly update 2
Weekly update 2Weekly update 2
Weekly update 2
 
Interakcja na ekrania media
Interakcja na ekrania media Interakcja na ekrania media
Interakcja na ekrania media
 
ASI 2007 European Radio Symposium - Furlanetto - How auditing radio campaigns...
ASI 2007 European Radio Symposium - Furlanetto - How auditing radio campaigns...ASI 2007 European Radio Symposium - Furlanetto - How auditing radio campaigns...
ASI 2007 European Radio Symposium - Furlanetto - How auditing radio campaigns...
 
From Semantic Grid To Knowledge Service
From Semantic Grid To Knowledge ServiceFrom Semantic Grid To Knowledge Service
From Semantic Grid To Knowledge Service
 
10 they overcame by the blood (part 1) slideshow
10 they overcame by the blood (part 1)   slideshow10 they overcame by the blood (part 1)   slideshow
10 they overcame by the blood (part 1) slideshow
 
Presentació AENTEG
Presentació AENTEGPresentació AENTEG
Presentació AENTEG
 
Prague
PraguePrague
Prague
 
Screen printing on tees in miami
Screen printing on tees in miamiScreen printing on tees in miami
Screen printing on tees in miami
 
Morning
MorningMorning
Morning
 
ISOLA MENU' aggiornato a gennaio 2012.docx
ISOLA MENU' aggiornato a gennaio 2012.docxISOLA MENU' aggiornato a gennaio 2012.docx
ISOLA MENU' aggiornato a gennaio 2012.docx
 
Start prezentac lan
Start prezentac lanStart prezentac lan
Start prezentac lan
 
The History of the Horror Genre
The History of the Horror GenreThe History of the Horror Genre
The History of the Horror Genre
 
Financial Burden of Pediatric Cancer for Patients and their Families
Financial Burden of Pediatric Cancer for Patients and their FamiliesFinancial Burden of Pediatric Cancer for Patients and their Families
Financial Burden of Pediatric Cancer for Patients and their Families
 
Kosteikko infoa 2012
Kosteikko infoa 2012Kosteikko infoa 2012
Kosteikko infoa 2012
 
Italy National PBoXes 10-11
Italy National PBoXes 10-11Italy National PBoXes 10-11
Italy National PBoXes 10-11
 
香港六合彩
香港六合彩香港六合彩
香港六合彩
 

Similar a 20130125 titanium meetupvol5

20130412 titanium meetupvol7
20130412 titanium meetupvol720130412 titanium meetupvol7
20130412 titanium meetupvol7Hiroshi Oyamada
 
20130924 Picomon CRH勉強会
20130924 Picomon CRH勉強会20130924 Picomon CRH勉強会
20130924 Picomon CRH勉強会Yukihiro Kitazawa
 
Webアプリのシナリオテスト自動化を運用に乗せるまでの10のステップ
Webアプリのシナリオテスト自動化を運用に乗せるまでの10のステップWebアプリのシナリオテスト自動化を運用に乗せるまでの10のステップ
Webアプリのシナリオテスト自動化を運用に乗せるまでの10のステップNaoki Iwami
 
mobylet ケータイサイト30分クッキング
mobylet ケータイサイト30分クッキングmobylet ケータイサイト30分クッキング
mobylet ケータイサイト30分クッキングShin Takeuchi
 
I phoneアプリ入門 第3回
I phoneアプリ入門 第3回I phoneアプリ入門 第3回
I phoneアプリ入門 第3回Sachiko Kajishima
 
HTML5を使うためのプログレッシブエンハンスメント 〜すべての人に確実に情報を届けるために〜SwapSkillsFreeEventProgressiv...
HTML5を使うためのプログレッシブエンハンスメント 〜すべての人に確実に情報を届けるために〜SwapSkillsFreeEventProgressiv...HTML5を使うためのプログレッシブエンハンスメント 〜すべての人に確実に情報を届けるために〜SwapSkillsFreeEventProgressiv...
HTML5を使うためのプログレッシブエンハンスメント 〜すべての人に確実に情報を届けるために〜SwapSkillsFreeEventProgressiv...SwapSkills
 
Sugarcubeをはじめよう
SugarcubeをはじめようSugarcubeをはじめよう
SugarcubeをはじめようEihiro Saishu
 
jQuery Mobile 最新情報 & Tips
jQuery Mobile 最新情報 & TipsjQuery Mobile 最新情報 & Tips
jQuery Mobile 最新情報 & Tipsyoshikawa_t
 
Jqm20120210
Jqm20120210Jqm20120210
Jqm20120210cmtomoda
 
datetime.datetime.now()をモックしたい.pdf
datetime.datetime.now()をモックしたい.pdfdatetime.datetime.now()をモックしたい.pdf
datetime.datetime.now()をモックしたい.pdfYutaNemoto1
 
scala+liftで遊ぼう
scala+liftで遊ぼうscala+liftで遊ぼう
scala+liftで遊ぼうyouku
 
EC-CUBEプラグイン講義
EC-CUBEプラグイン講義EC-CUBEプラグイン講義
EC-CUBEプラグイン講義ria1201
 
Introduction for Browser Side MVC
Introduction for Browser Side MVCIntroduction for Browser Side MVC
Introduction for Browser Side MVCRyunosuke SATO
 
Java fx勉強会lt 第8回
Java fx勉強会lt 第8回Java fx勉強会lt 第8回
Java fx勉強会lt 第8回Taiji Miyabe
 
JavaScript + CSS3を活用して スマートフォンサイト/アプリに 動きを付けてみよう
JavaScript + CSS3を活用して スマートフォンサイト/アプリに 動きを付けてみようJavaScript + CSS3を活用して スマートフォンサイト/アプリに 動きを付けてみよう
JavaScript + CSS3を活用して スマートフォンサイト/アプリに 動きを付けてみようHiroaki Wakamatsu
 

Similar a 20130125 titanium meetupvol5 (20)

20130412 titanium meetupvol7
20130412 titanium meetupvol720130412 titanium meetupvol7
20130412 titanium meetupvol7
 
20130924 Picomon CRH勉強会
20130924 Picomon CRH勉強会20130924 Picomon CRH勉強会
20130924 Picomon CRH勉強会
 
Webアプリのシナリオテスト自動化を運用に乗せるまでの10のステップ
Webアプリのシナリオテスト自動化を運用に乗せるまでの10のステップWebアプリのシナリオテスト自動化を運用に乗せるまでの10のステップ
Webアプリのシナリオテスト自動化を運用に乗せるまでの10のステップ
 
Titanium勉強会
Titanium勉強会Titanium勉強会
Titanium勉強会
 
mobylet ケータイサイト30分クッキング
mobylet ケータイサイト30分クッキングmobylet ケータイサイト30分クッキング
mobylet ケータイサイト30分クッキング
 
Road to UI Library
Road to UI LibraryRoad to UI Library
Road to UI Library
 
I phoneアプリ入門 第3回
I phoneアプリ入門 第3回I phoneアプリ入門 第3回
I phoneアプリ入門 第3回
 
HTML5を使うためのプログレッシブエンハンスメント 〜すべての人に確実に情報を届けるために〜SwapSkillsFreeEventProgressiv...
HTML5を使うためのプログレッシブエンハンスメント 〜すべての人に確実に情報を届けるために〜SwapSkillsFreeEventProgressiv...HTML5を使うためのプログレッシブエンハンスメント 〜すべての人に確実に情報を届けるために〜SwapSkillsFreeEventProgressiv...
HTML5を使うためのプログレッシブエンハンスメント 〜すべての人に確実に情報を届けるために〜SwapSkillsFreeEventProgressiv...
 
Sugarcubeをはじめよう
SugarcubeをはじめようSugarcubeをはじめよう
Sugarcubeをはじめよう
 
jQuery Mobile 最新情報 & Tips
jQuery Mobile 最新情報 & TipsjQuery Mobile 最新情報 & Tips
jQuery Mobile 最新情報 & Tips
 
Jqm20120210
Jqm20120210Jqm20120210
Jqm20120210
 
datetime.datetime.now()をモックしたい.pdf
datetime.datetime.now()をモックしたい.pdfdatetime.datetime.now()をモックしたい.pdf
datetime.datetime.now()をモックしたい.pdf
 
scala+liftで遊ぼう
scala+liftで遊ぼうscala+liftで遊ぼう
scala+liftで遊ぼう
 
EC-CUBEプラグイン講義
EC-CUBEプラグイン講義EC-CUBEプラグイン講義
EC-CUBEプラグイン講義
 
Introduction for Browser Side MVC
Introduction for Browser Side MVCIntroduction for Browser Side MVC
Introduction for Browser Side MVC
 
Titanium実装最初の一歩.
Titanium実装最初の一歩. Titanium実装最初の一歩.
Titanium実装最初の一歩.
 
Java fx勉強会lt 第8回
Java fx勉強会lt 第8回Java fx勉強会lt 第8回
Java fx勉強会lt 第8回
 
JavaScript + CSS3を活用して スマートフォンサイト/アプリに 動きを付けてみよう
JavaScript + CSS3を活用して スマートフォンサイト/アプリに 動きを付けてみようJavaScript + CSS3を活用して スマートフォンサイト/アプリに 動きを付けてみよう
JavaScript + CSS3を活用して スマートフォンサイト/アプリに 動きを付けてみよう
 
Miyazaki.js vol.2
Miyazaki.js vol.2Miyazaki.js vol.2
Miyazaki.js vol.2
 
DevSap20130921
DevSap20130921DevSap20130921
DevSap20130921
 

Más de Hiroshi Oyamada

2016 02-25-crawler-study-01
2016 02-25-crawler-study-012016 02-25-crawler-study-01
2016 02-25-crawler-study-01Hiroshi Oyamada
 
育児を支える技術〜クローラーとかスクレイピング
育児を支える技術〜クローラーとかスクレイピング育児を支える技術〜クローラーとかスクレイピング
育児を支える技術〜クローラーとかスクレイピングHiroshi Oyamada
 
日々の面倒をプログラミングで解決!【入門編】
日々の面倒をプログラミングで解決!【入門編】日々の面倒をプログラミングで解決!【入門編】
日々の面倒をプログラミングで解決!【入門編】Hiroshi Oyamada
 
2014 05-17-titanium hamamatsuvol3
2014 05-17-titanium hamamatsuvol32014 05-17-titanium hamamatsuvol3
2014 05-17-titanium hamamatsuvol3Hiroshi Oyamada
 
20140319 titanium meetupvol17
20140319 titanium meetupvol1720140319 titanium meetupvol17
20140319 titanium meetupvol17Hiroshi Oyamada
 
2014 02-19-titanium meetupvol16
2014 02-19-titanium meetupvol162014 02-19-titanium meetupvol16
2014 02-19-titanium meetupvol16Hiroshi Oyamada
 
20130910 titanium meetupvol11
20130910 titanium meetupvol1120130910 titanium meetupvol11
20130910 titanium meetupvol11Hiroshi Oyamada
 
勉強会主催者のための勉強会
勉強会主催者のための勉強会勉強会主催者のための勉強会
勉強会主催者のための勉強会Hiroshi Oyamada
 
20130613 titanium meetupvol9
20130613 titanium meetupvol920130613 titanium meetupvol9
20130613 titanium meetupvol9Hiroshi Oyamada
 
2013 06-11-craft beerfanlt
2013 06-11-craft beerfanlt2013 06-11-craft beerfanlt
2013 06-11-craft beerfanltHiroshi Oyamada
 
2013 06-05-web-career-talk-at-coedo
2013 06-05-web-career-talk-at-coedo2013 06-05-web-career-talk-at-coedo
2013 06-05-web-career-talk-at-coedoHiroshi Oyamada
 
2013 02-28-bussiness-plan-about-titanium
2013 02-28-bussiness-plan-about-titanium2013 02-28-bussiness-plan-about-titanium
2013 02-28-bussiness-plan-about-titaniumHiroshi Oyamada
 
20130126 titanium新年会
20130126 titanium新年会20130126 titanium新年会
20130126 titanium新年会Hiroshi Oyamada
 
2012 12-17-titanium meetupvol4
2012 12-17-titanium meetupvol42012 12-17-titanium meetupvol4
2012 12-17-titanium meetupvol4Hiroshi Oyamada
 
Sinatraアプリをherokuにアップ
SinatraアプリをherokuにアップSinatraアプリをherokuにアップ
SinatraアプリをherokuにアップHiroshi Oyamada
 
Sinatraでwebアプリケーション開発を学ぶ
Sinatraでwebアプリケーション開発を学ぶSinatraでwebアプリケーション開発を学ぶ
Sinatraでwebアプリケーション開発を学ぶHiroshi Oyamada
 

Más de Hiroshi Oyamada (20)

2016 02-25-crawler-study-01
2016 02-25-crawler-study-012016 02-25-crawler-study-01
2016 02-25-crawler-study-01
 
2016 02-09-co-edo lt
2016 02-09-co-edo lt2016 02-09-co-edo lt
2016 02-09-co-edo lt
 
2015 12-19-ruby rails
2015 12-19-ruby rails2015 12-19-ruby rails
2015 12-19-ruby rails
 
2015 07-04-ruby rails
2015 07-04-ruby rails2015 07-04-ruby rails
2015 07-04-ruby rails
 
育児を支える技術〜クローラーとかスクレイピング
育児を支える技術〜クローラーとかスクレイピング育児を支える技術〜クローラーとかスクレイピング
育児を支える技術〜クローラーとかスクレイピング
 
日々の面倒をプログラミングで解決!【入門編】
日々の面倒をプログラミングで解決!【入門編】日々の面倒をプログラミングで解決!【入門編】
日々の面倒をプログラミングで解決!【入門編】
 
2014 05-17-titanium hamamatsuvol3
2014 05-17-titanium hamamatsuvol32014 05-17-titanium hamamatsuvol3
2014 05-17-titanium hamamatsuvol3
 
20140319 titanium meetupvol17
20140319 titanium meetupvol1720140319 titanium meetupvol17
20140319 titanium meetupvol17
 
2014 02-19-titanium meetupvol16
2014 02-19-titanium meetupvol162014 02-19-titanium meetupvol16
2014 02-19-titanium meetupvol16
 
TitaniumMeetUpVol13
TitaniumMeetUpVol13TitaniumMeetUpVol13
TitaniumMeetUpVol13
 
20130910 titanium meetupvol11
20130910 titanium meetupvol1120130910 titanium meetupvol11
20130910 titanium meetupvol11
 
勉強会主催者のための勉強会
勉強会主催者のための勉強会勉強会主催者のための勉強会
勉強会主催者のための勉強会
 
20130613 titanium meetupvol9
20130613 titanium meetupvol920130613 titanium meetupvol9
20130613 titanium meetupvol9
 
2013 06-11-craft beerfanlt
2013 06-11-craft beerfanlt2013 06-11-craft beerfanlt
2013 06-11-craft beerfanlt
 
2013 06-05-web-career-talk-at-coedo
2013 06-05-web-career-talk-at-coedo2013 06-05-web-career-talk-at-coedo
2013 06-05-web-career-talk-at-coedo
 
2013 02-28-bussiness-plan-about-titanium
2013 02-28-bussiness-plan-about-titanium2013 02-28-bussiness-plan-about-titanium
2013 02-28-bussiness-plan-about-titanium
 
20130126 titanium新年会
20130126 titanium新年会20130126 titanium新年会
20130126 titanium新年会
 
2012 12-17-titanium meetupvol4
2012 12-17-titanium meetupvol42012 12-17-titanium meetupvol4
2012 12-17-titanium meetupvol4
 
Sinatraアプリをherokuにアップ
SinatraアプリをherokuにアップSinatraアプリをherokuにアップ
Sinatraアプリをherokuにアップ
 
Sinatraでwebアプリケーション開発を学ぶ
Sinatraでwebアプリケーション開発を学ぶSinatraでwebアプリケーション開発を学ぶ
Sinatraでwebアプリケーション開発を学ぶ
 

20130125 titanium meetupvol5

  • 1. 中規模なアプリ開発苦労話 photo by Alan Bell http://www.flickr.com/photos/belalan/213282261/ 13年1月25日金曜日
  • 2. 自己紹介 photo by poluz! http://www.flickr.com/photos/poluz 13年1月25日金曜日
  • 3. 小山田 浩(@h5y1m141) JavaScript エンジニアではありませんが (JScript,Titanium Mobileな 趣味でTitaniumいじってます ど)経験2年程度 ※最近はCoffeeScript好き 13年1月25日金曜日
  • 4. Agenda • これから話すこと • 今作ってるアプリを簡単に紹介 • 自分の中の設計方針 • 今日話さないこと • ソースコードの細かい解説 ※気になる方はLT終了後お声がけ下さい 13年1月25日金曜日
  • 5. 今作ってるアプリ Photo By fotologic http://www.flickr.com/photos/fotologic/ 13年1月25日金曜日
  • 7. 中規模ってどの程度? photo by Laurie Pink http://www.flickr.com/photos/laurie_pink/ 13年1月25日金曜日
  • 8. あくまで自分の中で中規模 という話です • 人生初のコード1000行超 ※現在1334行 • underscore.js、moment.js 等のライブラリとjasmineのテ ストコードは除いた数値 • MVC的にファイルを分割 • 分割方法、ファイルのネーミン グに現在悩んでる 13年1月25日金曜日
  • 9. アプリの構成要素:主要なUI mainTable configTable configWindow webView menuTable mainWindow WebViewWindow 13年1月25日金曜日
  • 10. TableViewは使い回してる mainTable ローカルにキャッシュ 投稿情報 投稿情報 投稿情報 投稿情報 mainWindow 13年1月25日金曜日
  • 11. 画面遷移のロジックはシンプル moveToConfigWindow: () ->     configMenu = require("ui/configMenu")     menu = new configMenu()     configWindow = new win()     configWindow.title = "アカウント情報"     configWindow.backButtonTitle = '戻る'     configWindow.add menu     return tab.open(configWindow) configWindow moveToWebViewWindow: () -> mainWindow     actionBtn = Ti.UI.createButton       systemButton: Titanium.UI.iPhone.SystemButton.ACTION     actionBtn.addEventListener('click',()-> # 省略     webview.show()     webWindow.rightNavButton = actionBtn     return tab.open(webWindow) WebViewWindow 13年1月25日金曜日
  • 12. TableViewの入れ替え&書き換えとか スパゲッティコードになりそう・・ 左上ナビボタン:click menuTable:click QiitaAPIを利用する独自モ デル定義しておりそれを呼 mainTableス び出す ライドと半透 1.該当のURLエンドポイントアクセス 明化 2.アイテム取得出来たらローカルにキャッシュ 3.QiitaAPIのリクエストヘッダーに次ページの URL情報含まれているので取り出しておく 13年1月25日金曜日
  • 13. 自分の中の設計方針 ・1メソッド1画面程度にする ・ 先人の知恵を活用してスパゲッ ティコード化を防ぐ photo by aagius http://www.flickr.com/photos/aagius/ 13年1月25日金曜日
  • 14. mainTableスライドと半透明化処理で Stateパターン class defaultState class slideState   constructor: () ->   constructor: () ->              sayState: () ->   sayState: () ->     return "STATE: 標準状態"     return "STATE: スライド状態"   moveBackward: () ->        moveBackward: () ->     # return new defaultState()     Ti.App.Properties.setBool("stateMainTableSlide",false)   moveForward: () ->     mainTable.touchEnabled = true     Ti.API.info "ACTION: スライド開始"          Ti.App.Properties.setBool("stateMainTableSlide",true)     mainTable.setOpacity(1.0)     mainTable.touchEnabled = false     mainTable.animate({     mainTable.animate({       duration:200       duration:200       left:0       left:160     },()->     }, ()->       # Ti.API.info "アニメーション終了"       mainTable.setOpacity(0.5)          )         )     return new slideState()     return new defaultState() module.exports = defaultState        moveForward: () ->     Ti.API.info "この状態では何もしない"          module.exports = slideState 13年1月25日金曜日
  • 15. menuTableの各項目をクリック後の 処理はCommandパターン getMyStocksCommand() 1.qiita.getMyStocks()実行 2.次ページのURL情報が後々必要 になるためTi.App.Properties で格納 3. ActivityIndicatorの制御 4.その他・・ getFollowingTagsCommand(tags) ※まだ実装してないけど上記と似 たような処理になる予定 13年1月25日金曜日
  • 16. GitHub上にコードありますので気に なる方はご覧くださいー 13年1月25日金曜日
  • 17. ご清聴ありがとうご ざいました 13年1月25日金曜日