Cursor実践プロジェクト-04-軽量会議管理ツール(1)
プロジェクト説明
cursorプロジェクト実践-04
所要時間:約10時間
Cursor使用回数:プロジェクトの複雑なモジュールが多く、モジュール分割が必要で、第一段階で約80回使用。
これは会議運営を簡素化するミニマルな会議システムです。効率性を追求し、煩雑なプロセスを排除したいユーザー向けに設計されており、登録・ログイン不要で即座に利用できることが中核的な利点です。
軽量アーキテクチャで柔軟な展開: 従来のデータベースを完全に排除し、革新的にSeafileをファイルストレージバックエンドとして活用。すべての会議データ(内容、参加者、テスト結果など)がファイル形式で保存され、システムアーキテクチャが極限まで軽量化され、展開と管理が非常に簡単です。
バリアフリーな参加体験: ユニークな会議リンクとパスワードでアクセス可能で、アカウントは不要。システムはQRコードによる迅速な出席確認をサポートし、参加者は会議前後いつでも意見を表明でき、時間と空間の制約を打破し、コミュニケーションの継続性を確保します。
オールインワン機能統合: システムは基本的な会議管理だけでなく、強力なオンラインテスト機能も内蔵。会議主催者は簡単に問題をインポートでき、参加者はオンラインで解答し、システムが自動的に成績を記録・集計します。これにより、プロジェクトは学習効果の評価が必要なトレーニングやセミナーなどへの容易な拡張が可能です。
段階的成果展示(1)
-
第一段階で実装した機能
-
基本フレームワーク構築
-
ローカルSeafileとの連携実装
-
会議の作成機能実装
-
Webページでの会議一覧・詳細情報検索
-
-
第二段階(未実施)の機能
- 会議の出席確認実装
- 会議での意見表明機能実装
- 会議議事録自動生成
- 会議テスト採点機能
事前準備
-
Cursor
- バージョン:1.2.4
- cursor rules : Cursor Rules
- agent: claude-4-sonnet-thinking
-
全体の流れ
- cursorルール設定->要求記述->cursorコーディング->gitバージョン管理->デバッグ出力
技術アーキテクチャ
- 技術スタック
- バックエンド:Python言語、FlaskやFastAPIなどの軽量フレームワークを採用。
- フロントエンド:ReactやVueなどのモダンなフロントエンドフレームワークまたはネイティブJSを使用可能。
- データストレージ:従来のデータベースの代わりに、Seafileのファイル管理機能をバックエンドストレージとして使用。
- データフローと保存方式
-
会議データ:すべての会議データはファイル形式でSeafileの指定ディレクトリに保存。
-
ファイル構造:各会議に対応するユニークなフォルダ内に以下を含む:
- meeting_data.json:会議テーマ、時間、パスワードハッシュ、出席者(成績含む)、意見、添付ファイルリストなどのコア情報を保存。
- quiz.json:会議関連の問題と解答を保存。
- meeting_minutes.md:自動生成された会議議事録を保存。
- attachments/:会議添付ファイル専用のサブフォルダ。
-
バックエンドサービス:バックエンドはSeafileとフロントエンド間の中間層として機能。作成、検索、提出などのすべてのリクエストはバックエンドが処理し、SeafileのAPIまたはコマンドラインツールを介してファイルの読み書きを実行。
-
アクセス制御:会議詳細へのすべてのアクセスにはバックエンドによるパスワード認証が必要。会議一覧などの公開情報はパスワード不要。
-
問題記録
-
問題1:プロジェクトが複雑すぎてステップが多く、コーディング効率が低下。モジュール間の連携ができない。まずインターフェースを作成し、その後でseafile接続をデバッグ。
- 解決方法:複数のモジュールに分割し、各モジュールを個別に開発後、統合。
-
問題2:seafile連携問題のまとめ
- 主な問題:
- ファイルアップロード形式エラー - デフォルトのhttpxクライアントがContent-Type: application/jsonを設定していたため、multipartアップロードが失敗
- ファイル読み取りで内容ではなくリンクが返される - APIがダウンロードリンクを返すため、実際のファイル内容を取得するには二次リクエストが必要
- ルートディレクトリの権限制限 - 一部のルートディレクトリ操作が401を返すが、サブディレクトリ機能には影響なし
- 解決方法:
- アップロード修正 - httpxクライアントのデフォルトレッダーを削除し、multipartリクエストが正しくContent-Typeを設定できるように
- 読み取り修正 - read_fileメソッドを、ダウンロードリンクを取得してから実際のファイル内容をダウンロードするように変更
- 権限処理 - エラー捕捉とフォールバックメカニズムを追加し、コア機能が影響を受けないように確保
- 主な問題:
-
seafileバージョン問題。他の人がインストールしたseafileで、バージョン番号も不明なため、デバッグ中に多くの問題が発生。
- 解決方法:cursorとの対話を通じて、seafileのバージョン番号を調査させ、デバッグを実施。
-
依然としてseafileの問題。会議フォルダ作成時に、余分な上位フォルダが作成され、どうしても解決できない。
- 解決方法:30回以上の試行後、余分な上位ディレクトリを削除する機能を追加。
使用上の心得
-
複雑なプロジェクトでは、必ずモジュール分割して開発し、cursorにすべての機能を一度に完成させようとしないこと。
-
問題モデルがどうしても解決できない場合、別のモデルを試すか、新しい対話を開始すること。
プロジェクト詳細手順
- LLMと要件を協議し、google gemini 2.5flashモデルを使用して詳細な要件文書を取得
軽量な会議管理システムを作成したい。ユーザーはログイン不要。会議を主催でき、リンク方式で会議の時間と内容を共有できる。また、会議には出席確認(QRコード)、意見表明、議事録フォーマット自動生成などの機能をサポートしたい。
アーキテクチャを設計してほしい。バックエンドは可能な限り軽量にし、データベースは使用しない(ローカルにseafileがインストール済み、使用可能か?)。
->詳細な要件文書を取得、pj-requirement.md


- cursorで、要件文書を確認し、開発を進めるよう指示
要件文書を確認し、システム設計を進めてください。
要件文書を確認し、システム設計を実施


-
環境構築とスキャフォールディングのインストールを完了。
-
seafileの連携で詰まり、デバッグを繰り返す。行き来しながら...
-
依然として連携作業中。ディレクトリの再帰的作成に苦戦。cursorが原因を特定できず、苦痛!!
-
第一段階完了

- 若干疲弊.... 明日また最適化を続ける。 詳細は《Cursor実践プロジェクト-04-軽量会議管理ツール(2)》を参照