栽培管理アプリを作ってます㉒:「作物未定」をやめて、栽培前の「準備期間」を作った

栽培管理アプリを実際に使い続けていると、開発時には気づかなかった違和感が出てきます。

今回見直したのは、栽培を始める前の期間をどう扱うかです。

これまでは、ハウスで作る作物がまだ決まっていなくても、とりあえず栽培を開始して「作物未定」として登録できるようにしていました。

しかし実際に使ってみると、どうもしっくりきません。

そこで「作物未定」という考え方をやめて、新しく**「準備中」**という状態を作ることにしました。

これまでの「作物未定」

このアプリでは、ハウスごとに現在何を栽培しているのかを管理しています。

基本的な流れは、

空き
 ↓
栽培開始
 ↓
栽培中
 ↓
栽培終了
 ↓
空き

です。

ただ、次に何を作るか決まっていない状態でも、実際の農作業は始まることがあります。

例えば、

  • 耕耘
  • 土づくり
  • 石灰や肥料の投入
  • EC・pHの測定
  • 太陽熱処理
  • 灌水

などです。

そこで以前は、作物名を空欄のまま栽培開始できるようにしていました。

画面上ではこれを「作物未定」として扱います。

考え方としては、

空き
 ↓
作物未定で栽培開始
 ↓
作物が決まる
 ↓
作物名を設定

という流れです。

最初はこれで十分だと思っていました。

でも「作物未定」は栽培なのか?

実際に使っていて気になったのがここです。

例えば、次にジャガイモを作るか、ブロッコリーを作るか、まだ決めていないハウスがあるとします。

そのハウスを耕耘したり、ECやpHを測ったりする。

これは確かに栽培に向けた作業ではあります。

でも、

「何かを栽培しているのか?」

と考えると、まだ何も栽培していません。

作物すら決まっていないのに「栽培中」として扱うのは、やはり少しおかしい。

そこで、栽培とは別に準備期間を持たせることにしました。

「空き」「準備中」「栽培中」の3段階に変更

新しい流れはこうです。

空き
 ↓
準備開始
 ↓
準備中
 ↓
栽培開始
 ↓
栽培中
 ↓
栽培終了
 ↓
空き

これなら、

「まだ作物は決まっていない。でも次の栽培に向けて作業は始めている」

という状態をそのまま表現できます。

もちろん、必ず準備中を経由する必要はありません。

すでに作物が決まっていて、準備期間をわざわざ記録する必要がなければ、

空き
 ↓
栽培開始
 ↓
栽培中

と直接始めることもできます。

つまり、

作物が決まっているなら「栽培開始」

まだ決まっていないなら「準備開始」

というシンプルな使い分けです。

複数のハウスをまとめて準備したい

ここから少し実装がややこしくなりました。

私の場合、複数のハウスをまとめて管理することがあります。

例えば、

2026年夏準備

No.2
No.3

という形で、No.2とNo.3をまとめて準備開始します。

最初は単純に「2026年夏準備」という1つのグループとして扱えばいいと思いました。

ところが実際の農作業では、必ずしも同時に次の栽培へ進むとは限りません。

例えば、

No.2 → 作物が決まったので栽培開始

No.3 → まだ作物が決まっていないので準備中

ということが普通にあります。

さらに、

No.3 → 今回は使わないので空きに戻す

というケースもあります。

つまり、まとめて準備を始めても、準備が終わるタイミングはハウスごとに違うわけです。

そこで、準備グループとは別に、ハウスごとの準備期間を管理するようにしました。

準備中でも作業記録を残したい

準備中という状態を作るだけなら、それほど意味はありません。

重要なのは、その期間に行った作業を記録できることです。

例えばNo.3が準備中なら、

No.3
準備開始
 ↓
耕耘
 ↓
石灰投入
 ↓
EC・pH測定
 ↓
栽培開始

という流れを記録したい。

そこで作業登録画面でも、栽培中のハウスだけでなく準備中のハウスを選択できるようにしました。

畝単位の作業登録もできます。

これで作物が決まっていなくても、

「このハウスで、栽培開始前に何をしたのか」

を残せるようになりました。

作物ではなく「準備期間」に作業を紐づける

ここで問題になったのが、準備中に登録した作業をどう区別するかです。

単純に、

No.3で行った作業

として記録するだけでは不十分でした。

同じNo.3でも、

春の準備
夏の栽培
秋の準備
冬の栽培

と、何度も使います。

ハウス名だけでは、どの時期の作業なのか分かりません。

日付から推測する方法もありますが、これも完全ではありません。

そこで、準備中に登録した作業には、

「No.3で行った作業」だけではなく、「No.3のこの準備期間に行った作業」

という情報を持たせることにしました。

これによって、栽培開始後でも、その前に行った準備作業を過去の準備期間として確認できます。

実際にテストしたら問題が見つかった

この仕組みを作ったあと、いろいろな操作を試しました。

その中で、

No.3を準備開始
 ↓
空きに戻す
 ↓
もう一度No.3を準備開始

という操作をしました。

実際の農作業では頻繁にやる操作ではありません。

ただ、栽培計画を考えている段階なら、

「やっぱりこのハウスを使うのをやめよう」

