📋 Conference App 取り扱い説明書

学会大会管理システム ユーザーマニュアル

バージョン MVP 1.0 | 2026年1月1日

1. システム概要

📌 Conference Appとは

学会・学術大会のプログラム管理、参加者管理、セッション管理を効率化するWebアプリケーションです。大会主催者、運営者、参加者が利用できます。

主な機能

技術スタック

カテゴリ 技術 バージョン
バックエンド FastAPI 0.109.0
データベース PostgreSQL 15
キャッシュ Redis 7
認証 JWT (HS256) -
ORM SQLAlchemy 2.0.25
マイグレーション Alembic 1.13.1

2. 動作環境

必須環境

⚠️ 重要

Docker Desktopが起動していない場合、アプリケーションは動作しません。必ず事前に起動してください。

対応ブラウザ

3. インストール手順

1

Docker Desktopのインストール

公式サイトからDocker Desktopをダウンロードしてインストールします。

2

プロジェクトファイルの配置

Conference Appのフォルダを任意の場所に配置します。

C:\Users\kawag\work\conference-app\
推奨: パスに日本語や空白を含まない場所に配置してください。
3

環境変数ファイルの作成(オプション)

.env.example.env にコピーして、必要に応じて設定を変更します。

# backend/.env
SECRET_KEY=your-secret-key-change-in-production
DATABASE_URL=postgresql://conference_user:conference_pass@db:5432/conference_db

4. 起動方法

初回起動(3ステップ)

1

Docker環境を起動

docker-start.bat をダブルクリックします。

[スクリーンショット: docker-start.batの実行]

成功すると以下のメッセージが表示されます:

✅ 起動完了
サービスURL:
  - API (Swagger): http://localhost:8000/api/v1/docs
  - バックエンド: http://localhost:8000
2

データベースマイグレーションを実行

コマンドプロンプトまたはPowerShellで以下を実行:

cd C:\Users\kawag\work\conference-app
docker-compose exec backend bash
alembic upgrade head
exit
初回のみ必要: この操作は初回起動時のみ実行してください。
3

API動作確認

ブラウザで以下にアクセス:

http://localhost:8000/api/v1/docs
[スクリーンショット: Swagger UI画面]

通常起動(2回目以降)

  1. Docker Desktopを起動
  2. docker-start.bat をダブルクリック
  3. ブラウザで http://localhost:8000/api/v1/docs にアクセス

停止方法

docker-stop.bat をダブルクリック、または:

docker-compose down

5. 使い方

5.1 ユーザー登録

1

Swagger UIを開く

http://localhost:8000/api/v1/docs にアクセス

2

/api/v1/auth/register を開く

「POST /api/v1/auth/register」をクリックして展開

3

リクエストボディを入力

{
  "email": "test@example.com",
  "password": "password123",
  "name": "山田太郎",
  "affiliation": "東京大学",
  "member_id": null,
  "role": "participant"
}

role の種類:

  • participant - 一般参加者
  • organizer - 運営者
  • admin - 管理者
4

実行

「Try it out」→「Execute」をクリック

成功すると 201 Created が返ります。

5.2 ログイン

1

/api/v1/auth/login を開く

2

認証情報を入力

username: test@example.com
password: password123
注意: フィールド名は「username」ですが、メールアドレスを入力します。
3

トークンを取得

レスポンスから access_token をコピーします。

{
  "access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
  "refresh_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
  "token_type": "bearer"
}

5.3 認証の設定

1

Authorizeボタンをクリック

Swagger UI右上の🔓Authorizeボタンをクリック

2

トークンを入力

Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
重要: 「Bearer 」(Bearer + 半角スペース)を先頭に付けてください。
3

認証完了

「Authorize」→「Close」をクリック

🔓が🔒に変わります。

5.4 大会を作成

1

/api/v1/conferences/ (POST) を開く

2

大会情報を入力

{
  "name": "第50回日本〇〇学会学術大会",
  "short_name": "〇〇学会2026",
  "description": "最新の研究成果を発表する学術大会です",
  "start_date": "2026-06-01",
  "end_date": "2026-06-03",
  "venue": "東京国際フォーラム",
  "organizer": "日本〇〇学会",
  "website_url": "https://example.com",
  "is_published": true
}
3

実行

「Try it out」→「Execute」をクリック

成功すると 201 Created と大会IDが返ります。

5.5 セッションを作成

1

/api/v1/sessions/ (POST) を開く

2

セッション情報を入力

{
  "conference_id": "取得した大会ID",
  "title": "一般演題セッション1",
  "description": "若手研究者による発表",
  "session_type": "oral",
  "room": "会議室A",
  "building": "本館",
  "start_time": "2026-06-01T09:00:00+09:00",
  "end_time": "2026-06-01T12:00:00+09:00",
  "chair_name": "佐藤先生"
}

