本ツールはTRPGシステム「ソード・ワールド2.5」を遊ぶためのWebアプリです。ユーザーは自身のキャラクターを登録し、特定の活動を行うユニットに所属させる事ができます。アプリ側はユニットに設定されている属性(活動内容や所在地、メンバーの平均レベルなど)を元にキャラクターが実行可能なイベントを提示し、その成否を記録していくことができます。
==プロジェクト全体仕様まとめ(2025/05/18時点)==
===基本設計===
*TRPG(SW2.5)向けのユニット・キャラクター・イベント管理ツール
*フラットファイル(JSON)ベースでストレージ管理(DBレス)
*ユーザーアカウントごとに個別ファイルを管理(characters, units, logsなど)
===🔐 アカウント===
各ユーザーアカウントは以下のデータを個別に保持:
===👤 キャラクター登録・管理(アカウント単位)===
項目名 内容*id(キャラクターID):一意のランダム英数字(自動生成)キャラクターID 自動生成の一意な英数字*name(キャラクター名):キャラ名(フリーテキスト)キャラクターURL キャラクターシートのURL*sheetUrl(キャラクターURL):キャラシートURL(json取得に使用)キャラクター名 フリーテキスト*description(キャラクター概要):キャラ概要(改行可)キャラクター概要 改行可能なフリーテキストタグ ソート用のフリーテキスト*tags(タグ):タグ(一覧上での並び替え等に使う)
===🛡️ ユニット登録・管理(アカウント単位)===
項目名 内容*id(ユニットID):一意のランダム英数字(自動生成)ユニットID 自動生成の一意な英数字*name(ユニット名):ユニット名ユニット名 フリーテキスト*description(ユニット概要):概要(改行可)ユニット概要 改行可能なフリーテキスト*works(ワークス):活動内容(works_list.jsonから選択)ワークス works_list.json から選択(ドロップダウン)*location(所在地):所在地(地名) フリーテキスト**place_name(所在地:地名):地名(フリーテキスト)所在地(地方) local_list**region(所在地:地方):地方(local_list.json から選択(ドロップダウン)jsonから選択)**scale(所在地:規模):規模(「キャンプ」「基地」「村」「町」「都市」「国」から選択)所在地(規模) 「キャンプ」「基地」「村」「町」「都市」「国」から選択*base(拠点):拠点名 フリーテキスト**base_name(拠点名):拠点名拠点概要 改行可能なフリーテキスト**base_description(拠点概要):拠点概要(改行可)維持費 0G以上の数値**base_cost(維持費):維持費(G単位)メンバー アカウント保有キャラから選択。技能と役職も併記*skill_type(技能):"冒険者" or "一般技能"(自由入力)技能 「冒険者」または「一般技能(フリーテキスト)」*members(メンバー):役職 フリーテキスト**character_id(キャラクターID)AL(平均Lv) キャラクターURL + ?mode=json から技能Lvを取得して算出(切り上げ)**position(役職):役職(フリーテキスト)リーダー メンバーから1人選択**AL(平均レベル):技能の平均レベル(数字入力)ユニット作成者 アカウントID*leader_id(リーダー):リーダーキャラID(メンバーから選択)ユニット操作権限 アカウントID指定で追加可能*creator(ユニット作成者):ユニット作成者のアカウントID作成日時 タイムスタンプ*allowed_accounts(ユニット操作権限):ユニット操作可能アカウントID(作成者含む)更新日時 タイムスタンプ*created_at / updated_at(作成日時/更新日時):タイムスタンプ
🔄 キャラクターの兼業===
キャラが複数のユニットに所属可能。選択中キャラが属する各ユニットで可能なイベントが選択可能になる。UI的には、画面上部にキャラ一覧→選択→ユニットとイベント表示、みたいな流れ。
===🎯 イベント(events/ワークス名.json)===項目名 内容====イベントデータ構造====イベントID 一意な英数字*id(イベントID)イベント名 フリーテキスト*title(イベント名)min_al 最小AL(条件)*description(イベント詳細):難易度含めたすべてのテキスト(自由記述)ユニット条件 unit.name、base.name、place_name、region、scale による指定*min_al(min_al):必要AL前提イベント 成功している必要があるイベントIDリスト(任意)*requires(前提イベント:省略可):前提イベントID(文字列 or 配列)description すべての説明・難易度・演出を含むフリーテキスト*以下、ユニット条件でフィルタ可能なオプションキー(全部文字列 or 配列)**unit_name※ 条件に合うイベントのみ表示可能。ストーリー仕立てが可能になる設計。**base_name**place_name🗃️ ログの種類**regionキャラクターログ(character_log.json)**scale所属ユニットの履歴====フィルタロジック====*指定されたユニットの情報に対して、すべての条件を満たすイベントのみ提示実行したイベントと結果*条件が存在しないものは無条件(つまり、広く使える) ユニット脱退・解散などの経緯 ユニットログ(unit_log.json)メンバー加入・脱退 イベント実行履歴※ 条件に合うイベントのみ表示可能。前提イベントを駆使すればストーリー仕立てが可能になる設計。
ユニットの更新・解散履歴===🗃️ ログの種類===*キャラクターログ(character_log.json)**所属ユニットの履歴**実行したイベントと結果**ユニット脱退・解散などの経緯 { "char_abc123": ["event_001", "event_007"] }
🔥 削除時の挙動定義*ユニットログ(unit_log.json)アカウント削除時**メンバー加入・脱退保有ユニット:解散 → キャラログに「ユニット解散(アカウント削除)」記録**イベント実行履歴**ユニットの更新・解散履歴
保有キャラ:削除 ===🖥️ UI構成と機能整理=======① メイン画面(ゲームプレイ/イベント選択)====*表示内容:**選択中キャラクター(アイコン・名前・URL)**所属ユニットの一覧(選択可)**条件に一致するイベントの一覧(前提イベントチェック、AL/拠点などの一致で絞り込み)**イベントの詳細(description)**「このイベントを実行」ボタン(ログ保存)*ユーザーができる操作:**キャラ切り替え**ユニット選択**イベント実行 → 所属ユニットには「キャラ脱退(アカウント削除)」を記録成功/失敗などの選択肢 → ログに記録====② キャラクター管理画面====*表示内容:**自アカウント保有キャラ一覧**各キャラのステータス、所属ユニット、ログボタン**ユーザーができる操作:**キャラクター登録(URL・名前・概要・タグ)**キャラクター編集**キャラクター削除(脱退処理込み)**キャラクターログ閲覧(所属履歴、イベント履歴)====③ ユニット管理画面====*表示内容:**自アカウントが作成・管理するユニット一覧**ユニット詳細、所属キャラ、作成者、権限保持者など*ユーザーができる操作:**ユニット作成**ユニット編集(名前、ワークス、拠点、構成メンバーなど)**メンバー追加・削除**操作権限の付与(他アカウント)**ユニット削除(解散ログ記録)====④ イベント管理画面====※サイト管理者と一般ユーザーで仕様が異なる!
ユニット削除時🔒 サイト管理者(管理者フラグあり)所属キャラのログに「ユニット解散(ユニット削除)」を記録*できること:**ユーザー全体へのイベント提供が可能
キャラクター削除時👤 一般ユーザー所属ユニットから脱退 → ユニットログに「キャラ脱退(キャラ削除)」を記録*できること:**自分が作成したユニット専用イベントの作成・編集**条件:そのユニット名/拠点名/所在地に限定**そのユニットに所属しているキャラのみが選択可能**自作イベントの削除・修正**自作イベントでも、他人に使わせたくないものはロック可(?)====⑤ アカウント管理画面====*表示内容:**表示名**ユーザーID**パスワード変更**アカウント削除ボタン*ユーザーができる操作:**表示名・パス変更**アカウント削除(ユニットとキャラにログが残る)
🔧 その他設定ファイル===🔥 削除時の挙動定義===works_list.json:ワークス名一覧*アカウント削除時**保有ユニット:解散 → キャラログに「ユニット解散(アカウント削除)」記録**保有キャラ:削除 → 所属ユニットには「キャラ脱退(アカウント削除)」を記録*ユニット削除時**所属キャラのログに「ユニット解散(ユニット削除)」を記録*キャラクター削除時**所属ユニットから脱退 → ユニットログに「キャラ脱退(キャラ削除)」を記録
===🔧 その他設定ファイル===*works_list.json:ワークス名一覧*local_list.json:地方名一覧