「いや、やっぱり使おう」

と変更することは十分あり得ます。

しかもテストでは、これを同じ日に行いました。

すると、今回登録した作業が現在の準備と過去の準備の両方に表示される問題が発生しました。

原因は、同じハウスで同じ日に準備期間が切り替わったため、日付だけではどちらの準備期間の作業なのか正確に判断できなかったことです。

そこで、作業記録に「どの準備期間の作業なのか」を直接記録するように変更しました。

これで、

1回目の準備
 └─ そのときの作業

2回目の準備
 └─ そのときの作業

を明確に分けられるようになりました。

栽培開始すると「過去の準備」になる

準備中のハウスで作物が決まったら、そこから栽培を開始します。

例えば、

No.3
準備中
 ↓
ジャガイモを栽培開始

とします。

この時点で現在の状態は「ジャガイモ栽培中」になります。

しかし、栽培開始前に行った耕耘やEC・pH測定の記録は消しません。

準備期間だけを終了させて、**「過去の準備」**として残します。

そのため後から、

現在
No.3:ジャガイモ栽培中

過去の準備
No.3:耕耘、EC・pH測定……

という形で確認できます。

栽培開始前に何をしたのかを振り返れるようになりました。

EC・pHも準備中に記録できるようにした

今回の変更と相性が良かったのが、ECとpHの記録です。

ECやpHは、必ずしも栽培開始後に測るものではありません。

むしろ、

「次に何を植えるか決める前に、現在の土の状態を確認する」

ために測ることもあります。

そこで準備中でも、通常の作業と同じようにEC・pHを記録できるようにしました。

今回はN・P・Kなどの土壌分析値までは扱っていません。

自分で日常的に測定できるのがECとpHなので、まずはこの2つに絞っています。

必要になったら、そのとき追加すればいいと考えています。

「直近作業」に昔の栽培記録が混ざった

準備期間を追加したことで、別の問題も見つかりました。

作業登録画面には、そのハウスで最近行った作業を確認するための「直近作業」を表示しています。

これは、

「前回いつ灌水したか」

「最後にいつ防除したか」

などを見て、今日の作業を考えるための機能です。

ところが準備中のハウスを見ると、現在の準備作業だけでなく、以前そのハウスで栽培していた作物の作業まで混ざって表示されていました。

同じハウスなので、単純にハウス単位で直近の記録を探すと、過去の栽培記録まで拾ってしまいます。

そこで直近作業についても、

  • 栽培中なら「現在の栽培期間」
  • 準備中なら「現在の準備期間」

だけを見るように変更しました。

これで、昔の作物の作業記録が現在の準備に混ざることはなくなりました。

過去の栽培・準備をハウス単位で削除できるようにした

今回、期間という考え方を整理したついでに、削除方法も見直しました。

以前は過去の栽培を削除するとき、グループ全体で削除する仕組みが中心でした。

しかし実際には、

「No.3のこの栽培期間だけ消したい」

「テストで作ったNo.3の準備期間だけ消したい」

ということがあります。

そこで、

  • 栽培グループ全体
  • 1つのハウスの栽培期間
  • 1つのハウスの準備期間

を分けて削除できるようにしました。

期間を削除する場合は、その期間に紐づいている作業記録も一緒に削除します。

写真がある場合は、データベース上の記録だけでなく保存している画像ファイルも対象にしています。

テストで作ったデータを消したいときにも、かなり扱いやすくなりました。

最後に「作物未定」を廃止

準備期間の仕組みができたので、最初に使っていた「作物未定」は不要になりました。

そこで、

  • 作物名を空欄のまま栽培開始する機能
  • 「作物未定」という表示
  • 後から複数の栽培グループをまとめるために作っていた機能

など、旧仕様を削除しました。

現在は栽培を開始するときに、作物名が必須です。

作物がまだ決まっていなければ、栽培を開始するのではなく準備を開始します。

最終的には、

【作物が決まっている】

空き
 ↓
栽培開始


【まだ作物が決まっていない】

空き
 ↓
準備開始
 ↓
作物決定
 ↓
栽培開始

という形になりました。

最初よりずっと分かりやすくなったと思います。

まとめ

今回の変更は、画面に「準備中」という表示を1つ追加しただけではありません。

元々は、

「作物が決まっていなくても、とりあえず栽培中として扱えばいい」

と考えていました。

しかし実際に農作業で使ってみると、

栽培前の準備作業と、作物を栽培している期間は別にした方が自然

だと感じるようになりました。

そこで、

空き
↓
準備中
↓
栽培中
↓
空き

という状態に整理し、作業履歴も「どの栽培期間・準備期間の作業なのか」が分かるように変更しました。

アプリを作っている段階では「作物未定」でも十分だと思っていたので、これは実際に使わなければ気づかなかった部分です。

農業に限った話ではありませんが、実運用を始めると、

「機能としては動いているけれど、現実の流れとは少し違う」

という部分が出てきます。

今回はそこを無理に既存の仕組みに合わせるのではなく、現実の作業に合わせてアプリ側の考え方を変えることにしました。

結果的に機能は少し増えましたが、使い方そのものは以前よりシンプルになったと思います。

目次