session_type の種類:

  • oral - 口頭発表
  • poster - ポスター発表
  • symposium - シンポジウム
  • keynote - 基調講演
  • workshop - ワークショップ

5.6 大会一覧を取得

1

/api/v1/conferences/ (GET) を開く

2

パラメータを設定

  • skip: 0(スキップ件数)
  • limit: 20(取得件数)
  • published_only: true(公開済みのみ)
3

実行

登録した大会のリストが返ります。

6. API リファレンス

認証 API

エンドポイント メソッド 説明 認証
/api/v1/auth/register POST ユーザー登録 不要
/api/v1/auth/login POST ログイン 不要
/api/v1/auth/refresh POST トークン更新 不要

ユーザー API

エンドポイント メソッド 説明 認証
/api/v1/users/me GET 現在のユーザー情報 必要

大会 API

エンドポイント メソッド 説明 認証
/api/v1/conferences/ GET 大会一覧取得 不要
/api/v1/conferences/{id} GET 大会詳細取得 不要
/api/v1/conferences/ POST 大会作成 不要
/api/v1/conferences/{id} PUT 大会更新 不要
/api/v1/conferences/{id} DELETE 大会削除 不要

セッション API

エンドポイント メソッド 説明 認証
/api/v1/sessions/?conference_id={id} GET セッション一覧取得 不要
/api/v1/sessions/{id} GET セッション詳細取得 不要
/api/v1/sessions/ POST セッション作成 不要

💡 詳細なAPIドキュメント

Swagger UIで全てのAPIの詳細仕様を確認できます:

http://localhost:8000/api/v1/docs

7. トラブルシューティング

問題: Docker Desktopが起動していない

症状:

❌ エラー: Docker Desktopが起動していません

解決策:

  1. Docker Desktopアプリケーションを起動
  2. タスクトレイのDockerアイコンが緑色になるまで待つ
  3. docker-start.bat を再実行

問題: ポートが既に使用されている

症状:

Error: Port 8000 is already in use

解決策:

  1. 既存のコンテナを停止: docker-compose down
  2. ポート使用状況を確認: netstat -ano | findstr :8000
  3. 必要に応じて該当プロセスを終了

問題: データベース接続エラー

症状:

sqlalchemy.exc.OperationalError: could not connect to server

解決策:

  1. PostgreSQLコンテナの起動状態確認: docker-compose ps
  2. コンテナログ確認: docker-compose logs db
  3. 少し待ってから再試行(起動に時間がかかる場合あり)
  4. それでも解決しない場合: docker-compose down -v でボリューム削除後、再起動

問題: マイグレーションエラー

症状:

alembic.util.exc.CommandError: Target database is not up to date

解決策:

  1. マイグレーション履歴確認: alembic current
  2. 最新に更新: alembic upgrade head
  3. 問題が続く場合: データベースを初期化してマイグレーション再実行

問題: 認証エラー(401 Unauthorized)

症状:

401 Unauthorized: 認証情報を確認できませんでした

解決策:

  1. トークンが正しく設定されているか確認
  2. 「Bearer 」(半角スペース含む)が先頭に付いているか確認
  3. トークンの有効期限切れの場合は再ログイン(15分で期限切れ)
  4. リフレッシュトークンでトークン更新: /api/v1/auth/refresh

ログ確認方法

# 全サービスのログ
docker-compose logs -f

# バックエンドのみ
docker-compose logs -f backend

# PostgreSQLのみ
docker-compose logs -f db

# 最新100行のみ表示
docker-compose logs --tail=100 backend

8. よくある質問

Q1. パスワードを忘れました

A: MVP版ではパスワードリセット機能は未実装です。データベースから直接ユーザーを削除して再登録してください。

Q2. トークンの有効期限はどのくらいですか?

A:

期限切れの場合は /api/v1/auth/refresh でトークンを更新するか、再ログインしてください。

Q3. 大会を削除するとセッションも削除されますか?

A: はい。CASCADE設定により、大会削除時に関連するセッション・発表も自動的に削除されます。

Q4. データベースのバックアップはどうすればいいですか?

A:

# バックアップ
docker-compose exec db pg_dump -U conference_user conference_db > backup.sql

# リストア
docker-compose exec -T db psql -U conference_user conference_db < backup.sql

Q5. 本番環境にデプロイする方法は?

A: MVP版は開発環境用です。本番環境では以下の対応が必要です:

Q6. フロントエンド(参加者向け画面)はありますか?

A: MVP版はバックエンドAPIのみです。フロントエンドはReact + TypeScriptで別途開発予定です。

Q7. スマートフォンアプリはありますか?

A: 現在はありません。将来的にPWA(Progressive Web App)化を検討しています。

Q8. QRコードチェックイン機能は使えますか?

A: MVP版では未実装です。次フェーズで実装予定です。

✅ サポート

その他の質問や問題がある場合は、GitHubのIssuesまたは開発者に連絡してください。