1. システム概要
📌 Conference Appとは
学会・学術大会のプログラム管理、参加者管理、セッション管理を効率化するWebアプリケーションです。大会主催者、運営者、参加者が利用できます。
主な機能
- ユーザー管理 - 参加者登録、ログイン認証、権限管理
- 大会管理 - 大会情報の作成・編集・公開
- セッション管理 - 口頭発表、ポスター、シンポジウムなどの管理
- 発表管理 - 演題情報、抄録、発表者情報の管理
- REST API - 自動ドキュメント生成(Swagger UI)
技術スタック
| カテゴリ | 技術 | バージョン |
|---|---|---|
| バックエンド | FastAPI | 0.109.0 |
| データベース | PostgreSQL | 15 |
| キャッシュ | Redis | 7 |
| 認証 | JWT (HS256) | - |
| ORM | SQLAlchemy | 2.0.25 |
| マイグレーション | Alembic | 1.13.1 |
2. 動作環境
必須環境
- OS: Windows 10/11, macOS, Linux
- Docker Desktop: 最新版(4.0以降推奨)
- メモリ: 4GB以上(8GB推奨)
- ディスク空き容量: 5GB以上
⚠️ 重要
Docker Desktopが起動していない場合、アプリケーションは動作しません。必ず事前に起動してください。
対応ブラウザ
- Google Chrome(推奨)
- Microsoft Edge
- Firefox
- Safari
3. インストール手順
Docker Desktopのインストール
公式サイトからDocker Desktopをダウンロードしてインストールします。
- Windows: https://www.docker.com/products/docker-desktop
- インストール後、再起動が必要な場合があります
プロジェクトファイルの配置
Conference Appのフォルダを任意の場所に配置します。
C:\Users\kawag\work\conference-app\
環境変数ファイルの作成(オプション)
.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ステップ)
Docker環境を起動
docker-start.bat をダブルクリックします。
成功すると以下のメッセージが表示されます:
✅ 起動完了
サービスURL:
- API (Swagger): http://localhost:8000/api/v1/docs
- バックエンド: http://localhost:8000
データベースマイグレーションを実行
コマンドプロンプトまたはPowerShellで以下を実行:
cd C:\Users\kawag\work\conference-app
docker-compose exec backend bash
alembic upgrade head
exit
API動作確認
ブラウザで以下にアクセス:
http://localhost:8000/api/v1/docs
通常起動(2回目以降)
- Docker Desktopを起動
docker-start.batをダブルクリック- ブラウザで
http://localhost:8000/api/v1/docsにアクセス
停止方法
docker-stop.bat をダブルクリック、または:
docker-compose down
5. 使い方
5.1 ユーザー登録
Swagger UIを開く
http://localhost:8000/api/v1/docs にアクセス
/api/v1/auth/register を開く
「POST /api/v1/auth/register」をクリックして展開
リクエストボディを入力
{
"email": "test@example.com",
"password": "password123",
"name": "山田太郎",
"affiliation": "東京大学",
"member_id": null,
"role": "participant"
}
role の種類:
participant- 一般参加者organizer- 運営者admin- 管理者
実行
「Try it out」→「Execute」をクリック
成功すると 201 Created が返ります。
5.2 ログイン
/api/v1/auth/login を開く
認証情報を入力
username: test@example.com
password: password123
トークンを取得
レスポンスから access_token をコピーします。
{
"access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"refresh_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"token_type": "bearer"
}
5.3 認証の設定
Authorizeボタンをクリック
Swagger UI右上の🔓Authorizeボタンをクリック
トークンを入力
Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
認証完了
「Authorize」→「Close」をクリック
🔓が🔒に変わります。
5.4 大会を作成
/api/v1/conferences/ (POST) を開く
大会情報を入力
{
"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
}
実行
「Try it out」→「Execute」をクリック
成功すると 201 Created と大会IDが返ります。
5.5 セッションを作成
/api/v1/sessions/ (POST) を開く
セッション情報を入力
{
"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 大会一覧を取得
/api/v1/conferences/ (GET) を開く
パラメータを設定
skip: 0(スキップ件数)limit: 20(取得件数)published_only: true(公開済みのみ)
実行
登録した大会のリストが返ります。
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が起動していません
解決策:
- Docker Desktopアプリケーションを起動
- タスクトレイのDockerアイコンが緑色になるまで待つ
docker-start.batを再実行
問題: ポートが既に使用されている
症状:
Error: Port 8000 is already in use
解決策:
- 既存のコンテナを停止:
docker-compose down - ポート使用状況を確認:
netstat -ano | findstr :8000 - 必要に応じて該当プロセスを終了
問題: データベース接続エラー
症状:
sqlalchemy.exc.OperationalError: could not connect to server
解決策:
- PostgreSQLコンテナの起動状態確認:
docker-compose ps - コンテナログ確認:
docker-compose logs db - 少し待ってから再試行(起動に時間がかかる場合あり)
- それでも解決しない場合:
docker-compose down -vでボリューム削除後、再起動
問題: マイグレーションエラー
症状:
alembic.util.exc.CommandError: Target database is not up to date
解決策:
- マイグレーション履歴確認:
alembic current - 最新に更新:
alembic upgrade head - 問題が続く場合: データベースを初期化してマイグレーション再実行
問題: 認証エラー(401 Unauthorized)
症状:
401 Unauthorized: 認証情報を確認できませんでした
解決策:
- トークンが正しく設定されているか確認
- 「Bearer 」(半角スペース含む)が先頭に付いているか確認
- トークンの有効期限切れの場合は再ログイン(15分で期限切れ)
- リフレッシュトークンでトークン更新:
/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:
- アクセストークン: 15分
- リフレッシュトークン: 7日
期限切れの場合は /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版は開発環境用です。本番環境では以下の対応が必要です:
- 環境変数(SECRET_KEY等)を本番用に変更
- HTTPS(SSL/TLS)の設定
- Nginxリバースプロキシの設定
- ファイアウォール設定
- 定期バックアップ設定
Q6. フロントエンド(参加者向け画面)はありますか?
A: MVP版はバックエンドAPIのみです。フロントエンドはReact + TypeScriptで別途開発予定です。
Q7. スマートフォンアプリはありますか?
A: 現在はありません。将来的にPWA(Progressive Web App)化を検討しています。
Q8. QRコードチェックイン機能は使えますか?
A: MVP版では未実装です。次フェーズで実装予定です。
✅ サポート
その他の質問や問題がある場合は、GitHubのIssuesまたは開発者に連絡してください。