メインコンテンツへスキップ
見出し画像

【農家自作アプリ全解剖】やったことの全部を、作付けに紐づけて記録する場所|CMS② 栽培管理


農業DX挑戦シリーズ #10

この記事は、個人農家がIoT・クラウド・生成AIを活用して独自のスマート農業システムを構築する過程を発信する「農業DX挑戦シリーズ」の第10弾です。自作Webアプリ Cultivation Manager System(CMS) 全解剖シリーズの第2回。

CMSの全体像については以下の記事をご覧ください。
CMSには大きく4つのタブを設けており、今回の記事で紹介するのはそのなかでも一番利用頻度の高い「栽培管理」タブについての解説記事となります。


「先月、この作付けにいくら使ったっけ?」「あの農薬、この品目にあと何回撒ける?」「去年のこの時期、どんな管理してたんだっけ」——営農の最中にこういう問いが頭に浮かぶたび、記憶を引っ張り出してExcelを開いて写真フォルダを探して、というのを繰り返していました。

栽培管理タブは、その「ちょっと知りたい」を、データから3秒で取り出せるようにする場所です。CMSの中でいちばん使用頻度が高くて、PDCAでいうところの D(実行)の記録 と、その記録から自分の今を知るための C(チェック)の入口 までを担っています。

この記事では、なぜここに細かさを求めたのか、どんな機能が並んでいるのか、運用してみて何が変わったのか、を順番に書いていきます。


1. やったことの全部を、作付けに紐づけたかった

このタブ(栽培管理)の根っこは、やったことの全部を作付けに紐づけて残す という1点に尽きます。

営農で行う作業を、きちんと記録して、あとから振り返ることができるようにする。構想としてはそれだけですが、現場レベルで使い続けることができるよう、市販アプリにはない工夫をいくつも儲けています。

そしてもうひとつ、設計のときに決めたのは「畑の作業だけを記録する場所にしない」ということでした。後述する43種別の中には、商品制作・事務・他作物といった非栽培系のカテゴリも入っています。

これは意図的です。月末に「今月、自分は何にどれだけの時間を使ったのか」を振り返るには、畑での作業だけじゃなく、書類を書いた時間も、ドライフラワーを作った時間も、同じ箱に入っている必要があるんですよね。

なので名前は「栽培管理タブ」ですが、中身としては 営農労働の全記録 をカバーしています。

画像
作業記録タブのデフォルトホーム表示。作業記録を一覧で表示



2. 記録する側のしくみ

43種別を7カテゴリに整理した

作業種別は 43種類 あります。多いようですが、農業を1年やってみると「これだけは欲しい」が積み上がってこの数になりました。これを 7カテゴリ に整理して、UI上で直感的に選べるようにしてあります。

ざっと並べると、薬剤散布系(農薬散布・施肥)/栽培管理系(灌水・除草・摘心・わき芽整理など)/収穫・出荷系/環境管理系(圃場整備・清掃・設備点検)/商品制作系(ドライフラワー・アレンジメント)/事務系(経理・PC作業)/その他作物系、の7つ。

各作業種別には、追加入力欄が連動 して出てきます。農薬散布なら農薬の選択欄と希釈倍率。施肥なら肥料の選択欄。灌水なら、後述する灌水詳細の入力欄。「全体管理」のような作付けを持たない作業では、品目単位の使用回数チェックができないので、農薬・施肥の選択欄は出てきません。

UI上は、1タップで作業種別を選択 → そのまま追記項目を埋める という流れで、防除衣を脱ぎながら、水やりをしながら、片手間で簡単に記録できることを最優先にしています。

画像
作業記録のクイック入力画面。日付、対象作付けや作業内容を入力して保存するだけ


品種ごとの記録——同じハウスの中の違いを分けて残す

僕の運用では、1作付け=1品目×1ハウス という単位で番号を振っています。ただし、1ハウスの中には複数のうねがあって、それぞれに別の品種が植わっているのが普通です。

たとえば摘心。同じハウスの中でも、生育の早い品種から先に手を入れるべきタイミングが来て、遅い品種はしばらく待つ。芽かきも、枝の整理も、収穫も、ぜんぶそうです。「ハウス全体で何分やった」だけで丸めてしまうと、後から「この品種の労働コストはいくらだったか」を語れなくなります。

かといって、毎回「この品種に何分、あの品種に何分」と入力するのは、さすがに面倒くさすぎる。

