SlideShare una empresa de Scribd logo
1 de 23
Descargar para leer sin conexión
サーバーからiOSアプリを変更する
2014/4/26

@TachibanaKaoru
自己紹介
• @TachibanaKaoru
• 渋谷のgenesixで働くiOSエンジニアです
• Blog : http://www.toyship.org/
サーバーからiOSアプリを変更する
• 一回リリースしたiOSアプリをサーバーサイドで変更し
たい
• できるだけ頻繁にアプリの仕様やUIを変更したい
• ユーザーによって表示するUIを変えて、A/Bテストを
行いたい
MVC in server/local
Model Controller
View
Native Code
(Objc..)
Server API
Storyboard
or Xib
or Code
UIWebViewを使う
• よく使われるのがUIWebViewで画面を作成し、表示内
容をすべてサーバーサイドで作成する
• Model/View/Controlの処理の大部分がサーバー側となる
ため迅速な変更ができるが、いろいろと弊害がある
UIWebViewによる弊害
• 全体的なパフォーマンス
• 特にTableViewではUIKitのCellのresuseの仕組みが使
えないため、操作が遅くなる
• 多量のデータハンドリングに問題あり
• デバイス固有の機能を使うには制限がある
UIWebViewを使わずに動的に変更するには
• 簡単な例としては、UIに表示する画像の一部をサー
バーサイドからもってくる方法もありますが…
• 実施例:アプリ起動時の「ようこそ画面」をサーバー
サイドから取得し、ABテストを実施
• ただ、この仕組みをコードに記述する必要があるため、
コードに仕組みをいれこまないような形にしたい
• もっと大幅な変更を動的に行いたい
Storyboardをネットワークからダウンロード
• @tokoromさんの案
• http://www.slideshare.net/yutatokoro7/potatotips1
• StoryboardをNSBundleに含めてzipにして、サーバー
に置いておく
• アプリがダウンロードしてunzipしてStoryboardを作
成する
MVC in server/local
Controller
View
Server API Model
Storyboardをダウンロード
することで、この部分が
サーバーで更新できるよう
になる
Storyboard
or Xib
Native Code
(Objc..)
Storyboardをネットワークからダウンロード
• Storyboardが変更可能な場合、画面レイアウトなどの
要素は動的に変更変更することが可能になる
• しかし、ModelとViewの両方をサーバーサイドにして
も、Modelを変更してViewに反映させるためには、
Controllerの変更が必要になる
例えば……
今まで表示していなかったTweetのFavorite数を
タイムライン上に表示するようにしよう!
ここのTweetボタンのアイコンの画像を変更しよう
OK!
NG!
Modelの変更に対して、Controlを変更せずに、
サーバーサイドだけでで対応させたい!
対応例
• 今まで別のものを表示していた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"
}
独自UITableViewControllerの設定
• この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”;
独自UITableViewControllerの設定
StoryboardのUser Defined Runtime Attributesを使い、ソースコード
上でなく、StoryboardでstrEndPoint、strField の値を入力します。
独自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の値
独自UILabelの設定
StoryboardでUIEntityLabelのstrEntityプロパティに、そのラベ
ルに表示したい要素名を指定する
@interface UIEntityLabel : UILabel
@property(nonatomic,strong)NSString* strEntity;
!
@end
独自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;
}
実行結果
Storyboardで指定したEndpointのAPIをよび、
Storyboardで指定した要素を表示することが
できる
MVC in server/local
Controller
View
storyboard
from server
ModelServer API
Native Code
(Objc..)
UIViewControllerの場合
• 基底クラスがUIViewControllerの場合にも、
UITableViewControllerと同様に独自ラベル
(UIEntityLabel)とUser Defined Runtime Attributeの仕
組みを使えばなことが可能です。
まとめ
• StoryboardとUser Defined Runtime Attributeをうまく使
うと、サーバーサイドだけでModel/Viewの大幅な変更
ができるようになります。

Más contenido relacionado

La actualidad más candente

Amplify Consoleで かんたん!Webサイト公開
Amplify Consoleで かんたん!Webサイト公開Amplify Consoleで かんたん!Webサイト公開
Amplify Consoleで かんたん!Webサイト公開Daisuke Yagi
 
Selenium2(web driver) ide編
Selenium2(web driver) ide編Selenium2(web driver) ide編
Selenium2(web driver) ide編Tetsuya Hasegawa
 
