PR

【Flutter×IoT】アプリからハードウェアまで1人で開発した話

開発事例

※この記事は「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経験、差別化

タイトルとURLをコピーしました