以下の全てが完了したら、Phase 1は完成とする:
目標完成日: 2025年2月末(水稲共済の1回目申請に間に合わせる)
Day 1: プロジェクトセットアップ
django-admin startprojectGDAL, GEOS).env)create-next-appDay 2: 認証機能
djoser, djangorestframework-simplejwt)AuthContext)Day 3: データベース設計
Field (実圃場)OfficialKyosaiField (共済マスタ)OfficialChusankanField (中山間マスタ)Plan (作付け計画)Crop (作物マスタ)Variety (品種マスタ)Day 4: インポート機能
pandas + odfpy でODS読み込みDay 5: 作付け計画API
GET /api/plans/?year=2025)POST /api/plans/, PATCH /api/plans/{id}/)POST /api/plans/bulk/)POST /api/plans/copy_from_previous_year/)POST /api/varieties/) - その場で品種を追加GET /api/plans/summary/?year=2025) - サイドバー用Day 6: 作付け計画UI
Day 7: 申請書ロジック実装
Day 8: 申請書ダウンロードUI
Day 9: レスポンシブ対応
Day 10: 総合テスト
| 項目 | 採用技術 | 理由 |
|---|---|---|
| フレームワーク | Django 5.2 | 安定性、豊富なエコシステム |
| REST API | Django REST Framework | 標準的なAPI構築ツール |
| 認証 | djoser + SimpleJWT | JWT認証の簡単な実装 |
| GIS | GeoDjango (PostGIS) | 地理情報の扱いに最適 |
| ファイル解析 | pandas + odfpy | ODS/Excelの読み込みに対応 |
| PDF生成 | WeasyPrint | HTML→PDF変換、日本語対応 |
| データベース | PostgreSQL 16 + PostGIS 3.4 | 空間データの保存・検索 |
| 項目 | 採用技術 | 理由 |
|---|---|---|
| フレームワーク | Next.js 14 (App Router) | SSR/SSG対応、モダンな開発体験 |
| スタイリング | Tailwind CSS | 高速なUI開発 |
| 状態管理 | React Context API | シンプルな認証状態管理 |
| HTTPクライアント | fetch API (native) | 軽量、標準API |
| テーブル | react-table (TanStack Table) | 高機能なテーブルコンポーネント |
| 項目 | 採用技術 | 理由 |
|---|---|---|
| コンテナ化 | Docker Compose | 開発・本番環境の統一 |
| データベース | postgis/postgis:16-3.4 | PostGIS公式イメージ |
| リバースプロキシ | Nginx (開発環境) | 静的ファイル配信 |
http://localhost:3000keina.example.com (仮)pg_dump)問題: Dockerコンテナ内でGDAL/GEOSのパスが通らない
対策: 公式PostGISイメージを使用、DjangoのGDAL_LIBRARY_PATHを明示的に設定
問題: 日本語の文字化け
対策: pd.read_excel(..., engine='odf') でUTF-8として読み込み
問題: 複数の実圃場が1つの共済区画に紐づく場合の集約
対策: Pythonのセットで重複排除 → カンマ区切りで結合
問題: 横スクロールが発生
対策: カード型レイアウトに変更(Tailwindの@mediaクエリ)
問題: Phase 2以降、栽培履歴が増えると遅くなる
対策: ページネーション、インデックス最適化(Phase 2で対応)
feat: 作付け計画一覧APIを実装
fix: 共済PDFの面積計算バグを修正
docs: READMEにセットアップ手順を追加
style: Tailwindクラスを整理
main: 本番環境develop: 開発環境feature/*: 機能開発完成したら、以下を実施: