Android エンジニアになって 2 年の学び

Android エンジニアになって 2 年の学び

DroidKaigi 2016

Dd17014e380450cfed5d55ff20fa3dfd?s=128

Ryutaro Miyashita

February 19, 2016
Tweet

Transcript

  1. "OESPJEؒٝآص،חז׏ג䎃ך㷕ן -FBSOGSPNZFBST UPCFDPNF "OESPJEFOHJOFFS %SPJE,BJHJOEEBZ300.#

  2. *OUSPEVDUJPO 3ZVUBSP.JZBTIJUB $IBU8PSL"QQMJDBUJPOT%FWFMPQNFOU%JWJTJPO "OESPJE5FBN-FBEFS

  3. 5PEBZˏTNFOV )PXUPMFBSOJOHUIF"OESPJE%FW %JFSFODFUPTPMPEFWBOEUFBNEFW %FDPOTUSVDUJPOⴓ鍑ׅ׷ 4FMFDUUIFBQQSPQSJBUFUFDI黝ⴖח䪮遭׾鼅ע 6TFUIFBDUVBMEFWJDF㹋堣׾⢪ֲ 4PMP➂דꟚ涪ׅ׷ 5FBNث٦يדꟚ涪ׅ׷ 'PSUFBNEFWFMPQNFOUث٦يꟚ涪ך׋׭ח

  4. 5PEBZˏTNFOV )PXUPMFBSOJOHUIF"OESPJE%FW %JFSFODFUPTPMPEFWBOEUFBNEFW %FDPOTUSVDUJPOⴓ鍑ׅ׷ 4FMFDUUIFBQQSPQSJBUFUFDI黝ⴖח䪮遭׾鼅ע 6TFUIFBDUVBMEFWJDF㹋堣׾⢪ֲ 4PMP➂דꟚ涪ׅ׷ 5FBNث٦يדꟚ涪ׅ׷ 'PSUFBNEFWFMPQNFOUث٦يꟚ涪ך׋׭ח

  5. %FDPOTUSVDUJPOⴓ鍑ׅ׷ $MJDLUIFCVUUPOUPOFYUBDUJWJUZUSBOTJUJPO نةٝ׾䬃׃ג如ך歗꬗ח鼂獳ׅ׷

  6. %FDPOTUSVDUJPOⴓ鍑ׅ׷ $MJDLUIFCVUUPO /FYUBDUJWJUZUSBOTJUJPO $MJDLؙٔحؙׅ׷ -POHQSFTTꞿ䬃׃ &OBCMF%JTBCMF剣⸬搀⸬ /PSNBM兛鸐ח鼂獳 4FOEJOHEBUB鼂獳儗חر٦ة׾床ׅחכ 5SBOTJUJPOFFDUT歗꬗鼂獳儗חؒؿؙؑز׾ַֽ׋ְ

  7. %FDPOTUSVDUJPOⴓ鍑ׅ׷ $MJDLUIFCVUUPO /FYUBDUJWJUZUSBOTJUJPO $MJDLؙٔحؙׅ׷ -POHQSFTTꞿ䬃׃ &OBCMF%JTBCMF剣⸬搀⸬ /PSNBM兛鸐ח鼂獳 BOETFOEEBUB鼂獳儗חر٦ة׾床ׅחכ 5SBOTJUJPOFFDUT歗꬗鼂獳儗חؒؿؙؑز׾ַֽ׋ְ

  8. %FDPOTUSVDUJPOⴓ鍑ׅ׷ $MJDL "OPOZNPVTDMBTT⼡せؙٓأ "OPOZNPVTDMBTT JOTUBODFWBM⼡せؙٓأ ؎ٝأةٝأ㢌侧 *NQMFNFOUTˑJOUFSGBDF˒؎ٝة٦ؿؑ٦أ׾㹋鄲 8SJUFJO9.-9.-ח鎸鶢 6TFˑ%BUBCJOEJOH˒ر٦ةغ؎ٝر؍ؚٝ׾⢪ֲ BOENPSF

    6TFˑ#VUUFS,OJGF˒#VUUFS,OJGFٓ؎ـٓٔ׾⢪ֲ
  9. %FDPOTUSVDUJPOⴓ鍑ׅ׷      "OPOZNPVTDMBTT⼡せؙٓأ

  10. %FDPOTUSVDUJPOⴓ鍑ׅ׷ 
  
     "OPOZNPVTDMBTT JOTUBODFWBM⼡せؙٓأ

    ؎ٝأةٝأ㢌侧
  11. %FDPOTUSVDUJPOⴓ鍑ׅ׷ 
 
 
  
  
  

    *NQMFNFOUTˑJOUFSGBDF˒؎ٝة٦ؿؑ٦أ׾㹋鄲
  12. %FDPOTUSVDUJPOⴓ鍑ׅ׷         8SJUFJO9.-9.-ח鎸鶢

  13. %FDPOTUSVDUJPOⴓ鍑ׅ׷         

     6TFˑ%BUBCJOEJOH˒ر٦ةغ؎ٝر؍ؚٝ׾⢪ֲ
  14. %FDPOTUSVDUJPOⴓ鍑ׅ׷    6TFˑ#VUUFS,OJGF˒#VUUFS,OJGFٓ؎ـٓٔ׾⢪ֲ

  15. %FDPOTUSVDUJPOⴓ鍑ׅ׷ %FDPOTUSVDUJPOUIFBDUJPOBOEWFSJGZPOFCZPOF ⴓ鍑׃גמהא׆א嗚鏾ׅ׷ 'JOEUIFCFTUXBZ ♧殢ְְװ׶倯׾鋅אֽ׷

  16. 5PEBZˏTNFOV )PXUPMFBSOJOHUIF"OESPJE%FW %JFSFODFUPTPMPEFWBOEUFBNEFW %FDPOTUSVDUJPOⴓ鍑ׅ׷ 4FMFDUUIFBQQSPQSJBUFUFDI黝ⴖח䪮遭׾鼅ע 6TFUIFBDUVBMEFWJDF㹋堣׾⢪ֲ 4PMP➂דꟚ涪ׅ׷ 5FBNث٦يדꟚ涪ׅ׷ 'PSUFBNEFWFMPQNFOUث٦يꟚ涪ך׋׭ח

  17. 4FMFDUUIFBQQSPQSJBUFUFDI黝ⴖח䪮遭׾鼅ע 7PMMFZ)551OFUXPSLJOHMJCSBSZ 1SFTFOUFEBUUIF(PPHMF*0 .VMUJGVODUJPOBM 6TFGVM"1*T /FUXPSL*NBHF7JFX *NBHF-PBEFS

  18. 4FMFDUUIFBQQSPQSJBUFUFDI黝ⴖח䪮遭׾鼅ע (PPHMFPDJBM1JFDFPGNJOE (PPHMFⰕ䒭׌ַ׵㸜䗰

  19. 4FMFDUUIFBQQSPQSJBUFUFDI黝ⴖח䪮遭׾鼅ע (PPHMFPDJBMQJFDFPGNJOE /05QJFDFPGNJOE 㸜䗰דכזְ

  20. 4FMFDUUIFBQQSPQSJBUFUFDI黝ⴖח䪮遭׾鼅ע *UEPFTOUUBLF"OESPJE4%,BOEJOUFHSJUZ "OESPJE4%,ה侭さ䚍ָה׸גְזְ Apache HTTP Client Removal Android 6.0 release

    removes support for the Apache HTTP client. If your app is using this client and targets Android 2.3 (API level 9) or higher, use the HttpURLConnection class instead. This API is more efficient because it reduces network use through transparent compression and response caching, and minimizes power consumption. To continue using the Apache HTTP APIs, you must first declare the following compile-time dependency in your build.gradle file: android { useLibrary 'org.apache.http.legacy' } link: http://bit.ly/1PvOQwd
  21. 6TJOHBMPU

  22. 4FMFDUUIFBQQSPQSJBUFUFDI黝ⴖח䪮遭׾鼅ע (PPHMFJTOPUNPOPMJUIJD (PPHMF׮♧卐䀵דכזְ Image: Creative Commons BY 2.0, link: http://bit.ly/1O8ZBka

  23. 4FMFDUUIFBQQSPQSJBUFUFDI黝ⴖח䪮遭׾鼅ע 4VQQPSU-JCSBSZ The Android Support Library package is a set

    of code libraries that provide backward-compatible versions of Android framework APIs as well as features that are only available through the library APIs. link: http://developer.android.com/intl/ja/tools/support-library/index.html
  24. 4FMFDUUIFBQQSPQSJBUFUFDI黝ⴖח䪮遭׾鼅ע 'PSCBDLXBSEDPNQBUJCMF"1* 
 5IBUˏTOPUBMM 䖓倯✼䳔ך׋׭ך"1* ׉׸׌ֽדכ֮׶תׇ׿

  25. 4FMFDUUIFBQQSPQSJBUFUFDI黝ⴖח䪮遭׾鼅ע BOESPJEBQQ'SBHNFOU BOESPJETVQQPSUWBQQ'SBHNFOU 4UBOEBSEMJCSBSJFTˑ'SBHNFOU˒"1* WTVQQPSUMJCSBSJFTˑ'SBHNFOU˒"1* 8IJDIEPZPVXBOUUPVTF ו׍׵׾⢪ְתַׅ

  26. 4FMFDUUIFBQQSPQSJBUFUFDI黝ⴖח䪮遭׾鼅ע BOESPJEBQQ'SBHNFOU BOESPJETVQQPSUWBQQ'SBHNFOU 4UBOEBSEMJCSBSJFTˑ'SBHNFOU˒"1* WTVQQPSUMJCSBSJFTˑ'SBHNFOU˒"1* 4VQQPSUMJCSBSZWFSTJPOTIPVMECFVTFE؟ه٦زٓ؎ـٓٔ晛׾⢪ְת׃׳ֲ

  27. 4FMFDUUIFBQQSPQSJBUFUFDI黝ⴖח䪮遭׾鼅ע 'JYFETUBOEBSEMJCTPGCVHBUTVQQPSUMJCT 4VQQPSU-JCSBSZד垥彊ٓ؎ـٓٔ晛ךغָؚ湫׏גְ׷

  28. 4FMFDUUIFBQQSPQSJBUFUFDI黝ⴖח䪮遭׾鼅ע .BUFSJBM%FTJHOOFFET4VQQPSU-JCSBSZ .BUFSJBM%FTJHO㼎䘔ך׋׭חכ4VQQPSU-JCSBSZָ䗳銲 
 
 
 
  ˑWBQQDPNQBU˒JODMVEFTˑWTVQQPSUMJCSBSZ˒ WBQQDPNQBUٓ؎ـٓٔחכWTVQQPSUMJCSBSZָず唓ׁ׸גְתׅ

  29. 4FMFDUUIFBQQSPQSJBUFUFDI黝ⴖח䪮遭׾鼅ע 4PNFUJNFT4VQQPSU-JCSBSZQSPEVDFTCVH ׋תח4VQQPSU-JCSBSZָغؚ׾欰׫⳿ֿׅה׮֮׷

  30. None
  31. 4FMFDUUIFBQQSPQSJBUFUFDI黝ⴖח䪮遭׾鼅ע 4VQQPSU-JCSBSZIBTTJNJMBS"1*OBNFT 4VQQPSU-JCSBSZכ⡂׋せ⵸ך"1*׾䭯׏גְ׷

  32. 4FMFDUUIFBQQSPQSJBUFUFDI黝ⴖח䪮遭׾鼅ע BOESPJETVQQPSUWQSFGFSFODF
 1SFGFSFODF'SBHNFOU BOESPJETVQQPSUWQSFGFSFODF
 1SFGFSFODF'SBHNFOU$PNQBU Standard libsˑ'SBHNFOU˒CBTF Support libsˑ'SBHNFOU˒CBTF BOEVTF3FDZDMFS7JFX

  33. 4FMFDUUIFBQQSPQSJBUFUFDI黝ⴖח䪮遭׾鼅ע 7FSJGZPOFCZPOF מהא׆א嗚鏾ׅ׷ 'JOEUIFCFTUXBZ ♧殢ְְװ׶倯׾鋅אֽ׷

  34. 4FMFDUUIFBQQSPQSJBUFUFDI黝ⴖח䪮遭׾鼅ע .BUFSJBM%FTJHO We challenged ourselves to create a visual language

    for our users that synthesizes the classic principles of good design with the innovation and possibility of technology and science. This is material design. This spec is a living document that will be updated as we continue to develop the tenets and specifics of material design. link: https://www.google.com/design/spec/material-design/introduction.html Image: Creative Common BY 2.0, http://bit.ly/20wocqc
  35. 4FMFDUUIFBQQSPQSJBUFUFDI黝ⴖח䪮遭׾鼅ע B'VOEBNFOUBM%FTJHO(VJEFMJOFT 劤呓涸דꅾ銲זرؠ؎ٝؖ؎سٓ؎ٝ

  36. 4FMFDUUIFBQQSPQSJBUFUFDI黝ⴖח䪮遭׾鼅ע "MMJOUFSBDUJPOTBSFEFOFECZOVNCFST 䠬鋙涸ז銲稆׮侧㶵ד爙ׁ׸גְ׷ *UJTSFDPNNFOEFEUPGPMMPXUIFHVJEFMJOFT ؖ؎سٓ؎ٝחכ㛇劤涸חכ䖞ֲץֹ

  37. 4FMFDUUIFBQQSPQSJBUFUFDI黝ⴖח䪮遭׾鼅ע #65 -JNJUFEBUVOEFS"OESPJE "OESPJE⟃♴דכꣲ㹀涸ז㼎䘔חז׷

  38. 4FMFDUUIFBQQSPQSJBUFUFDI黝ⴖח䪮遭׾鼅ע "OESPJE "OESPJE

  39. 4FMFDUUIFBQQSPQSJBUFUFDI黝ⴖח䪮遭׾鼅ע 26TFˑ1PMZMM˒MJCSBSJFT هٔؿ؍ٕ禸ٓ؎ـٓٔ׾⢪ֲץַֹ "/0%POUVTFJUJGZPVDBO ⢪׻זֻג葺ְז׵⢪׻זְ倯ָ葺ְ

  40. 4FMFDUUIFBQQSPQSJBUFUFDI黝ⴖח䪮遭׾鼅ע "OESPJE"QQT1SPHSFTTJWF&OIBODFNFOU "OESPJE'VMMQPXFS.BUFSJBM%FTJHO "OESPJE#BTJD.BUFSJBM%FTJHO .BZCF(PPHMFBQQTBSFUBLJOHUIJTTUSBUFHZ㢳ⴓ(PPHMF醡،فٔ׮ֿך䨌殛

  41. 5PEBZˏTNFOV )PXUPMFBSOJOHUIF"OESPJE%FW %JFSFODFUPTPMPEFWBOEUFBNEFW %FDPOTUSVDUJPOⴓ鍑ׅ׷ 4FMFDUUIFBQQSPQSJBUFUFDI黝ⴖח䪮遭׾鼅ע 6TFUIFBDUVBMEFWJDF㹋堣׾⢪ֲ 4PMP➂דꟚ涪ׅ׷ 5FBNث٦يדꟚ涪ׅ׷ 'PSUFBNEFWFMPQNFOUث٦يꟚ涪ך׋׭ח

  42. 6TFUIFBDUVBMEFWJDF㹋堣׾⢪ֲ 1SFQBSFEBDUVBMEFWJDF  "55)&7&3:#&(*//*/( ♧殢剑ⴱַ׵㹋堣׾欽䠐׃ת׃׳ֲ

  43. 6TFUIFBDUVBMEFWJDF㹋堣׾⢪ֲ %FWFMPQBQQTBOEUFTUJUPOUIFEFWJDF TJNVMUBOFPVTMZ ،فٔכ鍗׶זָ׵Ꟛ涪׃ת׃׳ֲ

  44. 0VSˑ'JOHFST˒BSF#*((&3UIBONPVTFQPJOUFS 6TFUIFBDUVBMEFWJDF㹋堣׾⢪ֲ 猘׋׍ך䭷כوؐأه؎ٝة״׶׮㣐ְֹ

  45. 6TFUIFBDUVBMEFWJDF㹋堣׾⢪ֲ "OESPJE&NVMBUPSJT4-08 "OESPJE&NVMBUPSכ鹼ְ כ鸞ְ (FOZNPUJPOכ馄鸞ְ "OESPJE&NVMBUPSJT'"45 (FOZNPUJPOJT6-53"'"45

  46. 6TFUIFBDUVBMEFWJDF㹋堣׾⢪ֲ 4QFFEJTKVTUJDF 8IBUˏTJTTVFT 鸞ְֿהכ姻纏 ⡦ָ㉏겗זךַ

  47. 6TFUIFBDUVBMEFWJDF㹋堣׾⢪ֲ &NVˏT*0JTUPPGBTUBOEEFMBZFEEJTDPWFS*0QSPCMFN ⢽ִל ؒىُٖ٦ةך*0ָ鸞ֺׅג*0㉏겗ך涪鋅ָ鹼׸׷ &YBNQMF

  48. 6TFUIFBDUVBMEFWJDF㹋堣׾⢪ֲ 4IPVMEDIPPTFXIJDIEFWJDF וךرغ؎أ׾鼅עץַֹ

  49. /FYVT9 /FYVT1 )JHITQFD 'JOHFSQSJOUTFOTPS 1VSF"OESPJE /FYVT)JHIMZSFDPNNFOEFE .JETQFD SFMBUJWFMZ "OESPJEGBDUPSZJNBHF 6TFUIFBDUVBMEFWJDF㹋堣׾⢪ֲ

    ˑ/FYVT˒EFWJDF
  50. 6TFUIFBDUVBMEFWJDF㹋堣׾⢪ֲ ˑ.BLFS˒EFWJDF &RVJQPXOˑQPXFSTBWJOHGFBUVSF˒POEFWJDF 5IJTJT53"1GFBUVSF FY$BOOPUSFDFJWF($.

  51. 5PEBZˏTNFOV )PXUPMFBSOJOHUIF"OESPJE%FW %JFSFODFUPTPMPEFWBOEUFBNEFW %FDPOTUSVDUJPOⴓ鍑ׅ׷ 4FMFDUUIFBQQSPQSJBUFUFDI黝ⴖח䪮遭׾鼅ע 6TFUIFBDUVBMEFWJDF㹋堣׾⢪ֲ 4PMP➂דꟚ涪ׅ׷ 5FBNث٦يדꟚ涪ׅ׷ 'PSUFBNEFWFMPQNFOUث٦يꟚ涪ך׋׭ח

  52. 4PMP➂דꟚ涪ׅ׷ 'SFFEPN 'SFFUPTFMFDUMJCSBSJFTٓ؎ـٓٔ鼅䫛ך荈歋 'SFFUPDIBOHFDPEF؝٦س㢌刿ך荈歋 4FMGNBSHF (JU)VC ˑ8*1˒1VMMSFRVFTU 8SJUFEPXOTNBMMGVODUJPOBOEJNQMFNFOU *NQMFNFOUTBMMGVODUJPOBOENFSHF 8*113׾⡲׶ծ㼭ׁז堣腉⽃⡘ד剅ֹ⳿׃ծⰋג㹋鄲׃׋׵و٦آׅ׷

  53. None
  54. 5PEBZˏTNFOV )PXUPMFBSOJOHUIF"OESPJE%FW %JFSFODFUPTPMPEFWBOEUFBNEFW %FDPOTUSVDUJPOⴓ鍑ׅ׷ 4FMFDUUIFBQQSPQSJBUFUFDI黝ⴖח䪮遭׾鼅ע 6TFUIFBDUVBMEFWJDF㹋堣׾⢪ֲ 4PMP➂דꟚ涪ׅ׷ 5FBNث٦يדꟚ涪ׅ׷ 'PSUFBNEFWFMPQNFOUث٦يꟚ涪ך׋׭ח

  55. 5FBNث٦يדꟚ涪ׅ׷ $PNNVOJDBUJPO %JWJTJPOPGSPMFT䕵ⶴⴓ䬐 $PEFSFWJFX؝٦سٖؽُ٦ָדֹ׷ 4IBSFEUPPMTDPOHVSBUJPO "OESPJE4UVEJP $PEF4UZMF"OESPJE4UVEJPך$PEF4UZMF׾Ⱏ剣ׅ׷ $IBU 7JEFPDPOGFSFODFثٍحزװؽرؔ⠓陽

  56. 5FBNث٦يדꟚ涪ׅ׷ $PEF3FWJFXXJMMUBLFUJNF ؝٦سٖؽُ٦כ儗꟦ַַָ׷

  57. 5FBNث٦يדꟚ涪ׅ׷ $PEJOHDPOWFOUJPOTJTUPSFEVDFUIFUJNF ؝٦ر؍ؚٝ鋉秈ָ儗꟦׾瀉簭ׅ׷ &YBNQMF

  58. None
  59. link: https://github.com/cookpad/styleguide

  60. 5PEBZˏTNFOV )PXUPMFBSOJOHUIF"OESPJE%FW %JFSFODFUPTPMPEFWBOEUFBNEFW %FDPOTUSVDUJPOⴓ鍑ׅ׷ 4FMFDUUIFBQQSPQSJBUFUFDI黝ⴖח䪮遭׾鼅ע 6TFUIFBDUVBMEFWJDF㹋堣׾⢪ֲ 4PMP➂דꟚ涪ׅ׷ 5FBNث٦يדꟚ涪ׅ׷ 'PSUFBNEFWFMPQNFOUث٦يꟚ涪ך׋׭ח

  61. 'PSUFBNEFWFMPQNFOUث٦يꟚ涪ך׋׭ח "OESPJEˑDPEJOH˒IBWFEJWFSTJUZ "OESPJE،فٔך؝٦ر؍ؚٝכ㢳圫䚍ָ֮׷

  62. 'PSUFBNEFWFMPQNFOUث٦يꟚ涪ך׋׭ח $MJDL BHBJO "OPOZNPVTDMBTT⼡せؙٓأ "OPOZNPVTDMBTT JOTUBODFWBM⼡せؙٓأ ؎ٝأةٝأ㢌侧 *NQMFNFOUTˑJOUFSGBDF˒؎ٝة٦ؿؑ٦أ׾㹋鄲 8SJUFJO9.-9.-ח鎸鶢 6TFˑ%BUBCJOEJOH˒ر٦ةغ؎ٝر؍ؚٝ׾⢪ֲ

    BOENPSF 6TFˑ#VUUFS,OJGF˒#VUUFS,OJGFٓ؎ـٓٔ׾⢪ֲ
  63. 'PSUFBNEFWFMPQNFOUث٦يꟚ涪ך׋׭ח "TZODISPOPVT 5ISFBE "TZOD5BTL "TZOD5BTL-PBEFS &YFDVUPS4FSWJDF *OUFOU4FSWJDF BOENPSF 5IJSEQBSUZMJCT 3Y+BWB

    1SJPSJUZ+PC2VFVF
  64. 'PSUFBNEFWFMPQNFOUث٦يꟚ涪ך׋׭ח .BLFUIFEFTJHOHVJEFMJOFTGPS$0%& ؝٦سך׋׭ךرؠ؎ٝؖ؎سٓ؎ٝ׾⡲׷

  65. 'PSUFBNEFWFMPQNFOUث٦يꟚ涪ך׋׭ח 8SJUFBEPDTGSPNUIFCFHJOOJOH $PEJOHDPOWFOUJPOT؝٦ر؍ؚٝ鋉秈 $PEFEFTJHODPODFQU؝٦سך鏣鎘䙼䟝 %FTJHOHVJEFMJOFرؠ؎ٝؖ؎س Documents will help of team

    development, definitely سًُؗٝزכ꟦麩ְזֻث٦يꟚ涪ך䩛⸔ֽ׾ׅ׷
  66. 'JOBMMZ )PXUPMFBSOJOHUIF"OESPJE%FW %JFSFODFUPTPMPEFWBOEUFBNEFW %FDPOTUSVDUJPOUPWFSJGZPOFCZPOF (PPHMFJTOPUNPOPMJUI .BUFSJBM%FTJHOBOE1SPHSFTTJWF&OIBODFNFOU 5PXSJUFBEPDVNFOUGSPNUIFUJNFPGPOF $PEJOHDPOWFOUJPOTJTUPSFEVDFUIFSFWJFXUJNF 6TFBDUVBMEFWJDF BOESFDPNNFOE/FYVT

  67. 5IBOLZPV