[TurboGears] 同人誌情報サイトを作成する。その1

趣旨

私は同人誌を頻繁に読みます。一次創作も二次創作も読めば、評論などを読むこともあります。その中には大変面白いものもあり、誰かにその本を勧めたくなります。そんな同人誌を読んだときの感想を言い合えるような場があれば、同人誌即売会で気に入る本を見つけたときのような、新しい発見があるのではないかと考えました。そこで、同人誌の情報を扱うサイトを構築しようと思います。

名前

このサイトの名前はまだ決めていません。しかしそれでは開発できないので、とりあえずCalciumRider(カルシウムライダー。carと略す)とします。

用語定義

CalciumRiderでは、以下のように用語を定義します。

用語 定義
作品 著作物のうち、企業以外から発行されるもの。なお、形態はマンガ、小説、評論、音楽など、問わない。
形式 作品の論理的な形。マンガ、小説、音楽、評論、イラスト、フィギュアなど。
媒体 作品の物理的な形。本、CD, フィギュアなど。
ジャンル 作品内で主に語られている内容が属する分野。
アイテム 作品を構成する物品。作品が書籍とフィギュアで構成されている場合、書籍とフィギュアがアイテムとなり、その作品は2つのアイテムを持つことになる。書籍のみで構成される一般的な同人誌の場合、1作品1アイテムである。
同人誌 作品と同一。書籍であるとは限らない。
著作者 作品を制作する人物。
サークル 一名以上の著作者が所属する団体。
ユーザ このサイトを閲覧し、データを操作する人物。
お気に入り ユーザと、ユーザが好きな作品、著作者、サークルとの間の関連。
オリジナル作品 作品が二次創作物であるとき、その元となる作品(企業から発行されるものも含む)。

ユースケース

CalciumRiderでは、以下の利用方法を想定します。

アクター アクション
ユーザ サークルを閲覧する。
ユーザ サークルを登録する。
ユーザ サークルを編集する。
ユーザ サークルを削除する。
ユーザ 著作者を閲覧する。
ユーザ 著作者を登録する。
ユーザ 著作者を編集する。
ユーザ 著作者を削除する。
ユーザ 作品を閲覧する。
ユーザ 作品を登録する。
ユーザ 作品を編集する。
ユーザ 作品を削除する。
ユーザ 作品につけられたコメントを閲覧する。
ユーザ 作品にコメントをつける。
ユーザ 作品につけたコメントを編集する。
ユーザ 作品につけたコメントを削除する。
ユーザ サークルをお気に入りに追加する。
ユーザ サークルをお気に入りから外す。
ユーザ 著作者をお気に入りに追加する。
ユーザ 著作者をお気に入りから外す。
ユーザ 作品をお気に入りに追加する。
ユーザ 作品をお気に入りから外す。
ユーザ アカウントを登録する。
ユーザ アカウントを編集する。
ユーザ アカウントを削除する。

管理者のユースケースは省略しました。

なお、CalciumRiderではイベントの情報は扱いません。将来的にはするかもしれませんが、仕様が大きくなりそうなのと、既にそういったサイトは存在するので、今回は見送ります。

データモデル

CalciumRiderでは、以下のデータモデルを扱います。

+--------+ * 1 +------+ 1  * +--------+ * * +----+
|コメント|-----|      |------|        |-----|形式|
+--------+   * | 作品 |      |        |     +----+
    |     +----|      |      |        | * 1 +--------+
    |*    |    +------+      |        |-----|ジャンル|
    |     |  * +------+ *  * |        |     +--------+
    |1    |  +-|著作者|------|        | * 1 +----+
    |     |  | +------+      |アイテム|-----|媒体|
+------+ *|  |    |*         |        |     +----+
|      |--+ *|    |*         |        | * * +------------+
|ユーザ|-----+ +--------+    |        |-----|キャラクター|
|      |-------|サークル|    |        |     +------------+
+------+ *   * +--------+    |        | * * +--------------+
                             |        |-----|オリジナル作品|
                             +--------+     +--------------+

ユーザと作品、ユーザと著作者、ユーザとサークルの3つの関連は、「お気に入り」です。

フレームワーク

フレームワークには、TurboGearsを使用します。理由は、以下の通りです。

  1. ウィジェットが気に入ったから。
  2. Kidが(比較的)気に入ったから。ただし、Genshiに変更するかもしれません。
  3. SQLObjectが気に入ったから。
  4. URLが変数名とメソッド名に対応するのが気に入ったから。
  5. ログイン管理が便利だから。
  6. Pythonだから。

開発方針

たとえ開発途中であっても、動く部分を公開しながら開発を進めようと思っています。