制御
基本的な開発フロー
GiHubフローを前提とします。
プログラム開発
配布するプログラムはPlatformIOを利用して開発されています。特にmbedフレームワークを利用し、フォーマッターにclang-format, リンターにclang-tidyを使用しています。
使用するエディターはVSCodeを想定していますが、CLionなどPlatformIOが適切に動作する環境であれば特に問いません。
GitHub Actions
GitHub Actionsを用いて自動的にプログラムのチェックなどが入るようになっています。GitHub ActionsについてはGitHub Docsを参照してください。
プライベートリポジトリではGitHub Actionsを使いすぎると課金が発生します。詳しくはGitHub Actions の支払いを管理する - GitHub Docs
GitHub Actionsの設定は.github/workflows
以下に保存されています。
main.yml
このワークフローファイル内のジョブは以下のタイミングで実行されます。
main
ブランチへのPull Request作成・更新時main
ブランチの更新時
どちらの場合も、以下の内容が確認されます。
- PlatformIOのビルドが成功すること
- clang-formatによるプログラムのフォーマット確認 (format)
- clang-tidyによるプログラムの簡易なバグチェック (lint)
- mdBookのビルドが成功すること
特にPull Requestの場合は、変更内容に応じてそれぞれチェックが省略されます。詳しくはmain.ymlのchanges
ジョブ、およびdorny/paths-filterを確認してください。逆に、変更に対して入ってほしいチェックが行われない場合はここを見てください。
release.yml
TODO (#76)
リリース
TODO (#76)
依存関係管理
プログラムを開発する上で様々なツール、ライブラリが必要になります。一般的にそれらは「依存関係」と呼ばれます。ここではこのリポジトリを管理する上で使用されている依存関係について説明し、それらの更新方法について説明します。
GitHub Actions
GitHub Actionsの依存関係はDependabotで管理されています。依存関係何か更新があればDependabotが自動でPRを作成してくれます。Dependabotの設定は.github/dependabot.ymlに書いてあります。
Dependabotについてより詳しくは、Dependabot を使う - GitHub Docsを参照してください。
mdBook
GitHub Actions内で使用されるmdBookのバージョンは自動で更新されません。main.ymlおよびrelease.ymlにMDBOOK_VERSION: vX.Y.Z
のような記述があります。mdBookのバージョン一覧はReleases · rust-lang/mdBookにリストされているので、そこを見つつバージョンを更新してください。バージョンの更新は1年に1度ほどで問題ないです。
PlatformIO
PlatformIOに関連する依存関係は2種類あります: PlatformIOそれ自身と、PlatformIO内で使用するツール群です。
PlatformIO自身
特に明記せず、最新版のPlatformIOを前提とします。GitHub Actions内でも最新版のPlatformIOを使用するように設定されています。PlatformIO関連で何か不具合があればバージョンの問題を考慮してみてください。
PlatformIO内の依存関係
これらはPlatformIOの設定ファイルplatformio.ini
に記述されています。具体的な記述については以下を参照してください。
- "platformio.ini" (Project Configuration File) — PlatformIO latest documentation
- platform_packages — PlatformIO latest documentation
- lib_deps — PlatformIO latest documentation
特にGCCコンパイラのバージョンはplatformio/toolchain-gccarmnoneeabiで明記されているため、定期的(こちらも1年おきが目安)に更新する必要があります。