なので栽培管理タブでは、こういう挙動にしています。

  • デフォルトは、その作付けに含まれる全品種に均等按分 で記録される(手間ゼロ)

  • 必要なときだけ「品種を指定する」モードに切り替えて、品種ごとの分数を直接指定できる

  • 指定した記録は「明示的に分けて記録された」フラグが立ち、後の分析で区別できる

「ふだんは雑に、こだわりたいときだけ細かく」が同じ画面でできる。これは設計を始めるときに外せない条件でした。



灌水だけは、3つの値を別々に持つ

灌水の記録は、ほかの作業より少しだけ特殊な扱いをしています。

「灌水した」と言ったときに知りたい情報が、3つ別々にあるからです。

  • 方法:手潅水・スプリンクラー・チューブ・通路灌水

  • 作業時間:自分が何分かかったか(労働時間として)

  • 灌水時間と通水量:実際に水を流し続けた時間と、その間に何リットル入ったか

作業時間と灌水時間を分けているのは、この2つは まったく別の数字 だからです。チューブ灌水を回す日は、自分の作業は「水道の蛇口をひねる」だけで5分か10分。でも通水しているのは数時間。労働管理として知りたい数字と、栽培管理として知りたい数字が、ぜんぜん一致しないんです。

通水量は、入力するだけでなく センシングデータから自動取得したり、灌水時間と方式から自動推計したり もできるようにしてあります。フローセンサーが付いているハウスは実測値、付いていないハウスは推計値。記録の負担を最小限にしたまま、後の分析が成立する粒度を確保する。ここはこのアプリの中でも、細部まで作り込んだ部分です。

画像
潅水記錄画面


生育記録——感覚で覚えていた「あの品種の様子」を、データにする

ここまでは「何をしたか」の話でした。ここからは「いま、どうなっているか」の話です。

栽培管理タブには、作業記録と並んでもうひとつの柱があります。生育記録 です。ハウスを歩きながら、品種ごとの背丈や節の数、病害虫の発生、欠株、全体の調子を記録していく機能。

この機能を作る前は、品種ごとの生育の様子は完全に感覚で覚えていました。「あっちのストックは伸びが遅い気がする」「こっちのトルコ桔梗は節数が多くていい感じ」——毎日ハウスを回りながら頭に蓄積していた印象が、記録には残っていなかった。翌年の作付け計画を考えるとき、頭の中のぼんやりした記憶しか手がかりがないんですよね。

入力画面は、スマホを片手にハウスを歩きながら使う ことを想定して作っています。作付けを選ぶと、そのハウスに植わっている品種がボタンで並びます。タップして切り替えながら、草丈・節数・生育の調子(3段階)・病害虫の発生・欠株数・写真・メモを入力していく。

画像
生育記錄のタブ画面
画像
生育記錄のクイック入力画面。必要情報を記述して記錄。もちろん必要項目のみの入力でOK。気づいた時に写真だけアップロードしたり、草丈だけ記載したり。


このアプリで地味にこだわっているのが、生育段階ステージの管理 です。

切り花の栽培は、発芽→本葉展開→摘心→側枝発生→蕾の確認→開花→収穫、と段階をくぐり抜けながら進みます。やっかいなのは、それぞれの段階で 適した管理方法がぜんぶ違う こと。夜温の設定、ハウスの開閉温度、潅水の頻度、誘引や追肥のタイミング。「いまどの段階か」によって、やるべきことが変わります。

CMSではこれを 作付け計画タブで作型ごとに事前設定 しておけるようになっていて(詳細は作付け計画タブの記事で書きます)、栽培管理タブの生育記録では「いつその段階に切り替わったか」を記録するボタンが置いてあります。さらに そのステージで自分がどう管理していたか もメモとして添えられる。シーズンが終わってからの振り返りで「どの管理が、どの結果につながったか」が見えてきます。

記録したデータは、タイムライン表示・草丈の推移グラフ・フォトギャラリーで振り返れます。ぜんぶクラウドに保存されているので、AIに「この作付けの生育記録を見て、何か気になる点はある?」と聞ける状態 にもなっている。感覚で覚えていたものが、そのまま分析可能な形に変わる。判断の安心感が、感覚だけに頼っていた頃とはまるで違うんですよね。

画像
分析画面の一例。品種ごとに、どのような生育をしているか確認できる

3. 記録が効いてくる、周辺の機能たち


在庫管理——買ったときと使ったときを、別々に追わなくていい

栽培管理タブの中には、在庫管理画面 もあります。

