目次 — 知りたいところから読む

固形物捕捉と窒素・リン負荷を分ける

濁った水と溶存硝酸を同じ負荷にしない

前の記事では、魚槽・生物ろ過・植物側を分けた。今回は魚槽から出る固形物と、溶存した窒素・リンを別々に追う。Cornellはアクアポニックスを魚槽、固形物を集める工程、植物側、戻りの循環として説明している。Cornell Small Farms

固形物をフィルタで捕捉すると、粒子として系外へ出る量と、後で分解・鉱化される量が変わる。溶存窒素は硝化や植物吸収を通る。リンは固形物側へ偏る場合があり、窒素の式から自動的に推定しない。

四つの経路を別帳簿にする

経路 記録 混同しないもの
固形物捕捉 質量、含水率、時刻、処理先 溶存硝酸の濃度
溶存窒素 アンモニア、亜硝酸、硝酸、流量 魚餌の全窒素
リン 溶存・粒子、捕捉・排出 窒素からの換算値
植物吸収・排水 収穫、排水、回収量 ろ過前の負荷

フィルタの入口と出口を同時に測る。捕捉物を捨てるのか、別工程で鉱化するのか、植物側へ戻すのかで、次の系統の負荷が変わる。

合成負荷を計算する

1日あたり、餌由来の窒素10 g、リン1.2 gが系へ入るとする。固形物捕捉で窒素3 g・リン0.8 gを取り出し、植物が溶存窒素4 g・リン0.2 gを吸収した場合、未説明量はそれぞれ3 gと0.2 gである。

inputs = {"N": 10.0, "P": 1.2}
solids = {"N": 3.0, "P": 0.8}
plants = {"N": 4.0, "P": 0.2}
residual = {k: inputs[k] - solids[k] - plants[k] for k in inputs}
print(residual)

出力は{'N': 3.0, 'P': 0.2}となる。これは硝化、槽内蓄積、別の排水、測定誤差などを含む残差で、植物吸収量や安全な負荷を意味しない。

捕捉物の処理先を記録する

固形物を別容器へ移しても、養分が消えたわけではない。含水率、保管時間、処理方法、再投入・堆肥化・廃棄の区別を残す。処理後の液を戻す場合は、新しいロットとして衛生・養分の二つの帳簿へ登録する。

リンや微量元素を窒素と同じ割合で補うことはできない。餌、魚体、ろ過媒体、植物体、排水の境界を分け、未説明量を無理にゼロへ調整しない。

範囲

本記事は固形物・窒素・リンの収支境界を扱った。魚餌の組成、ろ過機器の設計、鉱化反応速度、魚種別の許容値、病原体と食品出荷判定は扱わない。次は水質負荷と魚・植物の容量を結ぶ設計変数を整理する。

水質負荷を魚・植物の容量へつなぐ設計変数

「魚一匹に植物何株」だけでは設計できない

前の記事では、固形物、窒素、リンを別の負荷として記録した。次は、その負荷を魚槽、生物ろ過、植物側の容量へ接続する。Oklahoma State University は、固形物除去、生物ろ過、植物ユニットを別コンポーネントとして扱い、設計後に余裕容量を加える考え方を示している。SRAC aquaponics guide

植物と魚の比率は、魚種、魚体の成長段階、給餌量、ろ過、流量、収穫周期で変わる。固定比率を安全限界や性能保証として使わず、同じ日次の時間窓で負荷と容量を照合する。

設計変数を五つの表に分ける

表 最低限の変数 容量と照合するもの
魚槽 魚体量、給餌量、給餌回数、水温、DO 魚の呼吸・排泄と槽内水量
固形物 入口質量、捕捉率、含水率、処理先 フィルタの処理量と清掃間隔
生物ろ過 アンモニア負荷、亜硝酸、硝酸、接触面、流量 ピーク負荷と酸素供給
植物 栽培面積、作物段階、収穫量、吸収量 溶存養分の残差と光・水温
水力・余裕 循環流量、交換量、停止時間、予備容量 各区画の最小流量と復旧時間

「魚体量」を「給餌量」の代わりにしない。小魚から成魚への移行では、同じ尾数でも給餌と排泄の時間系列が変わる。植物面積も株数だけでなく、定植直後と収穫前を別段階として記録する。

合成の日次負荷を容量へ割り当てる

合成例として、1日給餌量を100 g、窒素負荷を10 g、固形物側の窒素を3 g、植物側の目標吸収を4 gとする。残差は3 gであり、生物ろ過・槽内蓄積・排水・測定誤差を含む。この残差をゼロにするため植物面積を増やすのではなく、次の容量欄へ分けて確認する。

load = {"feed_g": 100.0, "N_g": 10.0}
paths = {"solids_N_g": 3.0, "plant_target_N_g": 4.0,
         "biofilter_or_other_N_g": 3.0}
