栽培管理アプリを作ってます㉓:ハウス面積と「実際の作付面積」を分けることにした

前回は、「作物未定」という少し無理のある状態をやめて、栽培を始める前の**「準備期間」**を作りました。

これで、

空き → 準備中 → 栽培中 → 終了

という、実際の農作業に近い流れになりました。

今回はその続きです。

実際にほうれんそうの栽培を始めようとして、また一つ問題が出てきました。

ハウスの面積と、実際に作物を植えている面積は同じじゃない。

考えてみれば当たり前なんですが、アプリを作り始めた頃はそこまで考えていませんでした。


目次

6m×40mのハウスなら240㎡。でも240㎡作付けしているとは限らない

うちのハウスの一つを例にすると、

  • 幅:6m
  • 長さ:40m

なので、ハウス自体の面積は、

6m × 40m = 240㎡

です。

これまでは、この240㎡をそのままそのハウスの面積として扱っていました。

ハウスの大きさを管理するだけなら、これで問題ありません。

でも、収量を記録して、あとから収量の分析をしたいとなると話が変わってきます。

例えば240㎡のハウスに4本の畝があったとして、そのうち2本しか使わなかった場合。

収穫量が少なくても、

「生育が悪くて収量が少なかった」のか、

「そもそも半分しか作付けしていなかった」のか、

これを区別できません。

そこで、

ハウスそのものの面積

と、

その栽培で実際に使った面積

を分けることにしました。


そもそも「ハウス幅÷畝数」で畝幅を決めていた

ここを直そうとして、もう一つ問題が見つかりました。

これまでのアプリでは、畝数を登録すると、

ハウス幅 ÷ 畝数

で畝幅を計算していました。

6mのハウスで4畝なら、

6m ÷ 4 = 1.5m

という具合です。

アプリを作った当初はこれで十分だと思っていました。

ハウス登録をする際に畝幅を設定できない(この場合は畝が3つなら自動的に幅が2mになる)

でも実際に栽培を始めると、畝幅そのものが栽培条件になります。

例えば、ほうれんそうなら1.2m幅で作る場合もあれば、2m幅で作る場合もあります。

ナスでも0.9mと1.2mでは条件が違います。

つまり、

「ハウスの中を何等分したか」ではなく、「実際に何m幅の畝を作ったか」を記録したい。

そこで畝幅を自動計算するのをやめて、実際の畝幅を入力できるようにしました。


通路幅までは管理しない

ここで一瞬、

「じゃあ通路幅も管理する?」

とも考えました。

でも、やめました。

今回知りたいのはハウス内部の設計図ではありません。

知りたいのは、

どんな畝で、どのくらいの面積に作付けして、どのくらい収穫できたのか。

です。

なので、

  • ハウス幅
  • ハウス長
  • 畝数
  • 畝幅
  • 畝長

までは持つ。

でも、

畝幅の合計+通路幅=ハウス幅

のような制約は作らないことにしました。

農業用のCADを作りたいわけではないので、このくらいがちょうどいいと思っています。


栽培開始時に「今回使う畝」を選ぶ

次に変えたのが、栽培開始時の操作です。

物理的に4本の畝があるからといって、毎回4本全部を使うとは限りません。

そこで、栽培開始時に、

「今回の栽培でどの畝を使うか」

を選択するようにしました。

例えば、

  • 畝1 1.2m × 40m
  • 畝2 1.2m × 40m
  • 畝3 1.2m × 40m
  • 畝4 1.2m × 40m

というハウスがあって、畝1と畝2だけ使うなら、

1.2m × 40m × 2本 = 96㎡

が、その栽培の実際の作付面積です。

ハウス自体は240㎡のまま。

でも今回の作付面積は96㎡。

この2つを別々に持つようにしました。


作付面積と畝幅は「その栽培の記録」として残す

もう一つ考えなければならなかったのが、過去の栽培です。

例えば今年は1.2m幅の畝でほうれんそうを作って、来年は2m幅に変更したとします。

現在の畝幅だけを保存していると、来年2mに変更した瞬間、

「去年は何m幅で作ったんだっけ?」

が分からなくなります。

そこで栽培開始時点で、Supabaseのデータベースに次の2つのカラムを追加し、その栽培の記録として保存するようにしました。

  • planted_area_m2:実際に作付けした面積(㎡)
  • bed_width_m:栽培開始時の畝幅(m)

どちらも cult_crops(栽培記録)テーブルのカラムです。

つまり、

現在の畝の状態

とは別に、

その作を始めたときの作付面積と畝幅

を残します。

これで将来的には、

「1.2m畝と2m畝で収量に違いがあったか」

といった比較もできるはずです。

なお、この機能を作る前の古い栽培については、過去の畝幅を推測して埋めることはしていません。

分からないものはNULLのままにしています。


すると今度は「作業登録」に問題が出た