ふだん使う側から見ると、やってることはシンプルです。いつ・どこで・いくらで何を買ったか を記録するだけ。いつ何を使ったか は、日々の作業記録の中で農薬や肥料を選んだ瞬間に勝手に紐づいてくれる。

それだけで、いま手元に何がいくつ残っているか、作付けごとにいくらコストがかかっているかが、自動で集計されていきます。

この画面でいちばんありがたいのは、シーズンの切り替わりに「あ、これあと1袋しかない、注文しないと」を予算と一緒に判断できることでした。買い足しの判断が遅れて作業が止まる、というあるあるが起きなくなります。

そして、もうひとつ大きい話があります。年末の棚卸しが、ほぼ自動で済む ようになりました。

個人事業主の農家にとって、年末の棚卸し資産の計算は恒例イベントで、Excelで手作業でやっていると丸1日消えます。でも日々「買った」「使った」を記録していれば、別途動いている分析ダッシュボードが、確定申告の棚卸し資産欄にそのまま転記できる金額を出してくれる。設計時の想定というより、運用してみて実感した「いちばん効いた副産物」のひとつです。

画像
資材マスタ管理画面の一例。使用している資材や農薬・肥料などの情報を正本として保管
画像
在庫管理画面。経理用の確認画面で、購入時や使用時に記録する
画像
栽培につかった履歴や、単価なども確認可能。


農薬・肥料ライブラリ——ラベルを毎回読まなくて済むように

栽培管理タブには、農薬と肥料のライブラリ画面 が独立して用意されています。

これは記録機能じゃなくて、参照のための機能 です。農薬や肥料って、それぞれ作用機構や使い方の癖がぜんぶ違うんですよ。ふだん使い慣れている薬ならいいんですが、たまにしか使わない薬を選ぶときに、「これって治療効果あったっけ?それとも予防だけ?」「浸透性あるんだっけ?」と迷うこと、本当によくあるんです。

ライブラリ画面では、農薬についてはこういう情報がカード形式で見られます。

  • 有効成分・IRACコード・FRACコード・MOA(作用機構)の分類

  • 浸透性の有無と種類

  • 予防効果と治療効果の強さ

  • 何の病害虫に効くか

  • 適用品目の一覧(FAMICからの自動取得分)

  • 15リットル散布あたりのコスパ目安

肥料も同じく、N-P-Kの含有率(バーグラフ)、Ca/Mgや微量要素、酸塩基、水溶性、施肥基準、希釈倍率のプリセットなどが見られます。

地味に効いているのは、「1回の散布あたりのコスト」が事前に出ることです。在庫管理で買った単価と、ライブラリで設定した標準散布量が組み合わさるので、「この農薬を1回撒くと約340円」「この液肥は1回約220円」というふうに、散布前の段階でコストが見える。 同じ効き目の薬がふたつあるとき、コスパで選ぶ判断がしやすくなるのは、思っていた以上に大きい変化でした。

ライブラリの中身は、必要に応じて自分で書き足したり、AIに頼んでまとめさせたりしながら育てている、共有知識のノートのような扱いですね。

画像
農薬や肥料などの資材情報を取得して、確認できるライブラリ。簡易的なコストも確認できる


簡易分析——アプリ上で「いまの自分」を見る

「分析は別のアプリに任せる」と前回の記事で書いたのですが、栽培管理タブの中にも 簡易の分析画面 があります。本格的な経営分析は Streamlit の統合ダッシュボードに任せていますが、ちょっと知りたいときに、わざわざ別のアプリを開かずに済む ことには大きな価値があります。

アプリ上で見られる分析はざっとこんな感じです。

  • 総作業時間と総コスト:今月/今年などの期間で、作業時間と費用の合計

  • 作業種別ごとの内訳:何の作業に何時間使ったか

  • 資材別の内訳:どの農薬・肥料がどれだけ使われ、いくらかかったか

  • 作業者別の集計:誰が何時間動いたか

  • 品種別の集計:作付けを選ぶと、品種ごとに作業時間が分けて見られる

  • 作付け別の集計:cultivationNo ごとに、その作付けに費やした時間と費用

フィルタも柔軟で、「全体/栽培/全体管理/商品制作/事務/その他作物」のグループ切り替えができます。たとえば「事務作業に今月どれだけ時間を取られたか」を10秒で見られます。これができるようになって、自分の時間の使い方に対する意識がはっきり変わりました。

本格的な分析は Streamlit 側でやりますが、「知りたい」と思ってから 3秒で結果が出ること をアプリ上で実現したのは、けっこう大事な選択だったと思っています。

