← Works

2025

tsurite

釣り人のためのパーソナルOS。釣果記録・AI魚種判定・データ分析・ブログ投稿を備えたWebサービス

Next.js / React / TypeScript / Tailwind CSS / TensorFlow.js / Go / PostgreSQL / Python / Google Cloud / Firebase

tsurite (1)
tsurite (2)
tsurite (3)
tsurite (4)
1 / 4

釣り人のための「パーソナルOS」を目指した個人開発の Web サービス。釣果の記録から、AI による魚種判定、データ分析、ブログ投稿までを一つの場所にまとめている。

主な機能

技術構成

ディレクトリ設計

バックエンド・フロントエンド・機械学習を独立したサブディレクトリで持つモノレポ構成。

tsurite/
├── tsurite-api/             # Go バックエンド(クリーンアーキテクチャ)
│   ├── cmd/                 # エントリポイント(APIサーバー・CLIツール)
│   ├── internal/
│   │   ├── domain/          # エンティティ・Repositoryインターフェース(最内層)
│   │   ├── usecase/         # ユースケース
│   │   ├── interfaces/      # HTTPハンドラ・ミドルウェア・ルーター
│   │   └── infrastructure/  # DB・外部APIの具体実装
│   ├── migrations/          # DBマイグレーション
│   └── openapi/             # openapi.yaml(API仕様の正典)
├── tsurite-web/             # Next.js フロントエンド
│   ├── app/                 # App Router のページ
│   ├── components/          # atoms / molecules / organisms(+ shadcn/ui)
│   └── lib/                 # フック・APIクライアント・ユーティリティ
├── tsurite-ml/              # 魚種分類モデル(Python → TensorFlow.js)
│   └── scripts/             # 学習・エクスポート・検証パイプライン
├── docs/                    # 設計書・アーキテクチャメモ
└── scripts/                 # pre-push フックなど共通スクリプト

テスト・品質保証

「設計どおりに保たれているか」を機械で担保することを重視している。

AI ガードレール方針

AI コーディングアシスタント(主に Claude Code)を多用するため、「ルールベースのチェックで安く先に弾き、LLM レビューは補完に回す」という方針を採っている。CLAUDE.md に規約を集約してガイドし、pre-push フックや静的解析・アーキテクチャの Fitness Function で機械的に検知。LLM レビューはその追加層と位置づけている。根底にあるのは「問題が起きたらコードだけ直さず、harness(規約・lint・スクリプト)側にルールを刻む」という姿勢。