22  プロジェクト演習

これまで学んだ内容を活用し,データベースの設計から実装までを一貫して行うプロジェクト演習に取り組む.

任意のテーマを設定し,SQLite を用いてデータベースを構築する.さらに,Python を用いてそのデータベースを操作する CLI(コマンドラインインターフェース)を実装し,設計内容や実装内容をまとめたレポートおよび発表資料を作成する.


22.1 基本情報

  • 取り組み形態: 1〜4 人程度のグループ
  • 使用言語・ツール: Python 3.x,SQLite3(いずれも Python 標準ライブラリで利用可能)
  • 提出期限: (担当教員の指示に従うこと)
  • 提出形式: プロジェクトフォルダ全体を ZIP 形式で圧縮して提出

22.2 提出物

プロジェクト名は自由に設定してよい(例: book-managementmovie-review-systemhousehold-budget など).

以下の構成で提出すること.

project-name/
├── README.md            # プロジェクトの説明・実行手順
├── src/
│   ├── main.py          # Python CLI 本体
│   ├── schema.sql       # テーブル定義・初期データ・確認用 SQL
│   └── database.db      # SQLite データベース(schema.sql から生成)
└── docs/
    ├── report.pdf       # レポート
    └── presentation.pdf # 発表スライド
  • 提出前に,プロジェクトフォルダ全体を ZIP 形式で圧縮すること.
  • アプリケーションは .py.ipynb のいずれかの形式で提出すること.
    • .sql と .db はVSCodeで作っておいて,アプリは Colab などで作るのが良い.

参考資料


22.3 課題の要件

22.3.1 テーマ設定

次の 3 点を明確にすること.

  • 任意のテーマを 1 つ選ぶ(例: 書籍管理,映画レビュー,サークル管理,家計簿 など)
  • 想定する利用者
  • システムの利用目的

22.3.2 データベース設計

以下の条件をすべて満たすこと.

  • 3 テーブル以上で構成する
  • すべてのテーブルに主キー(PRIMARY KEY)を設定する
  • 外部キー(FOREIGN KEY)を 1 つ以上設定する
  • 各カラムに適切なデータ型を選択する
  • 必要に応じて制約(NOT NULL,UNIQUE など)を設定する

22.3.3 SQL の実装

src/schema.sql に以下を記述すること.

  • テーブル作成文(CREATE TABLE)
  • 初期データ投入文(INSERT INTO)
  • 次の操作を確認できる SQL 文
    • 検索(SELECT + WHERE)
    • 並び替え(ORDER BY)
    • 集約(COUNT,SUM,AVG のいずれか)
    • 結合(JOIN)

各操作例にはコメントを付け,何を確認するための SQL なのかが分かるようにすること.


22.3.4 Python CLI の実装

src/main.py に,SQLite データベースを操作できる CLI を実装すること.最低限,以下の CRUD(Create, Read, Update, Delete)操作を実装すること.

  • Create(新規追加)
  • Read(一覧表示)
  • Update(更新)
  • Delete(削除)

推奨事項

  • メニュー形式で機能を選択できるようにする
  • 入力エラーや不正な ID に対する例外処理を行う
  • 処理結果を分かりやすく表示する

22.4 ドキュメント要件

22.4.1 README.md

以下を記載すること.

  • プロジェクト概要
  • 想定利用者と利用目的
  • ディレクトリ構成
  • 実行手順(データベースの初期化方法を含む)
  • Python CLI の使用方法
  • 主な SQL 操作例とその説明
  • 生成 AI を利用した場合は,利用したツール名と利用箇所

22.4.2 docs/report.pdf

以下を記載すること.

  • システム概要
  • ER 図を用いたデータベース設計の説明
  • 正規化を行った場合は,その説明
  • 実装上の工夫
  • まとめ(うまくいった点・難しかった点 など)

22.4.3 docs/presentation.pdf

授業内での発表を想定したスライド資料を作成すること.発表時間は 6 分程度,質疑応答は 2 分程度を想定している.以下の内容を含めること.

  • テーマの紹介
  • ER 図
  • 実装した機能
  • 実行例またはデモ
  • まとめ
  • 役割分担(複数人の場合)

22.5 発展課題(任意)

以下のいずれかに挑戦しても構わない.


22.6 提出チェックリスト

提出前に,以下を確認すること.


22.7 提出時の注意

  • README.md に実行手順を必ず記載すること.
  • 提出前に,正常に動作するか確認すること.
  • 他者の成果物を流用してはいけない.
  • Python コードのみ生成 AI の利用を許可する.ただし,コードの内容を理解したうえで使用すること.生成 AI を利用した場合は,利用したツール名と利用箇所を README.md に記載すること.
  • 提出するレポートおよび発表資料の内容は,自身で理解したうえで作成すること.