1.29.user,user,user

1,179 views

Published on

Jan 29, 2011, I gave a public speech to PersonaTech. This is the document originally hosted on iwork.com, but since Apple shutdown iwork.com, I hope slideshare.net can help this presentation find a place to stay.

Published in: Technology
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,179
On SlideShare
0
From Embeds
0
Number of Embeds
185
Actions
Shares
0
Downloads
2
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • 1.29.user,user,user

    1. 1. ユーザ! ユーザ! ユーザ! Tonny (@tonnyxu) genesix, Inc.
    2. 2. 質問:スマートフォンを持っていない人
    3. 3. 質問:iOSの開発経験がある人
    4. 4. 目次
    5. 5. 目次自己紹介
    6. 6. 目次自己紹介開発プロセス中でのプログラマの立ち位置
    7. 7. 目次自己紹介開発プロセス中でのプログラマの立ち位置プログラマとしてできることは何か?
    8. 8. 目次自己紹介開発プロセス中でのプログラマの立ち位置プログラマとしてできることは何か?It’s my babyの苦労と喜び 感動:animation 落ちまくる:memory管理 スピード:開発合宿 グローバル:English
    9. 9. 目次自己紹介開発プロセス中でのプログラマの立ち位置プログラマとしてできることは何か?It’s my babyの苦労と喜び 感動:animation 落ちまくる:memory管理 スピード:開発合宿 グローバル:English未来への道
    10. 10. 自己紹介
    11. 11. 自己紹介
    12. 12. 自己紹介Tonny 29.9999998才 情熱プログラマ iPhone: 2008/7から
    13. 13. 自己紹介Tonny 29.9999998才 情熱プログラマ iPhone: 2008/7から夢 百万人のユーザに 使ってもらえるサー ビスを創る
    14. 14. User! User! User!
    15. 15. User!なぜ? User! User!
    16. 16. Developers! Developers! Developers!
    17. 17. Steve Ballmer Microsoft 2000
    18. 18. Steve Ballmer Microsoft 2000http://youtu.be/8To-6VIJZRE
    19. 19. なぜ?
    20. 20. エンジニアの仕事とは?
    21. 21. エンジニアの仕事とは?
    22. 22. エンジニアの仕事とは?上司を喜ばす?
    23. 23. エンジニアの仕事とは?上司を喜ばす?家族を喜ばす?
    24. 24. エンジニアの仕事とは?上司を喜ばす?家族を喜ばす?お金を ける?
    25. 25. エンジニアの仕事とは?上司を喜ばす?家族を喜ばす?お金を ける? 技術を磨く?
    26. 26. エンジニアの仕事とは?
    27. 27. エンジニアの仕事とは?ユーザを喜ばす
    28. 28. 開発プロセス中での立ち位置
    29. 29. 開発プロセス中での立ち位置 よくあるプロセス
    30. 30. 開発プロセス中での立ち位置 よくあるプロセス企画 設計 開発 テスト 公開
    31. 31. 開発プロセス中での立ち位置 よくあるプロセス企画 設計 開発 テスト 公開
    32. 32. 開発プロセス中での立ち位置 よくあるプロセス企画 設計 開発 テスト 公開
    33. 33. 開発プロセス中での立ち位置 よくあるプロセス企画 設計 開発 テスト 公開 より良いユーザ体験を提供するため
    34. 34. プログラマとして何が出来る
    35. 35. プログラマとして何が出来る企画
    36. 36. プログラマとして何が出来る 自分のアイディアで貢献企画
    37. 37. プログラマとして何が出来る 自分のアイディアで貢献 エンジニアの知識を活用企画
    38. 38. プログラマとして何が出来る 自分のアイディアで貢献 エンジニアの知識を活用 可能なリスク?企画 OS バージョンなど 優先順位
    39. 39. プログラマとして何が出来る 自分のアイディアで貢献 エンジニアの知識を活用 可能なリスク?企画 OS バージョンなど 優先順位 実現可能?
    40. 40. プログラマとして何が出来る 自分のアイディアで貢献 エンジニアの知識を活用 可能なリスク?企画 OS バージョンなど 優先順位 実現可能? より良い案?
    41. 41. プログラマとして何が出来る 自分のアイディアで貢献 エンジニアの知識を活用 可能なリスク?企画 OS バージョンなど 優先順位 実現可能? より良い案? ...
    42. 42. プログラマとして何が出来る
    43. 43. プログラマとして何が出来る設計
    44. 44. プログラマとして何が出来る UX = User eXperience設計
    45. 45. プログラマとして何が出来る UX = User eXperience uXにアドバイス設計
    46. 46. プログラマとして何が出来る UX = User eXperience uXにアドバイス ここはこのアニメション設計
    47. 47. プログラマとして何が出来る UX = User eXperience uXにアドバイス ここはこのアニメション設計 ここは高さの変化があるよ
    48. 48. プログラマとして何が出来る UX = User eXperience uXにアドバイス ここはこのアニメション設計 ここは高さの変化があるよ ここはコードで実現できる
    49. 49. プログラマとして何が出来る UX = User eXperience uXにアドバイス ここはこのアニメション設計 ここは高さの変化があるよ ここはコードで実現できる ここは画像ください
    50. 50. プログラマとして何が出来る UX = User eXperience uXにアドバイス ここはこのアニメション設計 ここは高さの変化があるよ ここはコードで実現できる ここは画像ください ...
    51. 51. プログラマとして何が出来る
    52. 52. プログラマとして何が出来る開発
    53. 53. プログラマとして何が出来る 開発は本業だよね開発
    54. 54. プログラマとして何が出来る 開発は本業だよね プロになれ!開発
    55. 55. プログラマとして何が出来る 開発は本業だよね プロになれ! より速くできるか?開発
    56. 56. プログラマとして何が出来る 開発は本業だよね プロになれ! より速くできるか?開発 より正確にできるか?
    57. 57. プログラマとして何が出来る 開発は本業だよね プロになれ! より速くできるか?開発 より正確にできるか? 既にAPIがあるか?
    58. 58. プログラマとして何が出来る 開発は本業だよね プロになれ! より速くできるか?開発 より正確にできるか? 既にAPIがあるか? どこに答えがあるか?
    59. 59. プログラマとして何が出来る 開発は本業だよね プロになれ! より速くできるか?開発 より正確にできるか? 既にAPIがあるか? どこに答えがあるか? ...
    60. 60. プログラマとして何が出来る
    61. 61. プログラマとして何が出来るテスト
    62. 62. プログラマとして何が出来る ちゃんとやれ!テスト
    63. 63. プログラマとして何が出来る ちゃんとやれ! 開発中 Unit Testテスト サンプルアプリ
    64. 64. プログラマとして何が出来る ちゃんとやれ! 開発中 Unit Testテスト サンプルアプリ 開発後 自動テストじゃなくても良い テスト仕様書
    65. 65. プログラマとして何が出来る
    66. 66. プログラマとして何が出来る公開
    67. 67. プログラマとして何が出来る 終わりではない公開
    68. 68. プログラマとして何が出来る 終わりではない ユーザーからのフィードバック 対応すべき?公開 コスト?
    69. 69. プログラマとして何が出来る 終わりではない ユーザーからのフィードバック 対応すべき?公開 コスト? KPT
    70. 70. プログラマとして何が出来る 終わりではない ユーザーからのフィードバック 対応すべき?公開 コスト? KPT Keep Problem Try
    71. 71. Carlye Lynnes Photography
    72. 72. It’s my babyの苦労と喜び Carlye Lynnes Photography
    73. 73. It’s my babyの苦労と喜び Carlye Lynnes Photographyユーザと一緒に育ち、一緒に成長
    74. 74. 感動:animation
    75. 75. 感動:animationiOSとほかのスマートフォン 一番大きな違い
    76. 76. 感動:animationiOSとほかのスマートフォン 一番大きな違いより分かりやすいUI
    77. 77. 感動:animationiOSとほかのスマートフォン 一番大きな違いより分かりやすいUI実装は簡単 ゼロからのハードルが少しある なれたら、簡単 本当はパワフル iOS 4.0から、更に簡単
    78. 78. Code Snippet
    79. 79. 昔のやり方
    80. 80. 昔のやり方// Old fashion[UIView beginAnimations:nil context:nil];[UIView setAnimationDuration:0.8];[UIView setAnimationDelegate:self];[UIViewsetAnimationDidStopSelector:@selector(finishDismiss)];self.alpha = 0;[UIView commitAnimations];
    81. 81. 現在のやり方(iOS 4.0+)
    82. 82. 現在のやり方(iOS 4.0+)// New fashion[UIView animateWithDuration:0.8 animations:^{ self.alpha = 0; } completion:^(BOOL finished) { [self finishDismiss]; }];
    83. 83. 落ちまくる:Memory管理
    84. 84. 落ちまくる:Memory管理C/C++からのプログラマは心配不要 malloc/free → retain/release new/delete → retain/release
    85. 85. 落ちまくる:Memory管理C/C++からのプログラマは心配不要 malloc/free → retain/release new/delete → retain/releaseWebからのプログラマは要注意 ポインターを理解すべき メモリ管理の基本ルール 自分が取ったら、自分で返す ペアで書く
    86. 86. Best Practices
    87. 87. Best Practicesペアで書く・self.hogeを理解する・@privateを使う ネットワークに注意・NSZombieを活用する
    88. 88. ペアで書く- @property
    89. 89. ペアで書く- @property// Hoge.h@interface Hoge { NSString *myStr;}@property (nonatomic,copy) NSString *myStr;@end
    90. 90. ペアで書く- @property// Hoge.h@interface Hoge { NSString *myStr; 1}@property (nonatomic,copy) NSString *myStr;@end
    91. 91. ペアで書く- @property// Hoge.h@interface Hoge { NSString *myStr; 1}@property (nonatomic,copy) NSString *myStr;@end 2
    92. 92. ペアで書く- @property
    93. 93. ペアで書く- @property// Hoge.m@implement Hoge@synthesize myStr;-(void)dealloc{ [myStr release];}@end
    94. 94. ペアで書く- @property// Hoge.m@implement Hoge@synthesize myStr; 3-(void)dealloc{ [myStr release];}@end
    95. 95. ペアで書く- @property// Hoge.m@implement Hoge@synthesize myStr; 3-(void)dealloc{ [myStr release]; 4}@end
    96. 96. ペアで書く- alloc/release
    97. 97. ペアで書く- alloc/releaseNSArray *myArr = [[NSArray alloc] init];[myArr release];
    98. 98. ペアで書く- alloc/releaseNSArray *myArr = [[NSArray alloc] init]; 1[myArr release];
    99. 99. ペアで書く- alloc/releaseNSArray *myArr = [[NSArray alloc] init]; 1[myArr release]; 2
    100. 100. self.hogeを理解する
    101. 101. self.hogeを理解する@property (nonatomic, copy) NSString *myStr;@property (nonatomic, assign) BOOL myBool;self.myStr = @”Tonny Xu”;NSString *s = self.myStr;self.myBool = YES;BOOL b = self.myBool;
    102. 102. self.hogeを理解する
    103. 103. self.hogeを理解する//self.myStr = @”T” == [self setMyStr:@”T”];- (void) setMyStr:(NSString *)p{ if (myStr != p) { [myStr release]; myStr = nil; myStr = [p copy]; }}
    104. 104. self.hogeを理解する
    105. 105. self.hogeを理解する// different implementation: assign/retain/copy// assignproperty = newValue;// retainif (property != newValue){ [property release]; property = nil; property = [newValue retain];}// copyif (property != newValue){ [property release]; property = nil; property = [newValue copy];}
    106. 106. @privateを使う
    107. 107. @privateを使う// Hoge.h@interface Hoge{ @private NSString *myStr_;}@property (nonatomic, copy) NSString *myStr;@end
    108. 108. @privateを使う
    109. 109. @privateを使う// Hoge.m@implement Hoge@synthesize myStr = myStr_;- (void) dealloc{ self.myStr = nil;}@end
    110. 110. ネットワークに注意
    111. 111. ネットワークに注意// it’s real code- (void)dealloc { [[NSNotificationCenter defaultCenter]removeObserver:self]; NSArray *allDownloads = [self.imageDownloadsInProgressallValues]; if ([allDownloads count] > 0) { [allDownloadsmakeObjectsPerformSelector:@selector(cancelDownload)]; } [imageDownloadsInProgress release]; [super dealloc];}
    112. 112. NSZombieを使う
    113. 113. NSZombieを使う
    114. 114. NSZombieを使う
    115. 115. NSZombieを使う
    116. 116. NSZombieを使う
    117. 117. NSZombieを使う// NSZombieEnabled = YESNSArray *myArr = [[NSArray alloc] init];[myArr release];[myArr release]; // 何が発生しますか?
    118. 118. NSZombieを使う// NSZombieEnabled = YESNSArray *myArr = [[NSArray alloc] init];[myArr release];[myArr release]; // 何が発生しますか?------------------------------------[Session started at 2011-01-23 23:34:42 +0900.]2011-01-23 23:34:54.935 TestApp[453:207] *** -[__NSArrayI retain]: message sent to deallocated instance 0x6248040
    119. 119. MTG
    120. 120. e eti ngm MTG ミーティ ング
    121. 121. どうすれば集中できる?
    122. 122. genesixの答えは
    123. 123. genesixの答えは 開発 合宿
    124. 124. RedBull
    125. 125. RedBull 午前2時過ぎ
    126. 126. 成果物
    127. 127. 成果物instaqlock
    128. 128. 成果物instaqlock ミクフォトアップローダー
    129. 129. 成果物instaqlock ミクフォトアップローダー Social 有料TOP 1
    130. 130. 効率の検証
    131. 131. 効率の検証時間 二泊三日
    132. 132. 効率の検証時間 二泊三日生産性 git コミット回数: 112回 増えた行数:3468行
    133. 133. 効率の検証時間 二泊三日生産性 git コミット回数: 112回 増えた行数:3468行 genesixの定期活動になった!
    134. 134. グローバル:English
    135. 135. グローバル:English弊社のUXデザイナー@mikihirocksがHIGのチェックシートをリリースした。
    136. 136. グローバル:English弊社のUXデザイナー@mikihirocksがHIGのチェックシートをリリースした。 http://bit.ly/flHYBu
    137. 137. グローバル:English弊社のUXデザイナー@mikihirocksがHIGのチェックシートをリリースした。 http://bit.ly/flHYBu リリースする時に、既に遅れてしまった。
    138. 138. グローバル:English弊社のUXデザイナー@mikihirocksがHIGのチェックシートをリリースした。 http://bit.ly/flHYBu リリースする時に、既に遅れてしまった。我々はエンジニアだ
    139. 139. グローバル:English弊社のUXデザイナー@mikihirocksがHIGのチェックシートをリリースした。 http://bit.ly/flHYBu リリースする時に、既に遅れてしまった。我々はエンジニアだ 日本語版のiOSのAPI文書を待つ?
    140. 140. グローバル:English弊社のUXデザイナー@mikihirocksがHIGのチェックシートをリリースした。 http://bit.ly/flHYBu リリースする時に、既に遅れてしまった。我々はエンジニアだ 遅 い! 日本語版のiOSのAPI文書を待つ?
    141. 141. グローバル:English弊社のUXデザイナー@mikihirocksがHIGのチェックシートをリリースした。 http://bit.ly/flHYBu リリースする時に、既に遅れてしまった。我々はエンジニアだ 日本語版のiOSのAPI文書を待つ?この時代、この世界は 英語のみだ!
    142. 142. What to do?
    143. 143. What to do?アップルの英語ドキュメントを読んでみよう!
    144. 144. What to do?アップルの英語ドキュメントを読んでみよう!WWDC 2010のビデオを見てみよう! 字幕を使っても良い
    145. 145. What to do?アップルの英語ドキュメントを読んでみよう!WWDC 2010のビデオを見てみよう! 字幕を使っても良い英語圏に質問を投げてみよう! stackoverflow.com devforums.apple.com
    146. 146. What to do?アップルの英語ドキュメントを読んでみよう!WWDC 2010のビデオを見てみよう! 字幕を使っても良い英語圏に質問を投げてみよう! stackoverflow.com devforums.apple.comTOEICをやってみよう! ECナビは年内のTOEIC受験がタダだ genesixの親会社
    147. 147. 英語が苦手って言い訳だ!
    148. 148. やれば、出来る!
    149. 149. 未来への道
    150. 150. 未来への道スマートフォン iOS Android
    151. 151. 未来への道スマートフォン iOS Androidモバイルインターネット 10年前? 現在?
    152. 152. 未来への道
    153. 153. 未来への道 genesixを日本一のスマートフォン開発会社に
    154. 154. 一言しか覚えない?
    155. 155. ユーザを喜ばす!
    156. 156. もう少し覚える?
    157. 157. Memoryは命だ!
    158. 158. また余裕がある?
    159. 159. Best Practicesを!
    160. 160. 一緒に ご清聴ありがとう ございました。やりませんか?
    161. 161. 一緒にやりませんか?

    ×