Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Web開発の知見を活かして組み込み開発環境を整備した話_2021秋版
Search
株式会社ビットキー / Bitkey Inc.
PRO
October 08, 2021
Technology
960
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Web開発の知見を活かして組み込み開発環境を整備した話_2021秋版
株式会社ビットキー / Bitkey Inc.
PRO
October 08, 2021
More Decks by 株式会社ビットキー / Bitkey Inc.
See All by 株式会社ビットキー / Bitkey Inc.
Flutter × BLE Centralを自前Pluginで実装する設計パターン - MethodChannel / EventChannelで作る双方向ブリッジの実践 / Building Custom Flutter BLE Central Plugins: Bidirectional Bridging with Method & Event Channels
bitkey
PRO
0
410
Swift&Xcodeのバージョンアップにまつわる怖かった思い出 / Scary Memories of Swift and Xcode Updates
bitkey
PRO
0
200
iOS/Androidの二刀流エンジニアがFlutter & TypeScriptへ越境後の現在地 - Flutterがメインになって見えた景色と現在の醍醐味 / Dual-Platform Mobile Engineer Shifts to Flutter & TypeScript - The View and Real Thrill of Going Flutter-First
bitkey
PRO
0
550
個人開発で育てる「大規模設計の苗床」 - AI時代の1人開発から始める業務への知識接続 / The Seedbed for Large-Scale Design - From AI-Era Solo Projects to Professional Knowledge
bitkey
PRO
1
510
失敗を経て、Harness Engineering で 大切にしたいことを考える / Learning from Failure: What Matters in Harness Engineering
bitkey
PRO
1
560
AI Adaptable なテストを整える工夫 / Ways to Make Your Tests AI-Adaptable
bitkey
PRO
3
320
人が担う「価値」とは?これからの「QA」とは / Human Value and the Future of Quality Assurance
bitkey
PRO
0
350
キャリア25年目にしてTypeScript に出会うまで - 「型」を通じて振り返るプログラミング言語遍歴 / Meeting TypeScript After 25 Years in Tech - Looking Back at My Programming Language Journey Through "Types"
bitkey
PRO
2
510
AIのために、AIを使った、Effect-TSからの脱却 〜テストを活用した安全なリファクタリングの進め方〜
bitkey
PRO
2
1k
Other Decks in Technology
See All in Technology
深夜のクラウド懺悔室 1:29:300 or 1:0:0
kazzpapa3
1
240
10分で知る最近のOmarchy
komagata
0
280
range over func 2年間の軌跡 Issue #56413 はGoのエコシステムをどう変えたか
ryujicre8ive
0
130
Minecraft JavaのMODをSwiftで作る
1mash0
0
130
家のリアーキテクト・リファクタリング
suguruooki
0
140
AI時代、データエンジニアが一番おもろい
genshun9
0
420
ペアプロの価値はコードを書くことだけじゃない
codmoninc
PRO
0
210
Tab5をRubyで動くパソコンにする
kishima
2
360
Gitは怖い?共有ワークスペースから始めるSnowflakeチーム開発
coco_se
0
190
GoにおけるFFIのこれまでとこれから
goccy
5
2.6k
Deployment の 先にある AI Agent 基盤 - kagent vNext、Agent Substrate、Hermes から読み解く Agent Runtime の現在地 / k8s-matsuri-2-ai-agent-platform-amsy810
masayaaoyama
3
270
研究開発部の紹介 / Sansan R&D Profile
sansan33
PRO
5
25k
Featured
See All Featured
Bash Introduction
62gerente
615
220k
Building an army of robots
kneath
306
46k
The innovator’s Mindset - Leading Through an Era of Exponential Change - McGill University 2025
jdejongh
PRO
1
330
Winning Ecommerce Organic Search in an AI Era - #searchnstuff2025
aleyda
1
2.1k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
Being A Developer After 40
akosma
91
590k
Why You Should Never Use an ORM
jnunemaker
PRO
61
10k
Intergalactic Javascript Robots from Outer Space
tanoku
273
27k
The Invisible Side of Design
smashingmag
301
52k
The Curse of the Amulet
leimatthew05
2
14k
Money Talks: Using Revenue to Get Sh*t Done
nikkihalliwell
0
490
Mobile First: as difficult as doing things right
swwweet
225
10k
Transcript
Web։ൃͷݟΛ׆͔ͯ͠ ΈࠐΈ։ൃڥΛඋͨ͠ 2021ळ൛
Outline 1. ࣗݾհ 2. උ͞Εͨ։ൃڥͱ 3. औΓΈ 4. কདྷͷల 2
2
2015 ࣾձਓͷελʔτ ใܥͷେֶӃΛଔۀɺERPϕϯμʔʹब৬ ࣾΫϥυΛKubernetes/Go/Vue.jsͰߏங ౡ խढ़ Masatoshi Tsushima 2004 ιϑτΣΞ։ൃͱͷग़ձ͍
WebαΠτܞଳΞϓϦΛ࡞ͬͯ༡ΜͰ͍·ͨ͠ 2018ळ Bitkeyʹࢀը ॳbitkey platformͷ։ൃΛ୲ ओʹGoͰαʔόαΠυΛ։ൃ 2019ळ ϑΝʔϜΣΞνʔϜΛ্ཱͪ͛ bitlock LITEͷϑΝʔϜΣΞΛԽ ݱࡏʹଓ͘։ൃελΠϧΛߏங 2020Ն ୈೋੈϩοΫσόΠεͷ։ൃ Λલఏͱͨ͠ϑΝʔϜΣΞ։ൃ 2021य़ϦϦʔε
උ͞Εͨ։ൃڥͱ 4
ϑΝʔϜΣΞԽ։࢝࣌ͷ 5 ։ൃڥΛඋ͢ΔϞνϕʔγϣϯ
։ൃڥΛඋ͢ΔϞνϕʔγϣϯ 6 ͜ͷ IDE ΛͬͯͶʂ ͳΔ΄Ͳ
։ൃڥΛඋ͢ΔϞνϕʔγϣϯ 7 ϝχϡʔͷฤूΛΫϦοΫͯ͠… ݕࡧͬͯ… γϣɺγϣʔτΧοτΩʔͬͯ͋ͬͨΓ͠·͢…ʁ
։ൃڥΛඋ͢ΔϞνϕʔγϣϯ 8 ͋ΔΑʂ ʢϝχϡʔΛΫϦοΫʣ ίʔυܗػೳͱ͔… อଘલʹΕͳ͍Α͏ʹ͠Α…
։ൃڥΛඋ͢ΔϞνϕʔγϣϯ 9 ͪΖΜʂͰ͖·͢ͱʂ ͜ͷγϯϘϧͷࢀরͯ͠Δͱͬͯ͜ݟΕΔʁ ຊʁ͜ΕͰશ෦ʁ
։ൃڥΛඋ͢ΔϞνϕʔγϣϯ 10 ͭ…ͭΒ͍…
ຊʹօ͜ΕͰͬͯΔͷʁ 11 ͔͠͠ΈࠐΈͷެ։ใগͳ͍ Web։ൃͷੈք͔ΒҠͬͨײ
12 ҰମԿ͕͜Μͳʹ͍ۤ͠ͷ͔…
ΈࠐΈʹҠͬͯมΘͬͨ͜ͱ εϥΠυͷλΠτϧ 13 Code Web։ൃɿࣗ༝ͳΤσΟλͱϓϥάΠϯ ΈࠐΈ։ൃɿಛघͳIDE Build Web։ൃɿCLIͷϏϧυπʔϧɺϏϧυεΫϦϓτɺ Live Reload
ΈࠐΈ։ൃɿϝχϡʔͷϘλϯʹϒϥοΫϘοΫεԽ Release Web։ൃɿCIύΠϓϥΠϯͰࣗಈԽ ΈࠐΈ։ൃɿϦϦʔε࡞ۀΛखॱԽ Test Web APIɿॆ࣮ͨ͠൚༻πʔϧ (curl, Postman, Swagger UI…) BLEɿtelnet૬ͷπʔϧ͋Δ͕…ࣗ࡞͢Δʁ
උ͞Εͨ։ൃڥͱ εϥΠυͷλΠτϧ 14 Code ׳ΕͨͷΛ͍͍ͨ Build ঢ়گʹԠ͍ͯͨ͡͠ Release ࣗಈԽ͍ͨ͠ Test
εϚϗΞϓϦͱͷ૬ޓґଘΛղফ͍ͨ͠
Χ݄ޙ… 15
։ൃڥվળͷऔΓΈ 16
IDEґଘ 17 IDEͷઃఆϑΝΠϧΛม • Makefile ◦ CLIϕʔεͰ࠷খͷ։ൃڥΛఆٛ • VS Code
ͷઃఆ ◦ σόοάͳͲɺҠߦલͷIDEͱಉͷػೳΛ࣮ݱ ίϯτϩʔϧՄೳͳϏϧυ ͷ༨͕૿͑Δ ΤσΟλࣗ༝Խ ඪ४ͱͯ͠ͷ VS Code
Մೳʹͳͬͨ Ϟμϯͳ։ൃςΫχοΫΛͲΜͲΜऔΓࠐΉ 18 • ίʔυϑΥʔϚοτΛڧ੍ ◦ ClangFormatΛಋೖ ▪ ΤσΟλͷϓϥάΠϯ ▪
ҕୗઌʹՄೳͳݶΓ͓ئ͍ ▪ CIͰνΣοΫ ◦ ϨϏϡʔָ͕ʹͳΔ ▪ ຊ࣭తͰͳ͍͕ࠩফ͑Δ ▪ ͠ΐʔͳ͍ࢦఠ͕ແ͘ͳΔ • ίʔυࣗಈੜ ◦ BLEΛOpenAPIతͳ༷͔Β ◦ ΫϥΠΞϯτࣗಈੜ • ܯࠂΦϓγϣϯΛݫ͘͠ • υΩϡϝϯτͷੜ ◦ DoxygenΛར༻ ◦ C/C++քͷJavadoc • C++17 ◦ ෦తʹಋೖ ◦ ϕΫτϧɾߦྻͷܭࢉʹར༻ ◦ constexprϥϜμˠؔϙΠϯλ • ϥΠϒϥϦ ◦ Git SubmoduleͰऔΓࠐΉ • ୯ମςετ ◦ ςετ༻ϏϧυΛ࣮ߦ • εχϖοτͷڞ༗ • σόοάϩάͷՃ
ίʔυԽ͞ΕͨBLE API༷ॻ ༷͔ΒίʔυΛੜ 19 C: ϦΫΤετϋϯυϥ Markdown: APIυΩϡϝϯτ TypeScript: ΫϥΠΞϯτCLI
Python Markdown TypeScript C (Handler) σόΠε୯ಠͰςετ ΞϓϦͱૄ݁߹ͳ։ൃεέδϡʔϧ
ϦϦʔεύΠϓϥΠϯΛඋ CI/CD for Embedded Systems 20 • ʮGitͰλάΛଧͭˠߋ৽༻ύοέʔδͷΞοϓϩʔυʯΛࣗಈԽ ◦ ։ൃऀλάΛଧ͚ͭͩ
◦ ࣗಈͰνΣοΫɾϏϧυɾΞοϓϩʔυˠSlackʹ௨ • GitHub Workflows Λར༻ ◦ DockerΛͬͨ࠶ݱੑͷߴ͍Ϗϧυ ◦ ޙ͔ΒݕূͰ͖Δ ίʔυԽ͞ΕͨϦϦʔε ϛεͷՄೳੑΛݮΒ͢
Ͳ͏ͳ͔ͬͨʁ εϥΠυͷλΠτϧ 21 Code ׳ΕͨͷΛ͍͍ͨ →CLIͰߏஙɺࣗͷ͏ΤσΟλͱ࿈ܞ Build ঢ়گʹԠ͍ͯͨ͡͠ →ίʔυԽ͞ΕͨϏϧυʹػೳΛՃ Release
ࣗಈԽ͍ͨ͠ →։ൃڥͷCLIԽͰCI/CDύΠϓϥΠϯߏஙՄೳʹ Test εϚϗΞϓϦͱͷ૬ޓґଘΛղফ͍ͨ͠ →༷͔ΒΫϥΠΞϯτΛࣗಈੜɺσόΠε୯ಠͰςετ
কདྷͷల 22
։ൃڥͷඋʹ͔͚Δࢥ͍ 23 ΠϊϕʔςΟϒʹͳΕΔ͔ ڥ͕େ͖͘ࠨӈ͢Δ
ΑΓ҆શʹɺศརͰɺշదʹ ߴ࣭ͳΛ࠷ͰϦϦʔε͢ΔΈ ୭͕ೳྗΛ͙͢ՌʹͰ͖Δମ੍ 24
25