terada_life

スキルシート — 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・CDVercel(フロント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-swaggerOpenAPIスキーマ定義(全アプリの型の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]