みなさん、こんにちは。
今回は、巷で話題のVibe Coding(バイブコーディング)を活用して、SwitchBotボットをM5StickCから制御してみたお話です。プログラミング初心者の方や、普段プログラミングをされない方にこそ、ぜひ読んでいただきたい内容となっています!
SwitchBotボット、M5StickCと出会う
先日、SwitchBotボットを入手しました。
ラズベリーパイでAlexaと連携させて音声コマンドで制御できるようにしたのですが、せっかくなので手持ちのM5StickCからも制御できるようにしたいと考え、試してみることにしました。
「M5StickCからSwitchBotボットを制御するプログラムは存在するのだろうか?」と思い調べてみたところ、公式のGitHubにはM5StickC用の制御プログラムはなかったものの、この分野は非常に多くの人が開拓していることがすぐに分かりました。GitHubに非常に多くのコードサンプルが見つかったのです。
通常であれば、そうしたコードサンプルを利用するのも一つの手です。しかし、今回はあえてコーディングエージェントを使ってみることにしました。
なぜなら、先例が多い分野は、コーディングエージェントの実装性能も高いはずだと直感したからです。これは試してみる価値がある、と感じました。
コーディングエージェントにGitHub Copilot Proを活用
今回使用したコーディングエージェントは、Visual Studio Codeで動作するGitHub Copilot Proです。最近、Claude Sonnet 4モデルが利用可能になった個人向け有料版ですね。このClaude Sonnet 4にコードを生成してもらうことにしました。
GitHub Copilotは、少なくともリポジトリを作成し、何らかのファイルを作成しておかないと、エージェントモードでコーディングしてくれない仕様です。そこで、今回はcontrol_switchbot_from_m5stickc.ino
というファイルを用意し、最初に以下のコードのみ入力しました。
#include <M5StickC.h>
#include "BLEDevice.h"
// SwitchBot MAC Address
static String MAC_SWITCHBOT = "MAC_ADDRESS_HERE"; // Example: "A0:1B:2C:3D:4E:5F"
// SwitchBot BLE Information
static BLEUUID SERV_SWITCHBOT("cba20d00-224d-11e6-9fb8-0002a5d5c51b");
static BLEUUID CHAR_SWITCHBOT("cba20002-224d-11e6-9fb8-0002a5d5c51b");
// Command to send to SwitchBot
// Arm down and pull action {0x57, 0x01, 0x00}
// The following two require changing the mode in the smartphone app
// Arm down action {0x57, 0x01, 0x01}
// Arm pull action {0x57, 0x01, 0x02}
static uint8_t cmdPress[3] = {0x57, 0x01, 0x00}; // Press command
初期入力がなくてもコーディングは可能ですが、このように少しでも入力しておくことで、エージェントにこちらの意図がより伝わりやすくなるのです。
プロンプトを投入し、試行錯誤を重ねる
そして、いよいよGitHub Copilot Proにプロンプトを投入しました。
「control_switchbot_from_m5stickc.ino
をBtnAを押したらswitchbotが動作するように修正してください」
このように、大味ながらも具体的な指示を出しました。
何度かGitHub Copilotとやり取りを重ねてコードを完成させてもらい、それをArudino IDEでM5StickCに書き込み、実機テストを行いました。
すると、「意図と挙動が異なるな」と感じることがいくつか発生しました。その点は、GitHub Copilotと数度やり取りをしながら修正を繰り返し、最終的に希望通りのプログラムを完成させることができました!生成されたコードも満足できるものです。

M5のボタンを押せば動作します
2時間弱で夢のプログラミング体験を実現!
出来上がったプログラムのREADME.mdもGitHub Copilotに作成してもらい、GitHubリポジトリにプッシュして作業は完了です。
ここまでに要した時間は、なんと2時間弱ほどでした。
今回は、手順のメモを取りつつ、不明な点は調べながら進めたためこの時間となりましたが、もし理解することを後回しにしてスピード重視で進めていれば、1時間程度で最終成果物まで到達できたはずです。
完成したプログラムは、以下のGitHubリポジトリで公開しておりますので、ご興味のある方はぜひご覧ください。
https://github.com/taoman26/control_switchbot_from_m5stickc
これまでであれば、この程度のプログラムでも、調査時間を含め最低1日はかかっていたと思います。それが、専業プログラマーではない私でも、これほど短時間で望む機能が実装できるようになったのですから、本当に驚きです。
Vibe Coding、プログラマーではない方ほど始めるべきです!
今回の体験を通して強く感じたのは、コーディングエージェントを活用したVibe Codingは、プログラマーではない方ほど今から始めておかないと損をするということです。生成されるコードも、少しプログラムをかじった程度の人が調査しながら実装するより高品質です。
理想を言えばプログラムを読める力が元からあった方がより使いこなせると思うのですが、たとえ読めなくても対話をしていくだけでプログラムが修正されるので、プログラムでどんな修正をされるとどんな処理がされるのか、自然と読む力もついてくるはずです。
GitHub Copilot以外にも、CursorやWindsurfなど、様々なコーディングエージェントが存在しますが、「どれを選んだら良いか迷うな」という方には、有料版の費用が最もお得なGitHub Copilot Proが良いのではないでしょうか。
「どうしても無料で利用したい!」という方には、現時点ではGemini CLIが良い選択肢となりそうです。ただし、こちらはコマンドラインツールであり、初期設定に手間がかかるため、プログラミング初心者の方には少々敷居が高いかもしれません。
Vibe Codingに興味を持たれた方は、ぜひ一度試してみてはいかがでしょうか。
本日も最後までお読みいただきありがとうございました。
それでは、よいVibe Codingライフを!