KidsBlock ESP32 Education Pack 開発記録 第2回
第1回では、小中学生が電子工作とプログラミングを組み合わせて「自分のアイデアを形にする」ために、どのような環境が必要なのかを考えました。
今回は、その考えから KidsBlock ESP32 Education Pack を実際に開発していった経緯を紹介します。
はじめに
第1回で書いたように、私が目指したのは単に「ESP32をブロックで動かせる環境」ではありません。
目標にしたのは、
小中学生が、自分のアイデアを実現するためにESP32を道具として使える環境
です。
そのためには、
センサで測る
↓
データを処理する
↓
判断する
↓
表示・記録する
↓
離れた場所へ送る
↓
社会の中で役立てる
という一連の流れを、できるだけ子ども自身が組み立てられる必要があります。
そこで注目したのが KidsBlock でした。
なぜKidsBlockをベースにしたのか
KidsBlockは、電子工作教材などを開発・販売している Keyestudio社 が提供するグラフィカル・プログラミング環境です。
無料でダウンロードして利用でき、ブロックを組み合わせながらArduinoやESP32などをプログラミングできます。
私が特に注目したのは、ESP32でブロックを組み立てるだけで終わるのではなく、Arduino C++のコードが生成されることでした。
例えば、学習の初期には、
[温度を取得する]
というブロックだけを見ていても構いません。
しかし、興味を持った子どもは、その裏側で生成されたArduino C++を見ることができます。
ブロック
↓
生成されたArduino C++
↓
ESP32
この構造なら、
- 最初はブロックで考える
- 慣れたら生成コードを見る
- C++の意味を少しずつ理解する
- 必要になればArduino IDEへ進む
という段階的な学習が可能になります。
これは、私が考えていた「簡単な環境」と「本格的な開発環境」の間をつなぐ仕組みに適していると感じました。
KidsBlockそのものを作り直すのではなく「拡張する」
もう一つ重要だったのが、KidsBlockには機能を追加できる拡張の仕組みがあることでした。
そこで、KidsBlockそのものを作り直すのではなく、
KidsBlockの良さをそのまま利用し、不足している教育向け機能だけを追加する
という方針にしました。
┌──────────────────────────────┐
│ KidsBlock ESP32 Education Pack │
│ │
│ センサ / 通信 / データ処理 │
│ 記録 / 表示 / IoT など │
└──────────────┬───────────────┘
│ 拡張機能
▼
┌──────────────────────────────┐
│ KidsBlock │
│ Keyestudio社が提供 │
└──────────────┬───────────────┘
│ Arduino C++
▼
┌──────────────────────────────┐
│ ESP32 │
└──────────────────────────────┘
この独自拡張パックを KidsBlock ESP32 Education Pack と名付けました。
KidsBlockはKeyestudio社の製品です。KidsBlock ESP32 Education PackはKeyestudio社の公式製品ではなく、KidsBlockの拡張機能を利用して独自に開発している教育向け拡張パックです。
最初から機能一覧を決めていたわけではない
Education Packの開発では、最初に大量の機能一覧を作り、それを順番に実装したわけではありません。
基本的には、
実際に使ってみて「これがあれば便利だ」と感じた機能を追加する
という方法で進めてきました。
例えば、温湿度を測れるようになると、
測ったデータを保存したい。
となります。
するとSDカードが必要になります。
データを保存できるようになると、
CSVとして扱いたい。
となります。
さらに、
別の場所へ送りたい。
となれば、Wi-Fi、BLE、ESP-NOWなどが必要になります。
つまり開発も、
測る
↓
処理する
↓
保存する
↓
送る
↓
表示する
という、実際の電子工作の発展に合わせて広がっていきました。
「温度を測る」だけでは終わらない
例えば温湿度センサを使ったとします。
最初は、
温度:28.5℃
湿度:65%
と表示するだけでも十分な学習になります。
しかし、次の段階では、
この数値から何が分かるのだろう?
という疑問が生まれます。
そこで、温度や湿度から環境に関係する値を計算する機能を追加しました。
例えば、暑熱環境を考えるための指標や絶対湿度などです。
ここで重要なのは、
センサ
↓
測定値
↓
計算・データ処理
↓
意味のある情報
↓
判断・行動
という流れです。
センサから数値を取得すること自体が目的ではありません。
取得したデータを使って何を考えるかが、より重要だと思っています。
データを「保存する」機能
測定した値をその場で見るだけでなく、時間とともに変化する様子を調べるには記録が必要です。
そこで、SDカードへデータを書き込む機能を追加しました。
例えば、
time,temp,humi
09:00,25.2,58
09:10,26.1,60
09:20,27.0,63
のように保存できれば、
- 朝と昼で温度はどう変わったか
- 教室と体育館ではどう違うか
- 晴れの日と雨の日ではどう違うか
などを調べることができます。
電子工作が、そのままデータ活用の学習につながります。
さらにCSVを扱いやすくするため、データ処理の機能も追加していきました。
「離れた場所へ送る」ための通信機能
ESP32を教育で使う大きな理由の一つが通信機能です。
Education Packでは、用途に応じてWi-Fi、BLE、ESP-NOWなどを利用できるようにしてきました。
例えば、
体育館
ESP32 + センサ
│
│ 無線通信
▼
職員室
ESP32 / PC
のようなシステムを考えることができます。
単にLEDを点灯させるだけだった電子工作が、
必要な情報を必要な場所へ届ける
システムへ発展します。
これはIoTを理解する上でも重要な経験になります。
ESP-NOWを教育で使ってみる
特に興味深かったのがESP-NOWです。
ESP-NOWを使うと、Wi-Fiルーターを経由せず、ESP32同士で直接通信できます。
例えば、
ESP32 A ─────→ ESP32 B
温湿度 受信・表示
という通信を比較的簡単に構成できます。
さらに複数台になると、
ESP32 A ─┐
ESP32 B ─┼──→ 受信機
ESP32 C ─┘
という構成も考えられます。
ところが、実際に複数台を動かしてみると、通信のタイミングが重なってデータを取りこぼすことがあります。
ここで、
なぜデータが届かなかったのだろう?
という新しい学習課題が生まれます。
送信タイミングをずらす、受信側から送信許可を出す、といった工夫を考えることができます。
私は、このようなうまくいかない現象も教材になると考えています。
実機で試さないと分からないことが多い
Education Packの開発で強く感じたのは、
プログラムがコンパイルできることと、実際の教育現場で使えることは別である
ということです。
例えば無線通信では、
- 見通しのよい屋外
- 鉄筋・鉄骨の建物
- 教室間
- 階をまたいだ通信
では結果が大きく変わります。
ESP-NOWのNormalモードとLong Rangeモードについても、実際に距離を変えたり、建物内で階をまたいだりして試験しました。
通信距離だけではなく、
- RSSI
- 受信率
- パケット損失
- 設置する高さ
- 壁や窓の影響
などを見る必要があります。
こうした実験を繰り返しながら、必要な機能をブロックとして追加しています。
子ども向けだからこそ「機能を増やしすぎない」
機能を追加していくと、当然ブロックの数も増えていきます。
しかし、Education Packでは、
できることをすべてブロックにする
ことを目標にはしていません。
例えば、内部状態を確認するためだけの高度なデバッグ機能まで通常の画面に並べると、初めて使う子どもには分かりにくくなります。
そこで、
- 子どもが作品を作るときに使う機能
- 教員が説明しやすい機能
- 次の学習につながる機能
を優先しています。
つまり、
複雑な処理は内部で行う。しかし、学ぶべき仕組みまで隠さない。
というバランスを考えています。
初期化は一度だけ
ブロックを簡単にする場合でも、生成されるArduino C++が不自然にならないことも重要です。
例えばI2C機器を使うたびに、
Wire.begin();
を何度も生成するような仕組みにはしたくありません。
ディスプレイや通信についても同様です。
初期化
↓
必要な処理
↓
必要な処理
↓
必要な処理
という構造が基本です。
子どもが後で生成コードを見たときにも、
最初に準備をして、その後に繰り返し処理をしている。
というプログラムの基本構造が見えるようにしたいと考えています。
ChatGPTとCodexを開発に使う
今回の開発では、生成AIも積極的に利用しています。
私の場合、役割を次のように考えています。
私
│
│ 目的・仕様・教育的判断・実機評価
│
├── ChatGPT
│ 設計検討・問題整理・技術調査・レビュー
│
└── Codex
実装・修正・コード作成
私自身の感覚としては、
- 私:プロジェクトマネージャー
- ChatGPT:SE(システムエンジニア)
- Codex:プログラマー
という役割分担に近いものです。
これは、AIに「全部作って」と依頼するのとは少し違います。
AIがコードを書いても、仕様を決めるのは人間
AIを使えばコードを書く速度は大幅に上がります。
しかし、
小学生にこのブロックは必要か?
この言葉で中学生に意味が伝わるか?
初期化ブロックは別にした方がよいか?
この機能を通常画面に見せるべきか?
実際のESP32で安定して動作するか?
といった判断は、コードを生成するだけでは決まりません。
例えば、
AI
「技術的には実装できます」
↓
人間
「教育用として本当に必要ですか?」
という確認が必要です。
さらに、実際のハードウェアでは、
- センサごとの差
- 電源
- 配線
- ライブラリのバージョン
- ESP32 Arduino Coreの違い
- 無線環境
などによって、想定どおり動かないことがあります。
最後は実機で確認する必要があります。
AIによって、引退した技術者も再びものづくりへ
私にとって、生成AIを使った開発にはもう一つ大きな意味があります。
ソフトウェア開発から離れて時間がたつと、開発環境やライブラリ、言語仕様は大きく変わっています。
以前なら、それらを一つずつ調べ直してからでなければ、新しいシステムの開発に入ることは難しかったと思います。
しかし現在は、ChatGPTやCodexと対話しながら、
アイデア
↓
仕様を考える
↓
AIと設計を検討
↓
コードを作る
↓
実機で試す
↓
問題をAIと分析
↓
修正する
というサイクルを短時間で繰り返せるようになりました。
生成AIは、経験を持つ技術者が再びものづくりに参加するための、大きな助けにもなると感じています。
ただし、最終的に重要なのは、
何を作るのか
誰のために作るのか
本当に必要な機能は何か
を人間が考えることだと思います。
現在はPreview版として開発中
KidsBlock ESP32 Education Packは、完成した製品として固定するのではなく、実際に使いながら改善する方針で開発しています。
2026年8月に Version 0.6 Preview を公開し、12の拡張機能を含む構成で実機検証を進めています。
Previewとしているのは、単に「未完成だから」という理由だけではありません。
教育用のツールは、
- 子どもが理解できるか
- 教員が説明できるか
- 実際の授業時間内で使えるか
- 異なるESP32ボードでも動作するか
- ブロックの言葉が分かりやすいか
といったことを、実際の利用を通して確認する必要があるからです。
開発して分かったこと
Education Packを作りながら、改めて感じたことがあります。
それは、
教育用ツールでは「何ができるか」と同じくらい、「どう見せるか」が重要
ということです。
高度な技術を使っていても、子どもに必要なのは、
温度を測る
という分かりやすいブロックかもしれません。
しかし、その裏側では本物のESP32とArduino C++が動いています。
私は、この
入口はやさしく、奥には本物の技術がある
という環境を作りたいと思っています。
次回
今回は、KidsBlock ESP32 Education Packをどのような考え方で開発してきたのかを紹介しました。
次回、第3回では、
「KidsBlock ESP32 Education Pack」の紹介
として、現在実際に利用できる機能を紹介します。
例えば、
- Wi-Fi
- BLE
- ESP-NOW
- ThingSpeak
- BME280
- 環境データ処理
- SDカード
- CSV・データ処理
- NTP
- ESP32システム情報
- LCD1602
- Webブラウザとの連携
などを、
「何の機能なのか」ではなく「子どもが何を作れるのか」
という視点から紹介したいと思います。
また、次期版で開発を進めているTFTディスプレイなどについても触れる予定です。
KidsBlock ESP32 Education Pack 開発記録
- 第1回:小中学生向け電子工作プログラミング環境は、なぜ必要なのか
- 第2回:「KidsBlock ESP32 Education Pack」の開発 ← 今回
- 第3回:「KidsBlock ESP32 Education Pack」の紹介
関連情報
- KidsBlock:Keyestudio社が提供するグラフィカル・プログラミング環境
- KidsBlock ESP32 Education Pack:KidsBlockの拡張機能を利用して独自に開発している教育向け拡張パック
- 現在の公開版:Version 0.6 Preview
- Version 0.6 Preview:12拡張機能
- 開発・配布名義:davinichi
KidsBlock ESP32 Education PackはKeyestudio社の公式製品ではありません。KidsBlockの拡張機能を利用した独自の教育向けプロジェクトです。
※KidsBlockの対応OS、対応ボード、配布条件などについては、Keyestudio/KidsBlockの最新の公式情報をご確認ください。