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

フロントエンドの開発生産性とは

 フロントエンドの開発生産性とは

2023/09/21 @ Findy のカンファレンス

Avatar for Yosuke Furukawa

Yosuke Furukawa

September 20, 2023
Tweet

More Decks by Yosuke Furukawa

Other Decks in Technology

Transcript

  1. ։ൃͷੜ࢈ੑͱ͸ • Lean ͱ DevOps ͷՊֶͷྫ: • 4ͭͷଌఆج४Λஔ͍ͯ։ൃ૊৫ͷύϑΥʔ ϚϯεΛଌఆ͍ͯ͠Δɻ •

    ϦʔυλΠϜɺσϓϩΠස౓ 
 ฏۉम෮࣌ؒɺมߋࣦഊ཰ https://book.impress.co.jp/books/1118101029
  2. ։ൃͷੜ࢈ੑͱ͸ • SPACE ͷྫ (2021೥ͷ࿦จ): • Satisfaction & Well-Being: 


    ։ൃऀ͕ͲΕ͚ͩ޾͔ͤɹʢྫɿඞཁͳπʔϧΛબ΂͍ͯΔ͔ɺνʔϜͷNPS͸Ͳ͏͔ͳͲʣ • Performance: 
 ॻ͍ͨίʔυ͕ͲΕ͚ͩͪΌΜͱϫʔΫ͔ͨ͠ɹʢྫɿόάൃੜ݅਺ɺސ٬ຬ଍౓ɺαʔϏεՔ ಇ཰ͳͲʣ • Activity: Ξ΢τϓοτͷ਺ɹʢྫɿɹPRϚʔδ਺ɺίϛοτ਺ɺσϓϩΠස౓ͳͲʣ • Communication & Collaboration: 
 ίϛϡχέʔγϣϯͱڠྗʢྫɿΦϯϘʔσΟϯάͷ࣌ؒ΍ମݧɺίʔυϨϏϡʔͷ࣭ͱମݧɺ PRͷϚʔδ͞ΕΔ·Ͱͷ࣌ؒͳͲʣ • Ef fi ciency & Flow: ޮ཰ͱ࡞ۀϑϩʔʢྫɿίʔυϨϏϡʔλΠϛϯάɺׂΓࠐΈλεΫͷগͳ͞ʣ
  3. ։ൃͷੜ࢈ੑͱ͸ • SPACE ͷྫ (2021೥ͷ࿦จ): • GitHub Copilot ಋೖͷධՁ΋SPACEͰߦΘΕͨྫ͕͋Δ •

    ͪͳΈʹͦͷ࣌ͷධՁ͸ͪ͜Βɻ https://github.blog/2022-09-07-research-quantifying-github-copilots-impact-on-developer-productivity-and-happiness/
  4. ։ൃͷੜ࢈ੑͱ͸ • Ξ΢τϓοτ / Πϯϓοτͱ͍͏Ұݟ୯७ͳࣜͰද͞Ε͍ͯΔ ͕ɺ࣮ࡍʹ͸͔ͳΓ։ൃ૊৫ґଘ • ΋͏গ͠۩ମԽͨ͠ྫͱͯ͠LeanͱDevOpsͷՊֶ΍ SPACEϑ ϨʔϜϫʔΫͱ͍ͬͨऔΓ૊Έ͕͋Δ

    • ͜ΕΒͷऔΓ૊ΈͷதͰ͸୯ͳΔΞ΢τϓοτʹண໨͍ͯ͠ͳ ͍ɻ • ಛʹ։ൃऀͷຬ଍౓΍ίϛϡχέʔγϣϯɺจԽͱ͍ͬͨपล ͷঢ়گʹ஫໨͍ͯ͠Δ
  5. ϑϩϯτΤϯυͷ։ൃੜ࢈ੑ • ҠΓมΘΓͷܹ͍͠ྫɿ • ։ൃϥΠϒϥϦฤ • ίϯϙʔωϯτϥΠϒϥϦͷมભʢBackbone, Angular, Vue, Reactʣ

    • ঢ়ଶ؅ཧϥΠϒϥϦͷมભʢRedux, fl ux, Recoil, Jotaiʣ • CSS पลϥΠϒϥϦɾπʔϧͷมભʢSass, CSS Modules, vanilla- extract, Tailwind etcʣ • ϝλϑϨʔϜϫʔΫͷมભʢNuxt.js, Next.js, Remix)
  6. ϑϩϯτΤϯυͷ։ൃੜ࢈ੑ • ҠΓมΘΓͷܹ͍͠ྫɿ • ඇػೳཁٻฤ • ύϑΥʔϚϯε • Core Web

    VitalsʢLCP, CLS, INP, TTIʣ • A11y (WCAG 2.0, 2.1, 2.2) • ςετʢVRT, E2E, Testing pyramid)
  7. ϑϩϯτΤϯυͷ։ൃੜ࢈ੑ • ҠΓมΘΓΛؾʹ͠ͳ͍ํ๏ • ແཧʹ৽͍͠ํ๏ʹมߋ͢Δඞཁ͸ͳ͍ɺݹ͍΍ΓํͰ΋ࣗ෼͕ͨͪੜ࢈తͩ ͱײ͡ΔͳΒͦΕͰྑ͍ • ҭ੒ίετͱ৽͍͠ํ๏ʹมΘͬͨࣄͰͷੜ࢈ੑվળΛఱṝʹ͔͚ͯ΍ͬͨํ ͕͍͍͔൑அͯ͠ཉ͍͠ •

    ͨͩ͠ɺมΘΒͳ͍͜ͱΛͣͬͱଓ͚͍ͯΔͱɺ͍͔ͭ୭΋։ൃΛܧଓͰ͖ͳ ͘ͳΔՄೳੑ͸͋Δ • ։ൃτϨϯυ͕มΘͬͯ͠·͍ɺ৽͍͠ਓ͕࠾༻Ͱ͖ͳ͍ • ࢖͍ͬͯΔϥΠϒϥϦͷEoL͕੾Ε͍ͯͯɺηΩϡϦςΟ໰୊͕͋Δͷʹܧ ଓ͠ͳ͍ͱ͍͚ͳ͍ϦεΫΛ๊͑Δ
  8. ϑϩϯτΤϯυ൛DX Criteria • ຊՈ DX Criteria ͸ߴ଎ͳԾઆݕূΛճͯ͠૊৫಺ͷૉૣ͍ݕ ূͱࣦഊͱֶͼΛ࠷େԽ͠Α͏ͱ͢ΔͨΊͷํ਑Ͱ࡞ΒΕͨ ౕ •

    ͦͷΤοηϯε෦෼͸࢒ͭͭ͠ɺϑϩϯτΤϯυྖҬʹಛԽ͢ Δ • ຊՈ͸ձࣾͷ࿩΋ଟ͍͕ɺϑϩϯτΤϯυͱ͍͏ྖҬʹด͡ ΔͷͰɺձࣾͷ࿩͸গͳΊ • ҰํͰσβΠϯͱͷڠۀ΍ؔ࿈෦ॺͱͷ࿩͸ଟΊ
  9. ϑϩϯτΤϯυ൛ DX Criteria • େςʔϚ͕5ͭ • ։ൃɾӡ༻ͷੜ࢈ੑΛࢧ͑Δٕज़ελοΫ • ϢʔβʔମݧΛࢧ͑Δඇػೳཁٻ •

    Ձ஋ͷσϦόϦʔΛߦ͏ϓϩηε • γεςϜɾΞϓϦέʔγϣϯӡ༻ʢΞʔΩςΫνϟʣ • νʔϜϏϧσΟϯά
  10. ։ൃɾӡ༻ͷੜ࢈ੑΛࢧ͑Δٕ ज़ελοΫ • ίʔυͷอकੑ • (ֶशͱվળ) ੩తܕ෇͚ݴޠ΍ίʔυϑΥʔϚολʔΛ ಋೖͯ͠ɺίʔυϕʔεͷಡΈ΍͢͞ͱอकੑΛ޲্ͤ͞ ͍ͯΔ͔ •

    (ϝτϦΫεͷܭଌ) όάͷൃੜ཰ɺίʔυϨϏϡʔͷ࣌ ؒͳͲɺίʔυϕʔεͷอकੑʹؔ࿈͢ΔϝτϦΫεΛ ຖ݄௥੻͠ɺ࢛൒ظ͝ͱʹվળͷͨΊͷΞΫγϣϯΛܭ ըɾ࣮ࢪ͍ͯ͠Δ͔
  11. ։ൃɾӡ༻ͷੜ࢈ੑΛࢧ͑Δٕ ज़ελοΫ • ίʔυͷอकੑ • (ϓϥΫςΟε) ܕ৘ใΛAPIϨϕϧͰڞ༗͢ΔͨΊͷπʔϧ ʢྫ: GraphQLɺTypeScriptͳͲʣΛ׆༻͠ɺ݄ʹ1ճҎ্ ͷස౓Ͱܕͷໃ६΍ΤϥʔΛνΣοΫͯ͠ɺίʔυϕʔεશ

    ମͷܕ҆શੑΛ֬อ͍ͯ͠Δ͔ • (Ξϯνύλʔϯ) ੩తܕ੍໿Λ݄ʹ1ճҎ্ͷස౓ͰνΣο Ϋ͍ͯ͠ͳ͍͔ɺܕͷໃ६΍Τϥʔ͕์ஔ͞Ε͍ͯΔ͔ɺ· ͨɺܕ੍໿Λແࢹͯ͠ͷਐḿใࠂ͕සൟʹߦΘΕ͍ͯΔ͔
  12. ։ൃɾӡ༻ͷੜ࢈ੑΛࢧ͑Δٕ ज़ελοΫ • πʔϧνΣΠϯͱ։ൃޮ཰ • ʢֶशͱվળʣओཁͳΤσΟλʢྫ: VSCode, IntelliJͳͲʣɺϑΥʔϚολʔɺϦϯλʔ Λ൒೥ʹ1ճҎ্ͷස౓Ͱߋ৽ɾݕ౼͠ɺ։ൃޮ཰ͷ޲্Λਤ͍ͬͯΔ͔ •

    ʢϝτϦΫεʣϏϧυ࣌ؒɺςετ࣮ߦ࣌ؒɺσϓϩΠ࣌ؒͳͲͷϝτϦΫεΛຖि௥ ੻͠ɺ݄͝ͱʹπʔϧνΣΠϯͷޮ཰ੑͷͨΊͷΞΫγϣϯΛܭըɾ࣮ࢪ͍ͯ͠Δ͔ • ʢϓϥΫςΟεʣCI/CDύΠϓϥΠϯΛద੾ʹઃఆ͠ɺܧଓతΠϯςάϨʔγϣϯΛࣗ ಈԽ͍ͯ͠Δ͔ɻ·ͨɺϩʔΧϧ։ൃ؀ڥʹ͸ϞοΫαʔόʔ΍APIͷςετ؀ڥΛ੔ උ͠ɺޮ཰తͳ։ൃ͕Մೳ͔ • ʢΞϯνύλʔϯʣπʔϧͷબఆ͕νʔϜ಺Ͱ͹Β͹ΒͰ͋ΓɺෆඞཁͳΧελϚΠζ ͕૿͑ɺ։ൃޮ཰͕௿Լ͍ͯ͠ͳ͍͔
  13. ։ൃɾӡ༻ͷੜ࢈ੑΛࢧ͑Δٕ ज़ελοΫ • ࣋ଓՄೳͳӡ༻ͷͨΊͷٕज़બఆ • (ֶशͱվળ) ٕज़τϨϯυΛ௥੻͠ɺ৽ͨͳπʔϧ΍ϥΠϒϥ ϦͷධՁΛఆظతʹߦ͍ͬͯΔ͔ • ʢϝτϦΫεʣ

    طଘͷ࢖༻ٕज़ͷΞοϓσʔτස౓ɺٕज़ε λοΫͷෳࡶ͞ɺηΩϡϦςΟࣄ৅ͳͲΛධՁɾվળ͍ͯ͠Δ ͔ • ʢΞϯνύλʔϯʣྲྀߦΓͷٕज़΍࠷৽ϥΠϒϥϦΛແཧʹऔ ΓೖΕɺٕज़ελοΫ͕ա৒ʹෳࡶԽͯ͠͠·͍ͬͯͳ͍͔
  14. ϢʔβʔମݧΛࢧ͑Δඇػೳཁ ٻ • ύϑΥʔϚϯε • ϨΠςϯγʔͱεϧʔϓοτͷ֓೦Λཧղ͠ɺԿ͕Կ Ͱ΋ ʮLighthouse 100఺ͩʂʯͱ͔ʹͳ͍ͬͯͳ͍ ͜ͱ

    • దٓύϑΥʔϚϯενϡʔχϯάίϯςετͳͲͰֶ ΂ΔλΠϛϯάΛ࡞ͬͯཉ͍͠ • ݱঢ়෼ੳͱ໨ඪઃఆ͕Ͱ͖Δࡐྉ͕ἧ͍ͬͯͯ΄͍͠
  15. ϢʔβʔମݧΛࢧ͑Δඇػೳཁ ٻ • ύϑΥʔϚϯε • ʢֶशͱվળʣCPU΍ϝϞϦɺωοτϫʔΫͱݴͬͨجຊతͳ߲໨ʹ͍ͭ ͯͷϓϩϑΝΠϧΛऔΕɺݟํʹֶ͍ͭͯश͍ͯ͠Δ͔ • ʢϝτϦΫεʣJavaScript΍CSSɺը૾ͱ͍ͬͨ੩తΞηοτͷσʔλα ΠζΛܭଌ͠ɺύϑΥʔϚϯεόδΣοτͱͯ͠༧ࢉ؅ཧ͕Ͱ͖͍ͯΔ͔

    • ʢΞϯνύλʔϯʣࣗ෼͕ͨͪ഑৴͍ͯ͠Δ΢ΣϒΞϓϦέʔγϣϯ͕Ͳ Ε͘Β͍ͷϑΝΠϧαΠζΛ഑৴͍ͯ͠Δ͔Λ೺Ѳ͍ͯ͠ͳ͍ • ʢΞϯνύλʔϯʣ໨ඪΛ࣋ͨͣʹܭଌ͠ɺࡍݶͳ͘νϡʔχϯάΛ͠Α ͏ͱ͍ͯ͠Δ
  16. ϢʔβʔମݧΛࢧ͑Δඇػೳཁ ٻ • ΞΫηγϏϦςΟ • ʢϝτϦΫεʣΞΫηγϏϦςΟͷ੩తղੳΛߦ͏πʔϧΛ༻͍ͯɺఆظతʹܭଌΛߦͬͯ ͍Δ͔ • ʢϓϥΫςΟεʣ࣮૷νΣοΫϦετΛ࡞੒͠ɺ४ڌ͍ͯ͠Δ͜ͱΛ֬ೝ͍ͯ͠Δ͔ •

    ࢀߟ: https://waic.jp/docs/jis2016/test-guidelines/202012/ • https://www.digital.go.jp/resources/introduction-to-web-accessibility-guidebook/ • ʢΞϯνύλʔϯʣHTMLͷηϚϯςΟΫεΛແࢹ࣮ͨ͠૷ʹͳ͍ͬͯΔ • ʢΞϯνύλʔϯʣλονύου΍ϙΠϯςΟϯάσόΠεͰͷΈ੍ޚͰ͖ΔUIʹͳͬͯ͠ ·͍ͬͯΔ • ʢΞϯνύλʔϯʣνΣοΫπʔϧ͚ͩʹཔΓɺςετ࣮ࢪऀʹΑΔ֬ೝ͕ߦΘΕ͍ͯͳ͍
  17. Ձ஋ͷσϦόϦʔΛߦ͏ϓϩη ε • ςετ • ʢֶशͱվળʣΨΠυϥΠϯ΍ςετΧόϨοδͷج४Λఆظతʹݟ௚ ͠ɺνʔϜશମͷεΩϧηοτͱχʔζʹ߹Θͤͯߋ৽͍ͯ͠Δ͔ɻ • ʢϝτϦΫεʣςετΧόϨοδͷπʔϧΛఆظతʹߋ৽͠ɺະΧόʔͷ ྖҬ͕͋Δ৔߹͸ɺద੾ͳςετέʔεΛ௥Ճͯ͠ΧόϨοδΛ޲্ͤ͞

    ΔऔΓ૊ΈΛߦ͍ͬͯΔ͔ • ʢϝτϦΫεʣςετ͕30෼Λ௒͑Δ৔߹ɺςετͷ෼ׂ΍ฒྻ࣮ߦΛݕ ౼͠ɺಛఆͷςετ͕ಛʹ͕͔͔࣌ؒΔ৔߹͸ɺͦͷςετͷ࠷దԽΛݕ ౼͢Δɻ·ͨɺසൟʹࣦഊ͢Δςετ΍ϑϨʔΩʔͳςετ͕ଘࡏ͢Δ৔ ߹͸ɺͦͷݪҼΛಛఆͯ҆͠ఆੑΛ޲্ͤ͞ΔऔΓ૊ΈΛߦ͍ͬͯΔ͔ɻ
  18. Ձ஋ͷσϦόϦʔΛߦ͏ϓϩη ε • σϓϩΠ • ʢֶशͱվળʣa/b test, feature fl ag,

    canary releaseͳͲͷࢼ࣮ͯ͠ફͨ͠ ޙͰมߋ͠΍͍͢σϓϩΠΛߦ͍ͬͯΔ͔ • ʢϝτϦΫεͷܭଌʣ σϓϩΠͷස౓΍ϦʔυλΠϜΛՄࢹԽ͢ΔͨΊͷ μογϡϘʔυΛ࡞੒ɾ੔උ͍ͯ͠Δ͔ɻ͜ΕʹΑΓɺ։ൃ͔Βຊ൪؀ڥ ΁ͷมߋ͕ͲΕ͚ͩਝ଎ʹద༻͞Ε͍ͯΔ͔ΛνʔϜશһͰڞ༗͠ɺܧଓ తͳվળΛߦ͏ͨΊͷࢦඪͱ͢Δɻ۩ମతʹ͸ɺมߋͷϦʔυλΠϜɺσ ϓϩΠͷස౓ɺมߋ࣌ͷࣦഊ཰ɺ෮چ࣌ؒͳͲΛμογϡϘʔυͰҰ໨Ͱ ֬ೝͰ͖ΔΑ͏ʹ͢Δɻ • ʢΞϯνύλʔϯʣσϓϩΠҰճʹରͯ͠1࣌ؒҎ্ͷ͕͔͔࣌ؒΔ
  19. νʔϜɺ૊৫ • ෼୲ɺ৬຿είʔϓͷఆٛ • ϑϩϯτΤϯυΤϯδχΞ͸ίϛϡχέʔγϣϯͷϋϒʹͳΓ΍͍͢ • ҰํͰྡ઀૊৫ͷ࢓ࣄ΋೚͞Ε΍͍͢ • ྫ) σΟϨΫγϣϯۀ຿ΛϑϩϯτΤϯυΤϯδχΞ͕ߦ͍ͬͯΔ

    • ྫ) ϚʔέςΟϯά૊৫ଆͰඞཁͳGAͷௐࠪ΍ઃఆΛϑϩϯτΤ ϯυΤϯδχΞ͕ߦ͍ͬͯΔͳͲ • ϝϯόʔ͕ຊདྷൃش͢΂͖όϦϡʔΛ્֐ͯ͠͠·͏Α͏ͳέʔε͕ ͳ͍Α͏ʹ͍ͨ͠
  20. νʔϜɺ૊৫ • ࣾ಺֎ͷൃ৴ • (ֶशͱվળ) ఆظతʹ಺෦ͷϫʔΫγϣοϓ΍ηϛφʔΛ։ ࠵͠ɺΤϯδχΞಉ࢜Ͱ৘ใͷཪ෇͚΍࣮ࡍͷίʔυಈ࡞ͷ ڞ༗Λߦ͏ɻ·ͨɺൃ৴લʹ͸ϐΞϨϏϡʔΛߦ͍ɺ಺༰ͷ ਖ਼֬ੑ΍࣭Λ֬อ͢Δɻ •

    (ϝτϦΫεͷܭଌ) νʔϜશମͰൃ৴ͷKPIΛఆΊɺͦΕʹ ج͍ͮͯఆظతʹ਺஋ΛϞχλϦϯά͢Δɻ·ͨɺࣾ಺Ͱͷ ڞ༗ϛʔςΟϯάΛઃ͚ɺ੒ޭࣄྫ΍վળ఺Λڞ༗͢Δɻ