FreeBSD顛末記 α+11話 作ろう、ノベルサイトシステム!
しまぷ(う)は物書きが趣味である。 回線もADSLに変更した事だし、固定IPでサーバーでも立ち上げて、何かサービスを提供しようかなと考える。
んで、考えたのがノベルサイトシステムである。
ノベルサイト・システム
ライター・リーダー・マスターの3種類のユーザータイプを持つ、小説投稿用のサイトである。
元々は。CGIのみでデータベースを全く使用せずに構築しようかと言う事であったのだが、DBを使う方が断然楽なので突然方針変換!
と言う訳で行ってみようかー、な具合である
用意するツールはCGIにPerlとDBにMy−SQLである。 まぁApache等は言うに及ばずなのでこの際は触れない。
基本的に開発環境がWindowsなのでどちらでも動く物かつ、筆者が知っている物を用意した訳である…
処理の種類としては、
新規投稿関連----ライターからは撤回・訂正可能な、初期投稿リスト。
投稿作品関連----初期投稿リストより一定期間を経てこちらに渡す。
投稿者関連------投稿者のデータを保存、ライターから訂正可能。
サイト管理関連----データをサイトとして立ち上げる為の処理手順。
DBのテーブルは…
投稿者、新規投稿作品、投稿作品、ユーザー、サイトとそれぞれの派生ぐらいだろうか。
| 新規投稿作品テーブル (newstorys) | ||
| newstory_ID | VARCHAR | Autonomber |
| writen_by | TEXT | 作者名 |
| up_time | VARCHAR | 投稿日時 |
| title | TEXT | 作品名 |
| text | MEDIUMTEXT | 作品本文 |
| ex_text | MEDIUMTEXT | 作品あとがき (データ未入力有り) |
| cast | TEXT | 登場人物 (データ未入力有り) |
| text_type | VARCHAR | 表示形式、等幅&トゥルータイプ等 |
| newstorys_key | VARCHAR | 管理キー 暗号化済み 新規投稿作品のみ使用 |
| phase | VARCHAR | 状態 (del=公開停止処理済み作品/new=投稿作品/renew=投稿作品、改編済み) |
| serise_name | TEXT | シリーズネーム (データ未入力有り) |
| serise_number | TEXT | シリーズナンバー (データ未入力有り) |
| category | VARCHAR | 種類 (カテゴリーテーブル参照) |
| genre | VARCHAR | 分類 (ジャンルテーブル参照) |
| outline | TEXT | 作品に対する大まかな説明 (データ未入力有り) |
| 投稿作品テーブル (novels) | ||
| story_ID | VARCHAR | Autonomber |
| write_ID | VARCHAR | 作者名のID |
| up_time | VARCHAR | 投稿日時 |
| title | TEXT | 作品名 |
| text | MEDIUMTEXT | 作品本文 |
| ex_text | MEDIUMTEXT | 作品あとがき (データ未入力有り) |
| cast_ID | TEXT | 登場人物のID (データ未入力有り) |
| phase | VARCHAR | 状態 (del=公開停止処理済み作品/new=投稿作品/renew=投稿作品、改編済み) |
| serise_ID | TEXT | シリーズのID (データ未入力有り) |
| serise_number | TEXT | シリーズナンバー (データ未入力有り) |
| category_ID | VARCHAR | 種類 (カテゴリーテーブル参照) |
| genre_ID | VARCHAR | 分類 (ジャンルテーブル参照) |
| outline | TEXT | 作品に対する大まかな説明 (データ未入力有り) |
| 投稿者テーブル (writers) | ||
| write_ID | VARCHAR | AutoNumberなのでほうっておく |
| Writen by | TEXT | 作者名 |
| Directory_name | VARCHAR | 作品が登録されているディレクトリ名 (データ未入力有り) |
| Writen_by_comment | VARCHAR | 作者自身のコメント (データ未入力有り) |
| email_add | VARCHAR | メインメールアドレス (データ未入力有り) |
| hp_title | VARCHAR | 持っていたらHPのタイトル (データ未入力有り) |
| hp_add | VARCHAR | 持っていたらHPのアドレス (データ未入力有り) |
| hp_baner_add | VARCHAR | 持っていたらHPのバナーアドレス (データ未入力有り) |
| hp_comment | VARCHAR | 持っていたらHPに対する紹介文 (データ未入力有り) |
| writer_pass | VARCHAR | 暗号化済みパスワード |
| カテゴリーテーブル (category) | ||
| category_ID | VARCHAR | AutoNumberなのでほうっておく |
| category_name | TEXT | カテゴリー名 (オリジナルSF、○○のSS) |
| category_Ex | TEXT | カテゴリーの説明 |
| category_Directry | VARCHAR | ディレクトリ名 |
| ジャンルテーブル(genre) | ||
| genre_ID | VARCHAR | 分類ID |
| genre_name | TEXT | 分類名 (通常作品、リレー作品、キャラクター設定、世界設定等) |
| genre_ex | TEXT | 分類の説明 |
| genre_Directry | VARCHAR | ディレクトリ名 |
| シリーズテーブル (serise) | ||
| serise_ID | VARCHAR | AutoNumberなのでほうっておく |
| serise_name | TEXT | シリーズ名 |
| serise_No | VARCHAR | 投稿されているシリーズの作品数 |
| serise_Ex | TEXT | 説明文 |
HP
カテゴリ別リスト
ジャンル別リスト
作者別リスト
作品名別リスト
CGI
テンプレートファイルリスト
| ページテーブル (page) | ||
| page_ID | VARCHAR | AutoNumberなのでほうっておく |
| page_title | VARCHAR | ページのタイトル |
| page_file_pathname | VARCHAR | HPからの相対的パスと名前 |
| page_tempfile_pathname | VARCHAR | ページのテンプレートファイルの名前 (データ未入力有り) |
データ…
Novel Syte System,/index.html,hp-index.html.temp
| リンクテーブル (link) | ||
| link_ID | VARCHAR | AutoNumberなのでほうっておく |
| starting_page_ID | VARCHAR | リンクの機転となるページのID |
| target_page_ID | VARCHAR | リンク先のID |
| ユーザーテーブル (uasr) | ||
| user_ID | VARCHAR | AutoNumberなのでほうっておく |
| user_name | VARCHAR | ユーザーの名前(投稿者とは別) |
| user_pass | VARCHAR | 暗号化済みパスワード |
| write_ID | VARCHAR | 投稿者のID(データ未入力有り) |
| authorityテーブル(authority) | ||
| authority_ID | VARCHAR | AutoNumberなのでほうっておく |
| authority_level | VARCHAR | 権限レベル(root manegiment writers writer) |
| authority_category | VARCHAR | 権限カテゴリ(データ未入力有り) |
| authority_user_ID_list | TEXT | 該当IDのリスト |
権限の大小 root>manegiment>writers>writer
root 全部…
manegiment サイトの運営参加
writers 自分の投稿した作品のカテゴリのにのみ権限を持つ
writer 自分の投稿した作品にのみ権限を持つ
何せ後先考えずに作り出した物だけに収拾がつかなくなっていました。
とりあえず投稿者テーブルをユーザーテーブルに合併。
現存するテーブル(笑)
作品分類
カテゴリ、ジャンル、サブカテゴリ、ジャンル系
投稿作品管理
作品
サイト設定
ファイル
サイトの予定
トップページ
┣ユーザーページ(ログインが必要)
┃┣作品投稿・更新
┃┣公開・非公開
┃┣ユーザーデータ確認
┃┗分類管理者ページ
┃ ┗ジャンル・サブカテゴリ追加
┃
┣作品閲覧
┃┣ジャンル別一覧
┃┃┣ジャンル別掲示板
┃┃┣ジャンル別リンクリスト
┃┃┗ジャンル別管理者ページ
┃┃ ┣管理者追加ページ
┃┃ ┗掲示板管理
┃┃
┃┣作者別一覧
┃┃┗作者のページ
┃┗投稿順一覧
┃
┣作品検索
┃
┣作家へのリンクリスト(バナーなし)
┣作家へのリンクリスト(バナーあり)
┃
┣当サイトについての要望用掲示板
┗当サイトの注意事項
細かい所はまだ色々と考えている最中だったりする。
サイト設計…
いろいろと覚え書きもある
1.1 サイト閲覧者・一般利用者用トップページ index.html
┣1.2 ユーザーページ(ログインが必要)
┃┣1.2.1 作品投稿
┃┣1.2.2 作品更新
┃┣1.2.3 公開・非公開
┃┣1.2.4 ユーザーデータ更新
┃┣1.2.5 新規ユーザー登録
┃┗1.2.6. ユーザー用忘備録
┃
┣1.3 作品閲覧 http /novels/index.html
┃┣1.3.1 ジャンル別一覧 /novels/(genrename).html
┃┃┣1.3.1.1 ジャンル別掲示板 /cgi-bin/genrebbs.cgi?genre=(genrename)&task=new
┃┃┗1.3.1.2 ジャンル別リンクリスト /(genrename)_link.html
┃┃
┃┣1.3.2 作者別一覧
┃┃┗1.3.2.1 各作者の作品一覧
┃┗1.4 投稿順一覧
┃
┣1.5 作品検索 http
┃
┣1.6 作家へのリンクリスト(バナーなし) http
┣1.7 作家へのリンクリスト(バナーあり) http
┃
┣1.8 当サイトについての要望用掲示板 http
┗1.9 当サイトの注意事項 http
2.0 サイト管理者用 https
┣2.1サイト設計管理ページ
┃┣2.1.1 各種HTML等のテンプレート管理
┃┣2.1.2 データバックアップ・リストア
┃┣2.1.3 サイトの再構築
┃┣2.1.4 サイトの設計変更
┃┣2.1.5 ユーザーの権限変更
┃┣2.1.6 各管理ページのルール設定
┃┗
┃
┣2.2 分類管理ページ
┃┣2.2.1 分類追加
┃┣2.2.2 作品分類変更
┃┗2.2.3 分類管理ユーザー追加
┃
┣2.3 ジャンル別管理ページ
┃┣2.3.1 ジャンル内掲示板管理
┃┣2.3.2 ジャンル内リンク管理
┃┣2.3.3 ジャンル内作品テンプレート管理
┃┣2.3.4 ジャンル内ルール設定ページ
┃┗2.3.5 ジャンル内管理者追加
┃
┣2.4 サイト掲示板管理ページ
┃┣2.4.1 掲示板管理
┃┣2.4.2 消去文字設定
┃┣2.4.3
┃┣
┃┗
んで、テーブルの方も再構築
ユーザ関係のテーブル
ユーザーテーブル
ユーザーの主な情報を保存する、ってそのままだね権限テーブル
ユーザーの権限を表しますパスワードテーブル
プレーンパスワードを保存する
分類関係のテーブル
カテゴリテーブル
大分類用のテーブル、オリジナル・二次創作・シェアワールド・企画等ジャンル用テーブル
ジャンル分けのテーブル 管理上ジャンル別に管理グループを配置するためである。
オリジナルなら、SFとか歴史とか…
二次創作なら、元ネタ等
シェアワールドや企画の場合はその題名が入る
作品関係のテーブル
作品用テーブル
作品のデータが入る連作管理用テーブル
シリーズモノなどの連続作品のデータが入る
サイト関連テーブル
サイトマップテーブル
各ファイルの相対パスでの場所の設定シートテーブル
HTMLのテンプレートを置いておく
後は掲示板をどうしようか考えている所。
ところでこのシステムは自宅サーバーで運用することを前提にしている訳ですが…
サーバーマシンにどのくらいの早さが必要か全くわからない状態(笑)
とりあえずHAL−3 4th UNIが開いているので、それに組み込む予定ではある。