Enviar búsqueda
Cargar
サーバーからiOSアプリを変更する
•
10 recomendaciones
•
7,296 vistas
T
toyship
Seguir
2014/4/26のyidev@恵比寿で発表したスライドです。
Leer menos
Leer más
Ingeniería
Denunciar
Compartir
Denunciar
Compartir
1 de 23
Descargar ahora
Descargar para leer sin conexión
Recomendados
Challenge PWA!! TRY PWA4WP!
Challenge PWA!! TRY PWA4WP!
Ryu Shindo
Hello, React!! まで導く Reactの基礎
Hello, React!! まで導く Reactの基礎
iPride Co., Ltd.
DOO-014_日本でもできる! マイクロソフト技術をフル活用した DevOps の具体的実現手法!
DOO-014_日本でもできる! マイクロソフト技術をフル活用した DevOps の具体的実現手法!
decode2016
building HTML hybrid app with ionic
building HTML hybrid app with ionic
Nakano Kyohei
20131227_appium+rspec
20131227_appium+rspec
Kazuaki Matsuo
最新UIフレームワーク Onsen UI2でカッコイイWordPress連携アプリを作る方法
最新UIフレームワーク Onsen UI2でカッコイイWordPress連携アプリを作る方法
アシアル株式会社
React Nativeで考えるクロスプラットフォーム開発
React Nativeで考えるクロスプラットフォーム開発
yuichi kubota
Selenium2(web driver)
Selenium2(web driver)
Tetsuya Hasegawa
Recomendados
Challenge PWA!! TRY PWA4WP!
Challenge PWA!! TRY PWA4WP!
Ryu Shindo
Hello, React!! まで導く Reactの基礎
Hello, React!! まで導く Reactの基礎
iPride Co., Ltd.
DOO-014_日本でもできる! マイクロソフト技術をフル活用した DevOps の具体的実現手法!
DOO-014_日本でもできる! マイクロソフト技術をフル活用した DevOps の具体的実現手法!
decode2016
building HTML hybrid app with ionic
building HTML hybrid app with ionic
Nakano Kyohei
20131227_appium+rspec
20131227_appium+rspec
Kazuaki Matsuo
最新UIフレームワーク Onsen UI2でカッコイイWordPress連携アプリを作る方法
最新UIフレームワーク Onsen UI2でカッコイイWordPress連携アプリを作る方法
アシアル株式会社
React Nativeで考えるクロスプラットフォーム開発
React Nativeで考えるクロスプラットフォーム開発
yuichi kubota
Selenium2(web driver)
Selenium2(web driver)
Tetsuya Hasegawa
Amplify Consoleで かんたん!Webサイト公開
Amplify Consoleで かんたん!Webサイト公開
Daisuke Yagi
Selenium2(web driver) ide編
Selenium2(web driver) ide編
Tetsuya Hasegawa
メルカリの開発スピードと品質を支える Selenium on Azure Kubernetes Service
メルカリの開発スピードと品質を支える Selenium on Azure Kubernetes Service
Tadashi Nemoto
書籍『Monacaで学ぶはじめてのプログラミング』発展資料(試験問題アプリ編)
書籍『Monacaで学ぶはじめてのプログラミング』発展資料(試験問題アプリ編)
アシアル株式会社
もっと良くなるHTMLアプリケーション設計と実装
もっと良くなるHTMLアプリケーション設計と実装
Mitsue-Links
Java + React.jsでSever Side Rendering #reactjs_meetup
Java + React.jsでSever Side Rendering #reactjs_meetup
Toshiaki Maki
Nodejs and mongodb
Nodejs and mongodb
Ayako Hatori
a-blog cms の基本 Ver.Kochi
a-blog cms の基本 Ver.Kochi
Kasumi Morita
Swiftではじめる動画再生
Swiftではじめる動画再生
Yusuke Ariyoshi
Tableau Developers Club - Web Data Connector handson
Tableau Developers Club - Web Data Connector handson
Kenji Noguchi
6秒動画アプリ Vineの作り方
6秒動画アプリ Vineの作り方
Hiramatsu Ryosuke
DevOpsを実現するChef活用テクニック
DevOpsを実現するChef活用テクニック
Yusuke Ando
WordPressサイトをスマホアプリにしちゃおう!
WordPressサイトをスマホアプリにしちゃおう!
Ryu Shindo
Onsen UI 2.0とUIライブラリの未来
Onsen UI 2.0とUIライブラリの未来
アシアル株式会社
Selenium入門
Selenium入門
onozaty
React es2015
React es2015
t-onizawa
Selenium WebDriver,Cypress,TestCafeの違いを調べてみました
Selenium WebDriver,Cypress,TestCafeの違いを調べてみました
MaiKaneko4
パララックスでレスポンシブでJ query mobileなサイトのつくりかた
パララックスでレスポンシブでJ query mobileなサイトのつくりかた
Shumpei Shiraishi
Sl study 20150804-soft-layer-apibasic-shibata
Sl study 20150804-soft-layer-apibasic-shibata
Naoki Shibata
Travis CIで実現するPHPアプリの自動テスト
Travis CIで実現するPHPアプリの自動テスト
Yusuke Ando
WKWebViewとUIWebView
WKWebViewとUIWebView
Yuki Hirai
ニコニコ動画iOSアプリの UX・マネタイズ・技術の話
ニコニコ動画iOSアプリの UX・マネタイズ・技術の話
Kentaro Matsumae
Más contenido relacionado
La actualidad más candente
Amplify Consoleで かんたん!Webサイト公開
Amplify Consoleで かんたん!Webサイト公開
Daisuke Yagi
Selenium2(web driver) ide編
Selenium2(web driver) ide編
Tetsuya Hasegawa
メルカリの開発スピードと品質を支える Selenium on Azure Kubernetes Service
メルカリの開発スピードと品質を支える Selenium on Azure Kubernetes Service
Tadashi Nemoto
書籍『Monacaで学ぶはじめてのプログラミング』発展資料(試験問題アプリ編)
書籍『Monacaで学ぶはじめてのプログラミング』発展資料(試験問題アプリ編)
アシアル株式会社
もっと良くなるHTMLアプリケーション設計と実装
もっと良くなるHTMLアプリケーション設計と実装
Mitsue-Links
Java + React.jsでSever Side Rendering #reactjs_meetup
Java + React.jsでSever Side Rendering #reactjs_meetup
Toshiaki Maki
Nodejs and mongodb
Nodejs and mongodb
Ayako Hatori
a-blog cms の基本 Ver.Kochi
a-blog cms の基本 Ver.Kochi
Kasumi Morita
Swiftではじめる動画再生
Swiftではじめる動画再生
Yusuke Ariyoshi
Tableau Developers Club - Web Data Connector handson
Tableau Developers Club - Web Data Connector handson
Kenji Noguchi
6秒動画アプリ Vineの作り方
6秒動画アプリ Vineの作り方
Hiramatsu Ryosuke
DevOpsを実現するChef活用テクニック
DevOpsを実現するChef活用テクニック
Yusuke Ando
WordPressサイトをスマホアプリにしちゃおう!
WordPressサイトをスマホアプリにしちゃおう!
Ryu Shindo
Onsen UI 2.0とUIライブラリの未来
Onsen UI 2.0とUIライブラリの未来
アシアル株式会社
Selenium入門
Selenium入門
onozaty
React es2015
React es2015
t-onizawa
Selenium WebDriver,Cypress,TestCafeの違いを調べてみました
Selenium WebDriver,Cypress,TestCafeの違いを調べてみました
MaiKaneko4
パララックスでレスポンシブでJ query mobileなサイトのつくりかた
パララックスでレスポンシブでJ query mobileなサイトのつくりかた
Shumpei Shiraishi
Sl study 20150804-soft-layer-apibasic-shibata
Sl study 20150804-soft-layer-apibasic-shibata
Naoki Shibata
Travis CIで実現するPHPアプリの自動テスト
Travis CIで実現するPHPアプリの自動テスト
Yusuke Ando
La actualidad más candente
(20)
Amplify Consoleで かんたん!Webサイト公開
Amplify Consoleで かんたん!Webサイト公開
Selenium2(web driver) ide編
Selenium2(web driver) ide編
メルカリの開発スピードと品質を支える Selenium on Azure Kubernetes Service
メルカリの開発スピードと品質を支える Selenium on Azure Kubernetes Service
書籍『Monacaで学ぶはじめてのプログラミング』発展資料(試験問題アプリ編)
書籍『Monacaで学ぶはじめてのプログラミング』発展資料(試験問題アプリ編)
もっと良くなるHTMLアプリケーション設計と実装
もっと良くなるHTMLアプリケーション設計と実装
Java + React.jsでSever Side Rendering #reactjs_meetup
Java + React.jsでSever Side Rendering #reactjs_meetup
Nodejs and mongodb
Nodejs and mongodb
a-blog cms の基本 Ver.Kochi
a-blog cms の基本 Ver.Kochi
Swiftではじめる動画再生
Swiftではじめる動画再生
Tableau Developers Club - Web Data Connector handson
Tableau Developers Club - Web Data Connector handson
6秒動画アプリ Vineの作り方
6秒動画アプリ Vineの作り方
DevOpsを実現するChef活用テクニック
DevOpsを実現するChef活用テクニック
WordPressサイトをスマホアプリにしちゃおう!
WordPressサイトをスマホアプリにしちゃおう!
Onsen UI 2.0とUIライブラリの未来
Onsen UI 2.0とUIライブラリの未来
Selenium入門
Selenium入門
React es2015
React es2015
Selenium WebDriver,Cypress,TestCafeの違いを調べてみました
Selenium WebDriver,Cypress,TestCafeの違いを調べてみました
パララックスでレスポンシブでJ query mobileなサイトのつくりかた
パララックスでレスポンシブでJ query mobileなサイトのつくりかた
Sl study 20150804-soft-layer-apibasic-shibata
Sl study 20150804-soft-layer-apibasic-shibata
Travis CIで実現するPHPアプリの自動テスト
Travis CIで実現するPHPアプリの自動テスト
Similar a サーバーからiOSアプリを変更する
WKWebViewとUIWebView
WKWebViewとUIWebView
Yuki Hirai
ニコニコ動画iOSアプリの UX・マネタイズ・技術の話
ニコニコ動画iOSアプリの UX・マネタイズ・技術の話
Kentaro Matsumae
BaseViewControllerは作りたくない
BaseViewControllerは作りたくない
今城 善矩
DevOpsを実現する為のChef実践テクニック Chef12対応版
DevOpsを実現する為のChef実践テクニック Chef12対応版
Yusuke Ando
2021/03/19 パブリッククラウドを活かす運用プロセス自動化
2021/03/19 パブリッククラウドを活かす運用プロセス自動化
Issei Hiraoka
Angular 4がやってくる!? 新機能ダイジェスト
Angular 4がやってくる!? 新機能ダイジェスト
Masahiko Asai
[公開用]Netラボ2012年2月勉強会 asp.netmvc4 beta新機能の紹介
[公開用]Netラボ2012年2月勉強会 asp.netmvc4 beta新機能の紹介
david9142
Swift入門
Swift入門
聡 中川
iOS WebView App
iOS WebView App
hagino 3000
Adobe セッション for Enterprise x HTML5 Web Application Conference 2014
Adobe セッション for Enterprise x HTML5 Web Application Conference 2014
Tsuyoshi Nakao
iOS WKWebViewの魔改造 - iOSDC 2018
iOS WKWebViewの魔改造 - iOSDC 2018
Shingo Fukuyama
HTML5ハイブリッド アプリ開発実践編
HTML5ハイブリッド アプリ開発実践編
Monaca
ASP. NET Core 汎用ホスト概要
ASP. NET Core 汎用ホスト概要
TomomitsuKusaba
[AWSマイスターシリーズ] AWS Elastic Beanstalk
[AWSマイスターシリーズ] AWS Elastic Beanstalk
Amazon Web Services Japan
【BS11】毎年訪れる .NET のメジャーバージョンアップに備えるために取り組めること
【BS11】毎年訪れる .NET のメジャーバージョンアップに備えるために取り組めること
日本マイクロソフト株式会社
RxDataSourceをNSDiffableDataSourceへ置き換える際のTips集紹介
RxDataSourceをNSDiffableDataSourceへ置き換える際のTips集紹介
Fumiya Sakai
[essentialバージョン] WebLogic Server for OCI 活用のご提案 - TCO削減とシステムのモダナイズ
[essentialバージョン] WebLogic Server for OCI 活用のご提案 - TCO削減とシステムのモダナイズ
オラクルエンジニア通信
090821 Ruby Sapporo Night Ruby Cocoa
090821 Ruby Sapporo Night Ruby Cocoa
Tomoki Maeda
1画面から始めるStoryboard
1画面から始めるStoryboard
Yuichi Fujishige
サイボウズの技術情報を発信するWebディレクター(開発者向けサイト)の紹介.pdf
サイボウズの技術情報を発信するWebディレクター(開発者向けサイト)の紹介.pdf
Cybozu, Inc.
Similar a サーバーからiOSアプリを変更する
(20)
WKWebViewとUIWebView
WKWebViewとUIWebView
ニコニコ動画iOSアプリの UX・マネタイズ・技術の話
ニコニコ動画iOSアプリの UX・マネタイズ・技術の話
BaseViewControllerは作りたくない
BaseViewControllerは作りたくない
DevOpsを実現する為のChef実践テクニック Chef12対応版
DevOpsを実現する為のChef実践テクニック Chef12対応版
2021/03/19 パブリッククラウドを活かす運用プロセス自動化
2021/03/19 パブリッククラウドを活かす運用プロセス自動化
Angular 4がやってくる!? 新機能ダイジェスト
Angular 4がやってくる!? 新機能ダイジェスト
[公開用]Netラボ2012年2月勉強会 asp.netmvc4 beta新機能の紹介
[公開用]Netラボ2012年2月勉強会 asp.netmvc4 beta新機能の紹介
Swift入門
Swift入門
iOS WebView App
iOS WebView App
Adobe セッション for Enterprise x HTML5 Web Application Conference 2014
Adobe セッション for Enterprise x HTML5 Web Application Conference 2014
iOS WKWebViewの魔改造 - iOSDC 2018
iOS WKWebViewの魔改造 - iOSDC 2018
HTML5ハイブリッド アプリ開発実践編
HTML5ハイブリッド アプリ開発実践編
ASP. NET Core 汎用ホスト概要
ASP. NET Core 汎用ホスト概要
[AWSマイスターシリーズ] AWS Elastic Beanstalk
[AWSマイスターシリーズ] AWS Elastic Beanstalk
【BS11】毎年訪れる .NET のメジャーバージョンアップに備えるために取り組めること
【BS11】毎年訪れる .NET のメジャーバージョンアップに備えるために取り組めること
RxDataSourceをNSDiffableDataSourceへ置き換える際のTips集紹介
RxDataSourceをNSDiffableDataSourceへ置き換える際のTips集紹介
[essentialバージョン] WebLogic Server for OCI 活用のご提案 - TCO削減とシステムのモダナイズ
[essentialバージョン] WebLogic Server for OCI 活用のご提案 - TCO削減とシステムのモダナイズ
090821 Ruby Sapporo Night Ruby Cocoa
090821 Ruby Sapporo Night Ruby Cocoa
1画面から始めるStoryboard
1画面から始めるStoryboard
サイボウズの技術情報を発信するWebディレクター(開発者向けサイト)の紹介.pdf
サイボウズの技術情報を発信するWebディレクター(開発者向けサイト)の紹介.pdf
Más de toyship
Time for Xcode Behavior
Time for Xcode Behavior
toyship
Notifications in iOS10
Notifications in iOS10
toyship
Universal Link
Universal Link
toyship
Can we live in a pure Swift world?
Can we live in a pure Swift world?
toyship
Swift Protocol and Selector
Swift Protocol and Selector
toyship
What's new Swift3
What's new Swift3
toyship
Xcode7時代のアプリ配布
Xcode7時代のアプリ配布
toyship
My first tvOS
My first tvOS
toyship
3D touch for iOS
3D touch for iOS
toyship
Contents blocker on iOS9
Contents blocker on iOS9
toyship
Embedded framework and so on
Embedded framework and so on
toyship
はじめてのWKInterfaceController
はじめてのWKInterfaceController
toyship
App extension for iOS
App extension for iOS
toyship
Xcode bot
Xcode bot
toyship
AVSpeechSynthesizerとロケール
AVSpeechSynthesizerとロケール
toyship
Más de toyship
(15)
Time for Xcode Behavior
Time for Xcode Behavior
Notifications in iOS10
Notifications in iOS10
Universal Link
Universal Link
Can we live in a pure Swift world?
Can we live in a pure Swift world?
Swift Protocol and Selector
Swift Protocol and Selector
What's new Swift3
What's new Swift3
Xcode7時代のアプリ配布
Xcode7時代のアプリ配布
My first tvOS
My first tvOS
3D touch for iOS
3D touch for iOS
Contents blocker on iOS9
Contents blocker on iOS9
Embedded framework and so on
Embedded framework and so on
はじめてのWKInterfaceController
はじめてのWKInterfaceController
App extension for iOS
App extension for iOS
Xcode bot
Xcode bot
AVSpeechSynthesizerとロケール
AVSpeechSynthesizerとロケール
サーバーから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の大幅な変更 ができるようになります。
Descargar ahora