たのしいesa #esa_io #devKan

たのしいesa #esa_io #devKan

DevLove関西 - esaとDocBaseのサービス開発のDiffの話
https://devlove-kansai.doorkeeper.jp/events/33527

でお話させていただきました(\( ⁰⊖⁰)/)

4171dc21e29c4ea936d1eb24063bb8b8?s=128

ken_c_lo / TAEKO AKATSUKA

November 28, 2015
Tweet

Transcript

  1. (\esa/) 2015-11-28 DevLOVEؔ੢ ͨͷ͍͠

  2. ࣗݾ঺հ 2

  3. 3 શࣾһ(2໊)Ͱདྷ·ͨ͠ (\( ⁰⊖⁰)/) ϓϩάϥϚͷํˠ σβΠφʔͷํˠ

  4. https://esa.io

  5. esa.ioͱ͸ 5

  6. • νʔϜͷͨΊͷ৘ใڞ༗αʔϏε • ϚʔΫμ΢ϯͰॻ͚Δ • WikiͬΆ͍ઃܭࢥ૝ • ॻ͘ෑډΛԼ͛ɺָ͘͠࢖͑Δ • ๛෋ͳΠϯςάϨʔγϣϯ

    • (\( ⁰⊖⁰)/) ͬ͘͟Γ
  7. 7 શࣾһ(2໊)Ͱདྷ·ͨ͠ (\( ⁰⊖⁰)/) ϓϩάϥϚͷํˠ σβΠφʔͷํˠ

  8. ಛ௃తͳػೳ͸͜ͷ΁Μ

  9. ৘ใΛҭ͍ͯͨ 9

  10. 10 ৘ใΛҭ͍ͯͨ

  11. 11 ৘ใΛҭ͍ͯͨ • ࠷ॳ͔Β׬ᘳΛ໨ࢦͣ͞ • ͱΓ͋͑ͣ࠷ॳ͸ग़͚ͩͩͯ͢͠ • ޙ͔ΒΑ͍͚ͯ͘͠͹͍͍͡ΌΜ • Done

    is better than perfect
  12. WIP 12

  13. WIP ʹ Work in Progress ਐߦதɾ࡞ۀதɾॲཧதɾະ׬੒ ෆ׬શͰ͋Δ͜ͱΛप஌͢Δه߸ͱͯ͠࢖ΘΕΔ řŎŕŲƅ

  14. ͱΓ͋͑ͣɺڞ༗ ࡶʹڞ༗ ·ͩͰ͖ͯͳ͍͚Ͳڞ༗

  15. อଘϘλϯ͕ 2ͭʁʁ

  16. ࡞ۀதͷͱ͖͸ɺWIPͰอଘ Լॻ͖ஈ֊͔Βଞਓʹݟ͑ΔΑ͏ʹͳͬͯΔ

  17. 8*1Ͱอଘ͢Δͱɺ λΠτϧ͕άϨʔΞ΢τ w 8*1Ͱߋ৽ͯ͠΋8FCIPPLͰ4MBDLͱ͔ʹ௨஌͕ඈ͹ͳ͍ w Կ౓΋ߋ৽͢Δ͜ͱ͕Ͱ͖Δʢ㵰 4ʣ w ϩʔΧϧͷΤσΟλʹॻ࣌͘Έ͍ͨͳײ͡Ͱॻ͚Δ w

    ΈΜͳʹੵۃతʹ஌Βͤ͸͠ͳ͍͚Ͳɺڵຯ͋Δਓ͸Θ͟Θ ͟ݟʹདྷΕ͹ݟΔ͜ͱ͕Ͱ͖Δঢ়ଶ
  18. ͍͍ͩͨͰ͖ͨΒɺShip It!

  19. Ship It! ͢Δͱ Webhook ͷ௨஌͕ඈͿ ƻ ΈΜͳ͕ݟʹདྷΔ

  20. ͜Μͳײ͡ͷ͜ͱΛߟ͑ͯ͸͍Δ͚Ͳɺ ·ͩ'*9͡Όͳ͍ΜͰɻ ͜Ε͔Β΋ͬͱྑ͘ͳΔΜͰɻ 8*1Λ͚ͭΔͱ͖ͷ͖΋ͪ • ͳͷͰࡉ͔͗͢Δποίϛ͸·ͩצหͯ͠Ͷ • ͚ͲɺؒҧͬͯͨΒڭ͑ͯͶ • ࠔͬͯͨΒॿ͚ͯͶ

    • ΍Δؾ͸͋ͬͯ͜Ε͔Β΍Δͭ΋ΓͰ͸͋ΔΜͩΑ • ͬ͘͟Γ͜͏͍͏͜ͱߟ͑ͯΔ͔ΒͳΜͱͳ͘஌ͬͯͯͶ • େମ߹ͬͯͨΒ͞Γؾͳ͘΄Ίͯ͘ΕͨΒ΍Δؾग़Δ͔΋ • ·ͣ͸ࣗ෼ͷϝϞతʹॻ͍ͯΔ͚ͩͳΜͩ
  21. ͭ·Γɺ8*1ͱ͸ ΤΫεΩϡʔζͷҰछ ʢݴ͍༁ɾหղʣ Excuse me

  22. ΤΫεΩϡʔζ΍ҙਤతͳ੍ݶΛ෇Ճ͠ɺ ࢓૊Έʹ͋ΔछͷʮϢϧ͞ʯΛ༩͑Δ͜ͱͰɺ ݁Ռɺ࢖͏ਓָ͕͍͖͍͖͘͠ͱ͢Δ w ࠓ·Ͱݴ͑ͳ͔ͬͨ͜ͱ͕ݴ͑Δ w ॻ͚ͳ͔ͬͨਓ͕ॻ͚Δ w Ͱ͖ͳ͔ͬͨ͜ͱ͕Ͱ͖Δ

  23. • ϩʔΧϧͷςΩετΤσΟλ • ݸਓ༻ͷEvernote • ࣗ෼Ѽͯͷϝʔϧ ࣗ෼ͷͨΊʹॻ͘ʮυΩϡϝϯτʯ උ๨࿥ɾϝϞɾTODOϦετɾاըΞΠσΞɾઃܭΞΠσΞ ༩݅ͷ੔ཧɾվળҊɾ೔ࠒࢥ͍ͬͯΔ͜ͱɾ ॻ్͖தͷ΋Ζ΋Ζ…

    ྫ͑͹͜Μͳͱ͜Ζʹ
  24. ࣗ෼ͷ೴಺Λ ੔ཧͯ͠Πϯλʔωοτʹ UP͠΍͘͢͢ΔΤϯδϯ

  25. Ϣʔβʔʹ͍ͭͯ 25

  26. Ϣʔβʔଐੑ • νʔϜن໛: 1~126 Ϣʔβʔ • ༗ྉར༻ͷׂ߹ • νʔϜ: 200

    / 1200 • Ϣʔβʔ: 1700 / 7500 • શ༗ྉνʔϜͷ໿30%͕ ݸਓར༻ 26
  27. ։ൃνʔϜҎ֎ͷ৭ʑͳ࢖ΘΕํ • 1ਓϢʔβʔ͕ଟ͍ • ϝϞ੔ཧɾΞΠσΞ·ͱΊɾݪߘࣥච ౳ • alt Evernote? •

    ʮՈఉ಺esaʯ෉්΍ΧοϓϧͰͷར༻ • ҭࣇ΍༦৯ͷ࿈བྷ • ήʔϜɾझຯͷू·Γɾֶੜஂମɾ੓࣏ஂମɾNPOɹ౳ 27
  28. ϓϩάϥϚ޲͚ʁ 28

  29. ϓϩάϥϚ޷Έͷػೳɾઃܭ ඇϓϩάϥϚ΋਌͠Έ΍͍͢ϧοΫε 29 Ұݟ૬൓͢Δ͜ͱΛ ଥڠ͠ͳ͍Ͱ྆ํେࣄʹ͍ͨ͠

  30. ϓϩάϥϚ޷Έͷػೳɾઃܭ • ߴ͍ΧελϚΠζੑ • (but Α͍σϑΥϧτΛ༻ҙ) • API • γϯϓϧͰϑϥοτͳઃܭ

    • UI͸جຊӳޠ 30
  31. ϓϩάϥϚ޷Έʹ͍ͨ͠ཧ༝ ϓϩάϥϚ͕Πέͯͳ͍ͱࢥ͏΋ͷΛɺϓ ϩάϥϚҎ֎ͷਓͷͨΊʹզຫͯ͠࢖͏ ϓϩάϥϚ͕߹ཧతͩͱࢥ͑Δಓ۩Λϓϩ άϥϚҎ֎΋࢖͑ΔΑ͏ʹͳΔ 31 ☓ • ϓϩάϥϚ͕޷͖ͳ΋ͷ͸ׂͱࣗ෼͕ͨͪ࢖ָ͍ͬͯͯ͠ •

    ৘ใπʔϧʹର͢ΔϓϩάϥϚͷηϯε΍ͩ͜ΘΓʹର͢Δ৴པ • ϓϩάϥϚʹ޷͔ΕΔΑ͏ͳಓ۩Λ࡞Γ͍ͨ (e.g. GitHub)
  32. ඇϓϩάϥϚͰ΋਌͠Έ΍͍͢ • ͔Θ͍͞ • (\( ⁰⊖⁰)/) • ࢓ࣄΆ͘ͳ͍ • ϊϯόʔόϧͰ௚ײతͳUI

    • ӳޠͰ΋ͳΜͱͳ͘࢖͑Δ 32
  33. ։ൃͷ༷ࢠ 33

  34. 34 ָ͍͔͠Βɺຖ೔࡞Γ͚ͭͮͯΔ 5713 commits 3995 issues 1932 Pull Requests 1728

    Deployed 982 feedbacks from users 10.2 commits/day 7.1 issues/day 3.4 PR/day 3.1 Deploys/day
  35. 35 2015೥ͷ2݄·Ͱfukayatsu͸ϑϧλΠϜͰesaͱ͸ผͷ࢓ࣄ Λ͍͕ͯͨ͠ɺ࣠଍ΛesaʹҠͯ͠Ҏ߱ͷํ͕commit਺Ͱݟ Δͱগͳ͍ɻ

  36. 36 ౔೔͕׆ൃɾ࣍఺Ͱ໦༵೔ʢཧ༝͕Ṗʁʣ

  37. 37 100 Release notes / year (1~2 notes / week)

  38. ϦϦʔεαΠΫϧ • ৽ػೳ΍ϢʔβʔϑΟʔυόοΫ → GitHub Issues • GitHub Flowʹ͕ͨͬͯ͠ϒϥϯνΛ࡞Γɺదٓpush͠ͳ͕Β࣮૷ •

    pushຖʹCIΛߦ͍ɺςετͷΧόϨοδ͕90%ΛԼճ͍ͬͯͨ৔߹ʹ͸ ςετ͕ࣦഊ • ςετ͕͢΂ͯ੒ޭ͍ͯ͠Δ৔߹ͷΈ master branchʹϚʔδՄೳ • ػೳ͕ग़དྷ্͕ͬͨΒɺmaster branchʹϚʔδ → ຊ൪σϓϩΠ • ϦϦʔεϊʔτެ։ → @esa_io ͰπΠʔτ 38
  39. ຖ೔͕υοΫϑʔσΟϯά • पғͷ஥ؒͨͪͱesaͰ೔ใΛڞ༗ • ۀ຿ҕୗઌͷձࣾͰ΋esa • esaࣾͷesa • ࣮Ո΁ͷ࿈བྷ΋esa 39

  40. εέδϡʔϧɾϊϧϚ͸ͳ͠ • కΊ੾ΓʹΑΔ৺ཧతෛ୲ΛݮΒͯ͠ɺΑΓΑ͍બ୒Λ͍ͨ͠ɻ • ͦͷ࣌ʹ࡞Γ͍ͨ΋ͷΛ࡞Δͷ͕ޮ཰తΑ͘ɺ࠷ऴతʹօ͕޾ͤ ʹͳΕΔͱ৴͍ͯ͡Δɻ • ൑அΛ஗ΒͤΔͱΑ͍ղܾࡦΛࢥ͍ͭ͘͜ͱ΋͋Δ • ͬ͘͟Γͨ͜͠Ε͔Β΍Γ͍ͨ͜ͱϦετ͸͋Δ

    • →Ϣʔβʔʹڞ༗͍ͨ͠ 40
  41. bundle updateͷࣗಈԽ 41

  42. Staging؀ڥ • ·ͩͳ͍ • ຊ෺ͷσʔλͰ֬ೝ • ։ൃऀݶఆϦϦʔεΛ͢Δ͜ͱ΋͋Δ 42

  43. ӡ༻ͷ༷ࢠ 43

  44. 44 stackshare.io/esa/esa

  45. Heroku • Πϯϑϥۀͷෛ୲Λେ෯ ʹݮΒ͢ • USϦʔδϣϯ • ΩϟύγςΟΛεέδϡʔ Ϧϯά 45

  46. ো֐؂ࢹ • Pingdom + PagerDuty • αʔϏεμ΢ϯͨ͠ ৔߹͸ ి࿩ֻ͕͔ͬ ͯ͘Δ

    • status.esa.io 46
  47. ϦϦʔεϊʔτ • esa্ͰӡӦͯ͠υο ΫϑʔσΟϯά • webhookͰड͚औΔ ͜ͱ͕Ͱ͖Δ • ϝʔϧͰ͸ϦϦʔε ϊʔτΛૹΒͳ͍

    47
  48. ΧελϚʔαΫηε 48

  49. Ϣʔβʔͱզʑ͕ ޾ͤʹͳΔ͜ͱΛͳΜͰ΋ • ยํ͚ͩ޾ͤͰ΋௕ଓ͖͠ͳ͍ • खஈʹनΘΕͳ͍ 49

  50. ϑΟʔυόοΫʹ5෼Ͱฦ৴͢Δ • 5෼͸ͨͩͷ໨҆ • Ͱ͖Δ͚ͩ͢͹΍͘ • ஸೡͳݴ༿ݣ͍͸͋Δఔ౓٘ਜ਼ʹ͢Δ 50

  51. ࣭໰ʹରͯ͠ɺ ʮ͸͍/͍͍͑ʯΑΓ΋ྑ͍ฦࣄ͕͋Δ • ʮ̋̋ػೳ͸͋Γ·͔͢ʁʯ • Ϣʔβʔͷ໰୊͸ͳΜͩΖ͏͔ • ͦΕΛݱঢ়ͷػೳͰղܾͰ͖ΔͩΖ͏͔ • ଞʹԠٸॲஔతͳࡦ͸͋Δ͔

    51
  52. όάमਖ਼΍؆୯ͰޮՌతͳػೳ௥Ճ͸ ͦͷ৔Ͱ࣮૷͙ͯ͢͠ʹϦϦʔε͢Δ • αϙʔτத͸͋ΔҙຯҰ൪Ϟνϕʔγϣϯ͕ ߴ͍ • Ϣʔβʔʹ΋զʑʹ΋Α͍Өڹ • ҉ࠇ໘ʹͱΒΘΕΔͱແବػೳΛ࡞Γ͕ͪ 52

  53. ͍Ζ͍ΖͳνϟϯωϧΛ࢖͏ • Web/e-mail/Twitter/௚઀ • ࠷ऴతʹ͸GitHub Issuesʹू໿ • Τΰαʔν 53

  54. એ఻ɾ޿ใ 54

  55. ΠϕϯτͰϓϨθϯΛ͢Δ • ಛʹٕज़ܥͷΠϕϯτͰͷొஃ • ࢀՃऀ૚͕Ϣʔβʔ૚ͱ͍ۙ • ͦ͏͍͏ΠϕϯτʹࢀՃ͢Δͷָ͕͍͠ 55

  56. ٕज़ܥͷΠϕϯτɾίϛϡχςΟ ʹπʔϧఏڙͷεϙϯαʔΛ͢Δ • ӡӦνʔϜ޲͚ʹ esa ͷ1νʔϜΛແঈఏڙ͢Δ • ౦ژNodeֶԂࡇ2015 • RubyKaigi

    2015 • WikiΨν੎͔ΒͷϑΟʔυόοΫ 56
  57. Web޿ࠂΛग़͞ͳ͍ • ͋·Γ޷͖Ͱ͸ͳ͍ͷͰ... • Կ͔ผͷܗͰ໘ന͍޿ࠂΛग़͍ͨ͠ • (\( ⁰⊖⁰)/) ͕ग़ͯͨΒָ͍͠৔ॴ 57

  58. TwitterͰ༡Ϳ • (\( ⁰⊖⁰)/)͕ద౰ͳ͜ͱΛ൒֯Χφ Ͱtweet • ϦϦʔεϊʔτͷ͓஌Βͤ • Τΰαʔν͔ΒͷϢʔβʔαϙʔτ •

    ࡞ۀ࣌ͷؾ෼స׵ 58
  59. Ϟνϕʔγϣϯ 59

  60. motivated teams =Α͍νʔϜ

  61. 61 ࠷ॳ͸ “for small teams” ͩͬͨͷ͚ͩͲɺ ਺ेਓن໛ͷνʔϜͰ΋શવ࢖͍͑ͯͨͷͰɺ ͜͜ʹೖΔ΂͖୯ޠΛվΊͯߟ͑ͳ͓ͨ͠ɻ ϫϨϫϨ͸ͲΜͳνʔϜʹ࢖ͬͯཉ͍͠ͷ͔ʁ ʢesaΛ࢖͏ͱͲΜͳνʔϜʹͳΔͷ͔ʁʣ

  62. Ϟνϕʔγϣϯ͕େ੾ 62 ࢖͏ਓ ࡞Δਓ

  63. ϑΟʔυόοΫΛ ΋Β͏ • ΫϨʔϜ͸ๅ • ͲΜͳʹݫ͍͠ҙݟͰ΋ɺࣗ ෼ͷαʔϏεʹ͍ͭͯݴٴ͠ ͍͚ͯͨͩΔͷ͸͋Γ͕͍ͨ • ޷ҙతͳײ૝͸ຊ౰ʹخ͍͠

    63
  64. ϦϦʔεϊʔτ ॻ͖͍ͨ • ॻ͘ͷָ͕ɺָ͍͠ • ϦϦʔεϊʔτۦಈ։ൃ • ݄ؒ࠷ଟ: 15ຊ (2015/01)

    64
  65. (\( ⁰⊖⁰)/)άοζΛ ୔ࢁͭ͘Δ • shop.esa.io • εςοΧʔ/؈όοδ/Tγϟπ /ύʔΧʔ/τʔτόοά/ম͖ ҹ(new) •

    ʮԿ͔ͷؒҧ͍Ͱάοζͷച ্͚ͩͰੜ׆Ͱ͖ΔΑ͏ʹͳ Βͳ͍͔ͳʯ 65
  66. ΍Γ͍ͨ࣌ʹ΍Γ͍ͨࣄΛ΍Δ • ແཧͳָ͘͘͠ • Ұ൪ޮ཰త 66

  67. esaΒ͠͞ 67

  68. ʮesaΒ͍͠ʯ͜ͱ • ্͔ΒԿ͔Λڧ੍͠ͳ͍ɺϑϥοτͳઃܭ • ͲΜͳཱ৔Ͱ΋ָ͠ΜͰؾ࣋Α͘࢖͑Δ • ࢓ࣄͰ࢖ͬͯΔπʔϧͳͷʹ࢓ࣄײ͕ͳ͍ • ŰƃŜŞ (\(

    ⁰⊖⁰)/) ͰͭͿ΍͘ 68
  69. ʮesaΒ͠͞ʯ͸ ࠷ॳʹ͖ͪΜͱϧʔϧΛઃఆͨ͠Θ͚Ͱ͸ͳ͘ ؾ͍ͮͨΒͦ͜ʹ͋ͬͨ • ࣗ෼͕ͨͪ໰୊ղܾ͢Δͱ͖ͷύλʔϯ΍ߟ͑ํɺʮͳͥʁʯΛ໰͍ଓ͚Δ ͏ͪʹɺঃʑʹͦͷྠֲ͕͸͖ͬΓ͖ͯͨ͠ײ͡ • ݟ͖͑ͯͨྠֲΛ͔ͬ͠Γั·͑ͯʮ໋Λ༩͑Δʯ • ͳΜͱͳ͘طʹͦ͜ʹ͋Δࢥ૝ΛͰ͖Δ͚ͩݴޠԽ͢Δ

    • → ϙΤϜۦಈ։ൃ • Ωϟϥ (\( ⁰⊖⁰)/) ΍ϏδϡΞϥΠζ΋ॏཁͳͷ͔΋ 69
  70. 70

  71. 71

  72. esaΒ͠͞ = ʮແ໊ͷ࣭ʯʁ 72

  73. esa LLC ʹ͍ͭͯ 73

  74. 74 ϓϩάϥϚͱσβΠφͷ2໊ ϓϩάϥϚͷํˠ σβΠφʔͷํˠ

  75. 2ਓͰ৭ʑ΍Δ • ։ൃऀͰ͋Γ • اըऀͰ͋Γ • ΧελϚʔαϙʔτͰ͋Γ • ӦۀͰ͋Γ •

    ܦӦऀͰ͋Γ • ϢʔβʔͰ΋͋Δ 75 2ਓͱ΋
  76. 2ਓͩͱ։ൃεϐʔυ͸஗͍ʁ • ҙࢥܾఆεϐʔυͷ଎͞ • ఻ฉͰ͸ͳ͘ਖ਼֬ͳҰ࣍৘ใʹ৮ΕΒΕΔ • ৭ʑͳαʔϏεΛར༻ͯ͠ޮ཰Խ (e.g. Heroku, MFΫϥ΢υ)

    • ٕज़ސ໰ɾ֎෦ͷΞυόΠβʔ • ଟগۤखͩͬͨ͜ͱ΋΍ΕΔˠࢹ໺޿͕Δ • Ք͙΂͖͓͕ۚগͳͯ͘ࡁΉ • ܾఆݖ͸50ɾ50 76 ݱஈ֊Ͱ͸ͦ͏Ͱ΋ͳ͍ײ͡
  77. ΋ͱ΋ͱझຯ͔Β͸͡Ίͨ • 2014೥5݄ ։ൃ߹॓ • पғͷ༑ୡͱ೔ใڞ༗ʹ࢖͏ • 2014೥ Ն͔Β஌Γ߹͍ͷձࣾʹ࢖ͬͯ΋Β͏ •

    2014೥ 11݄ ๏ਓԽ & Φʔϓϯβ • 2015೥1݄ ਖ਼ࣜ༗ྉ൛ϦϦʔε 77
  78. ձࣾΑΓ΋ϓϩμΫτ͕ઌ 78 esaͷαʔϏείϯηϓτ͸ͦͷ··esaࣾͷߟ͑ํ • ָ͠͞ • Ϟνϕʔγϣϯ • Done is

    better than perfect • ͔Θ͍Έ
  79. ΦϑΟεʢ෦ࣨʣ • ෦԰൪߸͕404 • ਺ਓ(਺ࣾ)ͰआΓͯΔ෦԰ • ͨ·Γ৔Ά͍ײ͡ • ॎʹ΍ͨΒ௕͍ 79

  80. We are not startup. • ग़ࢿΛड͚͓ͯΒͣɺٸܹͳ੒௕Λ໨ࢦͯ͠ ͍ͳ͍ • ͲͪΒ͔ͱݴ͏ͱɺதখاۀʁ •

    esaͱɺesaΛ࡞ΔզʑͱɺesaΛ࢖͏ਓʑ͕ݎ ࣮ʹ੒௕͍ͯ͘͜͠ͱΛ໨ࢦ͍ͨ͠ 80
  81. ܦࡁঢ়گ • डୗ ͱ esa ͷऩӹൺ཰ → डୗͷํ͕·ͩଟ͍ • िʹ਺೔ελʔτΞοϓͷ͓ख఻͍

    • ϑϧίϛοτͷडୗ͸ड͚ΒΕͳ͍ • esaͷऩӹ͚ͩͰ৯΂͍ͯ͘͜ͱ͕౰໘ͷ໨ඪ 81
  82. ͜Ε͔Β 82

  83. ͜Ε͔Β • ωΠςΟϒΞϓϦ( Mac, iPhone, Android • ܾࡁ࿈݁ػೳ • ݕࡧվળ

    • εϐʔυΞοϓ • alt Wiki తͳՄೳੑ 83
  84. ʮָ͍͠esaʯͰ͋Γ͍ͨ 84

  85. ָ͘͠ 85 ࢖͏ ࡞Δ ָ͘͠ esa

  86. झຯ͔Β͸͡Ίͨʮָ͠͞ʯ ΛͲ͜·Ͱ΋ҡ͍࣋ͨ͠ɻ 86

  87. 87 (\esa/) ͨͷ͍͠