I os5 study
-
Upload
takao-funami -
Category
Business
-
view
625 -
download
1
description
Transcript of I os5 study
メディアテクノロジーラボ主催学生向けiPhoneアプリ勉強会(中級編)
2012/2/24
舩見 高貴生チーフエンジニア/メディアテクノロジーラボ
筑波大学1988年卒 農林学類 生物環境造成学主専攻
~iOS5 & Xcode4.3でスマートに開発しよう!~
12年2月24日金曜日
~iOS5 & Xcode4.3でスマートに開発しよう!~アジェンダ
• 自己紹介
• MTLの紹介
• iOS5+Xcode4ショーケース+α
• Xcode4.3出ました
• ARC,StoryBoard,iCloud,AutomationTest,AirPlay
• iOS5概要とシェア
• 小話
• みなさんからの共有
12年2月24日金曜日
自己紹介
12年2月24日金曜日
フナミタカオ - エンジニア自己紹介
12年2月24日金曜日
フナミタカオ - エンジニア自己紹介
• 1988 入社 - リクルート国際VAN 技術サポート
• 1990 ケイコとマナブ営業
• 1994 エイビーロード制作システム
• 2000 原稿制作フレームワーク
• 2006 たたみラボ
• 2007 MTL - WebAPI、iOS、Android
12年2月24日金曜日
フナミタカオ - エンジニア自己紹介
• 1988 入社 - リクルート国際VAN 技術サポート
• 1990 ケイコとマナブ営業
• 1994 エイビーロード制作システム
• 2000 原稿制作フレームワーク
• 2006 たたみラボ
• 2007 MTL - WebAPI、iOS、Android
C
DTP
AppleScript
RB,.Net, Perl
Perl,PHP,Ruby
Perl,ObjC,Java
12年2月24日金曜日
フナミタカオ - エンジニアブログ&Twitter&Facebook
• はてな iRSS
• Twitter @iRSS
• Facebook takao.funami
• MTLブログ
• http://mtl.recruit.co.jp/
12年2月24日金曜日
88年大学卒業筑波出身です
• 筑波大学 第二学群 農林学類
• 生物環境造成学主専攻
• イチゴの植物工場が卒論のテーマ
• 88当時、世の中はバブル黎明期でした
• ご縁あってリクルートに
12年2月24日金曜日
メールなし、ネットなし、一太郎&花子全盛期25年前、紙で情報をやり取りする時代
• パソコン通信はあった。
• コピー機もあった。10円コピー
• 音声の電話回線をつかって、データを送信
• PC9800のパソコンで清書
• 一太郎 - ワープロ
• 花子 - 図表エディタ
コンピュータ博物館
http://museum.ipsj.or.jp/heritage/ichitaro.html
ポリプロピレンのおもちゃ箱http://monopoly.cocolog-nifty.com/blog/
2011/06/post-546f.html
12年2月24日金曜日
パソコン通信の画面
12年2月24日金曜日
電話線を使うので、音で通信していたモデム、音響カプラ
12年2月24日金曜日
JAMJAMというミニコミ紙を作っていましたサークル活動
印刷屋さんで写植&印刷12年2月24日金曜日
一部文字作成にワープロ使用
一行の液晶表示、プリンタ付き、紙は熱転写専用紙。
12年2月24日金曜日
あれから24年iOSアプリの開発をやっています。
12年2月24日金曜日
works1
ホットペッパーiPhone&Android APP
2009年秋 2011年春
12年2月24日金曜日
works2
iPadアプリ-じゃらんシリーズ
2010年5月より、シリーズ5作12年2月24日金曜日
works3
はぴばる
2011年10月31日リリース12年2月24日金曜日
works4
リクルートWebサービス
• 17種類のWebサービス(WebAPI)の開発、運用を約3人で行っています。
• 月間6億リクエスト。リリースは6回/月程度。
• 毎週500行くらい書いてるかも
12年2月24日金曜日
MTLとはメディアテクノロジーラボのリクルート内での役割
12年2月24日金曜日
5
新領域 学び領域 HR領域 住宅領域 IMC領域 狭域領域
ライフステージ領域 (人生の節目)
ライフスタイル領域 (日常の消費)
情報誌
WEB・
モバイル
新モデル
通販 イベント
フリーペーパー
事業領域の拡大
プラットフォームの拡大
DB型サービス ソリューション
新ビジネスモデル 新メディア
リアル事業 全国展開
情報誌/
フリーペーパー
Web/モバイル
新モデル
HR領域 学び領域 住宅領域 IMC領域 狭域領域 新領域
ライフステージ-人生の節目 ライフスタイル-日常の生活
社会の変化・ITの発展にそって進化事業領域の拡大
プラットフォームの拡大
12年2月24日金曜日
5
新領域 学び領域 HR領域 住宅領域 IMC領域 狭域領域
ライフステージ領域 (人生の節目)
ライフスタイル領域 (日常の消費)
情報誌
WEB・
モバイル
新モデル
通販 イベント
フリーペーパー
事業領域の拡大
プラットフォームの拡大
DB型サービス ソリューション
新ビジネスモデル 新メディア
リアル事業 全国展開
情報誌/
フリーペーパー
Web/モバイル
新モデル
HR領域 学び領域 住宅領域 IMC領域 狭域領域 新領域
ライフステージ-人生の節目 ライフスタイル-日常の生活
社会の変化・ITの発展にそって進化事業領域の拡大
プラットフォームの拡大
MTL
12年2月24日金曜日
2007-2011
MTLについて
• 2007年4月1設立 今年5期目
• 技術調査研究~新規事業開発を行う「実証研究機関(R&D)」
• テクノロジを源泉としたサービス企画・運営を行い、ネット分野における新しいビジネスモデルを創造する
12年2月24日金曜日
シードを担うMTLはリクルートのR&D部門
R&D
事業開発カンパニー
12年2月24日金曜日
シードを担うMTLはリクルートのR&D部門
R&D
事業開発カンパニー
12年2月24日金曜日
シードを担うMTLはリクルートのR&D部門
R&D
事業開発カンパニー
12年2月24日金曜日
シードを担うMTLはリクルートのR&D部門
R&D
事業開発カンパニー
12年2月24日金曜日
シードを担うMTLはリクルートのR&D部門
R&D
事業開発カンパニー
12年2月24日金曜日
シードを担うMTLはリクルートのR&D部門
R&D
事業開発カンパニー
12年2月24日金曜日
シードを担うMTLはリクルートのR&D部門
R&D
事業開発カンパニー
12年2月24日金曜日
シードを担うMTLはリクルートのR&D部門
R&D
事業開発カンパニー
アドオプティマイゼーション推進室 etc.
12年2月24日金曜日
シードを担うMTLはリクルートのR&D部門
R&D
事業開発カンパニー人材/進学/住宅結婚/自動車ライフスタイルetc.アドオプティマイゼーション推
進室 etc.
12年2月24日金曜日
シードを担うMTLはリクルートのR&D部門
R&D
事業開発カンパニー人材/進学/住宅結婚/自動車ライフスタイルetc.アドオプティマイゼーション推
進室 etc.
メディアテクノロジーラボ(MTL), リクルートインキュベーションパートナーズ(RIP)
etc.12年2月24日金曜日
プランナーとエンジニア強みを活かして協働する
WEB サービスの企画設計・プロデュース、ビジネスプランニングなど。新規事業の企画・戦略立案から、プロジェクトチームの立上げ、課題抽出、日々の P/L 収益管理まで幅広く
システム設計、アーキテクチャ設計、フレームワーク開発、システム開発など。WEB サービスの企画設計から技術視点・クリエイタ視点で参加し、実際にシステム開発・運用までを行う。サービス企画・ディレクション・インフラ管理もあり。
+
プランナー
エンジニア - Webアーキテクト
- Webプロデューサー
12年2月24日金曜日
最近のMTLのサービス代表的なサービスをいくつか...
12年2月24日金曜日
開発勉強会支援→決済機能付きイベント開催支援1.ATND →EventATND
Exit
12年2月24日金曜日
開発勉強会支援→決済機能付きイベント開催支援1.ATND →EventATND
Exit
12年2月24日金曜日
O2Oアプリ - オンライン・ツー・オフライン2.ショプリエ
チェックインしてポイントためる ことでユーザーと商品のマッチングと来店促進を目指す 2月14日公開
12年2月24日金曜日
これまで7回開催、今年も実施予定3.Mashup Award 7
MA は、開発者が新技術・新サービスに挑戦する年に1度のお祭りです。今年も、オープンな API やプラットフォーム、デバイスを存分に活用して頂いて、ちょっと先の未来の Web を見せてくれる作品を期待しています!
12年2月24日金曜日
いまできることに取り組む4.Hack For Japan&復興支援
じゃらん 東北地方太平洋沖地震<被災者支援プラン>API
Hack For Japanみんなのわ、げんきのわ(NHK 報道局 × MTL コラボ)
12年2月24日金曜日
どんなオフィス職場環境は?
12年2月24日金曜日
MTLのオフィス/カフェコラボが生まれる/開発に集中できる
12年2月24日金曜日
MTLのオフィス/カフェコラボが生まれる/開発に集中できる
12年2月24日金曜日
MTLのオフィス/カフェコラボが生まれる/開発に集中できる
「MTL カフェ」社内外の勉強会などに使うイベントスペース。
12年2月24日金曜日
MTLのオフィス/カフェコラボが生まれる/開発に集中できる
「MTL カフェ」社内外の勉強会などに使うイベントスペース。
12年2月24日金曜日
MTLのオフィス/カフェコラボが生まれる/開発に集中できる
「MTL カフェ」社内外の勉強会などに使うイベントスペース。
「コンセントレーションスペース」開発者のための集中作業スペース。
電話設置なし。ノートPC用外付モニタ完備。12年2月24日金曜日
伊豆とか、三浦とか。温泉付きでもちろん合宿もします
座敷よりは腰にくるので、最近はテーブルを用意12年2月24日金曜日
iPhone案件たくさん大半はMac,iPhone率100%越え
12年2月24日金曜日
iOS5+Xcode4ショーケース+α注目の便利機能、iTVの予感
12年2月24日金曜日
XCode4.32月16日リリース
12年2月24日金曜日
それほど影響ないですが、とまどうかも4.2と違い
• iOSのバージョンはかわらない
• AppStoreからインストールはこれまでどおり
• /Applications/Xcode.appにインストール
• インストーラなくなった
• /Developerもなくなった×
12年2月24日金曜日
共存もできる模様古いXCodeの削除はオプションで
12年2月24日金曜日
CommandLine ToolsやiOS4.3 SimulatorもDashCodeはオプションに
More Developper Tootlsからダウンロード
Preferences>Downloadから取得できるものもある
12年2月24日金曜日
画面UIはかわらず復習
12年2月24日金曜日
これでだけは、覚えたいXcode ショートカット
コマンド+数字 左枠(ナビゲーター)
コマンド+Opt+数字 右上(インスペクタ)
コマンド+Opt+Ctl+数字 右下(ライブラリ)
コマンド+Shift+Y 下(デバッグ)
Ctl+数字 ジャンプバー
12年2月24日金曜日
ARC[iOS5 ] Retain,Releaseからの解放
12年2月24日金曜日
retain or releaseを自動的にやってくれるAutomatic Reference Counting
• retain, release, autoreleaseのことは忘れる
• コンパイラが自動挿入。GCではない
• ただしmalloc/free,CF等は対象外
• 変数の初期化は自動的に行われる
• nilになるので、安全。nilのメソッドを呼んでも落ちないから
• 循環参照には、注意
12年2月24日金曜日
ARC利用のルール
• retain, release, retainCount, or autoreleaseを呼び出さない。@selector(retain), @selector(release)もNG
• deallocでインスタンス変数の解放は不要。
[super dealloc]はNG
• CFRetain, CFReleaseはARCの対象外
• Cの構造体は使わないで、Objective-Cのクラスに
• NSAutoreleasePool のかわりに@autoreleasepoolを
12年2月24日金曜日
すこし心配な事
• 外部ライブラリ(github等)がARCに非対応のものも多い。
• でも大丈夫、混在は可能。
• ビルド設定の、Build Phaseタブの、Compile
Sources 設定でコンパイルオプションに -fno-
objc-arcを入力すれば、ARC非対応のライブラリもARC環境で混在できる
12年2月24日金曜日
__weak修飾子を使う循環参照をさける
@interface MTLList : NSObject{ MTLItem *_child;}- (void)setChild:(MTLItem *)obj;@end@implementation- (void)setChild:(MTLItem *)obj{ _child = obj;}@end
@interface MTLItem : NSObject{ MTLList *_parent;}
- (void)setParent:(MTLList *)obj;@end@implementation- (void)setChild:(MTLItem *)obj{ _parent = obj;}@end
{ MTLItem *a = [[MTLItem alloc] init]; MTLList *b = [[MTLList alloc] init]; [a setList:b]; [b setParent:a]; }
循環参照になる変数はデフォルトで__strong
MTLList_child
MTLItem_parent
12年2月24日金曜日
__weak修飾子を使う循環参照をさける
@interface MTLList : NSObject{ MTLItem *_child;}- (void)setChild:(MTLItem *)obj;@end@implementation- (void)setChild:(MTLItem *)obj{ _child = obj;}@end
@interface MTLItem : NSObject{ MTLList __weak *_parent;}
- (void)setParent:(MTLList *)obj;@end@implementation- (void)setChild:(MTLItem *)obj{ _parent = obj;}@end
MTLList_child
MTLItem_parent
{ MTLItem *a = [[MTLItem alloc] init]; MTLList *b = [[MTLList alloc] init]; [a setList:b]; [b setParent:a]; }
循環参照にならない片方は__weakとする
12年2月24日金曜日
参考書&リファレンスARC
• Transitioning to ARC Release Notes
• https://developer.apple.com/library/ios/#releasenotes/ObjectiveC/RN-TransitioningToARC/Introduction/Introduction.html
• エキスパートObjective-Cプログラミング ― iOS/OS X
のメモリ管理とマルチスレッド
• 電子書籍:http://tatsu-zine.com/books/objc
• Amazon書籍 : http://amzn.to/xGuL2c
12年2月24日金曜日
WWDC2011
ビデオ
詳細はぜひ、ビデオ+スライドで
12年2月24日金曜日
iCloud[iOS5]OSX10.8ではMacでも本格対応
12年2月24日金曜日
UIDocument,Key-ValueStore
• UIDocument
•
12年2月24日金曜日
どんなクラスを使うのか
• UIDocument
• サブクラスを作って、データの読み書きを実装
• NSUbiquitousKeyValueStore(シンプル)NSUbiquitousKeyValueStore *keyStore = [[NSUbiquitousKeyValueStore alloc] init];
//保存[keyStore setString:@”Saved String” forKey:@"MyString"];[keyStore synchronize];
//読み出しNSString *storedString = [keyStore stringForKey:@"MyString"];
12年2月24日金曜日
Storyboard[iOS5 ] ワイヤーとして流れがつかめるわかりやすさ。
12年2月24日金曜日
画面の関連を見渡せるようになった。.xibから.storyboardに
• コントロール+ドラッグで画面をつなぐ
• Segueで関連づけ
• 遷移アニメーションをカスタマイズ可能
• UITableView
• 固定セル作成可能
• UITableViewCellの編集が簡単に
12年2月24日金曜日
Appearance [iOS5 ]一気に画面をカスタマイズ。「友達を探す」のようなアプリを簡単に実現
12年2月24日金曜日
Tint color & BackgroundImage &etc
一気に雰囲気を変更できる
[[UINavigationBar appearance] setTintColor:color]
[[UINavigationBar appearance] setBackgroundImage:[UIImage imageNamed:@"skin_44"] forBarMetrics:UIBarMetricsDefault];
12年2月24日金曜日
MTLAppearanceソースをつかってDemo
12年2月24日金曜日
参考
• UIAppearance で色や画像を変える
• http://cocoadays.blogspot.com/2011/10/uiappearance.html
• WWDC Video
• 114_customizing_the_appearance_of_uikit_controls
12年2月24日金曜日
iTVの予感[iOS4.3~]AppleTVと組み合わせてできる、iTVもどき
12年2月24日金曜日
ミラーリングできるApple TV & iOSでバイス
12年2月24日金曜日
別スクリーンとしても使えるUIScreen
- (void)viewDidLoad...
// 最後のスクリーンが外部ディスプレイ if ([[UIScreen screens] count] > 1) { [self prepareScreen:[[UIScreen screens] lastObject]]; }......}
- (void)prepareScreen:(UIScreen *)connectedScreen{
//外部ディスプレイのサイズでWindowを作る CGRect frame = connectedScreen.bounds; self.window2 = [[UIWindow alloc] initWithFrame:frame]; [self.window2 setScreen:connectedScreen]; self.window2.hidden = NO;......
}12年2月24日金曜日
参考AirPlay
• WWDC Video
• 406_airplay_and_external_displays_in_ios_apps
• サンプルコード
• ExternalDisplay
• https://developer.apple.com/library/ios/#samplecode/ExternalDisplay/Introduction/Intro.html#//apple_ref/doc/uid/DTS40010724
12年2月24日金曜日
Automation + SenTest[Instruments] 画面操作を自動的に行えるツール
12年2月24日金曜日
UnitTest はSenTest
UIの自動テストを行う
• SenTestを使った、自動テスト。
• 自動テストだが、UIが絡むとむずかしい
• Automation
• Javascriptで自動実行
• JavaScriptの記録もできるので、テストのひな形にできる
12年2月24日金曜日
UnitTest
SenTest
Person
firstNamelastName
ageaddress
fullName
12年2月24日金曜日
Instrumentsに追加Automation
12年2月24日金曜日
テキスト
• HELP > Instruments New Features User Guide
• New Features in Instruments 4.2
12年2月24日金曜日
UIPageViewManeger[iOS5]iBookのようなUIができちゃう
12年2月24日金曜日
iBook風のアプリPage-Based Application
12年2月24日金曜日
R25APIを利用した例ページめくりアニメーションを実現
サンプルソース:http://dl.dropbox.com/u/27096935/students/mybook.zip
参考:MTL主催 学生向けiPhoneアプリ勉強会(中級編) ~リクルート流アプリの創り方~ http://atnd.org/events/24249
12年2月24日金曜日
UIPageViewController
UIPageViewController
page view
view view
FNSDataViewController
FNSDataViewController
FNSRootViewController<UIPageViewControllerDele
gate>
spineLocationForInterfaceOrientation
(回転時の挙動)
FNSModelController<UIPageViewControllerDataSour
ce>(改ページ時)
Before ViewAfter View
Page Data(model)Page Data(model)@property pageData
@property dataObject
@property dataObject
UIPageViewControllerがページごとにDataViewControllerを作成、破棄を繰り返
してページを表示している。12年2月24日金曜日
UITwitter[iOS5]Twitterアカウント管理はOS任せにできる
12年2月24日金曜日
テキスト
12年2月24日金曜日
ところで、iOS5のシェアは?i0S4の対応はどうしようか?
12年2月24日金曜日
リクルートWebサービスへのリクエスト数から算出iOS5のシェアは6割強
1%
37%
62%
iPhoneOS3 iOS4 iOS5
12年2月24日金曜日
公開から4ヶ月でiOS5シェアは6割強(2012/2)
iOSバージョンシェア推移
0%
10%
20%
30%
40%
50%
60%
70%
80%
90%
100%
10/5 10/7 10/9 10/11 11/1 11/3 11/5 11/7 11/9 11/11 12/1
iPhoneOS3 iOS4 iOS5
2010/5 ~2012/2のリクルートWebサービスへのリクエスト数から算出iPhoneOS3→iOS4の時は6ヶ月後に1:9になった。4→5は少し鈍い
12年2月24日金曜日
1ヶ月後でiOS5 5割超えあるコミックアプリのiOSシェア
中村智武のCTO記-http://ameblo.jp/tomotaken/entry-11060841833.html iPhone向けコミック配信サービスのサーバーへのアクセスを元にした独自調べ
iPhone 4S発売及びiOS 5リリースから約一ヶ月後(集計期間11/11~11/17)のシェア内訳
12年2月24日金曜日
いつかは、iOS5以上になるけれど...
いつまでiOS4対応すべきか?
• iOS5以上で使える..
• iCloud
• Newsstand
• iTunes U
• 友達を探す
• 通知センター
• Mountain Lion
• ARC
• StoryBoard
• Segue
• Custom Appearance
• TwitterAPI
• Table View Static Content
ARC,StoryBoardは非常に魅力的すぐにでもiOS5にしぼりたい12年2月24日金曜日
My Little Story自分の想いをコードで実現することについて、すこし、自分の体験を話します
12年2月24日金曜日
2010/5/28 iPad日本公開同時発売iPadじゃらん
12年2月24日金曜日
2010/5/28 iPad日本公開同時発売iPadじゃらん
12年2月24日金曜日
2010/5/28 iPad日本公開同時発売iPadじゃらん
地図と記事の2画面12年2月24日金曜日
25years ago
12年2月24日金曜日
アパート情報の地図
12年2月24日金曜日
アパート情報の地図
12年2月24日金曜日
アパート情報の地図
12年2月24日金曜日
テキスト雲定規+製図ペン+トレース用紙
12年2月24日金曜日
地図別冊になりました
12年2月24日金曜日
地図別冊になりました
12年2月24日金曜日
Now
12年2月24日金曜日
5years ago
12年2月24日金曜日
2006年の想い位置と連動するサービスを...
12年2月24日金曜日
2006年の想い位置と連動するサービスを...
12年2月24日金曜日
2006年の想い位置と連動するサービスを...
12年2月24日金曜日
2006年の想い位置と連動するサービスを...
携帯できる
12年2月24日金曜日
2006年の想い位置と連動するサービスを...
携帯できる
地図と記事が連動
12年2月24日金曜日
2006年の想い位置と連動するサービスを...
携帯できる
地図と記事が連動
しかし当時は、手頃なデバイスがなかった12年2月24日金曜日
1years ago
12年2月24日金曜日
2010/5/28 iPad日本公開同時発売iPadじゃらん
12年2月24日金曜日
2010/5/28 iPad日本公開同時発売iPadじゃらん
12年2月24日金曜日
2010/5/28 iPad日本公開同時発売iPadじゃらん
12年2月24日金曜日
2010/5/28 iPad日本公開同時発売iPadじゃらん
最適なデバイスの登場
12年2月24日金曜日
2010/5/28 iPad日本公開同時発売iPadじゃらん
最適なデバイスの登場+
12年2月24日金曜日
2010/5/28 iPad日本公開同時発売iPadじゃらん
最適なデバイスの登場じゃらんというコンテンツ
+
12年2月24日金曜日
想いは形になります確認事項
• アイデアや想いはいつか形になるもの
12年2月24日金曜日
Android,WindowsPhoneも含むiOSデバイスのすごさ
• 持ち運べる
• 常時接続
• プログラム可能
12年2月24日金曜日
Thank You! 樹海の森ですが、とても面白い場所です。一緒に楽しみましょう!
12年2月24日金曜日