assert sum(paths.values()) == load["N_g"]
capacity = {"fish_tank_feed_g": 120.0,
            "biofilter_N_g": 3.5,
            "plant_target_N_g": 5.0}
headroom = {"feed_g": capacity["fish_tank_feed_g"] - load["feed_g"],
            "biofilter_N_g": capacity["biofilter_N_g"] - paths["biofilter_or_other_N_g"],
            "plant_N_g": capacity["plant_target_N_g"] - paths["plant_target_N_g"]}
print(headroom)

出力は {'feed_g': 20.0, 'biofilter_N_g': 0.5, 'plant_N_g': 1.0} となる。これは合成容量との差分であり、魚種の許容値、食品安全、病原体管理を示さない。最小の余裕だけを見て、魚槽・ろ過・植物・ポンプのどれが先に制約になるかを特定する。

時間窓と停止時の境界を残す

日平均が容量内でも、給餌直後のピーク、夜間の酸素低下、ポンプ停止、フィルタ清掃中のバイパスで局所的な制約を超えることがある。記録には、給餌時刻、採水時刻、流量、DO、アンモニア・亜硝酸・硝酸、固形物処理状態を含める。停止時は「植物面積があるから安全」とせず、魚槽・生物ろ過・植物側を別の復旧手順として扱う。

範囲

本記事は負荷と容量をつなぐ変数・時間窓・余裕の記録方法を扱った。魚種別の閾値、フィルタの実機設計、飼料組成、流体計算、食品出荷判定は扱わない。次は、魚・微生物・植物の観測値から設計表を更新する運用を整理する。

観測値で負荷・容量表を更新する運用

観測値を一つの「健康スコア」に潰さない

前の記事では、給餌、魚体量、固形物、生物ろ過、植物面積、流量を容量表へ分けた。今回は、その表を魚、微生物、植物の観測で更新する。Oklahoma State University も、アンモニア、亜硝酸、硝酸、pH、温度、溶存酸素を監視し、魚・細菌・植物の状態を別々に確認するよう説明している。Nitrification and Maintenance

同じ時刻の観測を一行のスナップショットにまとめても、指標は混ぜない。魚槽のDO低下、生物ろ過の亜硝酸上昇、植物側の吸収低下は、異なる境界と対応手順を持つ。

一つのスナップショットに五つの境界を残す

境界 代表的な観測 更新する欄
魚槽 魚体量、給餌量、DO、温度、行動 入力負荷と魚槽余裕
固形物 捕捉質量、含水率、清掃時刻、処理先 固形物経路とフィルタ余裕
生物ろ過 アンモニア、亜硝酸、硝酸、流量 変換負荷とろ過余裕
植物 面積、成長段階、収穫、葉の状態 吸収目標と植物余裕
水力・衛生 循環、停止時間、区画、ロット 復旧・隔離状態

各行に observed_at、採取位置、単位、方法、欠測理由を付ける。記録が欠けたときは、前回値を新しい実測値として扱わず、状態を「要確認」にする。

余裕の変化を合成データで計算する

前回の容量表に対し、朝と夕方の観測を置く。ここでは魚槽の給餌余裕、生物ろ過の窒素余裕、植物の吸収余裕を計算する。

capacity = {"feed_g": 120.0, "biofilter_N_g": 3.5, "plant_N_g": 5.0}
morning = {"feed_g": 100.0, "biofilter_N_g": 3.0, "plant_N_g": 4.0}
evening = {"feed_g": 108.0, "biofilter_N_g": 3.2, "plant_N_g": 4.4}
headroom = {
    slot: {k: capacity[k] - obs[k] for k in capacity}
    for slot, obs in [("morning", morning), ("evening", evening)]
}
delta = {k: headroom["evening"][k] - headroom["morning"][k] for k in capacity}
print(headroom)
print(delta)

出力は朝の余裕 {'feed_g': 20.0, 'biofilter_N_g': 0.5, 'plant_N_g': 1.0}、夕方の余裕 {'feed_g': 12.0, 'biofilter_N_g': 0.3, 'plant_N_g': 0.6}、変化 {'feed_g': -8.0, 'biofilter_N_g': -0.2, 'plant_N_g': -0.4} となる。負の変化は容量が減ったという意味で、直ちに給餌量や流量を自動変更する指示ではない。

更新と停止を別の状態にする

観測後の状態を、normal、watch、hold、isolate のように分ける。watch は採水やセンサーを再確認する状態、hold は新しい給餌・移送・再投入を保留する状態、isolate はロットや区画を分離する状態と定義する。誰が解除し、どの観測が必要かも同じ行に残す。

センサーの欠測、校正期限切れ、採水位置の変更は水質値そのものとは別の品質フラグにする。異常な値を平均で隠したり、別区画の値で置き換えたりしない。

範囲

本記事は観測スナップショット、余裕の更新、状態遷移の記録方法を扱った。魚種別閾値、センサー校正手順、病原体判定、食品出荷、実機の自動制御は扱わない。次は、観測履歴から区画・ロット単位の隔離と復旧記録を整理する。