ここまで作って、実際に栽培を開始してみました。

すると、また問題発生。

栽培開始時に「畝1だけ使う」と登録したのに、作業登録画面では、そのハウスに存在する畝が全部出てきます。

これでは、

栽培開始時に使用畝を選んだ意味がありません。

そこで作業登録も変更しました。

栽培中のハウスについては、

物理的に存在する全畝ではなく、その栽培で使用している畝だけ

を表示します。

例えば4畝あるハウスでも、今回の栽培が畝1だけなら、作業登録に出るのも畝1だけです。

この場合の「全畝」も、

ハウスに存在する全畝

ではなく、

今回の栽培で使用している全畝

という意味になります。


収穫登録も同じ

当然、収穫登録も同じ問題があります。

4畝あるけど今回使っているのは2畝。

それなら収穫対象も、その2畝だけでなければいけません。

こちらも同じように修正しました。

これで、

栽培開始時に使用畝を決める
↓
作業登録はその畝だけ
↓
収穫登録もその畝だけ

という流れになりました。

ようやく「今回の栽培」という単位で畝がつながりました。


前回作った「準備中」ともつながった

ここまでできて、もう一つ実際の運用上の問題が出てきました。

前回作った「準備中」です。

例えば、ほうれんそうの「2026年秋作」というグループがあって、

No.4を先に播種して栽培を開始したとします。

一方で、

  • No.2
  • No.3
  • No.5

は、すでに土づくりなどを始めていて「準備中」。

ほうれんそうは全部同じ日に播種するわけではないので、No.2は後日播種します。

そのとき私は、

No.2も同じ「2026年秋作」に入れたい。

ところが、できませんでした。

既存の栽培グループへ後から追加できるのは「空きハウス」だけで、「準備中」のハウスは候補に出てこなかったからです。

前回せっかく準備期間を作ったことで、新しい問題が見つかったわけです。


準備中のハウスを既存の栽培へ追加できるようにした

そこでグループ編集に、

「準備中ハウスをこのグループへ追加」

を追加しました。

例えば、

2026年秋作(ほうれんそう)

で、

  • No.4:10月3日から栽培中
  • No.2:準備中
  • No.3:準備中
  • No.5:準備中

という状態。

No.2を10月15日に播種するなら、No.2を選んで栽培開始日を10月15日にします。

すると、

  • No.4:10月3日開始
  • No.2:10月15日開始

ですが、どちらも同じ**「2026年秋作」**です。

グループ全体の開始日は10月3日のまま。

各ハウスは、それぞれ実際に栽培を開始した日を持ちます。

これなら、播種日をずらしながら同じ作型として管理できます。


準備中から追加するときも、使用する畝を選ぶ

もちろん、このときも今回作った「使用畝」の仕組みを使います。

現在のNo.2は、

  • 畝1 2m × 40m
  • 畝2 2m × 40m
  • 畝3 2m × 40m

という設定です。

3畝全部を使えば、

2m × 40m × 3 = 240㎡

です。

2畝だけ使えば160㎡。

準備中から栽培へ切り替えるタイミングで、実際に使う畝を選びます。

保存すると、そのハウスの準備期間が終了して、同じ「2026年秋作」の栽培中へ移ります。

その後の作業登録や収穫登録には、ここで選んだ畝だけが出てきます。


だいぶ現実の栽培に近づいてきた

今回の変更をまとめると、

ハウス
↓
物理的な畝
↓
準備期間
↓
栽培開始時に使用畝を選択
↓
実際の作付面積を保存
↓
作業も使用畝だけ
↓
収穫も使用畝だけ

という流れになりました。

アプリを作り始めた頃は、

「6m×40mだから240㎡」

くらいで十分だと思っていました。

でも実際に農作業をしながら使ってみると、それだけでは足りませんでした。

ハウスが何㎡あるかと、何㎡に作物を植えたかは別の話です。

こういうところは、実際に使い始めないとなかなか気付きません。


次は「反収」を出したい

今回ここまで細かく面積を直した一番の理由は、最終的には反収を見たいからです。

例えば同じほうれんそうでも、

  • 240㎡から600kg収穫した
  • 120㎡から400kg収穫した

では、単純な収穫量だけなら前者が多いです。

でも10a換算すると、

  • 600kg ÷ 240㎡ × 1,000㎡ = 2,500kg/10a
  • 400kg ÷ 120㎡ × 1,000㎡ ≒ 3,333kg/10a

なので、実際には後者の方が面積当たりの収量は高い。

これが分かれば、

「収穫量が少なかった」のか、
「作付面積が小さかっただけ」なのか、
「本当にその栽培条件の成績が悪かった」のか

を分けて考えられるようになります。

まだ反収を表示するところまでは作っていません。

でも今回、

その計算に使える「実際の作付面積」をようやく正しく残せるようになりました。

次は、このデータを収穫記録とつなげてみようと思います。

目次