背景
今後、システム開発の仕事は、ClaudeやCoworkといったパーソナルAIエージェントの進化・発展によって大きく変化していくのではないかと感じている。そうした状況を踏まえ、コンピュータの外にあるリアルな世界にも視野を広げ、IoTとAIを組み合わせた新たな仕事の可能性を探っていきたいと考えるようになった。
実は、IoTに関しては全く経験がないため、無知の状態からスタートである。
AI活用のポイント
業務やシステム(仕組み)の中でAIを活用するポイントとしては、「人が経験や勘で行っている適当な判断が多少許される作業」であると個人的に判断している。
この経験や勘で判断するといういわゆる「属人的な作業」は、実際に分析してみるとかなり複雑な条件下の中であらゆるパラメータを用いて総合的に判断していることが多い。そのため、プログラムロジックを組んでシステム化するには骨が折れるため、「システム化するほど頻度が高いわけではないためシステム化されていない属人作業」は結構多い。
このような作業こそAIによって代替し、業務における属人的な問題を解決できるのではないかと考えた。
PoCのテーマ
リアル世界において初めて行うことがAIを活用してどれだけうまくいくか。
以下の観点を重視してPoCを行うことにした。
・自分が経験したことのないこと
・リアル世界
・日々、気軽に検証できること
・お金がそこまでかからないこと(完全趣味の範囲で行うため)
これらの条件を満たすこととして考えたのが、ベランダでプランター菜園を行うということである。
作物を育てた経験がないことと、作物は状態が常に変わる、そして毎日気軽に監視でき、お金もそこまでかからないため良い題材と考えたからである。
プランター菜園においては以下のような判断ポイントにAI活用ができるのではないかと考えた。
・水やり
・追肥
・葉の状態(病害)
など
例えば、水やりは結構いい加減で、人によっては1日1回という人もいれば2日1回で良いという人もいる。
しかし実際にやってみると、昨日今日の天気、気温、土の湿り、作物の状態を見て総合的判断しなければならないため1日何回という話ではないことがわかる。これはもう感覚の世界(ギャンブル)である。
判断パラメータの検討
水やりや追肥の必要可否は、「土の状態」で判断できるのではないか。
また、作物の大きさや葉の状態(色、形)で健康状態を判断できるのではないか。
調べてみると土の状態は以下のパラメータを取得できれば、数値を根拠に合理的な判断ができるのではないかと素人なり検討してみた。
PH
水素イオン濃度指数。酸性、中性、アルカリ性の分類測定を行う指標。
酸性に傾いた際の過剰症やアルカリ性に傾いた際の欠乏症の判断に役立ち、施肥対策の目安となる?
EC(電気伝導率)
塩類濃度。EC値が高いと肥料焼けを起こし根が枯れ、水分を吸収できなくなる。施肥量の判断に役立つ?
VWC(水分)
体積含水率。水やりの判断に役立つ?
温度
土の温度。水やりの判断に役立つ?
気象情報
ここ最近の天気、気温、湿度などの情報。水やりの判断に役立つ?
作業履歴
自分が最後に水やりや追肥をした日時の情報。水やりの判断に役立つ?
作物の見た目
葉や茎の状態(色、形、大きさなど)。病害対策や追肥の判断に役立つ?
土の状態を取得する方法
土の状態はセンサーを使うことで各種数値を取得するできることが分かった。
毎日自分で測るのは大変である。ここでIoTの出番である。
個人的にセンサーの条件は以下を満たしたいと考えた。
・省電力(1シーズン電池の入れ替え不要)
・頑丈(暑さや寒さ濡れに強く、外に置いていても大丈夫)
・インターネットにつながる(クラウドにデータを収集したい)
やはりインターネットにつながるというところで省電力というのは難しいらしい。
調べてみると、LoRaWANというネットワーク規格を利用することで省電力な通信が実現できることが分かった。
製品を探してみたところSenseCAP S2105というLoRaWAN対応の土壌水分・湿度センサーを見つけることができた。
残念ながらpHの取得はできない(他製品)。2つ買う余裕もないためpHは諦めた。
IoTゲートウェイ
IoTセンサーの情報を収集するにはIoTゲートウェイが必要である。
センサーのメーカーでゲートウェイも販売されていたためセットで購入した。
SenseCAP マルチプラットフォームLoRaWAN屋内ゲートウェイ(SX1302)
システム構成
スマート菜園システム
作業記録は、自分のモバイル端末で気軽に操作したい。ということでアプリケーションはモバイルアプリとした。
また、IoTデータの収集はAWS IoTを使い、費用をかけたくないのでシステムのバックエンドは全てサーバレスで構築した。
収集データ:Amazon DynamoDB
生成AI(LLM):Amazon Bedrock API
プロンプト実行:AWS Lambda
API:API Gateway
認証:Amazon Cognito
写真画像:S3
画像配信:Amazon CloudFront
モバイルアプリ:React Native
通知バッチ
出社前、帰宅前のタイミングでAIに判断させて水やりが必要と判断した場合、土の状態が異常と判断した場合にSlackへ通知する仕組みを用意した。
※モバイルアプリにプッシュ通知も可能だがいろいろと制約や手間が生じるため、今回は割愛した
センサー設置の様子
ピーマンの苗。植え付けから2週間。
センサーは壁に設置したいが良い設置箇所が見つからず床に直置き。
センサーとゲートウェイの接続、ゲートウェイとAWS IoTの接続設定に苦戦した。
IoTのネットワークや認証周りに知識が乏しく、時間がかかったが大変勉強になった。
開発
要件だけ自分でまとめ、設計から開発まで全てAI駆動(Claude Code)で行った。
AWSの構築においても、AWSCDKをAIで作成。デプロイするだけだ。
完成
半日ほどで完成。
アプリケーションを起動するまでどのような画面デザイン(見た目)となるかわかたないため不安であった。
しかし、実際に使ってみると全く問題ないUIで満足している。
完成後、2週間ほど運用しているが水やりの判断や作物の状態判断においてかなりAIに助けられている。
判断の根拠がデータ基準であるため、自分も納得ができる。
個人的に気に入っているのは、フリーに質問できるAI相談チャットだ。
葉に穴が開いていたときや色が少し変わったときに不安となり、相談したところ的確な回答を得られた。
ChatGPTやClaudeチャットでも写真を送ればそれなりに回答してもらえるが、このシステムの良いところは過去の情報(過去の診断結果や作業履歴、直近の土壌情報)を使って総合的に判断できる点である。
まとめ
IoTは、未経験故にこれまで抵抗があったが、いざやってみると意外と手軽にできるものだなと感じた。
・システムの中でAIを組み込み活用するイメージがつかめた。
・改めて人とシステムが作り出す情報の活用がAI活用において重要と感じた。
・要件や設計は人間だけで頑張るより、AIと相談しながら一緒に作り上げる方が効率が良い。
・LoRaWAN活用の可能性を感じた。(今後、工場やビルなどの施設でいろいろ試したい)




