Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Mobile App Development for Perl Mongers

Mobile App Development for Perl Mongers

A talk about Client-Fontend and Client-Backend on YAPC::Asia 2014

ninjinkun

August 30, 2014
Tweet

More Decks by ninjinkun

Other Decks in Programming

Transcript

  1. .PCJMF"QQ%FWFMPQNFOU

    GPS1FSM.POHFST
    OJOKJOLVOYHGY
    :"1$"TJB 5PLZP

    View Slide

  2. w $MJFOU'SPOUFOE&OHJOFFSJOHOJOKJOLVO
    w $MJFOU#BDLFOE&OHJOFFSJOHHGY
    w :"1$GN5BMLTIPX
    "HFOEB

    View Slide

  3. $MJFOU'SPOFOE&OHJOFFSJOH
    'BCMJDJOD

    OJOKJOLVO

    View Slide

  4. OJOKJOLVO
    w J04"OESPJEFOHJOFFS
    w IUUQHJUIVCDPNOJOKJOLVO
    w /+,8FC7JFX1SPHSFTTˑ
    w /+,4DSPMM'VMM4DSFFOˑ

    View Slide

  5. OJOKJOLVO
    w 'SPOUFOEFOHJOFFS
    w *OUFSFTUFEJO
    w #FUUFSVTFSFYQFSJFODF
    w -FTTDPEF IJHIQFSGPSNBODF

    View Slide

  6. 'BCMJDJOD
    w 'MFBNBSLFUBQQl'SJMz
    w 8PNFOPOMZ
    w )VOESFETNJMMJPOVTFST
    w .PCJMF"QQpSTU
    w ZFBSTPME4UBSUVQ

    View Slide

  7. "HFOEB
    w 6*%FTJHOJOH
    w 'SPOUFOE&OHJOFFSJOH
    w 0QFO4PVSJOH

    View Slide

  8. 6*%FTJHOJOH

    View Slide

  9. %FTJHOFSBOE&OHJOFFS
    w 8FC"QQ
    w )5.-$44P⒎FSFEEJWJTJPOPGXPSL
    w /BUJWF"QQ
    w *NQMFNFOUWJFXTXJUI0CK$+BWB
    w &OHJOFFSTNVTUJNQMFNFOUNPTUPGUIF6*

    View Slide

  10. 8IZFOHJOFFSTTIPVMEEFTJHO6*
    w &OHJOFFSTIBWFLOPXMFEHFDPEFBOE4%,
    w $PTUJOHBOEBWPJESPMMCBDL
    w &OHJOFFSTTIPVMEKPJO6*EFTJHOQSPDFTT

    View Slide

  11. 1BQFS1SPUPUZQJOH
    w %SBXNPDLXJUIQBQFS
    w &BTZGPSFOHJOFFST
    w %PO`UOFFEHSBQIJDBMUFDIOJRVF
    w %SBX6*JEFBT
    w 6*1BUUFSO4%,UBLFO
    w $PPMGFBUVSFQPQVMBSBQQVTFE
    w *OOPWBUJWFJEFB

    View Slide

  12. 1BQFSQSPUPUZQJOHDBNQ
    w ,JDLP⒎OFXSFOFXBQQT
    w XJUIBEJSFDUPS EFTJHOFS FOHJOFFS
    w &WFSZPOFESBXQSPUPUZQFT
    w .BTIVQFBDIQSPUPUZQF
    w 0VUQVUXJUIUIF101BQQ

    View Slide

  13. 6TFS5FTUJOH
    w 5FTUQSPUPUZQFTXJUISFBMVTFST
    w 0CTFSWFIPXBVTFSVTFTPVSBQQ
    w *OUFSWJFXXIBUQPJOUJTIBSEUPVOEFSTUBOE

    View Slide

  14. 'SPOUFOE&OHJOFFSJOH

    View Slide

  15. 4ZODISPOJTFTUBUFT
    w 4IBSFTUBUFTCFUXFFO7JFXT
    w 4UBUFTBSFVQEBUFEBTZODISPOPVTMZ
    w $BMMXFC"1* HPUSFTQPOTF VQEBUFTUBUF

    ʜBOECSPBEDBTU

    View Slide

  16. l-JLFzJO'SJM"QQ

    View Slide

  17. l-JLFzJO'SJM"QQ
    1045MJLF"1*
    *UFNNPEFMMJLF
    )JMJHIUὑJDPO
    6QEBUFMJLFDPVOUT
    /PUJGZMJLFVQEBUF
    3FESBXBOJUFNDFMM
    1BTTBOJUFNNPEFM
    4IPXBOJUFNWJFX

    View Slide

  18. l-JLFzJO'SJM"QQ

    View Slide

  19. )PXUPTZODTUBUF
    w (MPCBMOPUJpDBUJPO
    w 4UBUFNBOBHFSTJOHMFUPO
    w $IBJOFEEFMFHBUFPSDBMMCBDL
    w 0CTFSWFS

    View Slide

  20. .77. .PEFM7JFX7JFX.PEFM

    w 7JFX.PEFM
    w IBTTUBUFBOEMPHJDSFMBUFEUPWJFX
    w 1PQVMBSJO+4 "OHVMBS 7VF ,OPDLPVUʜ

    w 3FBDUJWF$PDPB "OESPJE#JOEJOH
    w "HHSFHBUFTUBUFTUPWJFXNPEFM

    View Slide

  21. l-JLFzXJUI.77.
    7JFX.PEFM

    -JLF
    %FUFDU7JFX.PEFMVQEBUF
    3FESBXDFMMBVUPNBUJDBMMZ
    1BTTl*UFNz
    7JFX.PEFM

    View Slide

  22. 3FBDUJWF1SPHSBNNJOH
    w 1SPHSBNNJOHXJUIBTZODISPOPVTEBUBTUSFBN
    w 3FBDUJWF$PDPB 3Y+BWB
    w 4VJUBCMFGPSXFCTFSWJDFDMJFOUBQQT*UIJOL
    w #VUʜIBSEUPMFBSO
    w 5IFJOUSPEVDUJPOUP3FBDUJWF1SPHSBNNJOHZPVWFCFFO
    NJTTJOH
    w ʲ຋༁ʳ͋ͳ͕ͨٻΊ͍ͯͨϦΞΫςΟϒϓϩάϥϛϯάೖ໳
    IUUQTHJTUHJUIVCDPNTUBMU[FFCDBCDG
    IUUQOJOKJOLVOIBUFOBCMPHDPNFOUSZJOUSPSYKB

    View Slide

  23. 0QFO4PVSDJOH

    View Slide

  24. 044JO.PCJMF"QQT
    w 044JTBMTPIPUJONPCJMFBQQTSFDFOUMZ
    w #VUTUJMMGSPOUJFS
    w 5PPMDIBJO
    w $PDPB1PET (SBEMF XJUI.BWFO$FOUSBM

    View Slide

  25. 0446*
    w 5IFSFBSFNBOZ0446*
    FMFNFOUT
    w -PPLJOHGPS044JGDBO`U
    JNQMFNFOUXJUI4%,TUBOEBSE
    w #VUʜ6*044BVUIPSJTIBSE
    w /FFETDBUDIVQ04VQEBUFT
    FWFSZZFBS

    View Slide

  26. 4UPMFOGSPNPUIFSMBOHVBHFT
    w .BHJDBM3FDPSE 6OEFSTDPSFN #MPDLT,JU
    w "DUJWF"OESPJE "OESPJE2VFSZ 

    "OESPJE#PPUTUSBQ

    View Slide

  27. $POUSJCVUJOH
    w .BOZNPEVMFTIPTUFEPO(JU)VC
    w 04VQEBUFJTDIBODFUPDPOUSJCVUF
    w 3FQPSUQSPCMFNTPO04BOEIBSEXBSF

    View Slide

  28. 1VCMJTI:PVS.PEVMF
    w 6TFBOJNBUFE(*'JO3&"%.&
    w "UUBDI%FNP"QQ
    w 3FMFBTFEFNPUP(PPHMF1MBZ
    "OESPJE

    View Slide

  29. -FBSOGSPN1FSM
    w 8IBU$1"/BVUIPSTIBWFCFFOEPJOH
    w $POUSJCVUFUP044CFZPOEDPNQBOJFTBOE
    JOEJWJEVBMT

    View Slide

  30. 8SBQVQ
    w +PJO6*EFTJHOQSPDFTT
    w .77.BOE3FBDUJWF1SPHSBNNJOHBSF

    UIFGVUVSF
    w 044DVMUVSFJTBDUJWFBMTPJONPCJMFBQQT

    View Slide

  31. 8FBSFIJSJOH
    w J04"OESPJEFOHJOFFST
    w +PJOPVS69EFTJHOQSPDFTT
    w 8FCBQQMJDBUJPOFOHJOFFST
    w 3BJMT &MBTUJDTFBSDI
    4FBSDIl'BCMJDz

    View Slide

  32. Client-Backend Engineering
    Fuji, Goro
    Cookpad Inc.
    Mobile Application Development for Perl Mongers
    YAPC::Asia 2014, Tokyo, 2014/8/30

    View Slide

  33. @__gfx__
    • A client-backend engineer
    • Working on libraries, environments, and CI
    on both Android and iOS apps
    • As a CPAN author: Data::Validator, Text::Xslate
    • Loving Android Studio and AppCode

    View Slide

  34. View Slide

  35. View Slide

  36. The number of monthly users
    0M
    3.6M
    7.2M
    10.8M
    14.4M
    18M
    Jul Oct Jan Apr Jul Oct Jan Apr
    PC
    Smartpohone browsers
    Smartpohone apps
    Feature phones
    Others
    44.04 million
    ʢAs of April 2014ʣ

    View Slide

  37. The number of installations
    iOS 1,010m Android 990m
    ʢAs of April 2014ʣ

    View Slide

  38. How Mobile
    Application
    Development Runs

    View Slide

  39. A long time ago in a
    galaxy far, far away…

    View Slide

  40. Lots of problems
    • Communication cost:
    • service teams mobile app team
    • Different release cycle:
    • web: 10/day
    • app: 2/month
    • The will of installations
    • Each user sees a random version of apps
    • Continuous integration is really difficult

    View Slide

  41. How our mobile teams were
    • Cookpad started as a web service
    • Cookpad mobile apps had followed the web
    • Service teams were tend to order the new
    features to the mobile app team (web-first)

    View Slide

  42. Lots of good problems ;)

    View Slide

  43. Communication Cost

    View Slide

  44. Before “Mobile First” Era

    View Slide

  45. 1SFNJVN4FSWJDF
    5FBN
    0UIFS
    5FBNT
    )BQQZ"VUIPS
    5FBN
    'FBUVSF
    3FRVFTU
    'FBUVSF
    Entrusted Development
    'FBUVSF
    3FRVFTU
    'FBUVSF
    3FRVFTU .PCJMF'JSTU
    5FBN

    View Slide

  46. After “Mobile First” Era

    View Slide

  47. 1SFNJVN4FSWJDF
    5FBN
    0UIFS
    5FBNT
    )BQQZ"VUIPS
    5FBN
    .PCJMF'JSTU
    5FBN
    )FMQ
    There are 20+ engineers on mobile applications
    'FBUVSF
    'FBUVSF
    'FBUVSF
    'FBUVSF
    3FMFBTF
    .BOBHFNFOU
    Service Oriented Development

    View Slide

  48. Our Adventure Has Just
    Begun

    View Slide

  49. Release Cycle

    View Slide

  50. Web and Mobile Apps
    • Cookpad has a successful workflow:
    continuous delivery
    • Mobile app development should be successful
    with the same way!

    View Slide

  51. View Slide

  52. Defects Rise
    No rollbacks

    View Slide

  53. Differences in Release
    Cycle
    • Web:
    • continuous delivery
    • easily rollbacks code on problems
    • App:
    • frequent release makes users irritated
    • no rollbacks; all the versions remain in the
    world

    View Slide

  54. Different release cycle
    should make different
    workflow

    View Slide

  55. Branching Model
    • Web: github-flow
    • Keeps the master branch deployable
    • App: git-flow
    • Makes a release branch on code freeze

    View Slide

  56. Pull-Request
    Development
    • All the changes are merged via pull requests
    • Do not commit changes to master directly
    • All the pull requests should be reviewed

    View Slide

  57. $PEF
    'SFF[F
    NBTUFS
    GFBUVSF
    3$
    JNQPSUBOU
    CVHpY
    OFX
    GFBUVSF
    TVCNJUUFE
    2"
    4UBSU
    .PCJMF"QQT
    #SBODIJOH.PEFM

    View Slide

  58. The Principle: KISS
    !
    but not to be too simple

    View Slide

  59. Continuous Integration
    w #VJMEJU
    w -JOUJU
    w 5FTUJU
    w %FQMPZCFUBT

    View Slide

  60. %FQMPZ(BUF
    5FTU'MJHIU
    -PDBM.BDIJOF
    QVTI
    LJDL
    QVCMJTI
    CVJME
    Development Workflow

    View Slide

  61. Release Engineering Tasks
    • Kicks the Jenkins job for a release package
    • Builds it, lints it, tests it, makes a tag
    • Uploads the package to Google Play / AppStore
    • Writes recent changes
    • Publishes it (in iOS: after Apple reviewing)

    View Slide

  62. Too Many Tasks in
    Releng

    View Slide

  63. Release Engineering as
    Code
    • External repositories that build app projects
    • Android Publisher API (Google Play Developer
    API)
    • No API on AppStore / iTunes Connect yet
    • Monitoring - not yet, but will try

    View Slide

  64. That’s all.

    View Slide

  65. We are hiring ;)
    • There are a lot of good problems in Cookpad!

    View Slide

  66. Free Talks: YAPC.fm
    • How to test mobile apps?
    • How about IDE / programming languages?
    • What to learn from the Perl community?

    View Slide