Flask製課題管理システムの開発
プロジェクト概要
企業向けの課題管理システムをPython/Flaskで開発しました。プロジェクト管理、タスクトラッキング、チーム協業を効率化するWebアプリケーションです。
技術スタック
- バックエンド: Python 3.x, Flask 2.x
- データベース: SQLAlchemy ORM + SQLite
- フロントエンド: Bootstrap 5, jQuery
- 認証: Flask-Login
- その他: Flask-WTF (フォーム), Flask-Migrate (DB管理)
主な機能
1. ユーザー管理機能
- 認証システム: ログイン/ログアウト機能
- 権限管理: 3つのロール(管理者、SE、お客様)による階層的アクセス制御
- ユーザー一括管理:
- ユーザー一覧表示・編集・削除
- JSONフォーマットでのエクスポート/インポート機能
- 一括登録時の重複チェック機能
2. プロジェクト管理
- プロジェクト作成・編集: 複数プロジェクトの並行管理
- メンバー管理: プロジェクトごとの権限設定(SE、クライアント、閲覧者)
- アクセス制御: プロジェクトレベルでの細かい権限管理
3. タスク管理機能
- タスクの作成・編集:
- 優先度(最高・高・中・低)設定
- カテゴリ分類(不具合・機能追加・改善・質問・その他)
- 影響度・緊急度マトリクスによる重要度管理
- ステータス管理: 新規→進行中→レビュー→完了のワークフロー
- 担当者アサイン: タスクごとの担当者割り当て
- 期限管理: 期限設定と完了日の自動記録
4. コミュニケーション機能
- コメント機能: タスクごとのディスカッション
- 内部メモ: 社内共有用の非公開コメント
- ファイル添付: タスクへのファイルアップロード機能
- 変更履歴: すべての変更を自動追跡
5. レポート・分析機能
- ダッシュボード: プロジェクト横断的な進捗確認
- 統計レポート:
- プロジェクト別の課題統計
- 月別の課題発生・解決推移グラフ
- 優先度別の分布チャート
- カスタムフィルタ: 複数条件での高度な検索
6. データ入出力機能
- エクスポート機能:
- プロジェクト単位でのJSONエクスポート
- ユーザーデータの一括エクスポート
- 添付ファイルを含む完全バックアップ
- インポート機能:
- JSONファイルからのデータ復元
- データ整合性チェック
- 重複データの自動スキップ
技術的な工夫点
1. セキュリティ対策
- パスワードのハッシュ化(Werkzeug)
- CSRF保護(Flask-WTF)
- SQLインジェクション対策(SQLAlchemy ORM)
- 細かい権限チェックデコレータの実装
2. データベース設計
- 正規化されたテーブル構造
- 外部キー制約による整合性保証
- インデックスによるクエリ最適化
- マイグレーション管理(Flask-Migrate)
3. UIの工夫
- レスポンシブデザイン(Bootstrap 5)
- 直感的なナビゲーション
- フラッシュメッセージによるフィードバック
- 日本語完全対応
4. タイムゾーン対応
- UTCでのデータ保存
- 表示時のJST自動変換
- カスタムフィルタによる柔軟な日時表示
5. コードの保守性
- Blueprintによるモジュール分割
- MVCパターンの採用
- 再利用可能なフォームクラス
- 包括的なエラーハンドリング
開発期間と規模
- 開発期間: 約3日
- コード行数: 約3,000行
- テーブル数: 8テーブル
- 画面数: 20画面以上
今後の拡張予定
- メール通知機能
- ガントチャート表示
- APIの公開
- マルチ言語対応
- パフォーマンスチューニング
学んだこと
このプロジェクトを通じて、以下の技術やスキルを習得・向上させることができました:
- Flaskフレームワークの深い理解: Blueprint、拡張機能、ミドルウェアの活用
- データベース設計: 正規化、インデックス設計、トランザクション管理
- セキュリティ実装: 認証・認可、CSRF対策、入力検証
- UI/UX設計: ユーザビリティを考慮した画面設計
- プロジェクト管理: 要件定義から実装、テストまでの一連の流れ
まとめ
本システムは、実際の業務で使用することを想定した本格的な課題管理システムです。基本的な CRUD 操作だけでなく、権限管理、データのインポート/エクスポート、レポート機能など、実務で必要とされる機能を網羅的に実装しました。
特に、プロジェクトごとの権限管理機能や、柔軟なデータ入出力機能は、実際の企業での利用シーンを想定した実装となっており、即戦力として活用できるシステムとなっています。
使用技術: Python, Flask, SQLAlchemy, Bootstrap, jQuery
開発環境: Windows 10, Claude, Gemini