メルカリの開発スピードと品質を支える Selenium on Azure Kubernetes Service
メルカリの開発スピードと品質を支える Selenium on Azure Kubernetes Serviceメルカリの開発スピードと品質を支える Selenium on Azure Kubernetes Service
メルカリの開発スピードと品質を支える Selenium on Azure Kubernetes ServiceTadashi Nemoto
 
書籍『Monacaで学ぶはじめてのプログラミング』発展資料(試験問題アプリ編)
書籍『Monacaで学ぶはじめてのプログラミング』発展資料(試験問題アプリ編)書籍『Monacaで学ぶはじめてのプログラミング』発展資料(試験問題アプリ編)
書籍『Monacaで学ぶはじめてのプログラミング』発展資料(試験問題アプリ編)アシアル株式会社
 
もっと良くなるHTMLアプリケーション設計と実装
もっと良くなるHTMLアプリケーション設計と実装もっと良くなるHTMLアプリケーション設計と実装
もっと良くなるHTMLアプリケーション設計と実装Mitsue-Links
 
Java + React.jsでSever Side Rendering #reactjs_meetup
Java + React.jsでSever Side Rendering #reactjs_meetupJava + React.jsでSever Side Rendering #reactjs_meetup
Java + React.jsでSever Side Rendering #reactjs_meetupToshiaki Maki
 
Nodejs and mongodb
Nodejs and mongodbNodejs and mongodb
Nodejs and mongodbAyako Hatori
 
a-blog cms の基本 Ver.Kochi
a-blog cms の基本 Ver.Kochia-blog cms の基本 Ver.Kochi
a-blog cms の基本 Ver.KochiKasumi Morita
 
Swiftではじめる動画再生
Swiftではじめる動画再生Swiftではじめる動画再生
Swiftではじめる動画再生Yusuke Ariyoshi
 
Tableau Developers Club - Web Data Connector handson
Tableau Developers Club - Web Data Connector handsonTableau Developers Club - Web Data Connector handson
Tableau Developers Club - Web Data Connector handsonKenji Noguchi
 
6秒動画アプリ Vineの作り方
6秒動画アプリ Vineの作り方6秒動画アプリ Vineの作り方
6秒動画アプリ Vineの作り方Hiramatsu Ryosuke
 
DevOpsを実現するChef活用テクニック
DevOpsを実現するChef活用テクニックDevOpsを実現するChef活用テクニック
DevOpsを実現するChef活用テクニックYusuke Ando
 
WordPressサイトをスマホアプリにしちゃおう!
WordPressサイトをスマホアプリにしちゃおう!WordPressサイトをスマホアプリにしちゃおう!
WordPressサイトをスマホアプリにしちゃおう!Ryu Shindo
 
Selenium入門
Selenium入門Selenium入門
Selenium入門onozaty
 
React es2015
React es2015React es2015
React es2015t-onizawa
 
Selenium WebDriver,Cypress,TestCafeの違いを調べてみました
Selenium WebDriver,Cypress,TestCafeの違いを調べてみましたSelenium WebDriver,Cypress,TestCafeの違いを調べてみました
Selenium WebDriver,Cypress,TestCafeの違いを調べてみましたMaiKaneko4
 
パララックスでレスポンシブでJ query mobileなサイトのつくりかた
パララックスでレスポンシブでJ query mobileなサイトのつくりかたパララックスでレスポンシブでJ query mobileなサイトのつくりかた
パララックスでレスポンシブでJ query mobileなサイトのつくりかたShumpei Shiraishi
 
Sl study 20150804-soft-layer-apibasic-shibata
Sl study 20150804-soft-layer-apibasic-shibataSl study 20150804-soft-layer-apibasic-shibata
Sl study 20150804-soft-layer-apibasic-shibataNaoki Shibata
 
Travis CIで実現するPHPアプリの自動テスト
Travis CIで実現するPHPアプリの自動テストTravis CIで実現するPHPアプリの自動テスト
Travis CIで実現するPHPアプリの自動テストYusuke Ando
 

La actualidad más candente (20)

Amplify Consoleで かんたん!Webサイト公開
Amplify Consoleで かんたん!Webサイト公開Amplify Consoleで かんたん!Webサイト公開
Amplify Consoleで かんたん!Webサイト公開
 
Selenium2(web driver) ide編
Selenium2(web driver) ide編Selenium2(web driver) ide編
Selenium2(web driver) ide編
 
メルカリの開発スピードと品質を支える Selenium on Azure Kubernetes Service
メルカリの開発スピードと品質を支える Selenium on Azure Kubernetes Serviceメルカリの開発スピードと品質を支える Selenium on Azure Kubernetes Service
メルカリの開発スピードと品質を支える Selenium on Azure Kubernetes Service
 
