MeshCore ソースコード開発チュートリアル
前提条件
必要なツール
始める前に、以下のツールを用意してください:
PlatformIO のインストール
VS Code の Extensions マーケットプレイスで PlatformIO を検索してインストールします。

インストール後、通常は左側のツールバーにアリの形をしたアイコンが表示されます。

プロジェクトの準備
プロジェクトを配置したいフォルダーを開きます。ターミナルでそのフォルダーを開きます。ここをクリックしてプロジェクトを git clone します。
VSCode を開き、platform IO アイコンをクリックし、select a folder を選択します。clone したプロジェクトのフォルダーを選択します。

PlatformIO は必要な依存関係を自動的にインストールします。インストールが成功すると、Project has been successfully updated と表示されます。

ファームウェア開発
開発チュートリアル
対象ボード用の environment(環境)を見つけます。ここでは L1 Pro companion を例にします:

その後、PlatformIO がそのボードに必要な依存関係を準備します。
コードを変更します。ボード用の variant.h ファイルを変更することを推奨します。
コーディングが完了したら、次のコマンドを実行してコードをコンパイルし、uf2 ファイルに変換します。
pio run -e WioTrackerL1_companion_radio_ble
pio run -e WioTrackerL1_companion_radio_ble -t create_uf2
次に、RST ボタンを素早く 2 回クリックして DFU モードに入ります。ポップアップしたディスクに uf2 ファイルをドラッグします。uf2 ファイルは .pio\build\WioTrackerL1_companion_radio_ble にあります。
例
ユーザー表示の制御
この例では、L1 Pro の UI 表示をどのように変更するかを示します。画面上のメッセージ表示を削除し、「Test」を常に表示するようにします。

次のコードを /examples/companion_radio/ui-new/UITask.cpp にコピーします。
if (_page == HomePage::FIRST) {
display.setColor(DisplayDriver::YELLOW);
display.setTextSize(2);
display.drawTextCentered(display.width() / 2, 20, "Test");

これをコンパイルし、生成された uf2 ファイルを L1 Pro に書き込みます。
(上級)PR の提出
MeshCore プロジェクトへの貢献をご検討いただきありがとうございます!どのように貢献できますか? 1. バグ報告
- Issues トラッカーを使用してください
- わかりやすいタイトルを付けてください(例:"Crash when calling begin() with invalid pin")
- 再現するための手順を正確に記述してください
- 使用しているボード、IDE バージョン、ライブラリバージョン、および関連するコードスニペットを含めてください
- 可能であれば、最小限かつ完全なサンプルスケッチを添付してください
2. 機能拡張・新機能の提案
- [Feature request] というプレフィックスを付けて issue を作成してください
- ユースケースを説明してください → この提案はどのような問題を解決しますか?
- 理想的な API / 挙動を記述してください(コード例があると非常に助かります) 3. コード変更の提出(Pull Request)
小さな修正
(タイポ、コメント、サンプル、軽微なバグ修正) → 事前に issue を立てる必要はありません。直接 pull request を作成してください。
大きな変更・新機能
- まず issue を立ててアイデアを議論します
- メンテナーからおおまかな👍(賛同)を得ます
- 'dev' ブランチからリポジトリを fork し、自分のブランチ(fix/xxx, feature/yyy, docs/whatever)を作成します
- 変更を加えます
- 必要に応じてサンプルコードを更新または追加します
- コード内のコメントを追加・更新します
- Pull request を送信します
Pull Request のガイドライン
- 1 機能 / 1 修正につき 1 つの pull request(小さい PR の方がレビューしやすく、早くマージできます)
- 説明的なコミットメッセージを使用してください 良い例: Fix I2C timeout handling on ESP32 悪い例: update
- 関連する issue があれば参照してください(Fixes #123, Closes #89 など)
- 公開 API を変更した場合は、README.md と library.properties を更新してください
- 新機能には examples/ 内のサンプルスケッチを含めてください
コーディングスタイル
.clang-format に従い、既存の C++ スタイルに従ってください
- インデントはスペース 2 つ(タブは使用しない)
- 関数名や変数名には camelCase を使用
- クラス名には UpperCamelCase / PascalCase を使用
- #define の定数は ALL_CAPS を使用
- 可能であれば 1 行はおおよそ 100 文字未満に抑える (ただし、厳密なルールよりも既存コードとの一貫性を優先します)