制御

基本的な開発フロー

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に記述されています。具体的な記述については以下を参照してください。

特にGCCコンパイラのバージョンはplatformio/toolchain-gccarmnoneeabiで明記されているため、定期的(こちらも1年おきが目安)に更新する必要があります。