スプレッドシートで壊れた設計を、リレーションで組み直した話
受注管理システムを、個人開発・2ヶ月で構築しました。
きっかけは、実家の製造業で見ていた紙の伝票作業でした。1日50枚の注文書を、手書きで処理していく現場です。この非効率をどうにかしたくて、業務システムの構築に取り組みました。
最初はスプレッドシートで作ろうとしました
一番身近なツールから始めるのが自然だと思い、Google Apps Script(GAS)でスプレッドシートを操作しながら、受注管理のようなものを組みました。
ところが、扱うデータが増えるにつれ、あちこちで整合性が崩れ始めました。原因ははっきりしていました。スプレッドシートは行と列の2次元でしかデータを表現できません。受注・製造・納品・請求・入金という業務の流れそのものを表現するには、構造が根本的に足りていなかったのです。
ここで気づいたのは、自分が本当に必要としていたのは、テーブル・レコード・リレーションという発想だったということでした。
リレーションを組み直す
そこで、受注IDを起点にすべてのリレーションを繋ぐ設計に組み直しました。進捗ステータスを人が手で入力する列は、ひとつも存在しません。受注・製造・納品・請求・入金の流れを、正確なリレーションとして表現しています。
技術選定の基準は、コーポレートサイトを作ったときと同じでした。Gitでバージョン管理できるかどうか。この一点に絞り込んで選んだ結果、Supabase(PostgreSQL)とVercelの組み合わせにたどり着きました。
