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

Web開発の知見を活かして組み込み開発環境を整備した話_2021秋版

 Web開発の知見を活かして組み込み開発環境を整備した話_2021秋版

More Decks by 株式会社ビットキー / Bitkey Inc.

Other Decks in Technology

Transcript

  1. Web։ൃͷ஌ݟΛ׆͔ͯ͠ ૊ΈࠐΈ։ൃ؀ڥΛ੔උͨ͠࿩ 2021ळ൛

  2. Outline 1. ࣗݾ঺հ 2. ੔උ͞Εͨ։ൃ؀ڥͱ͸ 3. औΓ૊Έ 4. কདྷͷల๬ 2

    2
  3. 2015 ࣾձਓͷελʔτ ৘ใܥͷେֶӃΛଔۀɺERPϕϯμʔʹब৬ ࣾ಺Ϋϥ΢υΛKubernetes/Go/Vue.jsͰߏங ௡ౡ խढ़ Masatoshi Tsushima 2004 ιϑτ΢ΣΞ։ൃͱͷग़ձ͍

    WebαΠτ΍ܞଳΞϓϦΛ࡞ͬͯ༡ΜͰ͍·ͨ͠ 2018ळ Bitkeyʹࢀը ౰ॳ͸bitkey platformͷ։ൃΛ୲౰ ओʹGoͰαʔόαΠυΛ։ൃ 2019ळ ϑΝʔϜ΢ΣΞνʔϜΛ্ཱͪ͛ bitlock LITEͷϑΝʔϜ΢ΣΞΛ಺੡Խ ݱࡏʹଓ͘։ൃελΠϧΛߏங 2020Ն ୈೋੈ୅ϩοΫσόΠεͷ։ൃ ಺੡Λલఏͱͨ͠ϑΝʔϜ΢ΣΞ։ൃ 2021य़ϦϦʔε
  4. ੔උ͞Εͨ։ൃ؀ڥͱ͸ 4

  5. ϑΝʔϜ΢ΣΞ಺੡Խ։࢝࣌ͷ࿩ 5 ։ൃ؀ڥΛ੔උ͢ΔϞνϕʔγϣϯ

  6. ։ൃ؀ڥΛ੔උ͢ΔϞνϕʔγϣϯ 6 ͜ͷ IDE Λ࢖ͬͯͶʂ ͳΔ΄Ͳ

  7. ։ൃ؀ڥΛ੔උ͢ΔϞνϕʔγϣϯ 7 ϝχϡʔͷฤूΛΫϦοΫͯ͠… ݕࡧͬͯ… γϣɺγϣʔτΧοτΩʔͬͯ͋ͬͨΓ͠·͢…ʁ

  8. ։ൃ؀ڥΛ੔උ͢ΔϞνϕʔγϣϯ 8 ͋ΔΑʂ ʢϝχϡʔΛΫϦοΫʣ ίʔυ੔ܗػೳͱ͔… อଘલʹ๨Εͳ͍Α͏ʹ͠Α…

  9. ։ൃ؀ڥΛ੔උ͢ΔϞνϕʔγϣϯ 9 ΋ͪΖΜʂͰ͖·͢ͱ΋ʂ ͜ͷγϯϘϧͷࢀরͯ͠Δͱͬͯ͜ݟΕΔʁ ຊ౰ʁ͜ΕͰશ෦ʁ

  10. ։ൃ؀ڥΛ੔උ͢ΔϞνϕʔγϣϯ 10 ͭ…ͭΒ͍…

  11. ຊ౰ʹօ͜ΕͰ΍ͬͯΔͷʁ 11 ͔͠͠૊ΈࠐΈͷެ։৘ใ͸গͳ͍ Web։ൃͷੈք͔ΒҠͬͨײ૝

  12. 12 ҰମԿ͕͜Μͳʹ͍ۤ͠ͷ͔…

  13. ૊ΈࠐΈʹҠͬͯมΘͬͨ͜ͱ εϥΠυͷλΠτϧ 13 Code Web։ൃɿࣗ༝ͳΤσΟλͱϓϥάΠϯ ૊ΈࠐΈ։ൃɿಛघͳIDE Build Web։ൃɿCLIͷϏϧυπʔϧɺϏϧυεΫϦϓτɺ Live Reload

    ૊ΈࠐΈ։ൃɿϝχϡʔͷϘλϯʹϒϥοΫϘοΫεԽ Release Web։ൃɿCIύΠϓϥΠϯͰࣗಈԽ ૊ΈࠐΈ։ൃɿϦϦʔε࡞ۀΛखॱԽ Test Web APIɿॆ࣮ͨ͠൚༻πʔϧ (curl, Postman, Swagger UI…) BLEɿtelnet૬౰ͷπʔϧ͸͋Δ͕…ࣗ࡞͢Δʁ
  14. ੔උ͞Εͨ։ൃ؀ڥͱ͸ εϥΠυͷλΠτϧ 14 Code ׳Εͨ΋ͷΛ࢖͍͍ͨ Build ঢ়گʹԠͯ͡޻෉͍ͨ͠ Release ࣗಈԽ͍ͨ͠ Test

    εϚϗΞϓϦͱͷ૬ޓґଘΛղফ͍ͨ͠
  15. ਺Χ݄ޙ… 15

  16. ։ൃ؀ڥվળͷऔΓ૊Έ 16

  17. ୤IDEґଘ 17 IDEͷઃఆϑΝΠϧΛม׵ • Makefile ◦ CLIϕʔεͰ࠷খͷ։ൃ؀ڥΛఆٛ • VS Code

    ͷઃఆ ◦ σόοάͳͲɺҠߦલͷIDEͱಉ౳ͷػೳΛ࣮ݱ ίϯτϩʔϧՄೳͳϏϧυ ޻෉ͷ༨஍͕૿͑Δ ΤσΟλࣗ༝Խ ඪ४ͱͯ͠ͷ VS Code
  18. Մೳʹͳͬͨ޻෉ Ϟμϯͳ։ൃςΫχοΫΛͲΜͲΜऔΓࠐΉ 18 • ίʔυϑΥʔϚοτΛڧ੍ ◦ ClangFormatΛಋೖ ▪ ΤσΟλͷϓϥάΠϯ ▪

    ҕୗઌʹ΋ՄೳͳݶΓ͓ئ͍ ▪ CIͰνΣοΫ ◦ ϨϏϡʔָ͕ʹͳΔ ▪ ຊ࣭తͰ͸ͳ͍ࠩ෼͕ফ͑Δ ▪ ͠ΐʔ΋ͳ͍ࢦఠ͕ແ͘ͳΔ • ίʔυࣗಈੜ੒ ◦ BLEΛOpenAPIతͳ࢓༷͔Β ◦ ΫϥΠΞϯτ΋ࣗಈੜ੒ • ܯࠂΦϓγϣϯΛݫ͘͠ • υΩϡϝϯτͷੜ੒ ◦ DoxygenΛར༻ ◦ C/C++քͷJavadoc • C++17 ◦ ෦෼తʹಋೖ ◦ ϕΫτϧɾߦྻͷܭࢉʹར༻ ◦ constexprϥϜμˠؔ਺ϙΠϯλ • ϥΠϒϥϦ ◦ Git SubmoduleͰऔΓࠐΉ • ୯ମςετ ◦ ςετ༻ϏϧυΛ࣮ߦ • εχϖοτͷڞ༗ • σόοάϩάͷՃ޻
  19. ίʔυԽ͞ΕͨBLE API࢓༷ॻ ࢓༷͔ΒίʔυΛੜ੒ 19 C: ϦΫΤετϋϯυϥ Markdown: APIυΩϡϝϯτ TypeScript: ΫϥΠΞϯτCLI

    Python Markdown TypeScript C (Handler) σόΠε୯ಠͰςετ ΞϓϦͱૄ݁߹ͳ։ൃεέδϡʔϧ
  20. ϦϦʔεύΠϓϥΠϯΛ੔උ CI/CD for Embedded Systems 20 • ʮGitͰλάΛଧͭˠߋ৽༻ύοέʔδͷΞοϓϩʔυʯΛࣗಈԽ ◦ ։ൃऀ͸λάΛଧ͚ͭͩ

    ◦ ࣗಈͰνΣοΫɾϏϧυɾΞοϓϩʔυˠSlackʹ௨஌ • GitHub Workflows Λར༻ ◦ DockerΛ࢖ͬͨ࠶ݱੑͷߴ͍Ϗϧυ ◦ ޙ͔ΒݕূͰ͖Δ ίʔυԽ͞ΕͨϦϦʔε ϛεͷՄೳੑΛݮΒ͢
  21. Ͳ͏ͳ͔ͬͨʁ εϥΠυͷλΠτϧ 21 Code ׳Εͨ΋ͷΛ࢖͍͍ͨ →CLIͰߏஙɺࣗ෼ͷ࢖͏ΤσΟλͱ࿈ܞ Build ঢ়گʹԠͯ͡޻෉͍ͨ͠ →ίʔυԽ͞ΕͨϏϧυʹػೳΛ௥Ճ Release

    ࣗಈԽ͍ͨ͠ →։ൃ؀ڥͷCLIԽͰCI/CDύΠϓϥΠϯ΋ߏஙՄೳʹ Test εϚϗΞϓϦͱͷ૬ޓґଘΛղফ͍ͨ͠ →࢓༷͔ΒΫϥΠΞϯτΛࣗಈੜ੒ɺσόΠε୯ಠͰςετ
  22. কདྷͷల๬ 22

  23. ։ൃ؀ڥͷ੔උʹ͔͚Δࢥ͍ 23 ΠϊϕʔςΟϒʹͳΕΔ͔͸ ؀ڥ͕େ͖͘ࠨӈ͢Δ

  24. ΑΓ҆શʹɺศརͰɺշదʹ ߴ඼࣭ͳ੡඼Λ࠷଎ͰϦϦʔε͢Δ࢓૊Έ ୭΋͕ೳྗΛ͙͢੒ՌʹͰ͖Δମ੍ 24

  25. 25