以下の内容はhttps://retrospective.hatenadiary.com/entry/20250709/1751987578より取得しました。


ESP32でのPicoRuby装置開発における独自ビルドスクリプトの工夫

ESP32でPicoRubyを使用した組み込み開発では、普段のCRuby開発とは違った課題が存在します。

その解決のためにRakefileで独自のビルドスクリプトを組んでいまして、その工夫を紹介します。

PicoRuby開発の特色

それはアプリケーションコードとランタイムの密結合です。

PicoRuby(R2P2-ESP32)では、開発者が書くアプリケーションコードとPicoRubyランタイム自体が不可分の関係にあります。

  R2P2-ESP32/storage/home/  # アプリケーションコード配置場所
  ├── app.rb (自動起動)
  ├── demo.rb
  └── led.rb

このように直接R2P2-ESP32配下のディレクトリにファイルを置いたり、submoduleでネスト先にあるbuild_configを編集したりします。

この構造により、以下の問題が発生します:

  1. アップデート時の競合:PicoRubyランタイムを更新すると、自分が書いたコードと混ざる
  2. バージョン管理の複雑化:アプリケーションコードとランタイムのバージョン管理が混在
  3. 環境の不安定性:ネストしたsubmoduleであり依存関係解決の手数がかかる

解決策

自分が書くコードと、自動でとってくるPicoRuby(R2P2-ESP32)の場所をルート直下でわけて、ビルドスクリプトで混ぜる処理を入れました

  プロジェクトルート/
  ├── src_components/          # Git管理対象(開発者のコード)
  │   └── R2P2-ESP32/
  │       └── storage/home/    # アプリケーションコード
  └── components/              # ビルド時生成(Git管理対象外)
      └── R2P2-ESP32/          # PicoRubyランタイム

装置開発者にとってのメリット

1. 安全な開発環境

  • アプリケーションコードとランタイムの完全分離
  • 誤った上書きからの保護

2. 効率的なワークフロー

いつもと同じ頻出タスク + クリーンビルドなどの処理も備えている

rake build       # ビルド:rake buildのみ実行
rake buildall    # 全体ビルド:setup_esp32とrake buildの実行
rake check_env   # 環境チェック:ESP-IDF環境とコマンドの確認
rake cleanbuild  # クリーンビルド:fullclean、setup_esp32、rake実行
rake flash       # フラッシュ:ESP32にプログラム書き込み
rake init        # 初期セットアップ:componentsディレクトリ作成、R2P2-ESP32クローン、ソースコピー、ビルド実行
rake monitor     # モニタ:ESP32シリアル出力監視
rake update      # 更新:git変更クリーン、最新版プル、ソースコピー、リビルド実行

3. 継続的な統合

PicoRubyの最新版への追従が容易 よくわからくなってもupdate打つと解決。

まとめ

ESP32 PicoRuby開発では、ランタイムとアプリケーションコードの密結合という特色があります。このようにビルドスクリプトを解することで、密結合のよさとともに、自分のコードとランタイムを分離して扱うアップデート容易性を持つことができました。

このアプローチにより、最新のPicoRubyをすぐ試すことができて大変捗っています。

ビルドスクリプト

こちらです。Apple SiliconのMacで、15.5で動かしています。




以上の内容はhttps://retrospective.hatenadiary.com/entry/20250709/1751987578より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14