# 個人開発 ( スキーマッチングアプリ )
## 目的
スキーレッスンの受付業務とインストラクターのマッチング業務を効率化・改善するWebアプリケーションの開発をすること。
## 背景
過去にスキーインストラクターとして従事していた経験から、従来の紙での受付業務や担当インストラクターのミスマッチによる非効率性を目の当たりにし、デジタル化によってこれらの課題を解決できるのではないかと考えた。
## 規模感・チーム構成・担当した役割
### 規模感: 個人開発プロジェクト
- チーム構成: 1名(個人開発)
- 担当した役割
- [x] 企画・設計
- [x] フロントエンド開発
- [x] バックエンド開発
- [x] インフラ構築
- [x] テスト・デプロイ
### 使用技術・開発環境
フロントエンド: Alpine.js, Tailwind CSS
バックエンド: Django (Python)
データベース: PostgreSQL
インフラ: AWS EC2, Application Load Balancer (ALB), RDS
コンテナ: Docker, docker-compose
開発環境: Cursor (エディタ)
デザイン: Figma
## 取り組んだ課題
どんな課題だったのかを以下にまとめてみた。
### 紙での受付業務の非効率性
従来の手書きでの予約受付により、情報の管理が煩雑で、ダブルブッキングやデータの紛失などのリスクがあった。
### インストラクターのミスマッチ
お客様のスキルレベルやニーズに適したインストラクターが適切にマッチングされず、レッスンの質に影響していた。
### 予約管理の可視化不足
予約状況やインストラクターのスケジュールが一目で把握できず、効率的な管理が困難だった。
## 技術的なアプローチや工夫した点
- 決済システムの統合
Stripeを導入し、安全で確実な決済処理を実現
- カレンダー機能の実装
予約一覧をカレンダー形式で表示し、直感的な予約管理を可能にした
- Docker化による環境統一
docker-composeを活用して開発環境の統一と デプロイの簡素化を実現
- AWS インフラの構築
EC2、ALB、RDSを組み合わせた スケーラブルなインフラ設計
## 特に工夫した技術的なポイント
Alpine.js とTailwind CSSの組み合わせ: 軽量でレスポンシブなフロントエンドを実現
Djangoによる堅牢なバックエンド: ユーザー認証、予約管理、決済処理などの複雑なビジネスロジックを安全に実装
PostgreSQLによるデータ管理: 予約データやユーザー情報の整合性を確保
## 取り組みの成果
### 技術的成果
決済システムの完全実装: Stripeを活用した安全な決済処理機能を実装完了
カレンダー機能による予約管理: 直感的で使いやすい予約一覧のカレンダー表示機能を実現
フルスタック開発経験: Django + PostgreSQL + Alpine.js + Tailwind CSSの組み合わせによる本格的なWebアプリケーション開発経験を獲得
AWS クラウドインフラの構築: EC2、ALB、RDSを組み合わせたスケーラブルなインフラ設計・運用経験
### ビジネス・ユーザー価値
業務効率化の実現: 紙ベースの受付業務をデジタル化し、業務効率の向上を図った
予約管理の可視化: カレンダー機能により予約状況が一目で把握でき、管理業務が大幅に改善
## 学んだこと・今後の課題
実際の業務課題を技術で解決するプロセスの重要性
フルスタック開発における技術選定と統合の経験
AWS クラウドサービスの実践的な活用方法
## 今後改善したい点
スキー場の網羅性向上: より多くのスキー場での利用を可能にするための機能拡張
マッチングの信頼性向上: インストラクターとお客様のより精度の高いマッチングアルゴリズムの実装
キャンセル対応の仕組み: キャンセル処理のワークフローと返金処理の自動化検討
## 次回のプロジェクトに活かしたいこと
より大規模なサービスでの運用を見据えた設計
ユーザーフィードバックを活用した継続的な改善プロセス