※この記事は「IoT開発に挑戦するか迷ったときの判断材料」として書いています。
Flutterでアプリを作る案件は多い。
でも、ハードウェア側のコードまで書く案件は少ない。
僕は両方やった。
企画、UIデザイン、Flutterアプリ、ESP32のファームウェア、Bluetooth連携。
全部1人で担当した経験を書きます。
この記事で分かること
– どんな案件だったか
– なぜ1人で全部やることになったか
– Flutter × ESP32の連携方法
– 苦労したポイント
– この経験で得たもの
前提:僕の状況
– 40代・Flutterエンジニア
– 元Webデザイナー → フロントエンド → Flutter
– Shopify ECで商品を扱っているメーカーとの繋がり
– ハードウェア開発の経験はゼロだった
この案件が、Flutterを始めるきっかけになった。
どんな案件だったか
依頼内容
EC運営で扱っているメーカーから相談が来た。
「うちの商品を、スマホアプリで操作できるようにしたい」
商品は機械製品。
それをスマホアプリで操作できるようにしたい、という依頼。
要件
| 項目 | 内容 |
| アプリ | iOS / Android両対応 |
| 通信 | Bluetooth(BLE) |
| 機能 | 電源ON/OFF、モード切替、タイマー設定 |
なぜ1人で全部やることになったか
メーカーとは、元々EC運営で仕事をしていた。
直販サイトを構築してオンライン販売を担当する関係。
そのメーカーから「アプリを作れないか」と相談が来た。
メーカーは小規模で、開発チームがいなかった。
既に信頼関係があった僕に、全部任せたいというニーズがあった。
Flutterもハードウェアも未経験だったが、「やります」と言った。
技術構成
| レイヤー | 技術 |
| アプリ(iOS/Android) | Flutter |
| 通信 | Bluetooth Low Energy(BLE) |
| マイコン | ESP32 |
| ファームウェア | Arduino(C++) |
開発の流れ
ステップ①:Flutterの基礎を学んだ
まずUdemyでFlutterの基礎を学んだ。
Academindの講座で、小さいデモアプリをいくつか作った。
基礎を固めるのに、それなりに時間がかかった。
詳しくは別記事で書いています。
ステップ②:ESP32の基礎を学んだ
ESP32は、Wi-FiとBluetoothを内蔵したマイコン。
Arduinoで開発できる。
インターネットで情報を検索しながら、LEDを光らせるところから始めた。
ただ、ESP32とBluetoothの連携に関しては情報が少なかった。
さらに本を数冊読んで、手探りで進めた。
ステップ③:BLE通信を繋げた
FlutterとESP32をBluetoothで繋げる。
ここが一番難しかった。
1人では無理だった。
経験の長いエンジニアに手伝ってもらった。
BLEの仕様、接続シーケンス、エラーハンドリング。
自分だけでは詰まっていた部分を、教えてもらいながら進めた。
ステップ④:UIデザイン
アプリのUIは自分でデザインした。
Webデザイナーの経験が活きた。
Figmaでデザインして、Flutterで実装。
ステップ⑤:機能実装
電源ON/OFF、モード切替、タイマー設定。
アプリからBLEでコマンドを送り、ESP32が受け取って機械を制御する。
アプリとハードウェアの両方を書いているから、デバッグがしやすかった。
ステップ⑥:実機テスト
実際の機械に組み込んでテスト。
想定通りに動かないことが多かった。
BLEの接続が切れる、タイミングがずれる、など。
実機でしか分からない問題が多かった。
苦労したポイント
苦労①:BLEの接続が不安定
BluetoothはWi-Fiと違って、接続が不安定。
距離、障害物、他のBLEデバイスとの干渉。
接続が切れたときの再接続処理を丁寧に書く必要があった。
苦労②:iOSとAndroidの挙動の違い
FlutterでBLEを扱うと、iOSとAndroidで挙動が違う。
パーミッションの取り方、接続のタイミング、エラーの種類。
「Flutterなら1つのコードで両OS対応」は、BLEに関しては完全ではなかった。
苦労③:問題の切り分けが難しい
アプリで問題が起きたら、アプリのコードを見ればいい。
でもIoTは、問題がどこにあるか分からない。
– アプリのコードが悪いのか
– Bluetoothの通信が悪いのか
– ESP32のコードが悪いのか
– 配線が悪いのか
– 機械側の問題なのか
レイヤーが多いから、原因の特定に時間がかかった。
苦労④:実機がないと分からない
シミュレータではBLEのテストができない。
実際の機械に組み込んでテストする必要がある。
開発環境と本番環境の差が大きかった。
この経験で得たもの
得たもの①:Flutterの実務経験
この案件がFlutterの最初の実務経験になった。
「Flutter実務経験あり」とエージェントに言えるようになった。
得たもの②:IoT連携の経験
Flutter × BLE × ESP32という組み合わせを経験した。
この経験がある人は少ない。差別化になった。
得たもの③:企画から開発まで一貫してやる力
要件定義、UIデザイン、アプリ開発、ハードウェア開発。
全部やったから、全体が見える。
「言われたことだけやる」エンジニアとは違う価値が出せるようになった。
得たもの④:メーカーとの関係が深まった
元々EC運営で仕事をしていたメーカー。
アプリ開発を通じて、さらに関係が深まった。
ECとアプリ、両方で繋がっている。
Flutter × IoTをやりたい人へ
アドバイス①:ESP32から始める
ハードウェアは、ESP32が入りやすい。
Arduinoで開発できて、情報も多い。
安い(1,000円くらい)ので、早めに買って実機で試す。
アドバイス②:最初は小さく
いきなり複雑なことをしない。
まずはESP32のLEDをアプリから光らせる。
小さく動くものを作ってから、拡張する。
アドバイス③:詳しい人を見つける
BLEの通信は、1人でやると詰まる。
僕も経験の長いエンジニアに助けてもらった。
詳しい人に聞ける環境があると、進みが全然違う。
アドバイス④:時間がかかることを覚悟する
アプリだけの開発より、確実に時間がかかる。
学習も、開発も、デバッグも。
「すぐできる」とは思わない方がいい。
まとめ
| 項目 | 内容 |
| 案件 | 機械製品をスマホアプリで操作 |
| 技術 | Flutter × BLE × ESP32 |
| 担当範囲 | 企画、UI、アプリ、ファームウェア |
| 苦労 | BLE接続、iOS/Android差異、問題の切り分け |
| 得たもの | Flutter実務経験、IoT経験、差別化 |