書籍『Monacaで学ぶはじめてのプログラミング』発展資料(試験問題アプリ編)
書籍『Monacaで学ぶはじめてのプログラミング』発展資料(試験問題アプリ編)書籍『Monacaで学ぶはじめてのプログラミング』発展資料(試験問題アプリ編)
書籍『Monacaで学ぶはじめてのプログラミング』発展資料(試験問題アプリ編)
 
もっと良くなるHTMLアプリケーション設計と実装
もっと良くなるHTMLアプリケーション設計と実装もっと良くなるHTMLアプリケーション設計と実装
もっと良くなるHTMLアプリケーション設計と実装
 
Java + React.jsでSever Side Rendering #reactjs_meetup
Java + React.jsでSever Side Rendering #reactjs_meetupJava + React.jsでSever Side Rendering #reactjs_meetup
Java + React.jsでSever Side Rendering #reactjs_meetup
 
Nodejs and mongodb
Nodejs and mongodbNodejs and mongodb
Nodejs and mongodb
 
a-blog cms の基本 Ver.Kochi
a-blog cms の基本 Ver.Kochia-blog cms の基本 Ver.Kochi
a-blog cms の基本 Ver.Kochi
 
Swiftではじめる動画再生
Swiftではじめる動画再生Swiftではじめる動画再生
Swiftではじめる動画再生
 
Tableau Developers Club - Web Data Connector handson
Tableau Developers Club - Web Data Connector handsonTableau Developers Club - Web Data Connector handson
Tableau Developers Club - Web Data Connector handson
 
6秒動画アプリ Vineの作り方
6秒動画アプリ Vineの作り方6秒動画アプリ Vineの作り方
6秒動画アプリ Vineの作り方
 
DevOpsを実現するChef活用テクニック
DevOpsを実現するChef活用テクニックDevOpsを実現するChef活用テクニック
DevOpsを実現するChef活用テクニック
 
WordPressサイトをスマホアプリにしちゃおう!
WordPressサイトをスマホアプリにしちゃおう!WordPressサイトをスマホアプリにしちゃおう!
WordPressサイトをスマホアプリにしちゃおう!
 
Onsen UI 2.0とUIライブラリの未来
Onsen UI 2.0とUIライブラリの未来Onsen UI 2.0とUIライブラリの未来
Onsen UI 2.0とUIライブラリの未来
 
Selenium入門
Selenium入門Selenium入門
Selenium入門
 
React es2015
React es2015React es2015
React es2015
 
Selenium WebDriver,Cypress,TestCafeの違いを調べてみました
Selenium WebDriver,Cypress,TestCafeの違いを調べてみましたSelenium WebDriver,Cypress,TestCafeの違いを調べてみました
Selenium WebDriver,Cypress,TestCafeの違いを調べてみました
 
パララックスでレスポンシブでJ query mobileなサイトのつくりかた
パララックスでレスポンシブでJ query mobileなサイトのつくりかたパララックスでレスポンシブでJ query mobileなサイトのつくりかた
パララックスでレスポンシブでJ query mobileなサイトのつくりかた
 
Sl study 20150804-soft-layer-apibasic-shibata
Sl study 20150804-soft-layer-apibasic-shibataSl study 20150804-soft-layer-apibasic-shibata
Sl study 20150804-soft-layer-apibasic-shibata
 
Travis CIで実現するPHPアプリの自動テスト
Travis CIで実現するPHPアプリの自動テストTravis CIで実現するPHPアプリの自動テスト
Travis CIで実現するPHPアプリの自動テスト
 

Similar a サーバーからiOSアプリを変更する

WKWebViewとUIWebView
WKWebViewとUIWebViewWKWebViewとUIWebView
WKWebViewとUIWebViewYuki Hirai
 
ニコニコ動画iOSアプリの UX・マネタイズ・技術の話
ニコニコ動画iOSアプリの UX・マネタイズ・技術の話ニコニコ動画iOSアプリの UX・マネタイズ・技術の話
ニコニコ動画iOSアプリの UX・マネタイズ・技術の話Kentaro Matsumae
 
BaseViewControllerは作りたくない
BaseViewControllerは作りたくないBaseViewControllerは作りたくない
BaseViewControllerは作りたくない今城 善矩
 