区画・ロットの隔離と段階的な復旧記録

区画を戻しても、ロットの保留は残る

観測から負荷・容量表を更新する記事の続きとして、異常発見から復旧までの記録を組み立てる。区画は設備と水の接続単位、ロットは魚群、植物の栽培・収穫単位、回収水などの追跡単位である。区画の流量が戻っても、その区画にいた魚や植物、回収水の保留を一括解除しない。

Oklahoma State Universityは、魚・細菌・植物を支える水質管理としてアンモニア、亜硝酸、硝酸、pH、温度、溶存酸素の監視を説明している。Nitrification and Maintenance。以下はその監視項目を参照した、本記事独自の記録例であり、同大学が定めた復旧手順ではない。

発見時刻だけで影響範囲を切らない

異常を見つけた時刻と、異常が始まった可能性のある期間を別欄にする。前回の有効な観測以後に共通タンクを通った水、魚群の移動、植物への給液を調べる。記録がない時間帯は「接触なし」と埋めず、調査中として残す。

記録 必須の内容 合成例
事象 ID、発見時刻、観測ID、対象位置 INC-01、09:00、OBS-17、魚槽A
調査期間 開始根拠、終了時刻、不明区間 08:00の有効観測から09:10の分離確認まで
接続履歴 供給・戻り・バイパス、状態変更時刻 08:40に戻り水W-01を共通槽へ移送
対象ロット 魚群、植物、水、親子関係 F-A、P-A、W-01、混合後W-02
隔離の確認 操作指示と実施結果、担当、証拠 09:05閉止指示、09:10に流路確認

混合ロットの祖先追跡は出所の調査に使える。一方、W-01の異常から影響先を調べるときは、W-01を親に持つ子・孫ロットと、その後の接触先を順方向に追う。現在の配管図だけでは、閉止前の移送を復元できない。

隔離中にも魚・微生物の維持条件を残す

循環の共有部分を切り離すと、魚槽と生物ろ過へ届く水や酸素の条件が変わる。単に全ポンプ停止を隔離と定義せず、区画別の経路ごとに維持する曝気・循環、代替経路、停電時の対応を現場手順へ結び付ける。切り離した植物区画の給液と排液先も記録する。

記録上は isolation_requested と isolation_verified を分ける。バルブへ閉止指示を送った事実だけでは、逆流やバイパスを含む物理的な分離を確認したことにならない。隔離によって利用できなくなった生物ろ過や植物面積は、容量表から外して再評価する。

一つの正常値から通常運転へ戻さない

復旧レビューには、原因への対応、設備経路の確認、観測の品質、予定負荷での応答、責任者の判断を結び付ける。観測期間や許容範囲は魚種、設備、運用条件に応じて別途定義する。無負荷時に水質が戻った結果だけで、元の給餌負荷を処理できるとは判断しない。

区画の記録状態 残す証拠 まだ別に扱うもの
isolated 分離確認、維持経路、対象ロット一覧 原因の確定
recovery_review 原因対応、校正・採水確認、負荷条件付き観測 再接続の承認
limited_restart 承認ID、限定負荷、監視頻度、中止条件 通常負荷への復帰
normal 再開後の観測、容量表、担当者判断 個々のロット保留・出荷判断

例えば10:00に区画Aの限定再開を承認しても、08:40に移送したW-01と、その混合先W-02は hold のままにできる。11:00に異常が再発したら、同じ事象IDに追記して限定再開を取り消し、再接続中に接触したロットを再調査する。古い正常記録や保留履歴を上書きしない。

復旧記録を一件作ってみる

合成事象INC-01について、区画Aの限定再開とW-02の保留を二行で作る。それぞれに event_id、object_type、object_id、previous_state、new_state、effective_at、recorded_at、evidence_ids、reviewer、next_review_at を付ける。時刻はタイムゾーン付きとし、遅れて入力した観測も実際の発生順へ戻せるようにする。

確認点は三つある。W-02からW-01へ出所をたどれるか。区画の再開承認が水ロットの保留解除へ流用されていないか。再発時に10:00以後の接触先まで追加できるか。空欄の証拠や未完了の調査は、完了として記録しない。

範囲と次の学習

扱ったのは事象・接続・ロット・復旧判断を結ぶ記録設計である。実機の隔離性能、魚種別の限界値、病原体検査、処理条件や食品出荷は検証していない。アクアポニックスの導入記事をここで区切り、次はキノコ栽培の菌類・培地・生育段階を整理する。光合成植物のモデルをそのまま転用せず、前提から組み立てる。

次に読む

三つの水質境界を確認する。CEAアクアポニックス — 魚・微生物・植物の水質境界排液・処理先の区画境界を確認する。CEAロット・区画の追跡と隔離運用シリーズの次の内容へ進むCEAキノコ栽培 — 菌類・培地・環境・汚染境界