画像
分析項目では、統計値を確認できる(本格分析は別アプリ。あくまで簡易・即時的なもの)
画像
記録写真もギャラリーで確認できたりする
画像
栽培ステージと照らし合わせながら、生育段階や進み具合のチェックも


土壌管理——よくできたおもちゃとして眺めている

栽培管理タブの中で、個人的にいちばん面白がって作ってる機能がこれ、土壌管理 です。

先に正直に言っておくと、僕はこの機能を「使える道具」というより「よくできたおもちゃ」として見ているんですよね。それでも面白いから紹介させてください。

ハウスや路地ごとに、土壌の状態を記録・分析する画面が組み込まれています。具体的にできることは:

  • 土壌分析の結果記録:分析機関に出した結果(pH・EC・CEC・Ca・Mg・K・P・N・塩基飽和度など)を圃場ごとに登録

  • 観察記録:自分で見て・触って・嗅いで気づいたこと、自分で測ったpHやECの値、生育の所感など

  • 成分推移の自動シミュレーション:日々の施肥データ・栽培データから「前回の分析から何キロのカリウムが入って、何キロが作物に吸われたか」を自動で計算し、いまの土の状態の推定値を表示

  • 施肥設計の支援:適正範囲との差分を自動算出し、「この肥料をこれだけ入れると、N・P・K・Caがこの値にどう動く」のリアルタイム予測

要するに、栽培管理で日々入力されているデータを、土の中の物質収支として読み直す という発想です。ハウスごとの健康状態がレーダーチャートと推移グラフで見られて、「いまこのハウスは何が足りなくて、何を入れるべきか」がある程度の傾向としてつかめます。

ただ——ここが大事なんですが——土はブラックボックス です。物質収支のような単純なモデルだけでは、ぜんぜん説明がつきません。微生物の活動、団粒構造、過去の作物が残した影響、雨や潅水で流れ出す成分。ぜんぶ絡み合って動いている。どこまで細かくデータを取れば現実に寄っていくかは、僕自身まだ全然わかっていないんです。

なので表示されているレーダーチャートも施肥設計の予測も、あくまで おおよその傾向をつかむための材料 として眺めるくらい。最終的な施肥の判断は、先人たちの所感や、地域の経験値、自分の目で見た作物の表情を踏まえて決めています。

それでも、毎日の作業記録から土の中の収支がリアルタイムで動いていく画面を眺めるのは、データを扱うのが好きな人間としては純粋に楽しい。「データドリブン農業の到達点」とは口が裂けても言えませんが、データドリブン農業を続けるモチベーションを維持する役には、確実に立っています。

画像
土壌分析画面の例
画像
簡易的な施肥設計なども可能

4. このタブで何が変わったのか

AIと一緒に保守している、ということ

最後に、これは機能というより設計思想の話なんですが、書いておきたいことがあります。

CMSは、僕が Claude Code(AIコーディングエージェント)と一緒に開発・保守している アプリです。「最初にAIに作ってもらった」という話ではなくて、運用中の今もずっと、AIと一緒にメンテし続けている。

たとえば運用中に「灌水の記録方法を細かく分けたい」「過去のデータを新しいスキーマに合わせて移行したい」「マスターを全部見直して品目名の表記ゆれを整えたい」みたいなことが起きます。ふつうのアプリだったら、こういうテーブル構造を変えるレベルの修正はかなり腰が重い作業です。

でもこのアプリは設計思想からデータ構造まで全部がドキュメント化されていて、AIがそれを把握した状態でメンテに入れるようになっています。「灌水の方式を分けたい」と頼めば、AIが既存データを読んで、整合性を保ったまま書き換えるスクリプトを提案してくれる。

UIで日々ポチポチ記録するレイヤー と、AIに頼んでガッツリ書き換えるレイヤー の、両方のメンテ手段が共存している。これは一人でアプリを運用するうえで、本当に大きな安心感です。データの形が変わったときにそれを直す力もまた必要で、そこをAIに肩代わりしてもらえる前提で設計しているからこそ、記録の細かさを諦めずに済んでいます。


運用してみて効いたこと

栽培管理タブを使い始めてから、いくつかのことが変わりました。

まず、「今月、自分は何に時間を使ったのか」が見えるようになったこと。以前は月末に振り返ろうとしても「なんかいつも通りバタバタしてた気がする」で終わっていたのが、いまは作業種別の集計が出てくるので、「今月は除草に時間取られすぎ、効率化できないか」と次の一手を考えられるようになりました。

