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.

Android学ぶを君へ。生き抜くためのナレッジ共有

56,651 views

Published on

DroidKaigi

Android学ぶを君へ。生き抜くためのナレッジ共有

Note :
https://github.com/operando/DroidKaigi

Published in: Technology
  • Be the first to comment

Android学ぶを君へ。生き抜くためのナレッジ共有

  1. 1. Androidを学ぶ君へ。   ⽣生き抜くためのナレッジ共有 DroidKaigi @operandoOS   Shinobu  Okano
  2. 2. Mercari,  Inc.     Android  Engineer   Garum
 https://github.com/operando/Garum   http://hack-‐‑‒it-‐‑‒iron.hatenablog.com/ ハンバーグ食べたい
  3. 3. 面白そう…(ΦωΦ)
  4. 4. 意味わからない…
  5. 5. 重い…( ゚д゚)
  6. 6. 血と汗と涙の 三年間
  7. 7. ※この発表資料には、 一部暴力的な表現が ありますのでご注意ください。
  8. 8. First Step Developer Framework 2012/03 2013/03 2014/03 2015/01 現在 Mercari
  9. 9. First Step
  10. 10. Android??
  11. 11. Android??
  12. 12. なるほど
  13. 13. ようわからん
  14. 14. とりあえずやってみたこと 端末を買う 入門書を読む ドキュメントを読む
  15. 15. とりあえずやってみたこと 端末を買う 入門書を読む ドキュメントを読む
  16. 16. 端末は重要か?? 昔はエミュレータが 信じられないほどゴミだった
  17. 17. 端末は重要か?? 今も遅いとか言うな(゜_゜)
  18. 18. Genymotion https://www.genymotion.com
  19. 19. それでも端末は重要 エミュレータでは わからないことがいっぱい
  20. 20. それでも端末は重要 ハードウェア 端末依存 デザイン / 見た目 / 操作性 処理速度 etc…
  21. 21. とりあえずやってみたこと 端末を買う 入門書を読む ドキュメントを読む
  22. 22. 入門書は必要か?? いらない 今は
  23. 23. Androidの書籍 Android学ぶ上での書籍について http://hack-it-iron.hatenablog.com/entry/ 2015/03/22/195939
  24. 24. ドキュメントが充実している Android Training + http://developer.android.com/training/index.html API Guides + http://developer.android.com/guide/index.html AndroidTraining (mixi) + http://mixi-inc.github.io/AndroidTraining/
  25. 25. ナレッジが共有されてる Qiita tags Android http://qiita.com/tags/android
  26. 26. とにかく手を動かしてみた1年間 とりあえずアプリを作る ひたすらクソコードを書く とにかくコードを読む
  27. 27. とりあえずアプリを作る TwitterClient https://github.com/operando/TwitterClient
  28. 28. ひたすらクソコードを書く 書かないと + 覚えない + 理解できない + クソコードだと気づかない + Androidのクソさに気づかない
  29. 29. とにかくコードを読む ここの層のメンテナンスしてた
  30. 30. とにかくコードを読む * よくわからないけど面白い * コードを書く時に参考にする * APIで何してるかわかる * なんか詳しくなったつもりになる
  31. 31. とにかくコードを読む * よくわからないけど面白い * コードを書く時に参考にする * APIで何してるかわかる * なんか詳しくなったつもりになる
  32. 32. とにかくコードを読む * よくわからないけど面白い * コードを書く時に参考にする * APIで何してるかわかる * なんか詳しくなったつもりになる
  33. 33. OSSの力を借りる iosched + https://github.com/google/iosched Rebuild + https://github.com/rejasupotaro/Rebuild WordPress-Android + https://github.com/wordpress-mobile/WordPress-Android wordpress-mobile + https://github.com/wordpress-mobile などなど…
  34. 34. 生き抜くためのFirst Step * まずは端末を買おう * なんかアプリ作ろう * 困ったら色んなコードを読もう * できるエンジニアに質問しよう
  35. 35. Developer
  36. 36. 求められるスキルが増える * 一からアプリを設計 * Viewの選定
  37. 37. 求められるスキルが増える * 一からアプリを設計 * Viewの選定
  38. 38. 一からアプリを設計って 要求がアバウト
  39. 39. 一からアプリを設計 この機能使ってみたい これってどうなの? サクッとアプリ作って まかせる OK!
  40. 40. 一からアプリを設計 やっぱりこれ厳しい こうしませんか? OK!
  41. 41. 一からアプリを設計 技術的判断が求められる
  42. 42. 判断材料を貯めこむ * バージョンごとの機能を理解する * Google Play Service * 最新技術・情報のキャッチアップ https://developer.android.com/google/play-services/index.html
  43. 43. 求められるスキルが増える * 一からアプリを設計 * Viewの選定
  44. 44. デザイナーが決めたUIを どんなViewを使用して 実現するのか Viewの選定
  45. 45. このスキル身に付けるのって 結構大変だった Viewの選定
  46. 46. Viewっていっぱいあるし Viewの選定
  47. 47. バージョンによって見た目違うし Viewの選定
  48. 48. Androidって 解像度バラバラだし Viewの選定
  49. 49. みんな辛そうだし Viewの選定
  50. 50. さて、どうしたものか
  51. 51. とりあえず 色んなアプリ見てみるか
  52. 52. とにかく色んなアプリを試す
  53. 53. とにかく色んなアプリを試す
  54. 54. とにかく色んなアプリを試す * 新しいアプリを
 キャッチアップできる * ランクインしないけど いいアプリがある * インストール数が 上がっているアプリがわかる
  55. 55. とにかく色んなアプリを試す * 新しいアプリを
 キャッチアップできる * ランクインしないけど いいアプリがある * インストール数が 上がっているアプリがわかる
  56. 56. とにかく色んなアプリを試す * 新しいアプリを
 キャッチアップできる * ランクインしないけど いいアプリがある * インストール数が 上がっているアプリがわかる
  57. 57. とにかく色んなアプリを試す
  58. 58. とにかく色んなアプリを試す * 気になったアプリを
 とりあえず入れておく
  59. 59. とにかく色んなアプリを試す * 気になったアプリを
 とりあえず入れておく * Webからも追加できる
  60. 60. とにかく色んなアプリを試す * 気になったアプリを
 とりあえず入れておく * Webからも追加できる * アカウントが同じなら 色んな端末で同期できる
  61. 61. 実際のView Tree見てみる adb shell dumpsys activity top
  62. 62. 実際のView Tree見てみる Added Fragments: #0: AccountDrawerFragment{3db2476 #0 id=0x7f0} #1: DiscoverFragment{2cf8c02d #1 id=0x7f0b00b4} #2: SearchLandingFragment{9b2667d #2 id=0x7f}
  63. 63. 実際のView Tree見てみる Added Fragments: #0: AccountDrawerFragment{3db2476 #0 id=0x7f0} #1: DiscoverFragment{2cf8c02d #1 id=0x7f0b00b4} #2: SearchLandingFragment{9b2667d #2 id=0x7f} ふむふむ ここFragmentなのね
  64. 64. 実際のView Tree見てみる SlidingTabLayout{28 app:id/tabs} SlidingTabStrip{28 68}
  65. 65. 実際のView Tree見てみる ふむふむ そんなViewなのね SlidingTabLayout{28 app:id/tabs} SlidingTabStrip{28 68}
  66. 66. 生き抜くためのDeveloper * 技術的判断をできるように * Viewやレイアウトの知識がいる * Release / 運用の知識
  67. 67. Framework
  68. 68. Framework最高!! このへんの仕事してた
  69. 69. Framework最高!! 徐々に 頭のおかしい分野にのめり込む
  70. 70. ここまでくると マジでカオスな世界
  71. 71. 日々増え続ける コード
  72. 72. 技術的負債
  73. 73. Frameworkのコードを読む Androidソースコード 検索サービス https://sites.google.com/site/devcollaboration/ codesearch
  74. 74. Frameworkのコードを読む AndroidXRef http://androidxref.com/ こっちオススメ
  75. 75. Frameworkのコードを読む Frefox + ツリー型タブ https://addons.mozilla.org/ja/firefox/addon/tree- style-tab/
  76. 76. Frameworkのコードを読む
  77. 77. 勉強会やりたい!! まったり Android Framework Code Reading https://mandroidfcr.doorkeeper.jp/events 興味あったら @operandoOS に声かけてー
  78. 78. コードだけじゃないFramework ここの仕事って コマンドよく使うんよ
  79. 79. コマンド大事! Android-Command-Note https://github.com/operando/Android-Command-Note
  80. 80. なぜコマンドが大事か とにかくログが大事 adb logcat -v time adb logcat -v time -b main adb logcat -v time -b system adb logcat -v time -b events adb logcat -v time -b radio
  81. 81. なぜコマンドが大事か 色んな状態を調べるの簡単
  82. 82. なぜコマンドが大事か 色んな状態を調べるの簡単 例) 今表示してる画面何Activityだっけ?
  83. 83. なぜコマンドが大事か 色んな状態を調べるの簡単 例) 今表示してる画面何Activityだっけ? adb shell dumpsys activity top
  84. 84. なぜコマンドが大事か 端末を操作するより コマンドで操作する方が早い
  85. 85. なぜコマンドが大事か 端末を操作するより コマンドで操作する方が早い 例)メールアドレスを入力したい
  86. 86. なぜコマンドが大事か 端末を操作するより コマンドで操作する方が早い 例)メールアドレスを入力したい adb shell input text a@a.com
  87. 87. コマンドをもっと快適に 複数のAndroid端末を同時につな いで困ってませんか? それadb-pecoで選択できるよ! http://techlife.cookpad.com/entry/2014/09/09/172449
  88. 88. コマンド覚えれば 10倍Androidを楽しめる
  89. 89. 生き抜くためのFramework * コードを書くより読む技術が必要 * 気になる部分から読んでみる * 色んなコマンドを試してみよう
  90. 90. Mercari
  91. 91. まだ登録   してない??
  92. 92. 招待コードというもの   がありまして…
  93. 93. これ
  94. 94. ここに⼊入れて   会員登録!
  95. 95. Mercari  Knowledge
  96. 96. Mercari  Knowledge *  いいアプリを作るために   *  Android  三種の神器   *  Check  List
  97. 97. Mercari  Knowledge *  いいアプリを作るために   *  Android  三種の神器   *  Check  List
  98. 98. いいアプリを作るために
  99. 99. いいアプリを作るために 常にアプリを疑う
  100. 100. 常にアプリを疑う
  101. 101. 常にアプリを疑う 実は最近まで
  102. 102. 常にアプリを疑う タブ間のスワイプ移動   できなかった
  103. 103. 常にアプリを疑う 「操作性悪いわ」 「これはないわー」 「なんで誰も疑問に思わないの?」
  104. 104. 常にアプリを疑う 「スワイプしてタブ移動   できた⽅方がいいっすね」
  105. 105. 常にアプリを疑う MaterialTabHost https://github.com/yanzm/MaterialTabHost
  106. 106. 常にアプリを疑う 「区切切り線うざくない?」
  107. 107. 常にアプリを疑う 「消すか」
  108. 108. 常にアプリを疑う という感じで   常に改善し続ける
  109. 109. 常にアプリを疑う 俺たちが作ってるアプリ   最⾼高だわー  
  110. 110. 常にアプリを疑う 俺たちが作ってるアプリ   最⾼高だわー   とか思ってない?
  111. 111. 常にアプリを疑う そんなわけないだろ
  112. 112. 常にアプリを疑う そのアプリもう死んでますよ
  113. 113. Mercariで不不満なこと   どしどし⾔言ってください!
  114. 114. Mercari  Knowledge *  いいアプリを作るために   *  Android  三種の神器   *  Check  List
  115. 115. Mercari  Android   三種の神器
  116. 116. Mercari  Android   三種の神器
  117. 117. QA Client Server Designer Producer
  118. 118. QA Client Server Designer Producer Product   Team
  119. 119. QA Client Server Designer Producer Product   Team
  120. 120. QA Client Server Designer Producer 誰でも   試せる Product   Team
  121. 121. https://deploygate.com/
  122. 122. Mercari  Knowledge *  いいアプリを作るために   *  Android  三種の神器   *  Check  List
  123. 123. Pull  Request  
  124. 124. Pull  Request   -‐‑‒  Check  List  -‐‑‒  
  125. 125. Pull  Request   -‐‑‒  Check  List  -‐‑‒  
  126. 126. Pull  Request   -‐‑‒  Check  List  -‐‑‒  
  127. 127. Pull  Request   -‐‑‒  Check  List  -‐‑‒   *  実装者がチェック  
  128. 128. Pull  Request   -‐‑‒  Check  List  -‐‑‒   *  実装者がチェック   *  チェック漏漏れを防ぐ  
  129. 129. Pull  Request   -‐‑‒  Check  List  -‐‑‒   *  実装者がチェック   *  チェック漏漏れを防ぐ   *  チェック範囲の認識識を共有
  130. 130. Logic  Check  List
  131. 131. Logic  Check  List ##  ロジック   -‐‑‒  [  ]  2.x   -‐‑‒  [  ]  4.x   -‐‑‒  [  ]  5.x
  132. 132. Logic  Check  List ##  端末状態   -‐‑‒  [  ]  機内モード(圏外)   -‐‑‒  [  ]  画⾯面回転
  133. 133. Logic  Check  List ##  端末状態   -‐‑‒  [  ]  機内モード(圏外)   -‐‑‒  [  ]  画⾯面回転 画⾯面回転の確認重要
  134. 134. Design  Check  List
  135. 135. Design  Check  List ##  デザイン   -‐‑‒  [  ]  Mobile  Android  2.x   -‐‑‒  [  ]  Mobile  Android  4.x   -‐‑‒  [  ]  Mobile  Android  5.x   -‐‑‒  [  ]  Tablet  7inch以上  /  10inch  
  136. 136. Design  Check  List ##  デザイン   -‐‑‒  [  ]  Mobile  Android  2.x   -‐‑‒  [  ]  Mobile  Android  4.x   -‐‑‒  [  ]  Mobile  Android  5.x   -‐‑‒  [  ]  Tablet  7inch以上  /  10inch   -‐‑‒  [  ]  ジーニアスよしこチェック
  137. 137. WebView  Check  List
  138. 138. WebView  Check  List ##  WebView   -‐‑‒  [  ]  2.x   -‐‑‒  [  ]  4.0  -‐‑‒  4.3   -‐‑‒  [  ]  4.4   -‐‑‒  [  ]  5.x
  139. 139. WebView  Check  List 何かとお騒がせな2.x ##  WebView   -‐‑‒  [  ]  2.x   -‐‑‒  [  ]  4.0  -‐‑‒  4.3   -‐‑‒  [  ]  4.4   -‐‑‒  [  ]  5.x
  140. 140. WebView  Check  List Chrominiumベースになった4.4 ##  WebView   -‐‑‒  [  ]  2.x   -‐‑‒  [  ]  4.0  -‐‑‒  4.3   -‐‑‒  [  ]  4.4   -‐‑‒  [  ]  5.x
  141. 141. WebView  Check  List WebViewがAPKになった5.x ##  WebView   -‐‑‒  [  ]  2.x   -‐‑‒  [  ]  4.0  -‐‑‒  4.3   -‐‑‒  [  ]  4.4   -‐‑‒  [  ]  5.x
  142. 142. チェックの共有しよう!
  143. 143. Pull  Request  Please!! https://github.com/operando/DroidKaigi
  144. 144. Testing
  145. 145. Testing テストコードがなくて   ⾟辛いです・・・(/ω\)
  146. 146. Testing??
  147. 147. Testing?? Integration Testing Continuous Integration(CI) Unit Test UI Test Other
  148. 148. Testing?? Integration Testing Continuous Integration(CI) Unit Test UI Test Other
  149. 149. Android  Testing *  ロジックのテストからやってみよう   *  テストする⽂文化を作ろう   *  テスト/⾃自動化の導⼊入は早いほどいい
  150. 150. Android  Testing *  ロジックのテストからやってみよう   *  テストする⽂文化を作ろう   *  テスト/⾃自動化の導⼊入は早いほどいい
  151. 151. Android  Testing *  Junit   *  Espresso   *  Robolectric     *  UI  Automator   *  Appium   *  Monkey  Talk   etc…
  152. 152. Android  Testing Junit  +  Mockito     +  (PowerMock)     +  (CI  (CircleCI  or  Travis  CI  ))
  153. 153. Android  Testing *  テストの⾃自動化が全てではない   *  Productによってテストも変わる   *  テスト  ≠  誰でもできる   *  テスト  ≠  品質向上/安全
  154. 154. ⽣生き抜くためのMercari
  155. 155. ⽣生き抜くためのMercari *  常にアプリを疑い、改善を続ける   *  知識識の共有でSクラスのチームを作る
  156. 156. まとめ Androidだけでやっていくの 正直厳しいよねー
  157. 157. まとめ でも みんなでナレッジ共有して 頑張りましょう!
  158. 158. DroidKaigi Thanks. @operandoOS Shinobu Okano

×