はじめに
現在、農業しながらポチポチとアプリ制作を続けていますが、そもそもなぜ作り始めたかというと、スプレッドシートで取っていた日々のメモ(灌水・施肥・作業記録など)に不満があったのがきっかけです。
出荷アプリのときは「とりあえず完成」という感じでデモを出しましたが、今回はちょっとずつ分かってきたこともあって、公開前に3つ追加で対応しました。
やったこと①:デプロイ前のセキュリティチェック
公開前にRLSポリシー・XSS・SQLインジェクション・トークン管理・セキュリティヘッダーの6項目を確認しました。
出荷アプリのときはあまり意識できていなかった部分です。調べてみると、Next.js + Supabaseの構成では自動的に守られている項目が多く、自分で手を動かすのはRLSポリシーとセキュリティヘッダーの追加くらいでした。
ただRLSポリシーは全テーブルが {public} になっていたので {authenticated} に修正しています。地味に重要な修正でした。
やったこと②:デモログインの実装
出荷アプリのデモはメールアドレスとパスワードを入力してもらう形でしたが、それだと面倒なのでボタン一発でログインできる仕組みに変えました。
最初はServer Componentにログイン処理を書いたらあっさり動かなくて、原因を調べたらCookieの書き込み周りの話でした。Next.js + Supabaseの構成ではログイン処理をどこに書くかが重要で、Route Handlerに切り出すことで解決しています。
→ 詳細:デモログインがServer Componentで動かない理由と解決策
やったこと③:書き込み制御と通知UIの統一
デモ版は閲覧のみで書き込みは禁止にしています。最初はSupabaseのRLSでDBレベルで止めていましたが、それだと書き込みボタンを押したときに普通のエラーメッセージが出てしまいます。ユーザーからすると「システムの不具合なのか」「デモの制限なのか」が分かりません。
そこでフロント側でデモ判定して「デモ版では閲覧のみです」というトーストを表示する方式に変えました。合わせて通知UIもsonnerに統一しています。
まとめ・これからやること
というわけでデモ版を公開しました。まだまだやりたいことは山積みですが、とりあえず動くものが出せたのでよしとします。
今後やろうと考えていること:
- 収穫入力方法、履歴確認改善
- データ保存の単位変更(試験用に畝単位で保存しているが、ハウス単位でも対応できるようにしたい)
- 作物別に農薬マスタを変更できるようにする
- CSVエクスポート
- 灌水・手灌水の切り替え
- 農薬在庫管理
- 栽培履歴からのデータ分析
- 農薬登録で対象病害虫がない場合の対応(展着剤など)
