Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

1.29.user,user,user

1,206 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
  • Be the first to comment

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. 一緒にやりませんか?

×