【刀剣乱舞】「玉集め進捗表 」の機能を拡張するブックマークレット

概要

有志によって非公式に運営されている秘宝の里サポートアプリの機能を拡張するブックマークレットを作りました。

deltarium.org

github.com

ブックマークレット公開に際し、「玉集め進捗表」(以下「元アプリ」)作者の@さんからDMにて許可および情報提供をいただいております。

目的

元アプリは以下の機能を備えています。

  • 回収した玉の数を記録する
  • 報酬の獲得状況を可視化する
  • 回収した楽器の数を記録する
  • 全報酬獲得までの毎日のノルマを計上する

今回作成したブックマークレットは、「その日のAM5:001以降獲得した玉の数を計上する」機能を追加します。

f:id:wifeofvillon:20171119183525p:plain

使い方

ブックマークレットとしての導入方法はREADMEに記載してあります。

仕様上以下の2点に注意が必要です。

  • その日の最初のトライ前に必ず1回走らせる必要がある
  • 次回以降のイベントでは定数の修正が必要である

処理概要

処理内容はざっくり以下のようになっています。

  • 初回起動時、「回収済み累計数」「その日のAM5:00のUNIX時間」をCookieに記録
  • 2回目以降起動時、日付が変わっていたら(AM5:00を過ぎていたら)Cookieの値を上書き
  • 元アプリのCookieが持っている「回収済み累計数」とCookieに記録した「回収済み累計数」差をalertで表示

一度GitHubに公開後、元アプリ作者さんからCookie操作や日付操作に使用しているライブラリを教えていただいたのですが、走り出してしまっていたのでその辺は自分で実装しました。

  • 最初はCookieにexpires情報を持たせてAM5:00にCookieが自然消滅してくれることを想定していた
    • expiresがうまく効いてくれなかったのでシステムリセット時刻との比較で日付変更タイミングをはかることにした
    • ちなみに元アプリ作者さんにも「経験上expiresはうまくいかない」と言われた
  • main関数を短く書こうとしてwebpackなど使ってみようと思ったら環境構築がうまくいかなかった
    • 結果的にほぼベタ書きした方が早かった
    • 総開発時間12時間36分のうち多分3時間くらいはwebpackで彷徨ってる

参考

Cookie周りの参考にしたページはこの記事にまとめてあります。

qiita.com

あとMDNのDateオブジェクトのページは何回も参照しました。

developer.mozilla.org

minifierはこちらを使用しました。

jscompress.com

気づき

  • main部分だけなら60行くらいしかないスクリプトに1.5人日かかってるあたりアルゴリズムを考える部分の衰えを感じる
  • typeof関数はundefinedをstring扱いするの本当やめてほしい
  • もう二度とCookieのexpireには期待しない絶対にだ
  • Date.getDate()までは単数形でDate.getHours()以下は複数形

それではマニ車秘境の里周回がんばりまっしょい

↓劇場版楽しみですね

【Amazon.co.jp限定】『刀剣乱舞-花丸-』歌詠全集(缶バッチ[歌詠全集描き下ろしジャケット版権使用]付)

【Amazon.co.jp限定】『刀剣乱舞-花丸-』歌詠全集(缶バッチ[歌詠全集描き下ろしジャケット版権使用]付)

↓このバッグめっちゃ遠征向きなのでは??

陸奥守と歌仙と長曽祢の曲が好き


  1. イベントマップに進入するためのアイテム補充がAM5:00(とPM5:00)に行われるため