DevOpsを実現する為のChef実践テクニック Chef12対応版
DevOpsを実現する為のChef実践テクニック Chef12対応版DevOpsを実現する為のChef実践テクニック Chef12対応版
DevOpsを実現する為のChef実践テクニック Chef12対応版Yusuke Ando
 
2021/03/19 パブリッククラウドを活かす運用プロセス自動化
2021/03/19 パブリッククラウドを活かす運用プロセス自動化2021/03/19 パブリッククラウドを活かす運用プロセス自動化
2021/03/19 パブリッククラウドを活かす運用プロセス自動化Issei Hiraoka
 
Angular 4がやってくる!? 新機能ダイジェスト
Angular 4がやってくる!? 新機能ダイジェストAngular 4がやってくる!? 新機能ダイジェスト
Angular 4がやってくる!? 新機能ダイジェストMasahiko Asai
 
[公開用]Netラボ2012年2月勉強会 asp.netmvc4 beta新機能の紹介
[公開用]Netラボ2012年2月勉強会 asp.netmvc4 beta新機能の紹介[公開用]Netラボ2012年2月勉強会 asp.netmvc4 beta新機能の紹介
[公開用]Netラボ2012年2月勉強会 asp.netmvc4 beta新機能の紹介david9142
 
Adobe セッション for Enterprise x HTML5 Web Application Conference 2014
Adobe セッション for Enterprise x HTML5 Web Application Conference 2014Adobe セッション for Enterprise x HTML5 Web Application Conference 2014
Adobe セッション for Enterprise x HTML5 Web Application Conference 2014Tsuyoshi Nakao
 
iOS WKWebViewの魔改造 - iOSDC 2018
iOS WKWebViewの魔改造 - iOSDC 2018iOS WKWebViewの魔改造 - iOSDC 2018
iOS WKWebViewの魔改造 - iOSDC 2018Shingo Fukuyama
 
HTML5ハイブリッド アプリ開発実践編
HTML5ハイブリッド アプリ開発実践編HTML5ハイブリッド アプリ開発実践編
HTML5ハイブリッド アプリ開発実践編Monaca
 
ASP. NET Core 汎用ホスト概要
ASP. NET Core 汎用ホスト概要ASP. NET Core 汎用ホスト概要
ASP. NET Core 汎用ホスト概要TomomitsuKusaba
 
[AWSマイスターシリーズ] AWS Elastic Beanstalk
[AWSマイスターシリーズ] AWS Elastic Beanstalk[AWSマイスターシリーズ] AWS Elastic Beanstalk
[AWSマイスターシリーズ] AWS Elastic BeanstalkAmazon Web Services Japan
 
【BS11】毎年訪れる .NET のメジャーバージョンアップに備えるために取り組めること
【BS11】毎年訪れる .NET のメジャーバージョンアップに備えるために取り組めること 【BS11】毎年訪れる .NET のメジャーバージョンアップに備えるために取り組めること
【BS11】毎年訪れる .NET のメジャーバージョンアップに備えるために取り組めること 日本マイクロソフト株式会社
 
RxDataSourceをNSDiffableDataSourceへ置き換える際のTips集紹介
RxDataSourceをNSDiffableDataSourceへ置き換える際のTips集紹介RxDataSourceをNSDiffableDataSourceへ置き換える際のTips集紹介
RxDataSourceをNSDiffableDataSourceへ置き換える際のTips集紹介Fumiya Sakai
 
[essentialバージョン] WebLogic Server for OCI 活用のご提案 - TCO削減とシステムのモダナイズ
[essentialバージョン] WebLogic Server for OCI 活用のご提案 - TCO削減とシステムのモダナイズ[essentialバージョン] WebLogic Server for OCI 活用のご提案 - TCO削減とシステムのモダナイズ
[essentialバージョン] WebLogic Server for OCI 活用のご提案 - TCO削減とシステムのモダナイズオラクルエンジニア通信
 
090821 Ruby Sapporo Night Ruby Cocoa
090821 Ruby Sapporo Night Ruby Cocoa090821 Ruby Sapporo Night Ruby Cocoa
090821 Ruby Sapporo Night Ruby CocoaTomoki Maeda
 
1画面から始めるStoryboard
1画面から始めるStoryboard1画面から始めるStoryboard
1画面から始めるStoryboardYuichi Fujishige
 
サイボウズの技術情報を発信するWebディレクター(開発者向けサイト)の紹介.pdf
サイボウズの技術情報を発信するWebディレクター(開発者向けサイト)の紹介.pdfサイボウズの技術情報を発信するWebディレクター(開発者向けサイト)の紹介.pdf
サイボウズの技術情報を発信するWebディレクター(開発者向けサイト)の紹介.pdfCybozu, Inc.
 