そして、年末の棚卸し作業がほぼ消えた こと。これはかなり大きい変化でした。確定申告のシーズンに控えていた作業が、ほぼゼロになっています。

品種ごとの生育記録については、しばらく使ってみて効き始めてくる感じがあります。「あのとき夜温いくつにしてたっけ?」という問いに、頭の記憶ではなくアプリで答えられる。翌年の計画を立てるときの安心感につながる んですよね。

栽培管理タブで記録された一件一件は、すべて作付け番号(cultivationNo)に紐づいて保存されるので、他のタブの記録ともそのまま繋がります。4つのタブの中で、いちばん多くのデータが流れ込む場所。ここが正直で細かい記録を持っていれば、ほかの3つのタブはその恩恵をいくらでも受け取れる。

——というのは設計の建前で、実感としていちばん大きいのは、毎月「自分が何に時間を使ったか」を後ろめたさなく言える、というそれだけの話だったりもします。記録があるから、迷わなくて済む。たぶんそれが一番、ラクになりました。


次回予告

次回・第3回は、収穫・出荷管理タブ の話です。栽培管理タブで積み上がった原価と、収穫・出荷で積み上がった売上が、`cultivationNo` という背番号の上で出会うとき、ようやく「あの作付け、いくら残ったのか」が一筋の線で見えるようになります。


技術が気になる方へ

栽培管理タブの実装で個人的に面白いと思っているのは、データの正本を1か所に固定して、見え方だけを複数持つ という設計判断です。在庫の残量も、作付けごとの実コストも、品種別の作業時間も、ぜんぶ日々の作業記録という1つの場所から集計されています。データの食い違いが構造的に起きないので、現場で最も壊れにくい設計だと思っています。

そしてもうひとつ、FAMIC連携パイプライン。 Pythonの標準ライブラリだけで組んだ自作スクレイパーで、農薬登録番号をキーにFAMIC公式DBから適用品目情報を取得し、「花き類(きく、ストックを除く)」のような除外条件付きの品目名を自動でパースして、自分の栽培品目とのマッチングルールを生成しています。新しい農薬を導入するときも、CLIを叩けばすぐ追加されます。

最後に 土壌成分の物質収支シミュレーション。 日々の施肥データから N・P・K・Ca・Mg などの増減を計算して、最後の実分析値からの推定推移を出しています。本文では「おもちゃ」と書きましたが、コードとしては5レイヤー(投入量計算 / 投入量決定 / 換算 / 物質収支 / 表示)に分けたうえで、可視化までを一気通貫で組んだ、いちばん書きごたえのあった部分でした。

ここから先の「どう作ったか」に踏み込んだ話は、有料パートに置いてあります。データモデルの設計判断、FAMICパーサーの実装、土壌シミュレータのコード、AI相談用のプロンプト雛形まで。気が向いた方はそちらもどうぞ。

こんな方におすすめです:

  • 現場で片手で入力するタイプの業務アプリを、自分で作ってみたい方

  • 農業に限らず、現場作業 × 在庫消費 × コスト集計 を1つのデータの流れで扱いたい業種の方(建設・製造・飲食・整備業など)

  • AIに相談しながらの個人開発で、何を聞けばいいかの取っかかりがほしい方

有料パートの内容(全7章):

  • 技術スタックとアーキテクチャ(Astro + Preact + Firestore + BigQuery の4層構成)

  • CMS内部のデータモデル(6つの型グループを設計判断の理由つきで)

  • CMS内部のUI設計(7画面を「いつ入力するか」で分ける視点で)

  • 設計上の工夫・ハマりどころ(5つの汎用パターン。農業以外の業務にも応用可)

  • FAMIC自動連携と土壌シミュレーション(本編のクライマックス、擬似コードと図解つき)

  • AI相談用プロンプト雛形(コピペで自分の業務に使えるテンプレート)

  • 個人開発で踏みやすい落とし穴(自分が実際に踏んで書き直したことを正直に)

⚠️ 有料パートの実装は、あくまで個人開発で動かしているものです。バグや不具合、設計の偏り、後から変えたくなる選択も含まれています。「自分の業務に合わせて作り直すための参考」として読んでもらえると、いちばん健全な距離感だと思っています。

 
 
「人生は一度きり、主体性をもって楽しんで生きていこう」がモットーの34歳農家。福島県浪江町で切り花栽培中。2歳児のパパ。前職は出版社営業→人生リスタートで新規就農。理系知識×ITスキルで農業をアップデート。失敗も成功もリアルに発信|Farm Eolica|

あなたへのおすすめ