i os5 study

Post on 30-Apr-2015

625 Views

Category:

Business

1 Downloads

Preview:

Click to see full reader

DESCRIPTION

 

TRANSCRIPT

メディアテクノロジーラボ主催学生向け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日金曜日

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日金曜日

top related