Similar a サーバーからiOSアプリを変更する (20)

WKWebViewとUIWebView
WKWebViewとUIWebViewWKWebViewとUIWebView
WKWebViewとUIWebView
 
ニコニコ動画iOSアプリの UX・マネタイズ・技術の話
ニコニコ動画iOSアプリの UX・マネタイズ・技術の話ニコニコ動画iOSアプリの UX・マネタイズ・技術の話
ニコニコ動画iOSアプリの UX・マネタイズ・技術の話
 
BaseViewControllerは作りたくない
BaseViewControllerは作りたくないBaseViewControllerは作りたくない
BaseViewControllerは作りたくない
 
DevOpsを実現する為のChef実践テクニック Chef12対応版
DevOpsを実現する為のChef実践テクニック Chef12対応版DevOpsを実現する為のChef実践テクニック Chef12対応版
DevOpsを実現する為のChef実践テクニック Chef12対応版
 
2021/03/19 パブリッククラウドを活かす運用プロセス自動化
2021/03/19 パブリッククラウドを活かす運用プロセス自動化2021/03/19 パブリッククラウドを活かす運用プロセス自動化
2021/03/19 パブリッククラウドを活かす運用プロセス自動化
 
Angular 4がやってくる!? 新機能ダイジェスト
Angular 4がやってくる!? 新機能ダイジェストAngular 4がやってくる!? 新機能ダイジェスト
Angular 4がやってくる!? 新機能ダイジェスト
 
[公開用]Netラボ2012年2月勉強会 asp.netmvc4 beta新機能の紹介
[公開用]Netラボ2012年2月勉強会 asp.netmvc4 beta新機能の紹介[公開用]Netラボ2012年2月勉強会 asp.netmvc4 beta新機能の紹介
[公開用]Netラボ2012年2月勉強会 asp.netmvc4 beta新機能の紹介
 
Swift入門
Swift入門Swift入門
Swift入門
 
iOS WebView App
iOS WebView AppiOS WebView App
iOS WebView App
 
Adobe セッション for Enterprise x HTML5 Web Application Conference 2014
Adobe セッション for Enterprise x HTML5 Web Application Conference 2014Adobe セッション for Enterprise x HTML5 Web Application Conference 2014
Adobe セッション for Enterprise x HTML5 Web Application Conference 2014
 
iOS WKWebViewの魔改造 - iOSDC 2018
iOS WKWebViewの魔改造 - iOSDC 2018iOS WKWebViewの魔改造 - iOSDC 2018
iOS WKWebViewの魔改造 - iOSDC 2018
 
HTML5ハイブリッド アプリ開発実践編
HTML5ハイブリッド アプリ開発実践編HTML5ハイブリッド アプリ開発実践編
HTML5ハイブリッド アプリ開発実践編
 
ASP. NET Core 汎用ホスト概要
ASP. NET Core 汎用ホスト概要ASP. NET Core 汎用ホスト概要
ASP. NET Core 汎用ホスト概要
 
[AWSマイスターシリーズ] AWS Elastic Beanstalk
[AWSマイスターシリーズ] AWS Elastic Beanstalk[AWSマイスターシリーズ] AWS Elastic Beanstalk
[AWSマイスターシリーズ] AWS Elastic Beanstalk
 
【BS11】毎年訪れる .NET のメジャーバージョンアップに備えるために取り組めること
【BS11】毎年訪れる .NET のメジャーバージョンアップに備えるために取り組めること 【BS11】毎年訪れる .NET のメジャーバージョンアップに備えるために取り組めること
【BS11】毎年訪れる .NET のメジャーバージョンアップに備えるために取り組めること
 
RxDataSourceをNSDiffableDataSourceへ置き換える際のTips集紹介
RxDataSourceをNSDiffableDataSourceへ置き換える際のTips集紹介RxDataSourceをNSDiffableDataSourceへ置き換える際のTips集紹介
RxDataSourceをNSDiffableDataSourceへ置き換える際のTips集紹介
 
[essentialバージョン] WebLogic Server for OCI 活用のご提案 - TCO削減とシステムのモダナイズ
[essentialバージョン] WebLogic Server for OCI 活用のご提案 - TCO削減とシステムのモダナイズ[essentialバージョン] WebLogic Server for OCI 活用のご提案 - TCO削減とシステムのモダナイズ
[essentialバージョン] WebLogic Server for OCI 活用のご提案 - TCO削減とシステムのモダナイズ
 
