Save 37% off PRO during our Black Friday Sale! »

社員情報の可視化サービスを内製開発した話 / devio2020-story-of-development-voyager

6e4c7cb36e31e3b871f3ae0c83ac8110?s=47 shoito
June 26, 2020

社員情報の可視化サービスを内製開発した話 / devio2020-story-of-development-voyager

組織拡大に伴い社員数が急増してきて、どんな人がいるのか分からなくなってきたので、社員情報の可視化サービスを内製開発した話です。
その開発に関するプロジェクト管理、アーキテクチャなどを紹介します。

■セッション解説記事 - 文字起こし
https://dev.classmethod.jp/articles/20200626-development-voyager/

■技術要素
SPA(Nuxt.js), Serverless, Elasticsearch, GitHub, CDK, TypeScript, Node.js, リモートチーム

■Youtubeビデオ
https://www.youtube.com/watch?v=Vvv_1Nj1FyA

■Developers.IO 2020 CONNECTのイベントページ
https://classmethod.jp/m/devio_2020_connect/

6e4c7cb36e31e3b871f3ae0c83ac8110?s=128

shoito

June 26, 2020
Tweet

Transcript

  1. ࣾһ৘ใͷՄࢹԽαʔϏεΛ಺੡։ൃͨ͠࿩ ʙίʔυωʔϜ7PZBHFSʙ  ҏ౻঵!TIPJUP

  2. ηογϣϯ֓ཁ  ૊৫֦େʹ൐͍ࣾһ਺͕ٸ૿͖ͯͯ͠ɺͲΜͳਓ͕͍Δ ͷ͔෼͔Βͳ͘ͳ͖ͬͯͨͷͰɺࣾһ৘ใͷՄࢹԽαʔ ϏεΛ಺੡։ൃͨ͠࿩ɻϓϩδΣΫτ؅ཧɺΞʔΩςΫ νϟͳͲͳͲɻ Illustration by Stories by

    Freepik
  3. ຊηογϣϯʹ͍ͭͯ  ର৅ऀ wϓϩμΫτ։ൃʹܞΘΔ։ൃऀɺϚωʔδϟɺʜ ໨త wϦϞʔτ෼ࢄνʔϜͰͷ։ൃελΠϧͷҰྫͱֶͼͷڞ༗ w๊͕ࣗࣾ͑Δ՝୊ղܾπʔϧΛ಺੡։ൃͨ͠ࡍͷ։ൃٕज़ͷڞ༗

  4. ࣗݾ঺հ  ҏ౻঵!TIPJUP ιϑτ΢ΣΞΤϯδχΞ 4BB4ϓϩμΫτͷاըɾ։ൃɾӡ༻ %FWFMPQFST*0ϒϩάͷϝϯςφ ޷͖ͳ"84αʔϏε ⿣ "NB[PO&$4 ⿣

    "NQMJGZ$POTPMF ⿣ "NB[PO&MBTUJDTFBSDI4FSWJDF
  5. ΞδΣϯμ  w7PZBHFSͱ͸ w։ൃελΠϧͷ࿩ w։ൃٕज़ͷ࿩ w;Γ͔͑Γ w͓ΘΓʹ

  6. 7PZBHFSͱ͸  ಉ྅ͷڧΈ΍ݸੑΛՄࢹԽ͠ɺ ݟ͚ͭ΍͘͢͢Δ ίϛϡχέʔγϣϯϋϒ ˞7PZBHFS͸։ൃίʔυωʔϜͰ͢

  7. 7PZBHFS։ൃͷഎܠ  ຖ໊݄લޙՃΘͬͯ͘ΕΔ஥ؒͨͪ ɹ૊৫ͷ਺΋૿͑ ɹࠃ಺ւ֎ڌ఺΋૿͑ ݩʑϦϞʔτϫʔΫ΋ଟ਺͍ͨ ɹΦϑΟε௨ۈݍ಺ͷࣾһ ɹ஍ݩ;Δ͞ͱۈ຿ͷࣾһ Illustration by

    Stories by Freepik
  8. ๊͍͑ͯͨ՝୊ײ  ɾࡏ୐ۈ຿͕૿͑ͯɺಉ྅΍ઌഐͱͷ઀఺͕ബ͘ͳͬͨ ɾνʔϜʹඞཁͳεΩϧΛ୭͕͍࣋ͬͯΔ͔Θ͔Βͳ͍ ɾೖࣾͨ͠΋ͷͷɺಉ྅͕ͲΜͳਓͨͪͳͷ͔ؾʹͳΔ

  9. Ҏલ͸ࣾ಺8JLJͰࣾһϓϩϑΟʔϧΛ؅ཧ 

  10. 7PZBHFSͱ͸ 

  11. 7PZBHFSͱ͸ 

  12. 7PZBHFSͱ͸ 

  13. ΞδΣϯμ  w7PZBHFSͱ͸ w։ൃελΠϧͷ࿩ w։ൃٕज़ͷ࿩ w;Γ͔͑Γ w͓ΘΓʹ

  14. νʔϜͷମ੍  PO Dev Designer Dev ౦ژ ౦ژ ౦ژ ࡳຈ

    3 3 4 5 िՔಇ ڌ఺ ໾ׂ
  15. νʔϜͷମ੍  PO Dev Designer Dev Dev ౦ژ ౦ژ ౦ژ

    ࡳຈ ෋ࢁ 3 3 2 5 1 िՔಇ ڌ఺ ໾ׂ
  16. νʔϜͷମ੍  PO Dev Designer Dev Dev Dev ౦ژ ౦ژ

    ౦ژ ࡳຈ ෋ࢁ ෱ౡ 3 3 2 5 1 2 िՔಇ ڌ఺ ໾ׂ
  17. ։ൃελΠϧ  ϕʔε͸εΫϥϜ։ൃ wλΠϜϘοΫε͸िؒ िؒεϓϦϯτ  wΠϕϯτ͸શͯ(PPHMF.FFUͰΦϯϥΠϯ࣮ࢪ wνʔϜΠϕϯτ wேձ σΠϦʔεΫϥϜ

     wεϓϦϯτϓϥϯχϯά w;Γ͔͑Γ ϨτϩεϖΫςΟϒ  wϦϑΝΠϯϝϯτ wεϓϦϯτϨϏϡʔ wσΠϦʔ%FWνʔϜษڧձ
  18. ։ൃελΠϧ  ϕʔε͸εΫϥϜ։ൃ wλΠϜϘοΫε͸िؒ िؒεϓϦϯτ  wΠϕϯτ͸શͯ(PPHMF.FFUͰΦϯϥΠϯ࣮ࢪ wνʔϜΠϕϯτ wேձ σΠϦʔεΫϥϜ

     wεϓϦϯτϓϥϯχϯά w;Γ͔͑Γ ϨτϩεϖΫςΟϒ  wϦϑΝΠϯϝϯτ wεϓϦϯτϨϏϡʔ wσΠϦʔ%FWνʔϜษڧձ
  19. ։ൃϑΣʔζ  ཱ ͪ ্ ͛ .71 ɹ ։ ൃ

    ࣾ ಺ υ ỽ ά ϑ ồ σ ỹ ϯ ά ࠓ͜͜ ʁ ʁ ʁ
  20. ্ཱͪ͛ϑΣʔζ  ϓϩμΫτɾνʔϜɾ։ൃ

  21. ϓϩμΫτ؍఺্ཱͪ͛ϑΣʔζ  wϓϩμΫτ͕ର৅ͱ͢Δ՝୊ͱλʔήοτɺղܾࡦɺ ϓϩμΫτ͕࣋ͭ΂͖ಛ௃ͳͲΛݴޠԽ wϓϩμΫτΛͲ͏࡞Γ্͍͛ͯ͘ͷ͔ΛܭըཱҊ wϓϩμΫτͷ݈߁ঢ়ଶͷܭΓํͱͯ͠ϑΣʔζຖͷ,1*Λ ఆٛ

  22. ՝୊ͱλʔήοτɺղܾࡦϦʔϯΩϟϯόε 

  23. ϓϩδΣΫτͷશମ૾Λ੔ཧΠϯηϓγϣϯσοΩ 

  24. ԿΛ͍࣮ͭݱ͍ͨ͠ͷ͔6TFS4UPSZ.BQQJOH  ࣌ܥྻ

  25. ڞ௨ޠኮ༻ޠࣙॻ 

  26. ϓϩμΫτͷϑΣʔζͱ݈߁ঢ়ଶ,1*,(* 

  27. νʔϜ؍఺্ཱͪ͛ϑΣʔζ  wνʔϜͱͯ͠ڠಇ͢ΔͨΊͷ໿ଋࣄΛఆٛ wλεΫ͸Ͳ͏ͳͬͨΒ׬ྃͱ͢Δͷ͔ఆٛ wேձɺϓϥϯχϯάɺ;Γ͔͑ΓͳͲͷνʔϜΠϕϯτΛ ఆٛ

  28. νʔϜͷ҉໧ͷϧʔϧΛݮΒ͢8PSLJOH"HSFFNFOU 

  29. λεΫ׬ྃͷೝࣝᴥᴪΛ๷͙׬ྃͷఆٛ 

  30. Πϕϯτͷ໨తͱϦζϜͷ໌֬ԽνʔϜΠϕϯτͷఆٛ 

  31. υΩϡϝϯτ؅ཧ(JU)VC8JLJ 

  32. λεΫ؅ཧ(JU)VC1SPKFDUT 

  33. ։ൃ؍఺্ཱͪ͛ϑΣʔζ  w։ൃ͢Δ্Ͱඞཁͳπʔϧ΍ίʔσΟϯάϧʔϧΛἧ͑ɺ νʔϜͰ։ൃ͕Ͱ͖ΔΑ͏ʹ੔උ wϓϩμΫτΛ࣮ݱ͢Δ্ͰͷϦεΫΛݕূ

  34. ΞδΣϯμ  w7PZBHFSͱ͸ w։ൃελΠϧͷ࿩ w։ൃٕज़ͷ࿩ w;Γ͔͑Γ w͓ΘΓʹ

  35. ٕज़ελοΫ  ݴޠ5ZQF4DSJQU +BWB4DSJQU "VUI3VMFTͷΈ  ϑϩϯτΤϯυ7VFKT /VYUKT 7VFUJGZ "UPNJD%FTJHO

     'JHNB 4UPSZCPPL όοΫΤϯυ"1*(BUFXBZ -BNCEB %ZOBNP%#  "NB[PO&4 $MPVE'SPOU 4 424 4/4 4&4 "NQMJGZ $POTPMF $MPVE8BUDI $%, ͦͷଞ(JU)VC 4MBDL 7JTVBM4UVEJP$PEF "VUI
  36. AWS Cloud ΞʔΩςΫνϟ  Ϣʔβʔ Amazon Elasticsearch Service Amazon Simple

    Notification Service Amazon Simple Queue Service Amazon Simple Email Service Email Amazon DynamoDB AWS Cloud Development Kit Amazon CloudWatch Alarm AWS Chatbot AWS Amplify Amazon API Gateway Amazon CloudFront Amazon Route 53 Amazon Simple Storage Service AWS Lambda AWS Lambda AWS Lambda Amazon Simple Storage Service AWS Lambda Amazon Simple Notification Service
  37. AWS Cloud ΞʔΩςΫνϟ"1*  Ϣʔβʔ Amazon Elasticsearch Service Amazon Simple

    Notification Service Amazon Simple Queue Service Amazon Simple Email Service Email Amazon DynamoDB AWS Cloud Development Kit Amazon CloudWatch Alarm AWS Chatbot AWS Amplify Amazon API Gateway Amazon CloudFront Amazon Route 53 Amazon Simple Storage Service AWS Lambda AWS Lambda AWS Lambda Amazon Simple Storage Service AWS Lambda Amazon Simple Notification Service
  38. AWS Cloud ΞʔΩςΫνϟ%ZOBNP%#ͱ"NB[PO&4  Ϣʔβʔ Amazon Elasticsearch Service Amazon Simple

    Notification Service Amazon Simple Queue Service Amazon Simple Email Service Email Amazon DynamoDB AWS Cloud Development Kit Amazon CloudWatch Alarm AWS Chatbot AWS Amplify Amazon API Gateway Amazon CloudFront Amazon Route 53 Amazon Simple Storage Service AWS Lambda AWS Lambda AWS Lambda Amazon Simple Storage Service AWS Lambda Amazon Simple Notification Service
  39. ΞʔΩςΫνϟ%ZOBNP%#ͱ"NB[PO&4 

  40. AWS Cloud ΞʔΩςΫνϟσϓϩΠ  Ϣʔβʔ Amazon Elasticsearch Service Amazon Simple

    Notification Service Amazon Simple Queue Service Amazon Simple Email Service Email Amazon DynamoDB AWS Cloud Development Kit Amazon CloudWatch Alarm AWS Chatbot AWS Amplify Amazon API Gateway Amazon CloudFront Amazon Route 53 Amazon Simple Storage Service AWS Lambda AWS Lambda AWS Lambda Amazon Simple Storage Service AWS Lambda Amazon Simple Notification Service merged - masterϒϥϯν - stagingϒϥϯν - productionϒϥϯν
  41. ϒϥϯνઓུ(JU-BC'MPXʹΑΔ؀ڥϒϥϯν  master feature staging (pre-production) production Deploy Deploy Deploy

    Deploy ϒϥϯνͷϚʔδ͸Pull Requestܦ༝ɺPR͸Reviewer͕Ϛʔδ
  42. ϒϥϯνઓུ1VMM3FRVFTUΛখ͘͢͞Δ  master feature task Pull Request͕େ͖͍ͱReviewͷෛ୲͕େ͖͘Approve·Ͱ͕͔͔࣌ؒΔ

  43. ΞδΣϯμ  w7PZBHFSͱ͸ w։ൃελΠϧͷ࿩ w։ൃٕज़ͷ࿩ w;Γ͔͑Γ w͓ΘΓʹ

  44. ҙࣝͨ͜͠ͱ;Γ͔͑Γ  w(JU)VC΁ͷ৘ใͷू໿ w੹೚͸ݸਓͰ͸ͳ͘νʔϜ΁ w 1VMM3FRVFTUͷϨϏϡʔͱ ঝೝɺϨϏϡΞʔʹΑΔϚʔδ w෼͓೰Έϧʔϧ w ๊͑ࠐ·ͣʹ͙͢.FFU

    wϑΟʔυόοΫˍఏҊͷ࢓૊Έ wޠኮͷ౷ҰʹΑΔೝࣝᴥᴪͷܰݮ w"84؀ڥͷ$%,ʹΑΔԣల։ w ݸਓݕূ؀ڥ ։ൃ؀ڥ ʜ wࡉ͔ͳݕূίʔυ΋ڞ༗ w NJTDϦϙδτϦ w શͯ͸ڞ༗ࢿ࢈ wແବͳϨϏϡʔͷ΍ΓऔΓͷܰݮ w FTMJOU QSFUUJFSʹΑΔ౷Ұ
  45. 53:ͨ͜͠ͱ;Γ͔͑Γ  wΦϯϘʔσΟϯάॳ೔ʹσϓϩΠ w ॳ೔ʹϞϒͰ࣮૷ʙσϓϩΠ·Ͱ w ։ൃνʔϜͷΠϝʔδΛ௫Ή w ॳ೔ʹίϯτϦϏϡʔλʔʹՃΘΓɺୡ੒ײΛຯΘ͏ w7JTVBM4UVEJP$PEFͷ-JWF4IBSFʹΑΔϖΞϓϩ

    w ΦϯϘʔσΟϯά΍೉қ౓ߴΊͷετʔϦʔͷࡍ wඇಉظˍಉظͷ;Γ͔͑Γ
  46. ඇಉظˍಉظ;Γ͔͑Γ 

  47. ඇಉظˍಉظ;Γ͔͑Γ 

  48. ࣦഊͨ͜͠ͱ;Γ͔͑Γ  wλεΫͷ෼୲ w ि  ϫʔΧʔͷಉظ w ετʔϦʔͱͦΕΛୡ੒͢ΔͨΊͷλεΫͷ׬ྃ w.71

    .JOJNVN7JBCMF1SPEVDU ͕NJO͡Όͳ͔ͬͨ w 'JHNBʹΑΔϫΠϠʔˍϓϩτλΠϓͰϑΟʔυόοΫΛಘΒΕͨ w;Γ͔͑Γ w ඇಉظʹ೔ʑ;Γ͔͑ΓίϝϯτΛ஝ੵ͕ͨͦ͠Εࣗମ͸গͳ͔ͬͨ
  49. ΞδΣϯμ  w7PZBHFSͱ͸ w։ൃελΠϧͷ࿩ w։ൃٕज़ͷ࿩ w;Γ͔͑Γ w͓ΘΓʹ

  50. ͓ΘΓʹ  w7PZBHFS͸ɺࣾһͷεΩϧ΍ݸੑΛՄࢹԽͨ͠ͱ͜ΖͰɺ ·ͩ·ͩ.71 Ћͳঢ়ଶͰ͢ wͲΜͳϓϩδΣΫτʹؔΘ͖ͬͯͨͷ͔ՄࢹԽ͍ͨ͠ wՄࢹԽͷ࣍ʹɺίϛϡχέʔγϣϯΛαϙʔτ͍ͨ͠ wϦϞʔτϫʔΫͰ͸೉͍͠ɺࣾһؒͷ৽͍͠ग़ձ͍Λ૑ग़͠ ͍ͨ wҰॹʹ࡞͍ͬͯ͘஥͕ؒඞཁͳͷͰɺੋඇΤϯτϦʔΛ

    ͓଴͍ͪͯ͠·͢
  51. None