導入事例一覧へ戻る
サービス・予約·株式会社サービスC·Claude Code·期間: 4週間
予約管理システムのAIコードを保守可能な状態に再構築
アーキテクチャテスト整備TypeScriptリファクタリング
課題
株式会社サービスCは、Claude Codeを使って美容サロン向けの予約管理システムを開発しました。初期機能のリリースには成功しましたが、顧客からの機能追加要望に対応する段階で以下の課題が表面化しました。
- 1つのファイルに3,000行以上のコードが集中し、見通しが悪い
- テストが一切書かれておらず、変更の影響範囲が不明
- 予約のダブルブッキングが月に2〜3回発生
- 新機能追加に1ヶ月以上かかるようになった
診断結果
コード品質診断により、以下の構造的な問題が特定されました。
アーキテクチャの問題
- ビジネスロジック、UI、データアクセスが完全に混在
- 状態管理がグローバル変数に依存
- エラーハンドリングが場当たり的で一貫性がない
データ整合性の問題
- 予約の排他制御が実装されていない
- トランザクション処理が不完全で、中間状態が発生
- 日時処理でタイムゾーンの考慮が不足
テストの欠如
- ユニットテスト: 0件
- 結合テスト: 0件
- 手動テストのみで品質を担保していた
改善内容
Phase 1: アーキテクチャ改善(2週間)
| 改善項目 | 施策 | |---------|------| | 責務分離 | レイヤードアーキテクチャ(Domain / Application / Infrastructure)に再構成 | | 状態管理 | グローバル変数 → Zustandによる適切な状態管理に移行 | | エラーハンドリング | Result型パターンを導入し、一貫したエラー処理を実現 |
Phase 2: データ整合性・テスト整備(2週間)
| 改善項目 | 施策 | |---------|------| | 排他制御 | 楽観的ロックを予約処理に導入 | | トランザクション | Prismaのトランザクション機能を適切に使用 | | テスト | ユニットテスト120件、結合テスト25件を追加 | | CI/CD | GitHub Actionsでテスト自動実行を設定 |
結果
- ダブルブッキング: 月2〜3件 → 0件
- テストカバレッジ: 0% → 82%
- 新機能追加の所要時間: 1ヶ月 → 3〜5日
- コードの最大ファイル行数: 3,000行 → 200行以下
「AIで爆速開発したのは良かったですが、規模が大きくなると手がつけられなくなりました。プロに整理してもらった結果、今は自分たちでも安心して機能追加できています。」 — 株式会社サービスC 開発担当