Ryo Blog
← 記事一覧に戻る

プログラミング歴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つ作り上げた。

完璧ではないし、まだ改善したいところもある。でも、実際に業務で使えるものが動いている。紙の伝票と電卓から、ワンクリックの請求書発行へ。それだけで十分、作った価値はあったと思う。

次はスマホ対応の強化と、もしかしたらまた全然別の何かを作り始めるかもしれない。

「とりあえず作ってみる」の精神で、これからも続けていく。