Notionでソシャゲを管理してみたら捗った話


[Notion Advent Calendar 2021](https://qiita.com/advent-calendar/2021/notion) 3日目のエントリになります。

# 自己紹介みたいな話

今年の春から地方のIT企業に入社した社会人1年目のソシャゲーマーです。
普段会社では新人らしくテスト仕様書を作成する日々を送りながら、家では延々とUnityやblenderと仲良くしています。俺は仲良くしたいと思っているのにUnityもblenderもツンデレでつらい。
ところでこれが公開される日は情報処理学会春の全国大会申込締切ですが論文の進捗はいかがでしょうか？　こんなん書いてる場合じゃねぇですよ絶対間に合わないので参加見送りですが当日は有給取って現地行くので対戦よろしくお願いします。

# ソシャゲ多すぎてわけわかんなくね？　って話


皆様ソーシャルゲームはプレイしていますでしょうか？
私は現在メインでプレイしているもので13個のソシャゲをプレイしています。
多すぎですね。
ソシャゲの特徴としてだいたい常にイベントが行われていることが挙げられます。
まぁ把握できないです。
気づいたらイベントが始まって気づいたらイベントが終わっています。
そもそも夏休みの宿題は最終日にやる学生だったので、ソシャゲのイベントも最終日前日の夜に爆走してよく報酬を取り逃しています。
直近だと白猫プロジェクトで気づいたらエヴァコラボが終了していました。つらい。
# Notionはいいぞってことに気づいた話


弊社は地方の中小企業なのに新入社員研修が4月から10月末まであります。ゆるゆるでめっちゃ楽しかったです。
その中で新入社員が最近の学びやエンジニアとしての知見をプレゼンする時間がありました。そこで同期がNotionを紹介してくれたのが最初の出会いでした。（なおその時は微塵も興味がわかなかったです。すまん同期のM氏）
そして11月になり仮配属先での業務がスタートします。
**しませんでした。**
アサインされたプロジェクトが基本設計フェーズだったせいで「今やってもらえることないんだよね」と放置されました。
幸い会社が上場を目指すとか言い出して全社員e-ラーニングの研修を受けなければならなかったので、動画を見ながら色々と調べ物をして時間を潰しました。
**研修終わりました。**
いよいよやることがなくなってしまったので業務効率化のツールを作ろうかと考えている時に「あ、Notion試してみるか」と思い早速アカウントを作り有料プランを登録しました。とりあえず課金するのがソシャゲ廃人感ありますね。
まずはタスク管理やスケジュール管理の機能を把握します。
ふむふむなるほど。
その後データベースの機能を把握します。
ふむふむなるほど。
これRDBと同じですね。
ある程度触ったところで公式のドキュメントを読みます。幸い時間は山ほどあったので隅から隅まで読破しました。暇すぎる。
そして気づいてしまったのです。
**これは……ソシャゲのスケジュール管理に最適なのでは？**

# さっそくソシャゲ用のページを作った話


思い立ったら即行動が信条なので（ならなんでソシャゲのイベントは初日からやらないんですか？）、その場で「ソシャゲ」って名前のページを作成しました。
そしてパッと思いついた「あったらいいな」って機能のページを作ります。

![Untitled.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1449291/39084d7c-4c0f-ee61-8a4a-3dce929476e1.png)


一番下に生々しいものが見えますがゲームごとに数字が出てくると冷静になってつらい。
では個々のページを見ていきましょう。

# ソシャゲリストを作った話


まずはソシャゲのリストを作成します。
NotionはDBをページとして扱えるので、このソシャゲリストはページであると同時にDBでもあります。

![Untitled 1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1449291/b887b917-6ae7-3447-5888-effe0c1b9c4f.png)


出来ました。
普段は使いやすいようにギャラリービューで表示していますが、DBっぽい表示だとこんな感じになります。

![Untitled 2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1449291/2ad93a3a-0b6e-956c-d225-8166eda2d2cb.png)


最初は名前とアイコンだけだったのが今ではTwitterや公式サイト、wikiのリンクが追加されています。
NotionのDBでは一番左に生成される「名前」というカラムがRDBにおける主キーの役割を果たします。このカラムは名称の変更はできますが、データの形式は「テキスト」から変更はできません。ここが空白でも機能するのは裏では固有のIDが振られているんでしょうかね？
各ソシャゲごとのページにはもうちょっと情報が含まれているのですが、それはカレンダーやタスクの話の後で再度触れます。

# ソシャゲカレンダーを作った話


それでは当初の目的であった「イベント終わっとるやんけ」を防止するためのカレンダーを作成します。

![Untitled 3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1449291/fddb6efa-2523-3c54-2e9e-b20a8d928814.png)


作成しました。
まだカレンダーへの追加フローが安定していないのですが、基本的には現状問題なくソシャゲのイベントを管理できています。

![Untitled 4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1449291/ef90852c-6150-72f3-c33a-e1a0332d1a57.png)


個々のレコードはこんな感じになっています。

> イベントやガチャのタイトルを主キーに該当する名前にしています。
> 

> ゲームカラムはソシャゲリストをリレーションとして使用しています。RDBにおける外部キーと同じ振る舞いが行えます。
> 

> タグはマルチセレクトでイベントやガチャ、メンテナンス、コラボなど複数のタグを設定できるようにしてあります。必要なタグが増えたらその都度作ります。ところでアイマスはガシャで他のゲームはだいたいガチャなのは何の違いなんでしょうか私気になります！
> 

> 日付はイベント期間を開始日から終了日まで入力しています。
> 

> 資料はとりあえず設定しましたが現状使っていません。多分必要なかったです。
> 

> 備考はアズレンのイベントがタイトルだと何なのかわからなかったので追加しました。
> 

> URLはパズドラで公式サイトへのリンクが欲しかったので追加しました。
> 

> 期間終了は関数を使って現在日が日付カラム以降になるとチェックが入るようにしています。
> 

> 完了は期間終了前だけどやること全部やっちゃったらチェックするためのカラムです。
> 

> スルーは登録したけどやる気がないイベントや回す気のないガチャで使用します。
> 

これら3つのチェックボックスは別画面に組み込んだ時にレコードが多すぎるのを防止するためのものです。
どれか1つでもチェックが入っていれば表示されないように絞込を設定しておくとやらないといけないイベントだけが表示されます。

![Untitled 5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1449291/72cb5b99-6708-79f1-db76-0f962b6b880d.png)


# ソシャゲタスクを作った話

素材○○を1000個集めるとかで必要かなと思ったので作りましょう。

![Untitled 6.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1449291/bb78a9d2-3998-6fae-b1e1-01eee714e47a.png)


作りました。
現状あんまり使ってないですが、絶対忘れそうなタスクがいつか発生するので必要だとは思います。
タスク管理で完了にしてしばらく経ったら自動でhiddenにするみたいな関数作ろうかと思ってるんですが、現状そもそもタスクがそんなにないのでやる気が出ないです。

![Untitled 7.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1449291/3423179e-cbad-05af-4e90-ccaab8eebbe4.png)


レコードの中身は割と適当です。
タスク管理であったら便利な機能が思いつかない……。

# 課金を記録するページを作った話


毎月のクレカの請求を見ても記憶にない決済が多すぎるので作りましょう。

![Untitled 8.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1449291/7363afff-0490-5ee3-e077-8930aebe9e47.png)


作りました
出雲阿国可愛いですよね。素直に好きです。
課金を記録するだけなら購入アイテムを主キーにしてゲームと課金額、日付があれば十分かと思ったんですが、目的と成果もあると楽しいなと思ったので追加しました。
ガチャで目当てのキャラが引けたら「勝利」、引けなかったら「敗北」で記録しています。
ガチャカラムがチェックされているレコードで絞り込めばガチャの勝率が計算できますね。したくないです。
課金だけじゃなくてガチャのページを作ろうかとも思ったんですが、流石に面倒なのでやめました。まぁ無課金で引いたガチャはどうでもいいですし……。
パズドラのパズパスとかサブスクもここで管理したいんですけど、毎月自動でレコードを追加していくみたいなのは出来ないんでしょうかね？

# 各ソシャゲのページにカレンダー等を埋め込んだ話


カレンダー，タスク，課金と便利なDBを作ったところで各ソシャゲのページでも見れたら便利だなと思いますね？
では埋め込みましょう。

![Untitled 9.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1449291/d4ba7774-7cc1-64e5-c7fa-f8b377929c49.png)

Notionでは作成したDBをリンクドデータベースとして他ページに埋め込むことが可能です。



![Untitled 10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1449291/41cf0313-d0a6-2b3c-26a1-e8fe1f52e11f.png)


はい、埋め込みました。
ソシャゲごとに絞り込んでおけばそのゲームのスケジュールやタスク、課金がすぐに確認できますね。

# 周回編成を記録したいと思った話


ソシャゲといえばガチャと周回です。
ガチャと周回しかしてないです。
ですが多くのソシャゲは編成をクエストに紐づけて保存するなんて機能はありません。
では作りましょう。

![Untitled 11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1449291/a11c7bb7-2327-7188-938e-7f0b4d2b19fc.png)


作りました。
レコードの中身は下記画像のようになっています。

![Untitled 12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1449291/909864f1-d7ce-2ad4-7ae2-545101f6f06c.png)


これに関してはソシャゲごとに全く異なるDBとなるので、各ソシャゲページに都度作成となります。
今回はFGOの周回編成を記録するDBを例とします。

> まず主キーはクエスト名とします。
> 

> 編成画像カラムはスクショを保存しておきます。
> 

> 素材カラムはそのままドロップする素材をマルチセレクトで選択できるようにしています。
> 

> 特異点カラムはどのマップのクエストかを思い出すのも面倒なので追加しました。
> 

> フレンド自由カラムはそのままの意味です。
> 

> マスター礼装カラムはセレクトになっており使用するマスター礼装を選択します。場合によってはフリーの場合もあるのでフリーの選択肢を追加しました。
> 

> 使用スキル数カラムもそのままの意味です。スキルを使う回数は少なければ少ないほどいいですからね。
> 

> 礼装自由枠（フレンド除く）もそのままです。
> 

> 非確殺カラムは乱数によっては宝具で確定で突破できない場合に階層を選択しておきたいので追加しました。
> 

必要な情報は概ね揃ったと思います。
ですが1か月後にこの情報だけで周回を再現できるでしょうか？
無理なので立ち回りも記録しておきます。
各レコードごとにページが生成されるのがNotionの便利なポイントです。
またDBごとにレコードのテンプレートを作成することが可能です。

![Untitled 13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1449291/eb3f0ef8-8720-e312-8820-1bdc93b48f8f.png)


作りました。
FGOの周回編成に立ち回り表を合わせたテンプレートです。

![Untitled 12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1449291/bf93116b-1f27-3cce-e4a3-5bafd8f6d644.png)


サーヴァントのカラムに各waveで宝具を使用するサーヴァントを追加します。
基本的に1wave1宝具で周回できないような編成を残す必要はないのでこれで問題ないはずです。
システムを記録したくなったらまた新しいテンプレートを考えます。
各waveごとに使用するスキルを記録するためのカラムも作成したのでこれを見ればいつでも最適化した編成で周回ができますね。
こんなことしなくても凸カレ持たせたモルガンジュナオジュナオでいいだろって？
そんなん組めるなら何も苦労ないわ。

# 終わりだよって話


ここまで書いといてなんですが、プレイするソシャゲは3つくらいに収めましょう。
13個とか日常生活ほぼソシャゲで終わります。
まぁやりたいゲームが多すぎるのが悪いです。今はアーテリーギアが気になっています。
Notionを駆使してこれからもソシャゲを全力で遊んでいきたいですね。
今回はソシャゲを管理するってことで色々とやりましたが、Notionは間違いなく業務でも強力なツールです。これ一つにいろんなツールをまとめられるのが一番の利点だと思います。
まぁ現状特に業務で役立てられそうなタイミングがないのでNotionはすっかりソシャゲ用のツールと化していますし今後もどんどんソシャゲ用のページばかり増えそうです。

レコードが200件超えてるようなDBをリレーションにすると重たすぎて使い物にならないのはどうしようもないんですかね？