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バージョン管理->デバッグ出力

技術アーキテクチャ

  1. 技術スタック
    • バックエンド:Python言語、FlaskやFastAPIなどの軽量フレームワークを採用。
    • フロントエンド:ReactやVueなどのモダンなフロントエンドフレームワークまたはネイティブJSを使用可能。
    • データストレージ:従来のデータベースの代わりに、Seafileのファイル管理機能をバックエンドストレージとして使用。
  2. データフローと保存方式
    • 会議データ:すべての会議データはファイル形式でSeafileの指定ディレクトリに保存。

    • ファイル構造:各会議に対応するユニークなフォルダ内に以下を含む:

      • meeting_data.json:会議テーマ、時間、パスワードハッシュ、出席者(成績含む)、意見、添付ファイルリストなどのコア情報を保存。
      • quiz.json:会議関連の問題と解答を保存。
      • meeting_minutes.md:自動生成された会議議事録を保存。
      • attachments/:会議添付ファイル専用のサブフォルダ。
    • バックエンドサービス:バックエンドはSeafileとフロントエンド間の中間層として機能。作成、検索、提出などのすべてのリクエストはバックエンドが処理し、SeafileのAPIまたはコマンドラインツールを介してファイルの読み書きを実行。

    • アクセス制御:会議詳細へのすべてのアクセスにはバックエンドによるパスワード認証が必要。会議一覧などの公開情報はパスワード不要。

問題記録

  1. 問題1:プロジェクトが複雑すぎてステップが多く、コーディング効率が低下。モジュール間の連携ができない。まずインターフェースを作成し、その後でseafile接続をデバッグ。

    • 解決方法:複数のモジュールに分割し、各モジュールを個別に開発後、統合。
  2. 問題2:seafile連携問題のまとめ

    • 主な問題:
      • ファイルアップロード形式エラー - デフォルトのhttpxクライアントがContent-Type: application/jsonを設定していたため、multipartアップロードが失敗
      • ファイル読み取りで内容ではなくリンクが返される - APIがダウンロードリンクを返すため、実際のファイル内容を取得するには二次リクエストが必要
      • ルートディレクトリの権限制限 - 一部のルートディレクトリ操作が401を返すが、サブディレクトリ機能には影響なし
    • 解決方法:
      • アップロード修正 - httpxクライアントのデフォルトレッダーを削除し、multipartリクエストが正しくContent-Typeを設定できるように
      • 読み取り修正 - read_fileメソッドを、ダウンロードリンクを取得してから実際のファイル内容をダウンロードするように変更
      • 権限処理 - エラー捕捉とフォールバックメカニズムを追加し、コア機能が影響を受けないように確保
  3. seafileバージョン問題。他の人がインストールしたseafileで、バージョン番号も不明なため、デバッグ中に多くの問題が発生。

    • 解決方法:cursorとの対話を通じて、seafileのバージョン番号を調査させ、デバッグを実施。
  4. 依然としてseafileの問題。会議フォルダ作成時に、余分な上位フォルダが作成され、どうしても解決できない。

    • 解決方法:30回以上の試行後、余分な上位ディレクトリを削除する機能を追加。

使用上の心得

  1. 複雑なプロジェクトでは、必ずモジュール分割して開発し、cursorにすべての機能を一度に完成させようとしないこと。

  2. 問題モデルがどうしても解決できない場合、別のモデルを試すか、新しい対話を開始すること。

プロジェクト詳細手順

  1. LLMと要件を協議し、google gemini 2.5flashモデルを使用して詳細な要件文書を取得
軽量な会議管理システムを作成したい。ユーザーはログイン不要。会議を主催でき、リンク方式で会議の時間と内容を共有できる。また、会議には出席確認(QRコード)、意見表明、議事録フォーマット自動生成などの機能をサポートしたい。

アーキテクチャを設計してほしい。バックエンドは可能な限り軽量にし、データベースは使用しない(ローカルにseafileがインストール済み、使用可能か?)。

->詳細な要件文書を取得、pj-requirement.md

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

要件文書を確認し、システム設計を実施

設計 設計
  1. 環境構築とスキャフォールディングのインストールを完了。

  2. seafileの連携で詰まり、デバッグを繰り返す。行き来しながら...

  3. 依然として連携作業中。ディレクトリの再帰的作成に苦戦。cursorが原因を特定できず、苦痛!!

  4. 第一段階完了

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