090821 Ruby Sapporo Night Ruby Cocoa
090821 Ruby Sapporo Night Ruby Cocoa090821 Ruby Sapporo Night Ruby Cocoa
090821 Ruby Sapporo Night Ruby Cocoa
 
1画面から始めるStoryboard
1画面から始めるStoryboard1画面から始めるStoryboard
1画面から始めるStoryboard
 
サイボウズの技術情報を発信するWebディレクター(開発者向けサイト)の紹介.pdf
サイボウズの技術情報を発信するWebディレクター(開発者向けサイト)の紹介.pdfサイボウズの技術情報を発信するWebディレクター(開発者向けサイト)の紹介.pdf
サイボウズの技術情報を発信するWebディレクター(開発者向けサイト)の紹介.pdf
 

Más de toyship

Time for Xcode Behavior
Time for Xcode BehaviorTime for Xcode Behavior
Time for Xcode Behaviortoyship
 
Notifications in iOS10
Notifications in iOS10Notifications in iOS10
Notifications in iOS10toyship
 
Universal Link
Universal LinkUniversal Link
Universal Linktoyship
 
Can we live in a pure Swift world?
Can we live in a pure Swift world?Can we live in a pure Swift world?
Can we live in a pure Swift world?toyship
 
Swift Protocol and Selector
Swift Protocol and SelectorSwift Protocol and Selector
Swift Protocol and Selectortoyship
 
What's new Swift3
What's new Swift3What's new Swift3
What's new Swift3toyship
 
Xcode7時代のアプリ配布
Xcode7時代のアプリ配布Xcode7時代のアプリ配布
Xcode7時代のアプリ配布toyship
 
My first tvOS
My first tvOSMy first tvOS
My first tvOStoyship
 
3D touch for iOS
3D touch for iOS3D touch for iOS
3D touch for iOStoyship
 
Contents blocker on iOS9
Contents blocker on iOS9Contents blocker on iOS9
Contents blocker on iOS9toyship
 
Embedded framework and so on
Embedded framework and so onEmbedded framework and so on
Embedded framework and so ontoyship
 
はじめてのWKInterfaceController
はじめてのWKInterfaceControllerはじめてのWKInterfaceController
はじめてのWKInterfaceControllertoyship
 
App extension for iOS
App extension for iOSApp extension for iOS
App extension for iOStoyship
 
Xcode bot
Xcode botXcode bot
Xcode bottoyship
 
AVSpeechSynthesizerとロケール
AVSpeechSynthesizerとロケールAVSpeechSynthesizerとロケール
AVSpeechSynthesizerとロケールtoyship
 

Más de toyship (15)

Time for Xcode Behavior
Time for Xcode BehaviorTime for Xcode Behavior
Time for Xcode Behavior
 
Notifications in iOS10
Notifications in iOS10Notifications in iOS10
Notifications in iOS10
 
Universal Link
Universal LinkUniversal Link
Universal Link
 
Can we live in a pure Swift world?
Can we live in a pure Swift world?Can we live in a pure Swift world?
Can we live in a pure Swift world?
 
Swift Protocol and Selector
Swift Protocol and SelectorSwift Protocol and Selector
Swift Protocol and Selector
 
What's new Swift3
What's new Swift3What's new Swift3
What's new Swift3
 
Xcode7時代のアプリ配布
Xcode7時代のアプリ配布Xcode7時代のアプリ配布
Xcode7時代のアプリ配布
 
My first tvOS
My first tvOSMy first tvOS
My first tvOS
 
3D touch for iOS
3D touch for iOS3D touch for iOS
3D touch for iOS
 
Contents blocker on iOS9
Contents blocker on iOS9Contents blocker on iOS9
Contents blocker on iOS9
 
Embedded framework and so on
Embedded framework and so onEmbedded framework and so on
Embedded framework and so on
 
はじめてのWKInterfaceController
はじめてのWKInterfaceControllerはじめてのWKInterfaceController
はじめてのWKInterfaceController
 
App extension for iOS
App extension for iOSApp extension for iOS
App extension for iOS
 
Xcode bot
Xcode botXcode bot
Xcode bot
 
AVSpeechSynthesizerとロケール
AVSpeechSynthesizerとロケールAVSpeechSynthesizerとロケール
AVSpeechSynthesizerとロケール
 

サーバーからiOSアプリを変更する