スキルシート — pixi(Apollon)キャスト管理・Web予約 SaaS
記載者: 寺田 誠也 / 期間: 2025年9月 〜 2026年5月(継続中) ※スキルシートにそのまま貼れるよう、要約版(案件表)と詳細版(実績箇条書き)を併記しています。
1. プロジェクト概要(案件表・要約版)
| 項目 | 内容 |
|---|---|
| プロジェクト名 | pixi(サービス名: Apollon)— キャスト管理・Web予約 SaaS |
| 概要 | 店舗(管理者)とキャスト向けの、予約・シフト管理・顧客管理・売上集計を統合した運営管理システム。既存サービス「キャスカン」からの乗り換えを狙い、モダンUI・高パフォーマンスを差別化軸に新規開発。 |
| 期間 | 2025年9月 〜 2026年5月(継続中) |
| 役割 | フルスタックエンジニア(バックエンド/フロントエンド/API設計/インフラ/開発基盤を横断)。少人数チームの中核として全リポジトリに関与。 |
| 担当工程 | 要件定義・設計(ADR策定)/実装/テスト/コードレビュー/CI・CD構築/運用 |
| チーム規模 | 4〜5名 |
| 成果 | 新規SaaSをゼロから立ち上げ、デモ環境・パイロット店舗(実データ移行)まで到達。3つのフロントアプリ+APIをモノレポ群として並行開発・継続デリバリー。 |
技術環境
| 分類 | 技術 |
|---|---|
| 言語 | Go 1.24、TypeScript |
| バックエンド | Gin、GORM、クリーンアーキテクチャ(domain / usecase / interface / infrastructure 層分離) |
| フロントエンド | Next.js(App Router / Server Actions / Data Cache)、React、Tailwind CSS、Radix UI、Zod |
| DB / 認証 | Supabase(PostgreSQL / Auth)、OAuth |
| API設計 | OpenAPI(Swagger)スキーマ駆動開発、oapi-codegen(Go)/ orval(TS)によるコード自動生成 |
| インフラ / CI・CD | Vercel(フロント3アプリの本番・プレビュー自動デプロイ)、GitHub Actions、Docker、Cloud(Supabase)、cronjob.org |
| テスト | Go ユニットテスト、Playwright(E2E) |
| 開発基盤 | Biome / golangci-lint(gofumpt)、Git submodule によるスキーマ共有、Slack 連携の自作レビュー通知ツール |
2. 担当システム構成
| リポジトリ | 役割 | 主な技術 |
|---|---|---|
| pixi-backend | 共通APIサーバ(予約・顧客・キャスト・スタッフ・売上・通知) | Go / Gin / GORM / Supabase |
| pixi-admin | 店舗管理者向け管理画面 | Next.js / Server Actions / Data Cache |
| pixi-cast | キャスト向けモバイルアプリ(マイページ・予約・シフト) | Next.js / Playwright E2E |
| pixi-reserve | 顧客向けWeb予約フロント | Next.js / Radix UI |
| pixi-swagger | OpenAPIスキーマ定義(全アプリの型のSingle Source of Truth) | OpenAPI / Swagger UI |
| pixi-nudge | レビュー待ちPRをSlack通知する社内ツール(自作) | Go / GitHub API / Slack Webhook |
| pixi-docs | 要件定義・設計書・ADR・コーディング規約 | Markdown |
3. 主な担当業務・実績(詳細版)
バックエンド(Go / Gin / GORM)
- クリーンアーキテクチャに基づく予約・顧客・キャスト・スタッフ・売上の各APIをドメイン層から実装。
- 管理者向けキャスト一覧APIに本指名件数・売上集計を実装。集計クエリを COUNT/SUM の単一クエリに統合し、DBアクセスを最適化。
- 出禁(出入り禁止顧客)共有機能のAPIと自動判定ロジックを設計・実装。料金プラン(ultra)による機能制御も実装。
- Supabase Auth / OAuth による認証基盤を構築。
/admin/auth/refreshによるアクセストークン自動更新、OAuth コールバックのエラーハンドリング、preview環境へのreturnTo復帰などを実装。 - キャストログイン・Web予約フローを
storeCode/ IDベースへ刷新。予約コース情報のスナップショット保存など整合性対応。 - デモアカウント(ultra / pro / basic 各プラン)へ業務データ一式を冪等にシードする仕組みを実装し、社内デモ環境を整備。
- 画像URL署名処理の並列化+LRU TTLキャッシュ導入により、ダッシュボード/キャスト一覧の応答時間を短縮(パフォーマンスチューニング)。
- Web Push 通知機能の実装。
フロントエンド(Next.js / TypeScript)
- 管理者・キャスト・顧客向けの3つのフロントアプリを並行開発。
- Next.js の Server Actions /
'use cache'/ Data Cache を活用し、一覧・詳細画面の不要な再フェッチを削減してパフォーマンスと表示UXを改善。 - ローディングUX改善(ヘッダー先出し+リストスケルトン、レイアウトシフト防止)。
useMypageでの複数取得をPromise.allで並列化、exhaustive-deps準拠・race condition 対策など品質面のリファクタリング。- 本番環境でのモックフォールバック無効化、Authorizationヘッダ欠落の解消など、モック/実APIつなぎ込みの不具合対応。
API設計・スキーマ駆動開発
- OpenAPI(pixi-swagger)を全アプリの型の単一情報源とし、Go側 oapi-codegen・TS側 orval で型・クライアントを自動生成するスキーマ駆動開発を推進。
- 手書きの wrapper / 手動ルートを撤去し、生成コードへ統一するリファクタリングを実施。
- Git submodule によるスキーマ共有と、生成物の重複・型不整合に起因するCI崩れの解消(CI緑化)を継続的に担当。
CI / CD・開発基盤・運用
- GitHub Actions による Lint・ビルド・E2E(Playwright)の自動化、Vercel への本番/プレビュー自動デプロイを整備。
- Docker による開発環境セットアップ。
- pixi-nudge(レビュー待ちPRをチームメンバー別に集約しSlack通知するGo製ツール)を自作。cronjob.org → GitHub Actions → Slack の自動リマインド基盤を構築。
設計・ドキュメント
- 要件定義書・コーディング規約・テスト情報を整備。
- **ADR(Architecture Decision Record)**を策定(出禁共有機能の設計、キャスカン移行の段階的実装方針など)。
- 既存サービス「キャスカン」からの**CSV移行機能(予約10万件規模/非同期ジョブ)**の詳細設計を、Phase 1(運用内部CLI)/Phase 2(admin UI経由)の二段構えで設計。
4. アピールポイント(職務要約に転記可)
- Go バックエンドから Next.js フロント3アプリ、OpenAPIスキーマ、CI/CD、社内ツールまでを一気通貫で担当できるフルスタック開発力。
- スキーマ駆動開発(OpenAPI + コード自動生成)による型安全なフロント/バック連携の設計・運用経験。
- クリーンアーキテクチャでの設計、ADRによる意思決定の文書化など、保守性・拡張性を意識した設計力。
- キャッシュ・並列化・クエリ最適化によるパフォーマンスチューニングの実績。
- 新規SaaSをゼロから立ち上げ、デモ環境・実データ移行まで到達させたプロダクト立ち上げ経験。
5. 担当画面一覧(3アプリ 合計約40画面)
Notion「画面一覧」の設計定義(管理者29/キャスト10/Web予約2=全41画面)と実装ルートを突き合わせたもの。3アプリすべてを設計・実装。
管理者向け管理画面(pixi-admin)— 約29画面
| 画面 | パス |
|---|---|
| ログイン/OAuthコールバック | /login, /auth/callback |
| ダッシュボード(売上・本日の出勤・X投稿) | /dashboard |
| スケジュール | /schedule |
| シフト | /shifts |
| 予約 一覧/詳細/登録/フォーム項目設定 | /reservations, /reservations/[id], /reservations/create, /reservations/form-settings |
| 顧客 一覧/詳細(CSVインポート) | /customers, /customers/[id] |
| キャスト 一覧/詳細/登録 | /casts, /casts/[id], /casts/new |
| スタッフ 一覧/詳細/登録 | /staffs, /staffs/[id], /staffs/new |
| ルーム 一覧/詳細/登録 | /rooms, /rooms/[id], /rooms/new |
| 料金設定(コース・オプション・バック率) | /pricing |
| 給与 一覧/詳細 | /salary, /salary/[...segments] |
| 経費 一覧/詳細/登録 | /expenses, /expenses/[id], /expenses/new |
| レポート(日別・キャスト別・ルーム別・経路別・媒体別) | /report |
| 給与明細 一覧/詳細 | /billing, /billing/[id] |
| マイページ/各種設定(LINE連携等)/利用規約 | /mypage, /settings, /settings/line, /terms |
キャスト向けアプリ(pixi-cast)— 約10画面 ※PWA / Web Push 対応
| 画面 | パス |
|---|---|
| ログイン(店舗ID+ID)/コールバック | /, /auth/callback |
| ダッシュボード(スケジュール・シフト集約) | /dashboard |
| スケジュール/シフト | /schedules, /shifts |
| 予約 一覧/詳細/登録(編集権限者のみ) | /reservations, /reservations/[id], /reservations/create |
| 顧客 一覧/詳細 | /customers, /customers/[id] |
| 給与レポート | /reports |
| マイページ(SNS登録6種)/設定 | /mypage, /settings |
顧客向けWeb予約サイト(pixi-reserve)— 店舗コード別マルチテナント
| 画面 | パス |
|---|---|
| 店舗トップ/店舗情報 | /[storeCode], /[storeCode]/shop, /[storeCode]/shopinfo |
| 在籍キャスト 一覧/詳細 | /[storeCode]/casts, /[storeCode]/casts/[castId] |
| 料金一覧 | /[storeCode]/price |
| Web予約フロー/予約完了 | /[storeCode]/reserve, /[storeCode]/reserve/completed |
| SMS案内リンクページ(開封トラッキング) | /g/[token] |