スポンサーリンク

ミリシタのガシャ(ガチャ)シミュレータを作った2

前回の追記ですが少し長くなったので分けました。

パブリックリポジトリにしました

GitHub:https://github.com/imo-tikuwa/militheta-gasha-simu
データのメンテナンスもちょこちょこやろうと思います。

デモサイトを作成しました

デモサイト:ミリシタ ガシャシミュレータ
最初サブディレクトリでCakePHPを動かそうとしたりhttpd側にプロキシさせて動かそうとしたりしたのですが、どちらも微妙によくわからないところがあり、結局いつものようなサブドメイン切る対応となりました。。

テーブル定義について

前回の更新でこの辺書いてなかったと思ったので全テーブル定義を取ってきました。

CREATE TABLE `cards` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'ID',
  `character_id` int(11) DEFAULT NULL COMMENT 'キャラクター',
  `name` varchar(255) DEFAULT NULL COMMENT 'カード名',
  `rarity` char(2) DEFAULT NULL COMMENT 'レアリティ',
  `type` char(2) DEFAULT NULL COMMENT 'タイプ',
  `add_date` date DEFAULT NULL COMMENT '実装日',
  `gasha_include` tinyint(4) DEFAULT '1' COMMENT 'ガシャ限定?',
  `limited` tinyint(4) DEFAULT '0' COMMENT '限定?',
  `created` datetime DEFAULT NULL COMMENT '作成日時',
  `modified` datetime DEFAULT NULL COMMENT '更新日時',
  `delete_flag` char(1) NOT NULL DEFAULT '0' COMMENT '削除フラグ',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=764 DEFAULT CHARSET=utf8 COMMENT='カード';
CREATE TABLE `card_reprints` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'ID',
  `gasha_id` int(11) DEFAULT NULL COMMENT 'ガシャID',
  `card_id` int(11) DEFAULT NULL COMMENT 'カードID',
  `created` datetime DEFAULT NULL COMMENT '作成日時',
  `modified` datetime DEFAULT NULL COMMENT '更新日時',
  `delete_flag` char(1) NOT NULL DEFAULT '0' COMMENT '削除フラグ',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=84 DEFAULT CHARSET=utf8 COMMENT='復刻';
CREATE TABLE `characters` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'ID',
  `name` varchar(255) DEFAULT NULL COMMENT '名前',
  `created` datetime DEFAULT NULL COMMENT '作成日時',
  `modified` datetime DEFAULT NULL COMMENT '更新日時',
  `delete_flag` char(1) NOT NULL DEFAULT '0' COMMENT '削除フラグ',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=55 DEFAULT CHARSET=utf8 COMMENT='キャラクター';
CREATE TABLE `gashas` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'ID',
  `start_date` date DEFAULT NULL COMMENT 'ガシャ開始日',
  `end_date` date DEFAULT NULL COMMENT 'ガシャ終了日',
  `title` varchar(255) DEFAULT NULL COMMENT 'ガシャタイトル',
  `ssr_rate` int(11) DEFAULT NULL COMMENT 'SSRレート',
  `sr_rate` int(11) DEFAULT NULL COMMENT 'SRレート',
  `created` datetime DEFAULT NULL COMMENT '作成日時',
  `modified` datetime DEFAULT NULL COMMENT '更新日時',
  `delete_flag` char(1) NOT NULL DEFAULT '0' COMMENT '削除フラグ',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=120 DEFAULT CHARSET=utf8 COMMENT='ガシャ';
CREATE TABLE `gasha_pickups` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'ID',
  `gasha_id` int(11) DEFAULT NULL COMMENT 'ガシャID',
  `card_id` int(11) DEFAULT NULL COMMENT 'カードID',
  `created` datetime DEFAULT NULL COMMENT '作成日時',
  `modified` datetime DEFAULT NULL COMMENT '更新日時',
  `delete_flag` char(1) NOT NULL DEFAULT '0' COMMENT '削除フラグ',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=427 DEFAULT CHARSET=utf8 COMMENT='ピックアップ情報';

キャラクターテーブルは正直いらなかったです。
タイプやレアリティなんかと同様のKeyValueペアな配列データで足りました。

復刻情報(card_reprints)とピックアップ情報(gasha_pickups)はそれぞれカードとガシャの中間テーブルとなっています。ぱっと見ではそれぞれのレコードのIDが入っているだけなのでよくわからないですが、管理画面上ではselect2を用いたプルダウンで簡単に追加、更新できるようになっています。

管理画面について

GitHubのREADME.mdにも書いてありますがデモサイトにおける管理画面のログイン情報は以下の通りです。
URL:https://milligasha.imo-tikuwa.com/admin/auth/login
ID:admin@imo-tikuwa.com
Pass:password

管理画面では当然ですがカードのデータ更新なんかも行えちゃいます。
週に1回マイグレート用のデータでデータベースを丸ごと入れなおしています。

レスポンシブ対応

スマホで見たときの見栄えがあんまりよくなかったので1画面に収まるよう直してみました。

↓修正前

↓修正後

bootstrap4の表示ユーティリティを使用して何とか対応できました。
レスポンシブ対応ってやったことないけどこんな感じで良いのでしょうか?( ・`ー・´)??
idをclassに変えたりでjavascript側の修正が思ってたより膨らんでめんどくさいことになってしまいました。
ビューファイルごと分けてもよかったかもしれない。
参考:表示ユーティリティ~Bootstrap4移行ガイド

その他

GitHubのリポジトリ名でミリオンのmilliとするところをlが1個足りなかった;;
影響範囲がはっきりわからないのでこのままにしておこうと思います。。

タイトルとURLをコピーしました