前回は、「作物未定」という少し無理のある状態をやめて、栽培を始める前の**「準備期間」**を作りました。
これで、
空き → 準備中 → 栽培中 → 終了
という、実際の農作業に近い流れになりました。
今回はその続きです。
実際にほうれんそうの栽培を始めようとして、また一つ問題が出てきました。
ハウスの面積と、実際に作物を植えている面積は同じじゃない。
考えてみれば当たり前なんですが、アプリを作り始めた頃はそこまで考えていませんでした。
6m×40mのハウスなら240㎡。でも240㎡作付けしているとは限らない
うちのハウスの一つを例にすると、
- 幅:6m
- 長さ:40m
なので、ハウス自体の面積は、
6m × 40m = 240㎡
です。
これまでは、この240㎡をそのままそのハウスの面積として扱っていました。
ハウスの大きさを管理するだけなら、これで問題ありません。
でも、収量を記録して、あとから収量の分析をしたいとなると話が変わってきます。
例えば240㎡のハウスに4本の畝があったとして、そのうち2本しか使わなかった場合。
収穫量が少なくても、
「生育が悪くて収量が少なかった」のか、
「そもそも半分しか作付けしていなかった」のか、
これを区別できません。
そこで、
ハウスそのものの面積
と、
その栽培で実際に使った面積
を分けることにしました。
そもそも「ハウス幅÷畝数」で畝幅を決めていた
ここを直そうとして、もう一つ問題が見つかりました。
これまでのアプリでは、畝数を登録すると、
ハウス幅 ÷ 畝数
で畝幅を計算していました。
6mのハウスで4畝なら、
6m ÷ 4 = 1.5m
という具合です。
アプリを作った当初はこれで十分だと思っていました。

でも実際に栽培を始めると、畝幅そのものが栽培条件になります。
例えば、ほうれんそうなら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
なので、実際には後者の方が面積当たりの収量は高い。
これが分かれば、
「収穫量が少なかった」のか、
「作付面積が小さかっただけ」なのか、
「本当にその栽培条件の成績が悪かった」のか
を分けて考えられるようになります。
まだ反収を表示するところまでは作っていません。
でも今回、
その計算に使える「実際の作付面積」をようやく正しく残せるようになりました。
次は、このデータを収穫記録とつなげてみようと思います。
