Download free for 30 days
Sign in
Upload
Language (EN)
Support
Business
Mobile
Social Media
Marketing
Technology
Art & Photos
Career
Design
Education
Presentations & Public Speaking
Government & Nonprofit
Healthcare
Internet
Law
Leadership & Management
Automotive
Engineering
Software
Recruiting & HR
Retail
Sales
Services
Science
Small Business & Entrepreneurship
Food
Environment
Economy & Finance
Data & Analytics
Investor Relations
Sports
Spiritual
News & Politics
Travel
Self Improvement
Real Estate
Entertainment & Humor
Health & Medicine
Devices & Hardware
Lifestyle
Change Language
Language
English
Español
Português
Français
Deutsche
Cancel
Save
EN
Uploaded by
toyship
7,317 views
サーバーからiOSアプリを変更する
2014/4/26のyidev@恵比寿で発表したスライドです。
Engineering
◦
Read more
10
Save
Share
Embed
Embed presentation
Download
Downloaded 13 times
1
/ 23
2
/ 23
3
/ 23
4
/ 23
5
/ 23
6
/ 23
7
/ 23
8
/ 23
9
/ 23
10
/ 23
11
/ 23
12
/ 23
13
/ 23
14
/ 23
15
/ 23
16
/ 23
17
/ 23
18
/ 23
19
/ 23
20
/ 23
21
/ 23
22
/ 23
23
/ 23
More Related Content
PPTX
Challenge PWA!! TRY PWA4WP!
by
Ryu Shindo
PPTX
Hello, React!! まで導く Reactの基礎
by
iPride Co., Ltd.
PDF
DOO-014_日本でもできる! マイクロソフト技術をフル活用した DevOps の具体的実現手法!
by
decode2016
PDF
building HTML hybrid app with ionic
by
Nakano Kyohei
PDF
20131227_appium+rspec
by
Kazuaki Matsuo
PPTX
最新UIフレームワーク Onsen UI2でカッコイイWordPress連携アプリを作る方法
by
アシアル株式会社
PPTX
React Nativeで考えるクロスプラットフォーム開発
by
yuichi kubota
PPTX
Selenium2(web driver)
by
Tetsuya Hasegawa
Challenge PWA!! TRY PWA4WP!
by
Ryu Shindo
Hello, React!! まで導く Reactの基礎
by
iPride Co., Ltd.
DOO-014_日本でもできる! マイクロソフト技術をフル活用した DevOps の具体的実現手法!
by
decode2016
building HTML hybrid app with ionic
by
Nakano Kyohei
20131227_appium+rspec
by
Kazuaki Matsuo
最新UIフレームワーク Onsen UI2でカッコイイWordPress連携アプリを作る方法
by
アシアル株式会社
React Nativeで考えるクロスプラットフォーム開発
by
yuichi kubota
Selenium2(web driver)
by
Tetsuya Hasegawa
What's hot
PDF
Amplify Consoleで かんたん!Webサイト公開
by
Daisuke Yagi
PPTX
Selenium2(web driver) ide編
by
Tetsuya Hasegawa
PDF
メルカリの開発スピードと品質を支える Selenium on Azure Kubernetes Service
by
Tadashi Nemoto
PDF
書籍『Monacaで学ぶはじめてのプログラミング』発展資料(試験問題アプリ編)
by
アシアル株式会社
PDF
もっと良くなるHTMLアプリケーション設計と実装
by
Mitsue-Links
PDF
Java + React.jsでSever Side Rendering #reactjs_meetup
by
Toshiaki Maki
PDF
Nodejs and mongodb
by
Ayako Hatori
PDF
a-blog cms の基本 Ver.Kochi
by
Kasumi Morita
PDF
Swiftではじめる動画再生
by
Yusuke Ariyoshi
PDF
Tableau Developers Club - Web Data Connector handson
by
Kenji Noguchi
PDF
6秒動画アプリ Vineの作り方
by
Hiramatsu Ryosuke
PDF
DevOpsを実現するChef活用テクニック
by
Yusuke Ando
PPTX
WordPressサイトをスマホアプリにしちゃおう!
by
Ryu Shindo
PDF
Onsen UI 2.0とUIライブラリの未来
by
アシアル株式会社
PDF
Selenium入門
by
onozaty
PDF
React es2015
by
t-onizawa
PPTX
Selenium WebDriver,Cypress,TestCafeの違いを調べてみました
by
MaiKaneko4
PPTX
パララックスでレスポンシブでJ query mobileなサイトのつくりかた
by
Shumpei Shiraishi
PDF
Sl study 20150804-soft-layer-apibasic-shibata
by
Naoki Shibata
PDF
Travis CIで実現するPHPアプリの自動テスト
by
Yusuke Ando
Amplify Consoleで かんたん!Webサイト公開
by
Daisuke Yagi
Selenium2(web driver) ide編
by
Tetsuya Hasegawa
メルカリの開発スピードと品質を支える Selenium on Azure Kubernetes Service
by
Tadashi Nemoto
書籍『Monacaで学ぶはじめてのプログラミング』発展資料(試験問題アプリ編)
by
アシアル株式会社
もっと良くなるHTMLアプリケーション設計と実装
by
Mitsue-Links
Java + React.jsでSever Side Rendering #reactjs_meetup
by
Toshiaki Maki
Nodejs and mongodb
by
Ayako Hatori
a-blog cms の基本 Ver.Kochi
by
Kasumi Morita
Swiftではじめる動画再生
by
Yusuke Ariyoshi
Tableau Developers Club - Web Data Connector handson
by
Kenji Noguchi
6秒動画アプリ Vineの作り方
by
Hiramatsu Ryosuke
DevOpsを実現するChef活用テクニック
by
Yusuke Ando
WordPressサイトをスマホアプリにしちゃおう!
by
Ryu Shindo
Onsen UI 2.0とUIライブラリの未来
by
アシアル株式会社
Selenium入門
by
onozaty
React es2015
by
t-onizawa
Selenium WebDriver,Cypress,TestCafeの違いを調べてみました
by
MaiKaneko4
パララックスでレスポンシブでJ query mobileなサイトのつくりかた
by
Shumpei Shiraishi
Sl study 20150804-soft-layer-apibasic-shibata
by
Naoki Shibata
Travis CIで実現するPHPアプリの自動テスト
by
Yusuke Ando
Similar to サーバーからiOSアプリを変更する
PDF
iOS WebView App
by
hagino 3000
PPTX
2012 05-19第44回cocoa勉強会発表資料
by
OCHI Shuji
PDF
iPhone develop for Beginner
by
Sachiko Kajishima
PDF
iOSアプリ制作ツールアプリビルダーを支える技術
by
Tomoki Hasegawa
PDF
既存アプリのiOS8対応 #ios8yahoo
by
Yahoo!デベロッパーネットワーク
PDF
はじめてのiOSアプリ開発 Swift対応版
by
Tomoki Hasegawa
PDF
Androiderとi os屋さんがfirefoxosアプリを作ったら
by
Kazuhiro Furue
PDF
DevLOVE iPhoneアプリ勉強会
by
Toshimitsu Takahashi
PDF
iOSアプリの画面デザイン・遷移を驚くほど簡単にするStoryboardの使い方
by
schoowebcampus
PPTX
iPhoneアプリ開発の歩き方〜Swift編〜
by
Yusuke SAITO
PDF
iOS の動画アプリ開発に Xamarin を使ってみた @JXUG #2 East
by
irgaly
KEY
スマートフォンアプリケーション開発の最新動向
by
Tsutomu Ogasawara
PPTX
【ヒカラボ 2018/02/01】iOS LIFULL HOME'Sアプリリニューアルの裏側
by
庸介 高橋
KEY
ニコニコ動画iOSアプリの UX・マネタイズ・技術の話
by
Kentaro Matsumae
PDF
iPhone、Android両対応アプリ開発講座 概論
by
Takakuni Furukawa
PDF
⑬I phoneアプリを作ってみよう!(超初心者向け)
by
Nishida Kansuke
PDF
iPhone開発者初心者向け資料「XcodeのStoryboardで画面を作ろう!」
by
Toshio Ehara
PPTX
Macで始めるxamarin(続編)
by
Kouzou Takahashi
PDF
iOS豆知識ver0.0.5
by
ppengotsu Name
PDF
20120316 designerworkshoppublished
by
Yoichiro Sakurai
iOS WebView App
by
hagino 3000
2012 05-19第44回cocoa勉強会発表資料
by
OCHI Shuji
iPhone develop for Beginner
by
Sachiko Kajishima
iOSアプリ制作ツールアプリビルダーを支える技術
by
Tomoki Hasegawa
既存アプリのiOS8対応 #ios8yahoo
by
Yahoo!デベロッパーネットワーク
はじめてのiOSアプリ開発 Swift対応版
by
Tomoki Hasegawa
Androiderとi os屋さんがfirefoxosアプリを作ったら
by
Kazuhiro Furue
DevLOVE iPhoneアプリ勉強会
by
Toshimitsu Takahashi
iOSアプリの画面デザイン・遷移を驚くほど簡単にするStoryboardの使い方
by
schoowebcampus
iPhoneアプリ開発の歩き方〜Swift編〜
by
Yusuke SAITO
iOS の動画アプリ開発に Xamarin を使ってみた @JXUG #2 East
by
irgaly
スマートフォンアプリケーション開発の最新動向
by
Tsutomu Ogasawara
【ヒカラボ 2018/02/01】iOS LIFULL HOME'Sアプリリニューアルの裏側
by
庸介 高橋
ニコニコ動画iOSアプリの UX・マネタイズ・技術の話
by
Kentaro Matsumae
iPhone、Android両対応アプリ開発講座 概論
by
Takakuni Furukawa
⑬I phoneアプリを作ってみよう!(超初心者向け)
by
Nishida Kansuke
iPhone開発者初心者向け資料「XcodeのStoryboardで画面を作ろう!」
by
Toshio Ehara
Macで始めるxamarin(続編)
by
Kouzou Takahashi
iOS豆知識ver0.0.5
by
ppengotsu Name
20120316 designerworkshoppublished
by
Yoichiro Sakurai
More from toyship
PDF
Time for Xcode Behavior
by
toyship
PDF
Notifications in iOS10
by
toyship
PDF
Universal Link
by
toyship
PDF
Can we live in a pure Swift world?
by
toyship
PDF
Swift Protocol and Selector
by
toyship
PDF
What's new Swift3
by
toyship
PDF
Xcode7時代のアプリ配布
by
toyship
PDF
My first tvOS
by
toyship
PDF
3D touch for iOS
by
toyship
PDF
Contents blocker on iOS9
by
toyship
PDF
Embedded framework and so on
by
toyship
PDF
はじめてのWKInterfaceController
by
toyship
PDF
App extension for iOS
by
toyship
PDF
Xcode bot
by
toyship
PDF
AVSpeechSynthesizerとロケール
by
toyship
Time for Xcode Behavior
by
toyship
Notifications in iOS10
by
toyship
Universal Link
by
toyship
Can we live in a pure Swift world?
by
toyship
Swift Protocol and Selector
by
toyship
What's new Swift3
by
toyship
Xcode7時代のアプリ配布
by
toyship
My first tvOS
by
toyship
3D touch for iOS
by
toyship
Contents blocker on iOS9
by
toyship
Embedded framework and so on
by
toyship
はじめてのWKInterfaceController
by
toyship
App extension for iOS
by
toyship
Xcode bot
by
toyship
AVSpeechSynthesizerとロケール
by
toyship
サーバーからiOSアプリを変更する
1.
サーバーからiOSアプリを変更する 2014/4/26 @TachibanaKaoru
2.
自己紹介 • @TachibanaKaoru • 渋谷のgenesixで働くiOSエンジニアです •
Blog : http://www.toyship.org/
3.
サーバーからiOSアプリを変更する • 一回リリースしたiOSアプリをサーバーサイドで変更し たい • できるだけ頻繁にアプリの仕様やUIを変更したい •
ユーザーによって表示するUIを変えて、A/Bテストを 行いたい
4.
MVC in server/local Model
Controller View Native Code (Objc..) Server API Storyboard or Xib or Code
5.
UIWebViewを使う • よく使われるのがUIWebViewで画面を作成し、表示内 容をすべてサーバーサイドで作成する • Model/View/Controlの処理の大部分がサーバー側となる ため迅速な変更ができるが、いろいろと弊害がある
6.
UIWebViewによる弊害 • 全体的なパフォーマンス • 特にTableViewではUIKitのCellのresuseの仕組みが使 えないため、操作が遅くなる •
多量のデータハンドリングに問題あり • デバイス固有の機能を使うには制限がある
7.
UIWebViewを使わずに動的に変更するには • 簡単な例としては、UIに表示する画像の一部をサー バーサイドからもってくる方法もありますが… • 実施例:アプリ起動時の「ようこそ画面」をサーバー サイドから取得し、ABテストを実施 •
ただ、この仕組みをコードに記述する必要があるため、 コードに仕組みをいれこまないような形にしたい • もっと大幅な変更を動的に行いたい
8.
Storyboardをネットワークからダウンロード • @tokoromさんの案 • http://www.slideshare.net/yutatokoro7/potatotips1 •
StoryboardをNSBundleに含めてzipにして、サーバー に置いておく • アプリがダウンロードしてunzipしてStoryboardを作 成する
9.
MVC in server/local Controller View Server
API Model Storyboardをダウンロード することで、この部分が サーバーで更新できるよう になる Storyboard or Xib Native Code (Objc..)
10.
Storyboardをネットワークからダウンロード • Storyboardが変更可能な場合、画面レイアウトなどの 要素は動的に変更変更することが可能になる • しかし、ModelとViewの両方をサーバーサイドにして も、Modelを変更してViewに反映させるためには、 Controllerの変更が必要になる
11.
例えば…… 今まで表示していなかったTweetのFavorite数を タイムライン上に表示するようにしよう! ここのTweetボタンのアイコンの画像を変更しよう OK! NG!
12.
Modelの変更に対して、Controlを変更せずに、 サーバーサイドだけでで対応させたい!
13.
対応例 • 今まで別のものを表示していたTableViewに、このjson のなかの特定の要素を表示するという変更に、 Storyboardだけで対応してみたいと思います。 • http://itunes.apple.com/jp/rss/topfreeapplications/limit=20/json { "feed":
{ "author": { "name": { "label": "iTunes Store" }, "uri": { "label": "http://www.apple.com/jp/itunes/" } }, "entry": [ { "category": { "attributes": { "im:id": "6016", "label": "エンターテインメント", "scheme": "https://itunes.apple.com/jp/genre/ios-entateinmento/id6016?mt=8&uo=2", "term": "Entertainment" }
14.
独自UITableViewControllerの設定
15.
• このUITableViewControllerクラスは、CallすべきAPIの EndPointのURL、表示すべきJsonの要素名をpropertyと して持っています。 ! • 通常、このpropertyの代入は、ソースコード上で行って いますが……。 独自UITableViewControllerの設定 @interface
CommonListViewController : UITableViewController @property (nonatomic,strong)NSString* strField; @property (nonatomic,strong)NSString* strEndPoint; @property (nonatomic,strong)NSArray* items; @end self.EndPoint = @“http://itunes.apple.com/jp/rss/topfreeapplications/limit=20/json”; self.strField = @“feed.entry”;
16.
独自UITableViewControllerの設定 StoryboardのUser Defined Runtime
Attributesを使い、ソースコード 上でなく、StoryboardでstrEndPoint、strField の値を入力します。
17.
独自UITableViewControllerの設定 - (void)viewWillAppear:(BOOL)animated{ [super viewWillAppear:animated]; ! NSURL
*url = [NSURL URLWithString:self.strEndPoint]; NSURLRequest *request = [NSURLRequest requestWithURL:url]; [NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *response, NSData *data, NSErro *error) { NSDictionary *jsonDictionary = [NSJSONSerialization JSONObjectWithData:data options: error:nil]; self.items = [jsonDictionary valueForKeyPath:self.strField]; [self.tableView reloadData]; }]; } Storyboardで設定されたstrEndPointの値 Storyboardで設定されたstrFieldの値
18.
独自UILabelの設定 StoryboardでUIEntityLabelのstrEntityプロパティに、そのラベ ルに表示したい要素名を指定する @interface UIEntityLabel :
UILabel @property(nonatomic,strong)NSString* strEntity; ! @end
19.
独自UILabelの設定 - (UITableViewCell *)tableView:(UITableView
*)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { //(いつもの処理) NSDictionary* dict = [self.items objectAtIndex:indexPath.row]; NSArray* cellSubviews = cell.contentView.subviews; for( UIView* control in cellSubviews){ if( [[[control class] description] isEqualToString:@"UIEntityLabel"]){ UIEntityLabel* label = (UIEntityLabel*)control; NSString* strData = [dict valueForKeyPath:label.strEntity]; label.text = strData; ! } } return cell; }
20.
実行結果 Storyboardで指定したEndpointのAPIをよび、 Storyboardで指定した要素を表示することが できる
21.
MVC in server/local Controller View storyboard from
server ModelServer API Native Code (Objc..)
22.
UIViewControllerの場合 • 基底クラスがUIViewControllerの場合にも、 UITableViewControllerと同様に独自ラベル (UIEntityLabel)とUser Defined
Runtime Attributeの仕 組みを使えばなことが可能です。
23.
まとめ • StoryboardとUser Defined
Runtime Attributeをうまく使 うと、サーバーサイドだけでModel/Viewの大幅な変更 ができるようになります。
Download