プログラミング歴2日の素人が、美容室の業務管理システムを作った話
きっかけは「泣きながら帳票を作る人」だった
美容室のオーナーは、毎月の請求書発行に苦しんでいた。
法人契約のお客さん全員分の伝票を紙で書いて、電卓で集計して、集計ミスに気づいてやり直して。なんとかスマホで帳票を作ろうとしても、途中でアプリが落ちて全部消える。それを毎月繰り返していた。
正直、Excelで簡単な集計シートを作って渡すだけでも良かった。でも、せっかくだからちゃんとしたものを作ってみようと思った。いい機会をもらったな、と。
これが、プログラミング歴2日の素人がWebシステムを作り始めたきっかけだった。
作ったもの
「美容室 業務管理システム」。法人契約の美容室向けに、予約管理から請求書発行まで一気通貫で処理できるWebアプリケーション。
主な機能はこんな感じ。
予約・来店管理
カレンダー形式のタイムラインで、週単位の予約状況がひと目でわかる。予約ブロックをクリックすれば編集、空き時間をクリックすれば新規登録。15分刻みのグリッドで、今の時刻は赤い線でリアルタイム表示される。
一覧表示モードもあって、月別・会社別・顧客別・ステータス別に絞り込める。
帳票発行(請求書・明細書)
これが一番作りたかった機能。月を選ぶだけで、会社ごとの請求データが自動集計される。PDFを生成してその場でダウンロードもできるし、ボタン一つでメール送信もできる。一括送信にも対応。
帳票は3種類。通常の請求書、施術ごとの明細書、そして特定の取引先向けの専用明細。全部PDF出力とメール送信に対応してる。
手書き→電卓→スマホで泣く、のサイクルが、ボタン1つで終わるようになった。
マスタ管理
会社、顧客、施術メニュー、カテゴリ。業務に必要なデータを全部管理画面から登録・編集できる。ドラッグ&ドロップで並び替えもできるようにした。
顧客マスタは、会社別のフィルタ、在籍/退職の切り替え、料金上限の有無など、実際の業務に合わせた項目を用意した。
スタッフ管理・権限制御
オーナーとスタッフで権限を分けられる。予約、来店、帳票、マスタ、スタッフ、設定の各カテゴリごとに、閲覧と編集の権限を個別に設定可能。
パスワードはbcryptでハッシュ化、ログイン試行回数の制限もつけた。
請求ロジック
法人契約特有のルールもシステムに組み込んだ。施術料金の合計が上限を超えた場合、請求金額は上限で固定して、差額は現地払いとして自動計算される。顧客ごとに上限なしフラグも設定できる。
予約段階のデータは請求対象外にして、確定済みの来店データだけが請求に反映される。未確定の予約がある場合は警告も出る。
技術的な話
使った技術スタックを並べると、それなりに本格的な構成になっている。
フロントエンドはNext.js(TypeScript)+ Tailwind CSS。バックエンドはPython / FastAPI + SQLAlchemy。データベースはPostgreSQL。PDF生成にはReportLabを使って、日本語フォント(IPAゴシック)で帳票を出力している。
インフラはConoHa VPSにDocker Composeでフロント・バック・DBの3コンテナを立てて、NginxでリバースプロキシしてSSL対応。ドメインも取って、ちゃんとHTTPSで動いてる。
デプロイはGitHubにpushして、サーバーでpull & rebuildするシンプルな構成。
APIは全部RESTで設計して、認証、来店/予約のCRUD、帳票生成・メール送信、マスタ管理、スタッフ管理、設定まで、合計30以上のエンドポイントがある。
もしこれを外注したら
正直、自分で作ってる最中は「まあ頑張れば作れるもんだな」くらいの感覚だった。でも改めて仕様書を見返すと、これはかなりの規模のシステムだった。
参考までに、このシステムを一般的なWeb開発会社に外注した場合の目安を調べてみた。
開発規模の目安
- 画面数:13画面
- APIエンドポイント:30以上
- テーブル数:11テーブル
- PDF帳票:3種類
- メール送信機能あり
- 認証・権限管理あり
- レスポンシブ対応あり
- Docker + VPSのインフラ構築込み
一般的な外注費用の相場
この規模のシステムをゼロから開発する場合、フリーランスに依頼して150〜300万円、開発会社に依頼すると300〜600万円程度が相場になる。要件定義やデザイン、テスト、保守まで含めるとさらに上がる。
一般的な開発期間の相場
エンジニア1〜2名のチームで、2〜4ヶ月が一般的な見積もり。要件定義に2〜3週間、設計に2週間、実装に1〜2ヶ月、テスト・修正に2〜3週間、インフラ構築・デプロイに1〜2週間。
それを、プログラミング歴2日の人間が10時間で作った。
開発で感じたこと
AIがあれば誰でも作れる、は半分本当で半分嘘
今回の開発では、ほぼ全ての工程でAI(Claude)を使った。コードを書いてもらい、エラーが出たらスクショやエラーコードを送って解決してもらう。技術的に「詰んだ」と感じる瞬間はほとんどなかった。
じゃあ誰でも作れるのかというと、そう単純でもない。
大事だったのは想像力だった。
「こんな機能があったら便利じゃないか」「この場面でユーザーは何に困るか」「このデータは別の画面でも使い回せるんじゃないか」。AIは指示されたものは作れるけど、何を作るべきかを考えるのは人間の仕事だった。
思いつけば思いつくほど、良いものができる。逆に、思いつかなければ、AIがいても平凡なものしかできない。
「フルスペック」にこだわった
技術的に見送った機能はない。やりたいことは全部やった。
ドラッグ&ドロップの並び替え、権限管理、メールの一括送信、テンプレート編集、送信ログ、営業日カレンダー。「あったら便利だな」と思ったものは全部実装した。その分大変だったけど、妥協しなくてよかったと思ってる。
強いて言えば、スマホでの表示がまだ完全には最適化できていない。PCで使う前提で作った部分があるから、今後はスマホからでもガンガン登録・帳票作成ができるようにしていきたい。
美容室の人の反応
完成したシステムを見せたら、バカびっくりしてた。
そりゃそうだと思う。毎月泣きながら帳票を作ってた業務が、ボタン1つで終わるようになったんだから。しかもそれを作ったのが、2日前までプログラミングを触ったこともなかった素人。
今度、「これ外注したら何百万かかるらしいよ」って言って、もっとびっくりさせようと思っている。
まとめ
プログラミング歴2日、開発時間10時間。AIの力を借りて、美容室の業務管理システムを1つ作り上げた。
完璧ではないし、まだ改善したいところもある。でも、実際に業務で使えるものが動いている。紙の伝票と電卓から、ワンクリックの請求書発行へ。それだけで十分、作った価値はあったと思う。
次はスマホ対応の強化と、もしかしたらまた全然別の何かを作り始めるかもしれない。
「とりあえず作ってみる」の精神で、これからも続けていく。